Pro · Build in public

Every product, taken apart.

The products grid shows the scoreboard. This is the game tape — the bet each product was founded on, what actually worked, and the thing that broke. 5 launches, $142,000 lifetime, nothing airbrushed.

FormCraft

Live

$3,200 MRR · 1,847 users

FormCraft lets non-technical teams build embeddable forms, collect responses, and route leads to email or Slack — without writing a line of code. Built for the operators who are tired of paying $99/mo for Typeform when they only need 5 forms.

AstroSupabaseStripeTailwind
The bet
That a long tail of small teams would happily pay $19/mo for "Typeform, but only the 5 forms I actually use." Most form builders price for the enterprise; almost nobody prices for the operator with a clipboard.
What worked
Brutal scope discipline. FormCraft does five things and refuses the sixth. That made it cheap to run, easy to explain, and impossible to out-feature on the things its users actually cared about. Organic SEO on "Typeform alternative" did the rest.
What broke
Churn from seasonal businesses I never solved cleanly. A landscaper needs forms in spring and cancels in winter. Annual plans helped, but I should have built a "pause" tier two years before I did.

PingAlert

Live

$1,450 MRR · 612 users

PingAlert checks your URLs every 60 seconds and fires an SMS or Slack message the moment something goes down. No dashboard to babysit — just quiet until it's not. Intentionally simple: one screen, one plan, $9/mo.

Node.jsTwilioPlanetscaleRailway
The bet
That "boring and quiet" beats "powerful and busy" for uptime monitoring. The incumbents sell dashboards; I bet most people just want a text message when the site is down and silence otherwise.
What worked
One screen, one plan, $9/mo. No free tier to support, no pricing-page paralysis. The simplicity was the product — support tickets are nearly zero because there is almost nothing to misconfigure.
What broke
SMS costs scale with success in a way SaaS margins do not love. A handful of customers monitoring hundreds of endpoints quietly became unprofitable before I noticed. Usage caps now exist; they should have shipped on day one.

DocuFlow

Live

$890 MRR · 341 users

DocuFlow is a REST API that accepts HTML or a template ID and returns a rendered PDF in under 2 seconds. Built for developers who are tired of wrestling with headless Chromium in production. Pay-per-use, no monthly minimums.

BunPuppeteerAWS LambdaStripe
The bet
That developers would rather pay per PDF than run headless Chromium in production ever again. Anyone who has tried to keep Puppeteer alive under load knows the pain I was pricing against.
What worked
Pay-per-use with no monthly minimum removed the only objection that mattered. Developers could try it on a side project for cents and expand without a procurement conversation. The API surface stayed tiny on purpose.
What broke
Cold-start latency on Lambda was a constant fight, and a "render this 80-page invoice" request could blow the timeout. I under-invested in a queue for the heavy jobs and lost a few high-value customers to it.

ListPilot

Sunset

$420 peak · sunset

ListPilot cleaned and validated email lists to reduce bounce rates before sending campaigns. Launched into a market that already had three well-funded competitors. Couldn't differentiate on price or features — turned off the servers in December 2022.

Next.jsVercelSendGrid APIPostgres
The bet
That I could win an email-validation market on better UX. The bet was wrong before the first commit: three funded competitors already owned the keywords, the integrations, and the trust.
What worked
Honestly, the shutdown. Killing it fast — before sinking another year in — was the most profitable decision of the whole project. The code became boilerplate I reused elsewhere; the lesson became the filter for every product since.
What broke
Everything upstream of the code. I validated that the problem was real and never checked whether the *market* was winnable. Real problem, unwinnable market, is still a no.

Lesson: I solved a real problem in a market I didn't understand. Validate the competitive landscape before you write a single line of code.

ShipKit

Sold

Sold for $8,500

ShipKit was an opinionated Astro + Tailwind starter with auth, billing, and a dashboard shell pre-built. Sold to a developer tools studio in October 2023 who wanted to build on the foundation rather than maintain their own.

AstroTailwindLucia AuthStripe
The bet
That the boilerplate I kept rebuilding for my own launches was worth selling to other builders. If I needed auth + billing + a dashboard shell every time, surely others did too.
What worked
It did sell — and the acquirer wanted the foundation, not a flip. Productising my own internal tooling turned sunk cost into runway. The cleanest eight months of runway I ever bought.
What broke
Maintaining a boilerplate is a second job: every dependency bump is a support ticket waiting to happen. Selling it was the right call precisely because I did not want that job. Know when an asset is really a liability.

Want the next teardown as it happens?

Every one of these started as a Sunday email in Ship It Weekly — the numbers, the mistakes, and the occasional win, in real time.