The resume fix that changed nothing
Our AI made a truthful resume edit, the API applied it correctly, and the score did not move. The browser test had found a product-contract bug, not a broken endpoint.
Short notes on what we ship and what we learn making RezScore. Sanitized, but honest. Subscribe to this dev log by RSS, browse the main blog, or read the source on GitHub.
Our AI made a truthful resume edit, the API applied it correctly, and the score did not move. The browser test had found a product-contract bug, not a broken endpoint.
The hardest Builder feature we shipped this summer is machinery for refusing to show you AI output. A dev log on grounding checks, withheld rewrites, and why an AI resume tool needs a working no.
A backfill canary caught our new resume scorer grading decade-old extraction bugs as if users wrote them. How a create-only design, a stratified canary, and a 15 percent tripwire kept 44,000 rescored resumes honest.
We prepared an email batch for a new resume report, then watched most of it refuse to send. The refusal was the feature.
A user followed a chat handoff into our resume Builder. Our funnel said they never arrived. The pageview was correct, and the funnel was still wrong.
One feature failed 17 of 20 times and every failure record was identical and useless. One experiment arm posted a 13 point lift at p equals zero. Both were the instrument reporting on itself, and the lesson is the same.
We stopped treating AI resume rewrites as button clicks and turned them into durable proposals with review, idempotent apply, exact provenance, and undo.
We shipped a feature with 1,253 green tests, then drove the real flow on production and hit four blocking bugs the unit suite could never see. What broke, why fixtures miss it, and the loop that caught it.
A language model explains its own leash: the number whitelist, the three-tier sourcing rule, and the audit chain that let us ship a data study with zero invented statistics.
While pulling Search Console data for an SEO plan, I found 200+ spam pages ranking under our staging subdomain: a dangling DNS record, a deleted droplet, and a squatter who inherited our reputation.
For twelve years we graded the document. This week we started grading the candidate too. Here is why one grade was never enough, and what it took to ship the second one.
A frontier model guest-writes the dev log: what happened when I graded a resume myself, then diffed my read against the production scorer, and we shipped the fixes the same day.
How we shipped Proactive Job Search at RezScore: the demand signal that justified it, the architecture that reused our resume-tailoring engine, and the three real-path bugs that only showed up when a human actually clicked the button.
We shipped a small feature with hundreds of green tests behind it. It was broken four different ways. Every bug lived in a place no test was looking, and the only thing that found them was a person clicking the button.
Our homepage took up to 20 seconds to load for real visitors, but every tool we checked it with said it was instant. The gap between those two facts was the whole bug.
Our homepage had gotten slow because an internal table had quietly bloated to nearly a million rows. Half of it was dead weight. Here is how we cleared it out while a marketing campaign was hammering the same table, with zero downtime.
Right before a big email send, our blog started returning a 500. The cause was not a bug in our code, and the real lesson was about what we let take the page down.
We went looking for what was quietly draining our compute budget. The answer was a piece of work we started specifically to avoid quietly draining our compute budget.
What shipped on a day we had four work sessions running at once, and the small bugs that taught us something.
We built a product walkthrough video the unusual way: a script drives the real app, records the genuine flow, and rebuilds the cuts. So when the product changes, the video changes with it.
Why RezScore now ships a public dev log, how the blog itself works, and what you can expect to find here.
We added a free salary range to the report card, and built a correction loop so it gets more accurate as people use it.
We moved the RezScore blog off Medium onto a file-backed system we own, where every post is a markdown file in a git repo.
We shipped Target to a Job, where you name a role and watch the builder rebuild your resume to fit it.
How we detect where a user is from and route AI work to fit cost and latency so a free global product stays sustainable.
How our chat advisor went from a generic bot to a resume-aware peer who gives specific advice and helps you act on it.
How we replaced an opaque grading call with a deterministic, rubric-based scorer that gives stable, explainable grades.