LLM providers
OperationalnormalOpenRouter, Anthropic or Google — whichever writes the grader's narrative.
checked 3m agoOpenRouter status ↗Anthropic status ↗
Checks
OpenRouter reachable
The default narrative provider is unavailable.
100%
24h
100%
30d
GET https://openrouter.ai/api/v1/modelsexpects 200last 200 · 142ms · 3m ago
What it is
One completion per scan turns the numbers into prose. GRADER_AI_PROVIDER picks the provider at request time and each one needs its own key:
openrouter— the default, model fromGRADER_AI_MODEL(falls back toopenrouter/free)google— gemini-2.0-flashanthropic— claude-haiku-4-5
The report is not blocked on it: if the completion fails, the narrative comes back null and the scored report renders without prose.
The anthropic path is a trap today
ANTHROPIC_API_KEY is read at lib/report-agent.ts:156 but exists in no .env and no .env.example. Switching GRADER_AI_PROVIDER=anthropic therefore throws at model init, the error is swallowed, and every report quietly loses its narrative. The failure looks like a content problem, not a config problem.
Model choice is a cost lever
GRADER_AI_MODEL is only consulted on the OpenRouter path, and its default is a free model. Any paid model set there multiplies directly by scan volume, which is unbounded — the rate limiter is per-process and the Google spend guard is off.
When it breaks
Symptom
Reports render but the narrative is missing
Check
GRADER_AI_PROVIDER, then the matching key, then the provider's own status page.
Fix
Set the key or switch back to openrouter. Nothing else in a scan depends on this.
Breaks when this does
- Restaurant Growth GraderLead-gen tool: scans a restaurant and returns a scored growth report.
Incident history
No incidents recorded for this system.