Notes from the index.
Engineering, mostly. Parsers, invoices, tables and evaluation. We publish the benchmarks that made us look bad too, because otherwise the good ones don't mean anything.
OCR does not fail loudly, and that is the problem
Error rates are not uniform and confidence scores are not calibrated. A wrong digit in an amount field is not a typo, it is a different invoice.
Tal Weiss · 11 August 2026
Engineering · 12 minTeaching a model to say "I don't know"
Refusal calibration ate 40% of our evaluation budget for two releases. The benchmark, three approaches that failed, and the boring one that worked.
Joel Mensah · 4 August 2026
Engineering · 10 minOne merged cell, one wrong number
Table extraction is an assignment problem, not a detection problem. Header paths, spans as ambiguity, and the footnote bug we shipped for four months.
Sofia Duarte · 28 July 2026
Engineering · 9 minYour RAG benchmark is measuring the wrong thing
Scores on public corpora tell you almost nothing about behaviour on a real repo. We rebuilt ours around attribution and staleness instead.
Joel Mensah · 21 July 2026
Engineering · 10 minEvery duplicate invoice is a near-duplicate
Byte-identical files are the case nobody worries about. Blocking keys, an asymmetric cost function, and why we surface pairs and not verdicts.
Tal Weiss · 15 July 2026
Product · 6 minWe deleted our chat interface
Usage tripled. A conversation is a bad container for work that has to be reviewed and cited, and a terminal is a very good one.
Anaïs Tremblay · 8 July 2026
Engineering · 8 minThree ways your totals disagree
Rounding, currency and tax. Some invoices genuinely do not add up, and telling that apart from a parse error is worth more than a repaired number.
Rita Ben-Ari · 2 July 2026
Maintenance · 11 minThe 31 dependencies we argued about
Every dependency is a future security advisory and a future breaking change. How we decide, and the four we removed last year.
Tal Weiss · 24 June 2026
Recipes · 9 minThree-way match is a retrieval problem with a paper trail
No join key in a folder of PDFs, so the join is made from evidence and then shown. Tolerances, the evidence sheet, and four places it is wrong.
Anaïs Tremblay · 18 June 2026
Opinion · 5 minLocal-first isn't a feature, it's a default
If the good path needs an API key, the local path is a demo. What it costs to keep offline as the configuration everything is tested against.
Rita Ben-Ari · 10 June 2026
Engineering · 8 minChunking is a layout problem, not a token problem
Fixed windows cut tables in half and strip the context that made a fragment interpretable. Layout boundaries, heading paths, and deleting overlap.
Joel Mensah · 3 June 2026
Engineering · 14 minParsing PDFs is still the hardest part
Three years of model progress and a merged table cell still destroys an answer. The failure taxonomy, the three-extractor vote, and the ugly heuristics.
Sofia Duarte · 27 May 2026
Engineering · 10 minWhich version is true
File dates lie, newest is not always right, and supersession is written in prose. Ranking versions without hiding that there are several.
Joel Mensah · 20 May 2026
Community · 4 minWhat a good first issue actually looks like
Most are unscoped work nobody wanted. We rewrote all 62 of ours to name a file, a done condition, and a reviewer who agreed in advance.
Rita Ben-Ari · 13 May 2026
Engineering · 9 minThe inbox is the ingestion pipeline
Most documents that matter arrive as an attachment, forwarded twice, inside a zip. 38,900 attachments became 7,100 documents. Here is what happened to the rest.
Anaïs Tremblay · 6 May 2026
The Quire Note
One email a month. Whatever we learned about retrieval, evaluation, or keeping an open-source project alive. Release notes stay on GitHub where they belong.
4,100 readers. Unsubscribe in one click. Also available as RSS.