The problem
Cloud assistants answer confidently from anywhere. For studying I wanted the opposite: answers only from my own sources, a citation for every claim, on a laptop with Wi-Fi off.
What I did
- Picked the model to fit the machine. Gemma 4 E2B at 4-bit, because the larger versions didn't fit in the 5 to 6 GB free on an 18 GB Mac.
- Wrote the CLI and harness with only Python's standard library: ingest, search, ask, and chat modes.
- Built hybrid retrieval: my own BM25 plus local embeddings, merged with reciprocal rank fusion.
- Wrote the expected answers for four tests before running them, including one the wiki should refuse.
- Checked every citation in code, with one automatic retry when a citation doesn't point to a retrieved passage.
- Recorded an offline demo with Wi-Fi off. All four tests matched the online results.
Results
The failure is documented. A question in my own shorthand ("A3") missed the right passage, and the model answered a nearby question with a real citation.
What I'd do differently
A citation check proves a citation exists, not that it answers the question. Next: an alias file so my shorthand expands (A3 means Assignment 3), a guaranteed slot for each source's best passage, and a second check that asks whether the answer fits the question.
Artifacts
Source and evidence on GitHub ↗


