LLM Paths
| Workflow | Primary | Fallback | Keys |
|---|---|---|---|
Chat generation (/api/chat*) | Groq chat_model (default llama-3.3-70b-versatile) | OpenAI chat_model_openai (default gpt-4o-mini) | GROQ_API_KEY, OPENAI_API_KEY |
| Policy-style direct responses | OpenAI chat_model_openai | Groq chat_model | OPENAI_API_KEY, GROQ_API_KEY |
| Learnings extraction | Anthropic learnings_model (default claude-sonnet-4-5-20250929) | Groq chat_model | ANTHROPIC_API_KEY, GROQ_API_KEY |
| Project extraction | Groq chat_model | none | GROQ_API_KEY |
| Project idea generation | Anthropic (chat_model_anthropic or project override) / OpenAI (mode-dependent) | Groq fallback path | ANTHROPIC_API_KEY, OPENAI_API_KEY, GROQ_API_KEY |
| Transcript cleanup | OpenAI gpt-4o | none | OPENAI_API_KEY |
| Snippet verification | OpenAI chat_model_openai | none | OPENAI_API_KEY |
Retrieval and Search Providers
| Capability | Provider / Model | Keys |
|---|---|---|
| Embeddings | OpenAI embedding_model (default text-embedding-3-small) | OPENAI_API_KEY |
| Reranking | Cohere rerank-v4.0-pro | COHERE_API_KEY |
| Explicit web search | Tavily | TAVILY_API_KEY |
Ingestion Providers
| Capability | Provider | Keys |
|---|---|---|
| YouTube transcript + metadata | Supadata | SUPADATA_API_KEY |
| PDF OCR extraction | Mistral OCR (mistral_ocr_model) | MISTRAL_API_KEY |
| Dropbox media transcription (optional flow) | Gladia + Dropbox APIs | GLADIA_API_KEY, DROPBOX_ACCESS_TOKEN |
Runtime Behavior Notes
- Chat uses circuit-breaker-aware fallback (
groq -> openai) for resilience. - Missing Cohere key degrades reranking to fallback ordering (no hard outage).
- Deterministic branches (
clear_meta, some ambiguity paths) can complete without LLM generation.
Change Policy
If a provider/model choice changes:- update runtime code/config
- update this page in the same PR
- run tests + eval checks
- update related architecture/contracts docs if behavior changed