
The situation
After a hospital stay a household receives a pile of bills from providers and a pile of explanation-of-benefits statements from the insurer, and the two piles do not line up. Finding the charge that was billed twice, or billed after the insurer already paid, means a spreadsheet and an afternoon.
The documents are photographs and PDFs. The data on them is some of the most sensitive a person has.
What we built
- Upload a bill or a statement as a photo or PDF.
- AI extraction: a vision model reads the provider, dates, codes, amounts billed, allowed, paid and owed.
- The user confirms every extracted field before it is stored. The model drafts; the person decides.
- Matching: bills are matched to statements by provider, date and amount, and the app lists what you were charged that the insurer says you do not owe.
- Encryption at rest for every document and extracted field, and a strict browser security policy.

How it is built
The document never leaves encrypted storage except to be read by the model and shown to its owner. Extraction is a draft that the user confirms; nothing is matched or totalled on unconfirmed data.
For the engineer reading along: Python and FastAPI, Anthropic Claude vision for extraction with a structured output schema, Fernet encryption of documents and fields at rest with keys outside the database, private object storage with short-lived signed URLs, strict content security policy, per-user data isolation.
What it does today
MBILL is in private beta with a small number of households. It is on this page because it is the clearest example of two things we do: AI that drafts under human confirmation, and handling of sensitive personal data as a design constraint rather than a policy document.
Running it
Shared infrastructure with its own process and its own encryption keys, monitored by Watchdog. Model calls are rate-limited and never include data from more than one user.
Have something that needs building, or running?
Tell us what you are trying to do. We reply within one business day, and the first conversation is free.