30 days of building in public. every number, including the embarrassing ones.
i quit my job to build products full-time.
team: one Mac mini, Claude, and me.
here's month one, unfiltered.
📦 what i built:
• Split Today — expense splitting app, Android, in closed testing
• a UPI amount reader that runs on-device with ML Kit, and only calls Gemini when the read comes back blank
• personal income & cashflow, versioned monthly
• RevenueCat wired end to end — ₹99/mo, ₹499/yr, ₹1,799 lifetime
• 900+ automated tests
• Speed Develop — the company, and its site
💰 what it cost:
• Claude Max — ₹12,493/mo
• Play Console — ₹2,400
• Domain — ₹1,100/yr
• Team — ₹0
📉 what i earned:
$0.
the failures, in order:
1. 137 cold emails. 1 yes. 0 closed.
i thought the emails were bad. they weren't. nobody buys from a stranger with no public work.
2. 90 days on LinkedIn. 1,409 impressions. zero business owners reached.
i kept posting because stopping meant admitting the lane was dead.
3. rejected from Play production.
12 testers, 14 days. Google doesn't check if you hit the number. it checks if the test was real — my testers installed the app and never opened it.
4. built a PaddleOCR service. deleted it a week later.
the on-device read was already good enough. i built the hard version first.
5. days 1–18 of this series are on a different account.
i split my own audience in half before i had one.
what 30 days actually taught me:
building in public isn't what you do after the outreach. it is the outreach. i just ran them in the wrong order.
shipping stopped being the bottleneck in week two. the tooling got cheap. the bottleneck is taste — knowing which of the ten things to build.
posting my problems got me nothing. posting what i learned from them got me everything i have.
🎯 day 31–60:
• Split Today out of closed testing, into production
• first paying user — not first 100
• iOS
• and the number i'm most afraid to post: revenue, every Friday, even at ₹0
day 30. ⚡
Small delay on Split Today's public launch tonight 🙏
Found 2 bugs in final testing:
🔹 Some users on older Android get stuck on the "Get Started" screen after login
🔹 UPI payments fail right after the prefill step works fine
Fixing both now, will be back very soon. Thanks for your patience 💙
Building this alone isn't always smooth, but every bug fixed makes it stronger. We're not stopping till it's right 💪🚀
Day 43
#buildinpublic
Well…
it’s finally time. 👀
Split Today is leaving beta tonight.
9 PM+ 🚀
I’ve been waiting a long time to say this:
Anyone can use Split Today now.
Stay tuned. 🫡
@MicroLaunchHQ Good question 😄 Started with Android since that's where I could test and iterate fastest solo. iOS is next on the roadmap once Android is stable. Appreciate you asking, more platforms coming!
It’s happening tonight. 👀
Something I’ve been building for months is finally leaving the beta.
Split Today goes public after 9 PM. 🚀
This one feels different.
Stay tuned. 🔥🔥
@aaronrubin the trap with these rebuilds is the last 20%, permissions, edge cases, the one report someone depends on. that's where they stall for months.
parallel rollout beats a hard cutover. going feature by feature or all at once?
@HarrisDecodes the one metric i'd add: cost per shipped change, not per session. a cheap noisy session that ships nothing is worse than an expensive one that ships a real fix.
started tracking tokens per merged fix, changed which habits i actually bothered correcting.
I quit my job a few months ago with one clear goal.
Build something real.
Ship it.
Do it alone.
One Mac mini.
Claude as my only teammate.
Late nights.
Two rejections from Google Play.
Closed testing that almost broke me.
Tonight after 9 PM, Split Today finally goes public. 🚀
This one feels different.
Stay tuned. 👀
@Bharatkabra3 the flip side is real too: confident engineers who skip questions but write reversible code cost you less, because their mistakes are cheap to undo.
what actually blows up prod is the confident irreversible commit, wrong migration, unscoped delete, hardcoded id.
@vic_lbts forced account creation before showing any value. almost bounced off two split-expense apps last month for exactly that.
pushed signup to after the first split gets created in mine, people make an account once they've already seen it work.
@molaerga no fixed structure, just one rule: ship something visible every day even if it's small. closed testing feedback dries up fast if the app goes quiet for a week.
marketing happens in the gaps, mostly posting what broke and what i fixed.
@usr_bin_roygbiv tempted. i run claude code most of the day on a mac mini and ram headroom is the thing i actually feel, 20gb back would change how many things i can leave open.
any app compatibility issues after the downgrade, or has everything just worked?
@X_Sparkler the piece i'd add: track what's already been read so the agent doesn't re-grep the same file three times in one session.
i've burned more tokens on redundant reads than on files that were actually irrelevant.
@charliejhills claude code in action, closest to my actual day to day. been building solo with claude for a month and still write ad-hoc prompts instead of anything structured.
skipping the fluency ones, those are for people who haven't made the switch yet.
@_waela still building split today, group expense splitter for android. solo, one mac mini, claude doing most of the code. closed testing right now.
weekend's for the parts that need actual focus, no meetings to break the flow. what's shipping for you?
the auto-detection is the part that's easy to get wrong. suggesting the near-right article convincingly is worse than suggesting nothing, agents trust it and stop checking.
worth tracking suggestion-accepted vs ticket-reopened, that's the number that tells you if it's actually helping.
@0xSvinci if it's worse at certain hours, that's usually load throttling at us peak, not a permanent downgrade.
if it's bad all day every day though, that's a different problem, worth flagging instead of waiting it out.
@Da7_Tech that's an electron tax, not a codex bug. chromium plus node plus their own runtime spin up before any session loads.
slack and spotify idle in the same range. annoying, but it's not codex-specific bloat.
@arpit_bhayani the one missing from this list: idempotency. if a tool call has a side effect and the timeout fires right as it succeeds, the retry does it twice.
tagging every mutating call with an idempotency key is cheaper than debugging duplicate writes at 2am.
@nicklaunches building split today, a group expense splitter for android. solo, one mac mini, claude doing most of the coding. closed testing right now.
the hard part was never the math, it's getting people to agree on who owed what before anyone opens the app.