About receipts.cv
What it is, why it exists, and exactly which model sees what.
Why this exists
Most resume tools write you a better-sounding version of what you gave them. The problem with that is not the writing — it is that a claim you cannot defend in a room is worse than no claim, and a tool with no record of what you actually did has no way to tell the difference.
So this works the other way round. It interviews you first, and it keeps a structured record of what you said — with the numbers you actually had and, more importantly, the ones you did not. Every resume it builds comes out of that record. If a posting asks for something the record cannot support, it is left out and you are told, rather than phrased in a way that implies it.
That is the whole product. Everything else here is in service of it.
What the models see, and which ones
| What it does | Provider | Model | What it is sent |
|---|---|---|---|
| Interviews and follow-up chat | Fireworks AI (US) | deepseek-v4-flash-0731 | reads your record and the conversation so far |
| Tailored resumes | Alibaba Cloud | qwen3.7-plus | reads your record and the job posting |
| Cover letters | Alibaba Cloud | qwen3.7-plus | reads your record and the job posting |
| Gap analysis | Alibaba Cloud | qwen3.7-plus | reads your record and the job posting |
| Job scoring against your record | Alibaba Cloud | qwen-flash | reads a summary of your record |
| Reading job postings | Alibaba Cloud | qwen-flash | reads the posting only — nothing about you |
| Writing what you said into your record | Fireworks AI (US) | deepseek-v4-pro | reads the conversation |
Identifying details are removed before anything is sent
Removed entirely — your name, email, phone number, address, and profile links. They are never sent to any model. Your name is added back into a finished document by our own code, at the end, after the model has already written it.
Replaced with placeholders — employers, schools, other people's names, internal product names. The model sees [EMPLOYER_1] and a note that it is a 200-person marketplace; we put the real name back afterwards. That is what lets the writing be specific without the provider holding a named file.
Two checks make this more than an intention. Before any request leaves, the assembled text is scanned for every identifier it should not contain, and the send is refused if one survives. And if a finished document comes back with a placeholder we cannot map to a real name, it is rejected rather than saved — a resume reaching an employer with [EMPLOYER_2] where a company should be is worse than a build that failed.
The honest limit. A career history with titles, dates and industries is still identifiable to someone determined enough, even with the names taken out. This makes your data de-identified, not anonymous. What it actually buys you: if a provider were breached, what they hold is an unnamed career history rather than your file with your name on it.
How it is built
- Python, FastAPI, PostgreSQL. Server-rendered HTML with a little JavaScript where something streams. No front-end framework.
- Your documents are rendered by our code, not by a model. The model produces structured data; the PDF and DOCX are generated from it deterministically. That is why what you review and what you send cannot disagree.
- Your record is versioned and append-only. Nothing an interview writes replaces what was there — it adds, and every version is kept. A correction edits a field and says why; it does not quietly delete a claim.
- Files are encrypted individually, each with its own key, and that key is stored with the row. Deleting your account destroys the keys, which makes the remaining ciphertext unreadable rather than merely unlisted.
- Job postings are read once, not per person. About thirty fields are extracted from each one — pay, seniority, remote mode, required skills — so filtering and ranking are database queries rather than model calls. It is why the roles list is instant and costs nothing to browse.
Who
Built by Dylan Fox, a data science leader who got tired of the gap between what he had actually done and what a resume tool would say about it. It is a small operation — if you email, you get him.
See also help, the privacy policy, and the terms.