Build Diary

Building Forge in public, one entry a day. From the first sentence of the idea to a live, monetized app - the wins, the bugs, and the days that did not work.

47 of 47 entries published ยท complete

Day 49Growth

The Noise campaign is live

The Noise campaign from yesterday is properly running now, and the difference from the YouTube buy on day 36 is who does the talking. Ads put the app in front of people. Influencers put it in front of people who already trust the person holding the phone.

The first creators are posting today and the demo video from day 48 is doing the work in their feeds - real forge, two real phones, no mockups. Over a thousand views already, on day one.

Day 48Growth

The demo video is delivered

The demo video is in. Twenty seconds of it went out on social today, and it is the only twenty seconds you need to understand the app.

Shot on a real iPhone and a real Android phone,the same forge from both sides. No mockups, no simulator, nothing staged - just time compressed so a week fits in two minutes. The full walkthrough with captions is on YouTube.

Also started the Noise campaign. Let's see how that performs against the YouTube one from day 36, and whether the automation from day 45 changes the shape of the curve.

Day 47Growth

Reading the numbers, not touching them

Spent the day in the dashboards again. YouTube has held the lead since day 36 and the week of data from day 38 still says the same thing, so the question is no longer which channel wins - it is whether the automation from yesterday changes the shape of the curve.

Installs, site traffic, and the gap between a visit and an account. That last one is the number that decides everything else, and it is the one I check first.

Day 46Growth

The posting runs itself now

Content day from day 42 had one flaw: it needed me. Every batch of videos and posts was a morning I was not building, and the campaign machine from day 20 only earns its budget if something new keeps going into it.

So today went to automating the social side - scheduling, queueing, and pushing the same piece out across channels without doing it by hand five times. The creative still gets made deliberately; only the distribution stopped being manual labour.

More bug fixes alongside it. The unglamorous half of the week continues.

Day 45Growth

Back to the bug list

Monday after a rest day is the right time to clear the small stuff, so today went to the bug list rather than anything new. Nothing dramatic - the kind of rough edges you only find once strangers are using the app on phones you have never held.

The campaigns kept running through the weekend and the outreach from day 43 was sitting in the inbox, so the morning was triage: which reports are real, which are one person on one device, and which are actually the same bug wearing two hats.

No feature to announce. A build that behaves is what the ad spend is buying attention for, and a broken third tap wastes every dollar in front of it.

Day 44Growth

Rest day

Sunday. Holy day, and the third one this build where the rule is the same: nothing gets touched.

The campaigns keep spending, the ads keep running, and the outreach from yesterday can sit in the inbox until tomorrow. None of it improves by being checked today.

See you on Monday.

Day 43Growth

Talking to people, not dashboards

Back on the outreach pipeline from day 26. Ads buy attention at scale but they do not tell you why someone did or did not stay - for that you have to ask, one conversation at a time.

Reached out to a list of people Forge is actually built for: gyms and trainers with clients who quit in week three, small teams already running some kind of internal challenge, and creators whose whole audience is about discipline. Every one of them has the same problem Forge exists to solve, and none of them are currently solving it with an honor-system checkbox.

No deals to report today. But a pipeline with real names in it beats another afternoon staring at install graphs.

Day 42Growth

Feeding the machine

Content day. A new batch of videos and posts out across the channels, built off the redesign from day 31 rather than the older screens - the app looks different now and the feed should say so.

The campaign machine from day 20 only works if there is something new going into it. Running the same three creatives for a month is how a campaign quietly stops earning its budget, so the fix is a steady supply, not one perfect video.

Watching which format holds attention longest. The day 38 question is still open: something about video is converting that the static placements are not, and the answer decides what gets made next week.

Day 41Growth

Making the text message actually arrive

Sign-in by SMS in progress.

Forge will send through more than one SMS provider, and which one it uses depends on where the number is from. Some countries are cheap and reliable through one route and a coin flip through the other, so the country decides the path instead of me hoping one provider covers the world.

Also locked down which countries can request a code at all. An open SMS endpoint is a bill waiting to happen - every code costs real money to send, and the wrong traffic will find it fast.

Unglamorous work. But a login that fails silently for someone who just clicked an ad is worse than not having it.

Day 40Growth

Android is where the installs are

