{"slug": "i-gave-my-saas-14-days-to-get-3-sales-it-got-0-here-s-the-math", "title": "I gave my SaaS 14 days to get 3 sales. It got 0. Here's the math.", "summary": "A developer who relaunched their SaaS product UIPrompt as a buy-once tool after a failed subscription model reported zero sales in a 14-day window, leading to the product being placed in maintenance mode. The developer attributed the failure to a lack of demand rather than pricing, noting that two different pricing models yielded the same zero result. They emphasized the importance of instrumenting funnels to diagnose null results and advised that polish does not equate to traction.", "body_md": "Two weeks ago I wrote here that I killed my SaaS subscription 7 days after launch and rebuilt it as a buy-once product. I ended that post with a promise written down before I could talk myself out of it: 3 real purchases in 14 days of relaunch, or I move on and leave UIPrompt in maintenance mode. Either way I would post the numbers.\n\nThe 14 days are up. Here are the numbers.\n\nPurchases: 0.\n\nNew organic signups during the window: 0. The last real signup was a free account three days before the relaunch even went live. They looked once and never came back.\n\nSo by my own written bar, this is a move-on. UIPrompt goes to maintenance mode today. I want to be useful about why, because \"it didn't sell\" is a result, not a lesson.\n\nQuite a lot. That turns out to be part of the problem.\n\nI shipped a real product. The buy-once model was clean: a free playground with no signup, one $39 price, and an AI Design System Pack export that survives a blind test (a fresh AI session got only the exported files and matched 34 of 34 specced properties, inventing zero colors). I bought a custom domain. I launched on Product Hunt with a video, posted a Show HN, cross-posted the pivot article, made a 20-second promo video in Remotion with licensed music, put it on YouTube and X, and submitted to Peerlist, Dev Hunt, Indie Hackers, SaaSHub, and a stack of directories.\n\nNone of it produced a single sale. Not one.\n\nOn the first launch I blamed pricing. I killed the subscription, and I was right that a burst-usage tool should not bill monthly. But here is the uncomfortable part: fixing the pricing changed nothing, because pricing was never the binding constraint. Demand was.\n\nTwo different pricing models, same zero, should have told me the problem lived upstream of the checkout page the whole time. I was tuning the part of the funnel I could see and control (the offer) while the actual leak was at the top: not enough of the right people, with pain acute enough to pull out a card, ever arrived.\n\nThe tell, in hindsight, is that I cannot even give you a clean \"traffic versus conversion\" breakdown, because I never instrumented the funnel well enough for a zero to be diagnostic. When the result is 0, the only question that teaches you anything is \"0 out of how many visitors, dropping off where?\" I built the beautiful product before I built the ability to answer that.\n\nA pre-committed number is the best gift you can give your future self. Writing \"3 sales in 14 days or I stop\" before I was emotionally invested is the only reason I can close this cleanly instead of sinking another month into it. The bet failed. The bet also worked exactly as designed: it made the decision for me, on time, without drama.\n\nPolish is not traction. The promo video is genuinely nice. The blind test is genuinely impressive. Neither moved the number, because when the top of the funnel is empty, every hour spent on the asset instead of the audience is motion dressed up as progress. I made a lot of motion.\n\nInstrument the null result. Ship the analytics that let a zero tell you where it died, before you ship the thing you are measuring. A zero with a funnel is a lesson. A zero without one is just a bruise.\n\nIt stays live. The playground is free forever, the domain is paid up, and it costs me almost nothing to leave running. If you build UI with Claude Code, Cursor, or v0, go use it. It genuinely works: [https://uiprompt.co](https://uiprompt.co)\n\nI am not announcing the next thing today, because I do not have it yet and I would rather not fake conviction I have not earned. I said I would post the numbers, win or lose. They lost. Onward.", "url": "https://wpnews.pro/news/i-gave-my-saas-14-days-to-get-3-sales-it-got-0-here-s-the-math", "canonical_source": "https://dev.to/yingyenliu/i-gave-my-saas-14-days-to-get-3-sales-it-got-0-heres-the-math-541a", "published_at": "2026-07-31 09:51:32+00:00", "updated_at": "2026-07-31 10:06:42.338779+00:00", "lang": "en", "topics": ["ai-products", "developer-tools", "ai-startups"], "entities": ["UIPrompt", "Product Hunt", "Remotion", "Claude Code", "Cursor", "v0"], "alternates": {"html": "https://wpnews.pro/news/i-gave-my-saas-14-days-to-get-3-sales-it-got-0-here-s-the-math", "markdown": "https://wpnews.pro/news/i-gave-my-saas-14-days-to-get-3-sales-it-got-0-here-s-the-math.md", "text": "https://wpnews.pro/news/i-gave-my-saas-14-days-to-get-3-sales-it-got-0-here-s-the-math.txt", "jsonld": "https://wpnews.pro/news/i-gave-my-saas-14-days-to-get-3-sales-it-got-0-here-s-the-math.jsonld"}}