Inspiration

Swiss papers carry their own truth: a QR-bill encodes the amount, the IBAN and a reference with a check digit; a bank statement must add up; a letter from the canton names a deadline. Language models read these papers well and still invent figures. We wanted the opposite: a small Swiss model on an ordinary laptop, and a figure that is either proven or blank.

What it does

Drop a folder of Swiss papers (QR-bills, bank statements, official letters, in French, German or Italian). Apertus 1.5 reads the words; plain code decodes the QR, checks every checksum, redoes every sum and compares every date. Each figure points back to its paper, and anything the code cannot confirm stays blank with the reason. On top: an Agenda of every event found in the papers (a real calendar: what to pay this week, overdue, deadlines, balances) with a calendar export for reminders, the month's report in four languages, and questions answered with the paper cited. Nothing leaves the machine.

How we built it

Python, FastAPI, PyMuPDF, zxing-cpp, a Swiss QR-bill parser written for this, SQLite FTS5, one Docker container (make run). Apertus 1.5 8B served locally (8-bit MLX) and 70B on Infomaniak's Swiss cloud, through the same three OpenAI-compatible variables. 100 synthetic Swiss papers with ground truth and planted traps, 50 questions, baseline versus ours, reproducible with make eval.

Challenges we ran into

Getting the checks right rather than the prompts: statement columns vanish in text extraction, so signs had to be recovered from the printed totals; references on bills without QR had to be decided by code; a small model drops the last digit of an IBAN. Each failure became a rule, not a bigger prompt.

Accomplishments that we're proud of

Apertus alone invents 4.5 % of the figures with the 70B and 8.9 % with the 8B. Papertus invents 0.0 % with both (100 % correct with the 70B, 99.3 % with the 8B, the rest blank with a reason). 50 questions answered by code from verified facts, no model call. 120 tests. Report in English, French, German and Italian.

What we learned

The small model is enough when code does the proving. Sovereignty is a property of the architecture, not of the model size.

What's next for Papertus

OCR for scanned papers, payslips and tax statements (eCH-0196), Swiss open data behind the deadlines, a one-click installer that ships the 8B weights, a public evaluation set on Hugging Face.

Built With

Share this project:

Updates

Submission history