The install numbers finally split cleanly by platform, and Android is pulling ahead. More downloads, and they keep coming on days when I am not pushing anything - which is the part that matters, because that is the campaigns working rather than me shouting.

It tracks with where the ads landed. YouTube has been the strongest channel since day 36, and YouTube traffic skews Android, so the two numbers are telling the same story from different dashboards.

Spent the rest of the day making sure the Android build deserves the traffic: install size, the first screen someone sees, and the path from opening the app to being in an actual forge. No point buying attention and then losing it on the third tap.

Day 39Growth

A pass over what actually shipped

Marketing had the week, so today went to the product itself: a review of the features that landed and whether they still make sense next to each other.

Sign-in by SMS code is in, sitting beside the existing email login rather than replacing it - a phone number is now a login identity of its own, which takes one more field out of the way of someone joining their first fight.

Forges also run on four lengths now instead of one: 7, 14, 21, and 30 days. Seven stays free, the longer ones sit behind Premium. A week is enough to settle a bet with a friend; a month is a different kind of commitment, and the product should be able to hold both.

Nothing new built today. Just making sure the pieces that shipped this month are pieces I would ship again.

Day 38Growth

YouTube beats everything else combined

Sat down with a full week of campaign data instead of a single day of it, and the picture from day 36 held: YouTube is bringing in more conversions and more site visitors than every other campaign put together.

That is the kind of gap that changes a plan. The other channels are not dead, but they are no longer where the next dollar obviously belongs.

Next: keep reading the numbers for a few more days before reallocating, and work out what it is about the video format that the static placements are not doing.

Day 37Growth

Rest day

Campaigns keep running whether I watch them or not. That is the whole point of setting them up properly.

No dashboards, no builds. Back tomorrow to read what the week actually says.

Day 36Growth

One channel is carrying the rest

Spent the day inside the ad dashboards instead of building. Every platform got the same creatives, the same budget window, and the same landing page, so whatever separates them is the channel and not the work.

YouTube is outperforming all the others. Not by a margin you have to squint at on a chart - it is the one campaign that keeps sending people who actually arrive on the site instead of bouncing off the first screen.

Not touching the budgets yet. One good day is a mood, not a trend, and I want a few more before I move money out of the channels that are still finding their footing.

Day 35Growth

The ads are working

First real numbers since the campaigns went live. Traffic on the site has gone from a trickle to a curve that climbs every single day - new visitors up roughly five times in seventy-two hours, page views right behind them.

And it is not just traffic. People are landing, reading, and signing up. The gap between a visit and an account is the number I actually care about, and it moved today.

The chart makes the moment obvious - you can point at the exact day the ads switched on without being told. That is the cleanest signal I have had all month that the spend is buying attention and not noise.

Next: hold the spend steady for a few more days, watch which platform keeps the curve going, and cut whatever is riding along for free.

Day 34Growth

Ads live on every platform

The ad campaign is live across multiple platforms today, not just the App Store channel from day 33. Same product, several front doors, all pointed at the same install.

Spent the run-up preparing the creatives properly: a batch of videos and a set of images built specifically as ads rather than repurposed social posts, so each platform gets something shaped for it instead of the same square cropped five ways.

No numbers yet, and I am not going to invent any. Results get shared here over the next few days - spend, installs, and which platform actually earns its budget before anything gets scaled.

Day 33Growth

Content push and the first paid dollars

Generating new content and video for social media, feeding the campaign machine from day 20 with fresh material instead of running it dry.

Also started paying App Store Ads today - the plan from day 29 is live, not just written. Tracking results weekly to see which keywords earn their spend before scaling anything up.

Day 32Growth

Promo video and a login by text

Two tracks today. First, the promo video - the redesign from day 31 finally gives the app something worth filming, so the rest of the week is about turning screens into a thirty-second reason to install, and pushing that alongside the sales pipeline from day 26.

Second, phone auth. Sign-in by SMS code, no email required, sitting next to the existing login instead of replacing it - one less field between someone hearing about Forge and actually joining a fight.

And a smaller thing worth noting: followers are trickling in on X and Instagram, the first sign the campaign machine is reaching people who were not already on the list.

Day 31Growth

Reforged, not rebuilt

Spent the month reforging Forge from the ground up. Nothing about the logic changed - the board still ranks on wins only, the AI Judge still rules a duel in under a minute, Team Clash is still five a side over seven days.

