I sell a one-off career report: free CV scan, paid report if you want the fix. Zero external sales since launch in mid-August. The eight live charges in Stripe are all mine, testing, seven refunded.
I spent two weeks blaming the price, then the paywall. It was neither.
First, the stopping rule. The plan was to buy ads until 100 people had seen the price, then decide at a 2% conversion threshold. That 2% came from a CPC of €0.37. At the real €0.47, with 36% of clicks completing a scan, a scan costs €1.31 and a sale nets €15.60, so break-even is 8.4%. And with n=100 and zero sales, the top of the 95% interval sits near 3%, above the 2% the rule used to decide. The test could not separate its own two hypotheses. Recomputed properly, the sample I needed was 36, not 100: ruling out a high conversion rate is cheap, ruling out a low one is what costs money. At 0/36 the upper bound is 8.0%, under break-even. Rule answered. I doubled the price to $39.99, which halves break-even to 4.3%.
Then I opened the ads panel. €0.00 spent from 26 August to 1 September. My bank had declined two of Google's charges, the account has been limited since 17 August, and five warning emails were sitting unread in a Gmail bin. So the 36 scans that closed my stopping rule cost me nothing. They arrived on their own, and I had spent a fortnight doing arithmetic about a channel that was not running.
That left the real question: eight to thirty real people complete a scan every day, for free, and none of them buy. So I went and looked at what the free scan actually hands them.
Median score: 75 out of 100. 80% scored 70 or above. Nobody scored below 36.
My free product was telling four out of five visitors they were basically fine, and then asking them for $39.99 to fix it. Of course nobody bought. I would not have bought either.
The cause was one line of my own code. Each of the four scoring axes started at 100 and only ever subtracted for findings the model filed. Absence of evidence rendered as near-perfect. I tested it with a call-centre team leader's CV, someone made redundant in June because his site moved to automated triage, and the scan gave him 97 out of 100 for AI tool fluency. Not because he had any. Because nothing in his CV had triggered a finding against that category, and silence scored full marks.
Worse, the headline number came from the model and the breakdown came from my code, independently. So a 45/100 could sit four hundred pixels above four green bars reading 75, 85, 95 and 97. Anyone who scrolled watched the diagnosis contradict itself and correctly concluded the number meant nothing.
The prompt had been telling the model since August that the scale "must be able to deliver bad news" and that resumes with real gaps "belong in the 30s or 40s". The median it produced was 75. Instructions did not fix it, so I stopped asking. Every axis now starts at 55, findings pull it down, and strengths only pull it up when the CV evidences them with a quote I can read. An axis the CV says nothing about scores as unevidenced and earns no credit. The headline is the arithmetic of those same axes, so the number and the reasons underneath can no longer disagree. Same call-centre CV now scores 38 to 51, with the verdict "your CV is behind what current ATS screening expects" and one quoted line from his own resume as proof.
I also cut most of what the free scan gave away, but honestly that is the smaller half of this.
All of it went live this afternoon. If you scan a CV on the site today you are getting the harsh version, which is the first time in three weeks I can say the thing I am selling and the thing I am describing are the same product.
If you run a free diagnostic with a paid fix behind it: go and pull the distribution of the scores your free tier has actually handed out. Not one example. The whole distribution. I had been reading my funnel for three weeks and that one query explained more than all of it.
One clarification before anyone catches it: my product page here shows $12/mo revenue, connected automatically from Stripe. That is me buying my own report on 30 August to read what a customer actually gets. It is not a sale. External sales remain zero, which is the whole point of the post.