Why every AppX user starts with 150 credits (and what we learned from 350)
Free-trial sizing is pricing physics, not marketing. We dropped from 350 to 150. Conversion held; cost per signup dropped ~55%. The lesson on what the free tier is actually for.
AppX team ·
Every new AppX signup lands with a credit balance to play with. For a long stretch that number was 350 — enough credits, on paper, to build three to four small working apps before hitting a paywall. Generous. Calibrated. Bad.
We dropped it to 150 a while back, watched the funnel for a few weeks, and never went back. Cost per signup fell by roughly 55%. Conversion held flat. The intuition that "more free credits = more conversions" turned out to be wrong in a specific, measurable way, and the lesson generalizes.
Starting point: 350 credits
The original calibration was straightforward. Ship one small working app — a habit tracker, a todo list, a tip calculator — and the median user burns around 80 credits between the initial generation and a few chat edits. Multiply by four-ish apps and you land on 350. That feels right on a whiteboard. It frames the trial as "build a few things, fall in love, upgrade."
No monthly refresh — the 350 was a one-time signup bonus, not a recurring allowance. Refilling free credits every month is a churn-extension subsidy disguised as generosity, and we wanted to avoid that from day one.
So far, so reasonable.
What real usage showed
The first surprise was the distribution. Median credit usage before a user either converted or churned was nowhere near 350. It clustered under 100. People either hit their use case in one or two apps and stopped, or they bounced off a single failed generation and never came back. The 350 ceiling was almost never the binding constraint on the trial experience.
The second surprise was where the pricing wall actually sat. Users who would pay decided in their first one or two sessions — long before they got close to 350 credits. Users who would not pay were not held back by credit limits either. They were held back by interest. The decision to pay was happening on engagement, not on burn rate.
The third surprise was the correlation. The users who did burn through 200+ free credits were not freeloaders extending their trial — they were the most likely to convert. They had a half-built app, they had screens they cared about, they had a plan. The credits were a signal of investment, not a substitute for it. The marginal generosity past their conversion point was money we were paying to people who had already decided to pay us.
And then there was the cost side. Free credits are not free to us. Every signup that burns 350 credits without converting is a check we wrote on OpenRouter, on Stripe processing for the eventual non-payment, on the compute behind the live preview. At signup volume, that becomes a real line item — visible in the OpenRouter dashboard, allocable to a cohort that mostly never paid us back.
The drop to 150
| 350 credits | 150 credits | |
|---|---|---|
| Free credits per signup | 350 (one-time) | 150 (one-time) |
| Median used before convert/churn | under 100 | under 100 |
| Conversion rate | baseline | held flat |
| Cost per signup | baseline | down ~55% |
| When payers decided | session 1–2 | session 1–2 |
The hypothesis was uncomfortably simple. Users who would convert would still convert at 150 — they were converting at session two anyway, and 150 credits is plenty for two sessions of evaluation. Users who would churn would just churn earlier, with less of our compute spent on them. Net effect: same paid funnel, lower cost.
We dropped it. We watched.
Conversion rate held steady. Free-trial-to-paid funnel shape was nearly identical at 150 as at 350 — the same fraction of signups paid, on roughly the same timeline. Cost per signup dropped about 55%. The shape of the engagement curve barely moved.
The users who used to burn 250+ credits before converting now converted at 100. Same people, same intent, just less runway eaten before they pulled out their card.
The lesson on free-trial sizing
Free-trial sizing is a forecast problem, not a generosity problem.
The question is not "how can we be nice to new users." It is "what is the median trial user's evaluation budget, and what is the marginal cost of supporting a non-converting signup past that budget." The floor matters — give people too little and they cannot evaluate at all. The ceiling rarely matters — almost no one hits it, and the ones who do were already going to convert.
Three things compound:
Optimize for the median trial user, not the converting user. The converting user will pay. They are not your calibration target. The trial user is — and the trial user does not need 350 credits to figure out whether they like the product.
Generosity past the conversion point is a transfer to non-converters. Every credit beyond what the median trial user actually consumes is, statistically, a credit you are giving to someone who will never pay. That is a fine choice to make deliberately. It is a bad choice to make accidentally.
Cost of generosity is real and visible. OpenRouter sends a bill. The dashboard is right there. "Be more generous" is easy to propose in a planning doc and easy to ignore in the cost report.
What we kept
A few decisions survived the resizing.
No monthly refresh. The 150 is a one-time signup amount. We do not top up free balances on the first of the month. Monthly refills retrain users to wait for the credit drop instead of paying — they convert into a worse kind of user, one optimizing for the free bucket.
Honest credit costs. Every chat turn surfaces "this turn costs N credits" before it runs. No hidden multipliers, no surprise burns. If a generation is expensive, you see it before you commit.
Refund on failure. A generation that fails — bad code, timeout, system error — does not burn credits. We reserve upfront, finalize on success, refund on failure. The credit balance reflects work that actually shipped, not work we attempted on the user's behalf.
What we won't do
We tried "make credits cheap to be nice." It moved no metric we care about. People did not convert faster, churn slower, or refer more friends. They just used credits faster and we paid more for it.
We will not tie the free trial to a monthly subscription's free tier. That is a recurring-revenue play — different problem, different math, different user. A trial is a one-time evaluation budget. A free tier is a permanent product. Conflating them produces a product that is neither.
Closing reflection
The counterintuitive part of pricing physics is that more is not always better, even when the marginal cost of more is small. Trial sizing is a forecast about the median user's evaluation budget, and the right answer is whatever number lets them honestly evaluate the product without subsidizing the people who were never going to pay.
150 is not a magic number. It is our number, for our product, at our cost structure, with our current user mix. If our generation cost per credit fell by half, we would probably raise it. If our median time-to-conversion shortened, we might lower it. The number is downstream of the math, not upstream of the marketing.
The framing we wish we had started with: free credits are not a gift. They are a forecast. Make the forecast honestly, and the funnel takes care of itself.