What changed is that it finally looks like what it is: a place where you pick a fight with a friend over a habit and settle it with proof.

Three things I got wrong the first time. I built the leaderboard as a list when it needed to be a podium - same data, a completely different feeling when you are second and can see first. My numbers were decoration - level, streak, day wins are the whole product, and they were buried under a chart. And I picked "clean" when I should have picked "loud".

Day 30Growth

Rest day

Thirty days in, and today the plan is to have no plan.

Product is live on both stores, Team Clash shipped, the redesign is in the branch, the outreach pipeline is running, and the paid channel now has a playbook instead of a guess. None of it gets better by being poked on a Sunday.

Resting. See you Monday.

Day 29Growth

Marketing and sales, locked in

The pipeline from day 26 needed one more piece: paid. Everything so far has been outreach, invites, and a campaign that runs on the invite loop - today I wrote the plan for Apple Search Ads, the channel where Forge shows up the moment someone is already typing "habit tracker" or "accountability app" into the App Store.

Keyword lists, competitor targeting, a country order that starts small and cheap instead of throwing money at the US on day one, and kill rules so a bad keyword gets caught before it burns real budget. Thirty days, mapped out, budget tiers included so the plan survives whatever we decide to spend.

Between the outreach pipeline, the campaign machine, and now a paid channel with an actual playbook, the marketing and sales side of Forge is no longer something I am improvising each morning. It has a plan. That is the whole point of today.

Day 27Growth

Campaign live, and a new face on the way

The campaign is out. Not a launch post that runs once and dies, but the machine from day 20 doing what it was built for - the clash is the hook, and the ask is always the same: make a team, share the code, call somebody out.

The second half of today was design. Forge shipped fast and it looks like it - functional screens that got the feature out the door and never got a second pass. So the whole app is getting one: type, colour, the cards, the badges, the clash strip, the moment you open a forge and see the score.

It is not paint. People decide in about a second whether an app is worth the habit, and a judged streak asks for more trust than most. A screen that looks unfinished quietly argues the judging is unfinished too.

Campaign running, redesign in the branch. Both land this week.

Day 26Growth

Turning the list into a pipeline

Yesterday was a contact list. Today it became a pipeline, because a list is just names and a pipeline is names with a next step and a date attached.

Every target now sits in a stage - researched, contacted, replied, demo, team created, clash started - and the last one is the only stage that counts. A company that signs up and never runs a clash has not bought anything yet, so the funnel ends at the first ruled day, not at the invoice.

Rewrote the pitch too. The old version led with features and lost people by the second line. The new one leads with the thing they already have: two teams in the building who would love to beat each other, and no scoreboard. Forge is the scoreboard and the judge. Three sentences, one link, one ask.

Also built the boring half - tracking which message went where, when to follow up, and what the reply was. Marketing without that is guessing which post worked, and guessing is how the first three weeks of every launch get wasted.

The product loop and the sales loop are the same shape: somebody has to call somebody out. Today was making sure I do it on a schedule instead of a mood.

Day 25Growth

Planning the commercial outreach

Team Clash shipped Monday. Today was not building, it was planning who actually gets called - the outreach plan for teams and companies.

Two lists, two pitches. Companies: a wellness budget that currently buys a gym membership nobody uses can instead buy a team where colleagues challenge each other and every day is judged from real proof. Universities and gyms: still the free unlimited offer from day 18, because a rivalry that already exists is the cheapest install Forge will ever get.

Wrote the actual list today - target companies, HR and wellness contacts, gym chains, the university clubs still waiting on their free unlimited plan. Sequencing it so the first Team Clash between two real companies happens before the campaign asks anyone else to believe it works.

Nothing shipped in the app today. The pitch deck and the contact list are the product now, same as the code was three weeks ago.

Day 24Growth

Team Clash is live. Go find a rival

Monday, and it is real: Team Clash is approved and live on both app stores. No waitlist, no beta code - open the app and it is there.

The campaign starts this week, and the hook is the feature itself. A clash needs a rival, and a rival is not something the app can generate for you. Make a team, share the code, and challenge another team - a gym against a gym, a floor against a floor, a friend group against the one down the street.

Everything built the last three weeks - the badges, the leaderboard, the invite loop, the campaign machine - was pointed at this one moment. Now it ships. Who is your team calling out?

