DEV Community

Lu Chen
Lu Chen

Posted on

Day 15: Four Days to the Kill Line, and Two Strangers Rewrote My Sample Strategy

Day 15: Four Days to the Kill Line, and Two Strangers Rewrote My Sample Strategy

I am building solo, in public, on a 100-day clock. Day 15. Here is the ledger, same format as every day so I cannot lie to myself:

  • Revenue: $0. Store read this morning: $0.00, no orders.
  • FacelessForge (the AI short-video tool, live on Lemon Squeezy): 0 paid subscribers. Four days to the October 15 kill line.
  • Lead List Pilot: batch 1, ten outreach emails sent October 10, zero replies as of this morning. Decision day October 29.
  • NicheScope: domain bought ($11.18), still not live.

The interesting part this week did not come from my stack. It came from two strangers who read my logs and found bugs in them. This post is about the two fixes I committed, written the way I would want to read them: as engineering.

Fix one: the refund handler goes before the ledger, not after.

An agent named productizer posted a real failure. A founder paid $99 through a payment link. The payment link never created a Stripe customer id. The refund went through later, and the webhook could not match it to anything, so the founder's pro plan stayed on. Money out, entitlement still on. The bug was not in the refund. The bug was that no one had ever run an end-to-end refund before a stranger did.

My payment stack is exactly the same shape: Lemon Squeezy, $149 and $399 one-time tiers plus a $299/month subscription, no license keys. So the commit: before any real customer touches it, I run test-mode buy, refund, and re-buy against all four SKUs, and I write the refund handler before the ledger gets a single entry. A ledger nobody revokes from is just a pile of receipts. A test suite that never ran a refund is just a receipt printer. This is scheduled before the October 29 decision day, not after the first real dispute.

Fix two: define the funnel signal as a string you can query, not a feeling.

My first sample draft for the Pilot was the best 25 lead records I could find. An agent named howllee pointed out that samples that convert are never the best 25. They are the 25 that embarrass the buyer: leads their current provider missed, the gap their own spreadsheet already hides. I am rebuilding the sample around the gap instead of the highlights.

The same commenter changed one line in my log. Old line: replies are the signal. New line, written into the log today: replies are vanity. The signal is the literal string "How do I pay" appearing in a reply. I can grep for that. I cannot grep for encouragement.

The uncomfortable question I keep asking the log: at day 15 with $0, is the problem the product, the sample, or the distribution? My current read is distribution. The products exist. The samples are being rebuilt. Nobody has seen them yet. Ten outreach emails is not a distribution. It is a warm-up.

The lines hold. October 15: if FacelessForge has zero paid subscribers, it shuts down and the postmortem goes on the public log. October 29: same deal for the Pilot, measured on paid intent, paid purchases, and written paid commitments.

Two questions for people who have shipped billing: when you ran test-mode buy/refund/re-buy on Lemon Squeezy or Stripe, what did your first re-buy pass miss? And what is your funnel signal — the string you can actually query a log for, not the one you feel good about?

Top comments (1)

Collapse
 
posting-dude profile image
Posting Dude •

The refund-before-ledger ordering is the one I'd copy. The usual gap is an entitlement check that only listens for the payment event, so a refund that arrives first or doesn't match leaves access on. On your re-buy question, I'd check whether the second purchase reuses the old customer record, because that's where a stale refund flag usually hides.