Case 01 · Calibr
Building an AI product that refuses to lie
Calibr rewrites your resume in a target company's language. Its hardest requirement was not quality. It was that the output had to be something you could defend out loud in an interview, which meant the model was not allowed to invent anything.
- Role
- Founder. Sole PM, designer, engineer.
- Timeframe
- March 2026 to present.
- Team
- 8 people: 2 product, 1 strategy, 5 marketing.
- Live at
- calibr.co
If you read one thing
- I chose a constraint that made the product worse on first impression. Blocking invented claims means Calibr's output reads less impressive than raw ChatGPT. I took that trade because a resume you cannot defend in an interview is a liability, not a feature.
- I built an evaluation harness instead of trusting my own taste. Ten criteria, written by me, with a model grading 100+ real runs against them. Aggregate quality moved from 67 to 93, and the rubric caught a failure my eye had missed entirely.
- The product is live and used. 200+ users and 500+ resumes processed, with tailoring time down from about two hours to under twenty minutes.
01Context
Amazon reads a resume for its leadership principles. McKinsey reads for structured problem solving. A Series B startup reads for whether you have shipped anything alone. The same bullet is strong at one and invisible at the next.
So students paste the job description into ChatGPT and get back something that reads well and did not happen. Calibr researches the company live, rewrites each bullet in its language, and marks every change for the user to approve.
02The problem, and how I knew it was real
I started from the complaint, not the idea. Before writing any engine I tore down eight tools, Teal and Rezi and Jobscan and Kickresume among them, and read what their users complained about on Reddit, Product Hunt and G2.
- 25+User interviews, run against a fixed script with an insight tracker, so I could tell a pattern from a loud opinion.
- 8+Competing tools torn down feature by feature, including their pricing and their output quality.
- 100+Complaints mined from public reviews and forums, coded into themes.
They fell into two piles, and the split is the whole thesis. Keyword tools were safe and useless: they matched strings and said nothing. General LLMs were useful and unsafe: better writing, and invented metrics their users then had to defend in a room.
The gap was not quality. It was a product that could be both good and true.
03Why this problem, and what good meant
Plenty of resume problems were worth solving. I picked this one because the incumbents were failing structurally, not from lack of effort: keyword matchers cannot read a company, and general models cannot be trusted not to invent.
So I wrote down what good meant before the engine existed, because "the output looks better" is not a bar anyone can fail. Three, in priority order:
- Interview-safe. Every claim in the output must trace to something the user actually wrote in their input. Zero invented facts is a pass or fail, not a score.
- Company-specific. Run the same resume against two different companies and the outputs should be materially different, not the same text with swapped nouns.
- Faster than doing it by hand. If it does not beat two hours of manual tailoring, nobody comes back.
The order matters more than the list. Interview-safe sits above company-specific, so whenever the two conflicted I shipped the more boring output.
04What I considered, and rejected
| Approach | Why it was on the table | Why I did or did not take it |
|---|---|---|
| Keyword matching against the job description | Cheap, fast, no model risk, and it is what the incumbents already do. | Rejected. It matches strings, not language. It is exactly the product the complaints were about. |
| A single large prompt to a general model | Best raw writing quality, near zero build cost, ships in a weekend. | Rejected. It fabricates. Users cannot tell which line is invented, which makes the whole document unsafe. |
| Real-time company research, then a guarded per-bullet rewrite | The only approach where "specific to this company" and "traceable to your real work" can both hold. | Taken. Two model calls instead of one, slower and more expensive, and it is the only version that clears the top bar. |
05The decision, and what it cost
A research pass, then a constrained rewrite, with a hard guard between the model and the output: if a rewritten bullet contains a number, a tool or an outcome that is not in the user's original input, it does not ship. The user approves every change.
It cost three real things.
- The output is less impressive. Put Calibr next to ChatGPT on the same resume and ChatGPT often looks better, because it is allowed to write the metric the user wishes they had. I lose some first impressions to that.
- It is slower and costs more per run. Two model calls plus live company research is a heavier request than one prompt.
- It puts work back on the user. Reviewing every change is friction. Some people want the magic button.
I took the trade because the promise is the interview, not the document. A resume that gets you into a room you cannot defend yourself in is worse than no resume. The guardrails have only ever been tightened, including when loosening them would have made a demo go better.
06How I knew it was working
For six weeks I judged quality by reading it. That is a mood, not a method, and it does not survive comparing two versions of a prompt a month apart.
So I wrote ten criteria covering company fit, evidence grounding and bullet structure, and had a model score every run against them. LLM-as-judge. A number I could compare across versions instead of an impression I had to trust.
- 10Criteria in the rubric, written before any scoring, so I could not tune the bar to the result.
- 100+Real outputs scored, not hand-picked examples.
- 67 → 93Aggregate quality, before and after I rewrote the optimization logic against what the scores exposed.
It immediately caught a failure I could not see: quantification scored 9.5 on every consulting role and 7.5 on every technical one, while the average looked healthy. By hand I would have kept missing it, because I was reading the ones that looked fine.
That is the argument for evaluation in a sentence. It is not there to prove you were right. It is there to find the segment you were not looking at.
Where it got to.
200+
Users, up from the first 12, with 500+ resumes processed.
2 hrs → 20 min
To tailor a resume to one company. About six times faster.
+40%
User base, after segmenting into industry cohorts with separate messaging.
Five experiments moved daily users about 35% and retention about 25%. Those sit second, because they are the ones I would want to re-measure over a longer window.
07What I would do differently
I would build the eval in week one, not week six. Every prompt change before it existed is one whose effect I cannot tell you. The rubric took an afternoon. The weeks of unmeasurable iteration cost far more.
I would have watched cost per run from day one. Every cache miss ran company research twice, uncapped, for weeks. Capping it cut search volume per calibration 71%. Never a hard bug, just a metric I had not thought to instrument, which is a product failure rather than an engineering one.
I would have picked a north-star metric on purpose. Mine emerged from whatever I happened to be looking at, so activation and retention took turns being the thing I cared about. Picking one would have made a lot of arguments with myself shorter.