Day 23Growth

Sunday. Still off

Second rest day. No commits, no dashboard refreshes, no roadmap.

The app tells people to prove a habit every day, and a habit with no rest day is the one that snaps first. Same rule for the person building it.

Monday the campaign goes live and Team Clash gets its release date.

Day 22Growth

Saturday. Off

Three weeks of building an app about discipline, and the disciplined move on a Saturday is to close the laptop.

Team Clash is done and waiting on release, the campaign is drafted, the outreach list exists. None of it improves today by being poked.

Resting. Back Monday.

Day 21Growth

Companies next

Yesterday was the campaign machine. Today it points somewhere new: companies. Create a team, share a six-character join code, and cover Premium for everyone on it. Pick a plan - Crew, Squad or Company - and the first one starts with a 7-day free trial, so nobody has to buy the idea before their people have tried it.

Every office already runs on the raw material Forge needs. Sales against engineering. The floor that never takes the stairs. A Monday standup where three people swear this is the week. What is missing is a scoreboard and somebody willing to rule the day honestly, and that is exactly the pair of things Forge ships.

It is a cleaner sell than the consumer one. A wellness budget that currently buys a gym membership nobody uses can instead buy a team where colleagues challenge each other on habits and every day is judged from real proof. One person creates the team, the code does the rest, and Team Clash lets department fight department when it lands.

So this week the outreach goes out: companies, gyms, and the university clubs from day 18 - the first 10 clubs still get Forge unlimited for free. Different audiences, same loop. Somebody has to invite somebody, and the product will not work until they do.

Which team at your company would actually win?

Day 20Growth

Building the campaign, not just the app

Twenty days in and the product is not the bottleneck any more. Forge is live on both stores, forges run, Team Clash is built and waiting on release. What is missing is the thing I have avoided since day one: a marketing campaign that runs whether or not I feel like posting that morning.

So today went on that. Working out the message, the channels, the assets and the calendar - university clubs first, then gyms and group chats, with Team Clash as the hook because a clash needs a rival and a rival is another ten installs. The invite screen is the whole strategy in one page: pick your opponent, pick your judge, hit continue. Every forge created drags in at least one more person, and half of them do not have the app yet.

The campaign is under development, not launched. Landing pages, creatives, the club outreach list, a proper posting cadence instead of whatever occurs to me at 6pm. Boring work with a long fuse. Day 13 taught me that posting harder into silence is not a plan, and the fix was never louder posts - it was making the invite carry more.

The first 10 university clubs still get Forge unlimited for free. That offer stands while I build the machine around it.

Tomorrow, back to shipping. Today the question is simply: who are you challenging?

Day 18Growth

Team Clash is on the way, and universities go first

The Clash mechanic is simple. A captain picks the habit, the length and the team size, and gets a six-character code. The rival captain types it in. Both sides have 48 hours to fill the roster, and at lock every player is paired into an ordinary 1v1 bout - same proof, same AI judge, same daily ruling that already runs for a duel. Win your bout, your side gets the point. The Clash is a scoreboard on top of an engine that already works.

Now the part I actually need. Team Clash is going to university clubs first, and it is free. Gym clubs, run clubs, rowing, football, martial arts, any society with two rival groups in it. The first 10 clubs that sign up get unlimited plans for free, no card, no trial clock, no catch. I want real clubs starting real clashes against each other and telling me what breaks, what feels unfair and what makes them want a rematch.

A duel makes one person accountable to one person. A clash makes a whole club accountable to another club, and a university is the only place I know where that rivalry already exists before the app arrives. If you run a society and you want in, get in touch and I will set your club up myself.

Releasing soon. Today was the unglamorous half - enrolment edges, the sweep that locks a Clash on time, what happens when a roster half fills and the clock runs out. None of it shows up in a screenshot and all of it decides whether the feature survives a real week.

Day 17Growth

Team Clash is built

Monday, and it is done. Team Clash works end to end: a captain picks a habit, a duration and a team size, and gets a six-character code. The rival captain types it in, both sides have 48 hours to fill their roster, and at lock the server pairs everyone into ordinary 1v1 bouts. Same proof, same AI judge, same day rulings that already run for a duel - a Clash is a container and a scoreboard on top of the engine that was already trusted.

