Under the hood
How this site answers, and why it won't make things up.
Every answer on this site has an “Under the hood” panel with the retrieved chunks and their scores, each step, tokens, cost in cents and latency. This page explains what you are looking at.
One corpus
Every fact lives in content/*.md, one section per topic, each ending in a "Source:" line naming the CV, README or handoff note it came from. At build time the sections become 45 chunks and a BM25 index. The pages, the fit check and the chat all read that one corpus.
Retrieval at $0
BM25 over the chunks, with headings weighted up and a small hand-written alias table (Claude ↔ LLM, Lambda ↔ serverless). No embedding API and no model download: at this size, lexical search is accurate, instant and explainable. Each hit also gets a coverage score: the idf-weighted share of the question's terms it covers. A term the corpus has never seen ("Kubernetes") weighs the most, so it can't be papered over.
Refuse before spending
If the best chunk covers less than 45% of the question, the chat replies "I don't have evidence for that" and never calls a model. The model's own instructions repeat the rule, and a grounding guard in code discards any answer that has no valid [n] citation.
Fit check: extract, search, judge, verify
The cheap model (claude-haiku-5-5) extracts up to 12 requirements with structured output. Each requirement is searched separately. The stronger model (claude-sonnet-5-5) judges each one only from its retrieved chunks and must quote verbatim. Code then checks every quote: the source must be one retrieved for that requirement and the quote must appear in it. A failed citation is dropped, and a verdict left without evidence becomes "no direct evidence".
Chat
OpenAI gpt-6-luna (the newest small OpenAI model, $0.10 / $0.50 per million tokens) at low reasoning effort, with the top 5 chunks as numbered sources and a 120-word limit. About $0.0005 an answer.
Guardrails
Questions up to 500 characters, job descriptions up to 8,000. Per network: 12 questions and 4 fit checks per 10 minutes. A hard daily budget of $0.50: each call reserves its worst-case cost in Redis before it runs and settles to the real cost after, so concurrent requests can't overshoot. Repeat questions are served from a cache at no cost. Live mode stays off unless both the API key and the shared Redis store are configured.
Mock mode
Without an API key the site runs in mock mode, labelled on every answer: rule-based requirement extraction and verdicts, and extractive answers that quote the best sentence of each matching chunk. Retrieval, citation checks, refusals, rate limits and the trace are the same code as live mode.