A Narrow AI Chatbot, Two Weekends, Ten Paying Users

Everyone wants to sell an AI wrapper and almost everyone picks a niche that is too broad. A general assistant competes with the free tier of ChatGPT on day one and loses. The chatbot I built in two weekends does exactly one thing for exactly one audience, and that constraint is the reason it has paying users. I will not share the niche because the whole playbook is generic; pick your own, apply the same rules, and you will land somewhere similar.

The niche test I ran before writing any code

Before I opened a code editor, I posted a two sentence pitch in three niche forums and asked if anyone would pre pay 15 euros for a closed beta. I got four yes responses and two maybe in 48 hours. That was my green light. If I had gotten zero, I would have changed niche, not pushed harder. The same filter I use for Notion template launches applies here; a cold audience has to reach for a wallet before I write a line of code.

The stack, kept boring on purpose

Next.js on Vercel, Clerk for auth, Stripe for billing, OpenAI API for the model, a single SQLite file on a small VPS for state. No vector store, no RAG, no fine tuning. The product is a single, carefully written system prompt with a short context window and a message cap. The whole codebase is under 900 lines. Boring is the point. Every exotic choice I briefly considered (vector database, self hosted open source model, complex orchestration) would have added weeks and zero user value on the scale I am operating at.

Stripe, the step that cost me a full day

Stripe onboarding in the EU needs a registered legal entity. I use a French micro entrepreneur status, which took four hours of paperwork and 180 euros. Without that, Stripe holds your first payout and locks the account until verified. The second Stripe gotcha is the subscription lifecycle webhook; I wasted a full day because I had not handled the invoice.payment_failed event, and three users churned silently because their cards had expired. Handle the whole subscription event set before you launch, not after.

Unit economics, month three

34 paying users at 15 euros, 510 euros monthly recurring. OpenAI token cost at the 200 message cap averages 4.80 euros per user monthly; total API cost around 163. Stripe fees around 22, hosting 11, Clerk free tier still valid at this size. Net margin roughly 314 euros per month, 61 percent on revenue. The cap makes this predictable. Without the cap, my heaviest user (one lifetime student who truly tested the product) would have consumed more than 40 euros of tokens alone, which would have killed the margin on ten users.

Retention and the one feature I almost cut

Retention at month three is 82 percent. Three users churned (one hard, two softly). The feature that keeps them is a weekly emailed summary of their past conversations, with three suggested prompts. I almost cut it in week one because it felt cosmetic. Churn among users who opened at least one summary was 4 percent; among users who never opened one, 28 percent. A near cut feature turned out to be the retention engine. For the compounding model behind that, compare with my paid newsletter economics.

John's rare tip

Charge on day one, annual discount on day seven

I charge every user on day one, no free trial. On day seven I send an email with a 25 percent discount for annual prepay. Thirty one percent of my users take it. The cash flow shift is meaningful; month three would have been 314 net, with annuals it is closer to 480. And annual users churn at 3 percent across the observation window, against 14 percent for monthlies. The counterintuitive takeaway is that charging earlier attracts better customers, not fewer.

What I'd avoid

Do not skip the message cap. Every indie builder I know who launched without a cap burned through their runway when a single heavy user discovered the product. A cap at 200 messages per month covers the 95th percentile of real usage in my data and protects you from the 99th. If a user complains about the cap, they are either extracting real value (good, raise the price) or abusing the product (good, let them churn).

Frequently asked

Can you really build and sell a chatbot in a weekend?

Build, yes. Sell, no. The working product took me one weekend of roughly fourteen hours. Billing, onboarding and an actual landing page took a second weekend. Distribution, where the first ten paying users come from, is not a weekend job; it is an ongoing channel you pick once and stick with.

What margin is realistic after token costs?

On a 15 euro monthly subscription my average margin after OpenAI token costs is 68 percent at a cap of 200 messages per user per month. Heavy users drag it down, light users push it up. The cap is the load bearing decision; without it, a single power user erases the margin on five normal ones.

Do you need a real company to take Stripe?

In the EU yes, a sole trader registration is the minimum. Setup took me roughly four hours and 180 euros in administrative fees. Stripe onboarding after that was same day. If you skip this step you are inviting a frozen account the moment you hit payouts over 1,000 euros.