dissect

Dissecting a millfolio question

End to end: the exact prompt the frontier model receives, the Mojo program it writes, and the raw sentinel-delimited output that program prints — for one real run over the synthetic demo vault.

The questionGive me a table with the monthly amounts I spent per merchant in the last 6 months for the merchants that had more than 2 transactions. Display line graphs for the top 10 merchants where I spent the most money.

the model writes code, not reads data runs locally in a Seatbelt sandbox Claude wrote the program · Qwen renders on-device

1 · The full prompt →
The system prompt (the confidentiality contract + tool API) plus the user turn: the question, the aliased manifest (file_0…, col_0…, kinds — never a value), and the category tag names.
2 · The generated Mojo program →
The from vault import * program the frontier model wrote, verbatim (158 lines), syntax-coloured.
3 · The raw program output →
What the program prints on fd 1 — -delimited @@stat@@ / @@progress@@ / @@result@@ channels. Separators in red.

What it produced

The chat view — the workflow steps and the generated program in the sandbox panel:

chat and generated program

The rendered result — the monthly table and per-merchant line graphs:

rendered table and line graphs

The AI-tag flow — a reusable, on-device classifier

Some questions aren't a keyword match — “fixed monthly bills” needs judgment. When a generated program classifies transactions with the on-device model, millfolio offers to turn that judgment into a reusable AI tag: a plain yes/no prompt the local model answers for every transaction, cached on .tags so future questions filter with no model call at all.

frontier model suggests a reusable fixed_bills AI tag

The frontier model proposes fixed_bills as a reusable tag with a one-line yes/no prompt — “Is this a recurring fixed monthly bill payment (phone, internet, utilities, rent or mortgage, insurance, or a subscription)?”

on-device backfill computing 639 transaction verdicts

Creating it kicks off a backfill — the on-device Qwen model computes a yes/no verdict for every transaction (639 here), entirely local, never through the EgressGuard. Priority controls keep it out of the way of interactive questions. From then on the tag is instant.