Skip to content
~/ tommybuilt .dev

// case study

TextSpeakPro

A creator-focused AI voice platform, taken from idea to a live SaaS with paying customers. Auth, billing, usage limits, and a vendor-agnostic voice engine, built and run by one person.

timeframe: Early 2026 to present stack:
  • Next.js
  • Cloudflare Pages
  • Cloudflare Workers
  • Supabase
  • Stripe
  • Resend

Overview

TextSpeakPro is an AI text-to-speech platform built for content creators and small businesses. You paste in text, pick a voice, and get back a downloadable voiceover. The platform carries a large library of named voices, voice cloning on paid plans, and built-in translation for multilingual content. It is the most complete product in the portfolio, and the first one I took all the way from idea to a live SaaS with real paying customers.

The goal

The market already had strong text-to-speech products. It also had a gap: the established options price out the exact people who need TTS most, the creators doing voiceovers, narration, faceless video, and shorts before they are monetizing. TextSpeakPro was built to sit in that gap. Affordable, fast, genuinely good enough for creator work, with cloning included on paid plans instead of locked behind a premium tier.

The stack

The frontend is Next.js on Cloudflare Pages. A Cloudflare Worker handles the backend logic. Supabase provides auth and the database. Stripe runs billing. Resend handles transactional email. The voice generation itself runs through a provider layer, which is the single most important architectural decision in the project.

What I built

The product never names a vendor in the UI. Users see tiers, described by quality and capability, not by which company makes a given voice. The vendors live in the backend and the legal pages. When a provider changed pricing or terms, and one did, the customer-facing product did not have to change at all. That abstraction layer is what makes the product durable.

On top of that sits a full Stripe integration: plan tiers across monthly and annual billing, a server-side subscription guard so plan changes are validated on the backend rather than trusted from the frontend, proration on upgrades, and webhook handling that keeps subscription status in sync. Usage metering reserves a user’s character allowance before the provider call fires, not after, so a generation can never run up provider cost the app has not already accounted for.

Around all of that is the hardening a payment-enabled product needs and nobody sees unless it is missing: abuse protection, rate limiting, an audit log, email and country blocklists, and payment-failure handling that revokes access correctly.

The hard parts

The honest parts. Stripe was the longest fight: the move from test mode to sandboxes, the strict isolation of live and test data, webhook setup, and a checkout-redirect bug caused by a single environment variable pointed at the wrong domain. A static frontend bakes its environment variables in at build time, which produced a genuinely confusing stretch where updated pricing in the dashboard kept charging old prices, because the old values were frozen into an earlier build. And early post-launch data showed a real onboarding problem: some subscribers were paying for higher tiers and only ever using the free voices, because nothing was showing them what they had unlocked. Each of those went straight into how I build every project now.

Where it landed

TextSpeakPro launched and it works, end to end. It has a full live billing system, paying customers across its plan tiers, and a signup base that keeps growing. The growth is the part that matters most: it is not a launch spike that faded, it is a steady, ongoing climb in both signups and paid subscribers. That proves the chain, repeatedly: a stranger can find the product, understand it, trust the checkout, and pay, with no human in the loop, and enough of them keep doing it that it compounds. That is the line between a demo and a business, and TextSpeakPro is the project that crossed it.

My role

Solo. Product, architecture, build, billing, infrastructure, launch, and ongoing operation. AI coding agents handled execution under detailed direction. Every product and architecture decision, and every verification, was mine.