One number both teams check every morning: Iron Rivals 6 - 3 Forge Challengers. Your bout is yours, the stakes belong to five people. Most day wins takes MVP on the result card, and the rematch button is right next to it, because a clash that ends 15-14 sells the next one without any help from me.

Two rules keep it clean. A team can only run one Clash at a time, and an unanswered challenge expires in 72 hours instead of parking a whole team forever. Playing is free - no entry fee, no Premium gate. The clash is the way people find Forge, not the way it earns.

Releasing soon. Testing the sweeps and the enrolment edges first - the half of the work nobody sees and everybody feels.

Day 16Growth

Sunday, and the streak I am happy to break

Second day off. I checked the dashboard twice, which for me counts as abstinence. New installs kept arriving over the weekend without a single post from me, which is either proof the loop works or proof I am the bottleneck. Both are useful.

Great projects do not come out of a tired head. They come out of a rested one that suddenly sees, on a Sunday walk, why the thing it fought for six hours on Friday was never going to work.

Monday: Team Clash goes from a screen to a shipping feature. Two teams, three a side, seven days, one MVP. Bring a crew.

Day 15Launch & Amplify

Saturday. Closed for maintenance

It is Saturday and I am not shipping anything. Fourteen days straight of building an app about discipline, and the least disciplined thing I could do right now is open the editor again.

Two weeks in you stop writing code and start writing typos with extra steps. Every bug I chased yesterday was one I had made the day before. That is not a backlog, that is a nap with a Jira ticket.

Team Clash is still cooking. It will cook better with a builder who has seen daylight. Back tomorrow - well, Monday.

Day 14Launch & Amplify

New faces, and a look at Team Clash

New people are onboarding. Not a spike, not a chart anyone would screenshot - but every day this week the app has been opened by someone who was not there the day before, and a few of them have already dragged a friend in behind them. That is the loop working without me pushing it.

So here is the next thing, early: Team Clash. Two teams, three a side, seven days. Everyone gets paired into a bout - you against your opposite number - and the bouts add up to one team score. Forge Test Crew 6, Anvil Athletics 3. There is a momentum bar per bout and an MVP at the end, because someone on your team is always carrying it and everyone should know who.

A duel makes one person accountable to one person. A clash makes you accountable to five. Losing your bout is no longer a private thing you can quietly forget about on a Thursday.

Day 13Launch & Amplify

The day nothing happened

Posted about Forge today. Nothing came back. No replies worth reading, no installs I can trace to it, no thread that went anywhere. Yesterday brought the first 5-star reviews from strangers; today brought silence from the same effort.

That is the actual shape of building in public. The log fills up with the days something shipped or something broke, and the flat ones quietly go missing - which is how you end up reading someone else's journal and wondering why yours has gaps theirs does not.

Every good day so far traced back to someone inviting someone else, not to me broadcasting. Forge only works if you drag a second person in, and it turns out the marketing works the same way. So the answer to a quiet day is not to post harder. It is to make the invite carry more.

Day 12Launch & Amplify

First 5-star reviews, and Teams is coming

The first 5-star reviews landed today. Not from friends, not from testers - from people who installed Forge on their own and stayed long enough to rate it. Twelve days in, that is the only metric that has made me stop and read it twice.

And the next thing is close: Teams. Create a team, share a join code, and cover Premium for everyone on it - a gym, an office, a friend group running duels together instead of one person against one person. Comes with a 7-day team trial so nobody has to buy the idea before they have tried it.

Forge was always built on the fact that you cannot do it alone. Teams is that constraint finally pointed at a whole group.

Day 11Launch & Amplify

Climb the winners board

Put the monthly winners board front and centre today. Every day win and forge win adds up to points, and the leaderboard resets each month - so the fight for the top starts fresh for everyone. First real reason to open the app when you would rather not: someone is one win ahead of you.

The growth loop is still the invite. You cannot forge alone - every challenge pulls in an opponent and a judge, and the friend who has not downloaded it yet is the whole channel, not an edge case. The private channels have been the best signal all week: DMs and group chats with people genuinely enjoying it, not launch-day politeness. That kind of feedback is worth more than any spike.

And team forges are coming soon - pull a whole group in instead of just one opponent, so a gym, an office, or a friend group can run duels together. The natural next step for a product whose entire engine is inviting other people.

Day 10Launch & Amplify

Finally live on the Apple App Store

Apple said yes. Forge is live on the App Store - iOS and Android, both stores, no waitlist, no TestFlight link. Anyone can open it right now.

That review took three rounds and the whole launch leaned on Android while it dragged. Worth it. The judge loop is the same on both platforms: you, an opponent, and a friend who rules the winner from real proof.

Now the only question left is which habit you start with.

Day 9Launch & Amplify

Rest day

Rest day. No commits, no analytics, no roadmap.

The app tells people to prove a habit every day, and a habit that never rests is the one that breaks. Same rule applies to the person building it.

See you tomorrow.

Day 8Launch & Amplify

The invite is the product

Forge cannot grow alone - every forge drags in at least two more people, an opponent and a judge, and half of them do not have the app yet.

That constraint I dreaded during the build is turning out to be the whole growth loop. The friend who has not downloaded it is not an edge case. He is the channel.

And a brand new feature is coming soon: team invites. Until now a forge was strictly two people and a judge - next you will be able to pull a whole group in, so a gym, an office, or a friend group can run duels together. It is the natural next step for a product whose whole engine is inviting other people.

Day 7Launch & Amplify

Badges, a new price, and Apple

Shipped the reward layer today. Ten badges to chase - Day One, First Win, Contender, On Fire, Centurion, Gladiator, all the way up to Forge Royalty for 500 lifetime points. Winning a duel already feels good; now it also leaves a mark you can show off. Every badge is shareable straight from your points screen.

The judge is still the point of Forge, but people do not stay for accountability alone - they stay for the streak, the next unlock, the thing they are two wins away from. Gamification is not a gimmick here, it is the reason you open the app on a day you would rather not.

Also moved to a new pricing model - a cleaner Premium tier and a limited early-adopter lifetime deal, so the value is obvious before the paywall, not after.

And the first iOS review came back from Apple. Not a yes yet - a short list of changes to make - but it is real feedback on the real build, not silence. A few fixes and we are there. Android carries the launch one more stretch while I close them out.

Day 6Launch & Amplify

First strangers

Installs I did not seed. People I have never met are creating forges - most of them fitness ones, which is exactly the lane I built for. Every movement habit is a 60-second duel judged from real video: max push-ups, burpees, squats, jumping jacks, sit-ups, jump-rope, plus plank and wall-sit holds.

Watching two strangers judge each other on push-ups is exactly the app I set out to build. The premise survives contact with people who owe me nothing.

Spent the rest of the day adjusting the offers - sharper Premium and a limited early-adopter lifetime price - so the paywall matches what these first users actually see. iOS build is still sitting in review; Android carries the whole launch until Apple says yes.

Day 5Launch & Amplify

The day after shipping

Posted the first real screenshot today - my own home screen, not a mockup. Five forges running at once: burpees, push-ups, a tidy desk, and a 30-day healthier-lunch streak, with a plank already in the completed pile.

Every one of them is judged from real proof - no honor system anywhere in the app, not even for me. It is live on Google Play, installs trickling in from devices I have never held, and the loop already works on me before I ask it to work on strangers.

Day 4Launch & Amplify

Live on Google Play

The review cleared. Forge is live on Google Play - anyone can install it right now, no waitlist.

Nothing sharpens a roadmap like real people being able to open the thing, so out it goes.

Also got additional feedbacks from testers, and waiting for the App Store review to go live on iOS.

Day 3Setup & Hook

Waiting for App Store reviews

Refined the habit library: 5 categories.

Fitness. Nutrition. Discipline. Home. Focus.

One rule for every entry - provable in 60 seconds or less.

Getting also great feedback from testers and social media. And waiting for app store reviews!

Day 2Setup & Hook

Why this problem

Every habit app I have tried dies the same way - the honor system. You tap "done", nobody checks, you quit two weeks later.

Forge answers with a third role. The Judge rules each day from the proof both sides submit. A forge can never run alone, and that is the whole design constraint.

Day 1Setup & Hook

The premise

Day 1 of the build. Forge is a habit app with the one thing most habit apps skip: a judge. You, your opponent, and a friend who rules the winner from real proof.

Most habit apps die because nobody is watching. Thirty days to fix that, in public, every step logged here.