I Hit $1,000 MRR and Forgot to Celebrate. Starting a Second App at Zero Fixed That.

GainFrame crossed $1,061 MRR and now adds close to 500 new users a week. I barely noticed either — I'd already moved the goalpost. Then I started SEO Receipts from zero, and grinding for the first users reminded me what all of this used to be worth.

Line-art illustration of a small figure standing on the top step of a staircase, planted flags on the steps already climbed, reaching toward a coral flag that has floated one rung ahead just out of reach

A few weeks ago I launched a second project, SEO Receipts. It connects to Google Search Console and prints a verified, public receipt of a site's real search traffic — clicks, impressions, position — that nobody can fudge, plus a leaderboard of everyone who's connected. GainFrame's own receipt currently sits at #3 on that board: 4,038 verified clicks in the last 28 days, up 395%, tagged "fastest growing."

A year ago numbers like that were a fantasy I didn't dare say out loud. I looked at the receipt for about four seconds and went back to worrying about whether site number 37 would ever connect.

That reaction is the whole post. I've hit almost every goal I set for GainFrame — first real users, first paying customer, $500 MRR, $1,000 MRR — and I don't think I stopped to enjoy a single one of them. Starting a second app from zero is what finally made me see it. All the GainFrame revenue numbers below are public on RevenueCat's verified page if you want to check them.

Line chart of GainFrame weekly MRR from February to July 2026 rising to $1,061, annotated with the goals I set at each stage — my first sale, $500, $1,000 — and a stat reading zero times I stopped to celebrate
Every dot is a number I swore would be enough. I passed all of them and kept my eyes on the next one.

The Goalposts I Never Stopped At

Here is the honest sequence of what I wanted, in order, as GainFrame grew.

First I just wanted a few real people to use it and get something out of it. Then I wanted 100 users. Then I wanted one paying customer who wasn't someone I knew. Then $500 MRR. Then $1,000. Every one of those happened. And every time it happened, the feeling lasted about as long as it took to open the next dashboard.

I hit $1,000 MRR on July 12. The exact number was $1,000.04, a margin of four cents. I noticed it in the RevenueCat app while I was doing something else, thought "huh, nice," and then my next actual thought was about churn and whether it would dip back under. I didn't tell anyone that day. I turned it into a milestone blog post later that week, which — I realize now — is a very me way to handle a feeling. Write it up. Ship it. Move the line.

Bar chart styled as a rising staircase of goals: a few real users, first 100 users, first paying customer, $500 MRR, $1,000 MRR marked TODAY, then enough for a vacation, childcare, quitting my job, and retiring — with a dashed line showing the finish line always one rung ahead
Five rungs cleared. Zero celebrated. The dashed line is where "enough" lived at every single step — always one rung up.

The Trap Has a Shape

The thing I missed for months is that the ladder never ends, and the finish line is defined relative to wherever your feet currently are.

A few users who find it useful. Then 100. Then a first paying customer. Then a number: $500, $1,000, $2,500. Then enough to pay for a vacation. Enough to cover childcare. Enough to quit the job. Enough to retire. It reads like progress, and it is. But at every rung, the goal I was actually chasing was "one rung above this one," and the rung I was standing on had quietly become the new zero.

The clearest version of this for me was revenue. I kept quietly adjusting the exact MRR number that would finally feel like I'd accomplished something. For a while it was $500. The week I got close, it was $1,000. Now it's sitting at $1,061 and the number that would feel like "made it" has already moved up again. It's never the number in front of me. $1,000 MRR was a mountaintop in March. By July 12 it was the floor, and I was already annoyed it wasn't $1,500.

I even did the thing you're supposed to do. In May, when MRR flatlined around $530 and I almost quit, I sat down and wrote my goals out with actual dollar amounts — $2,500/month is "the app pays for childcare," $15,000 is "the quit-my-job number." Writing them down was genuinely useful. But I wrote down the goals ahead of me and never once looked back at the ones I'd already cleared. The list was a to-do, not a scoreboard.


Starting Over at Zero

SEO Receipts came out of a small annoyance. I kept seeing people post screenshots of their Google Search Console dashboards to prove their traffic, and screenshots can say anything. So I built the thing that reads your GSC data directly and turns it into a receipt you can't type numbers into, with a shareable link and a leaderboard. It now also analyzes your site and suggests fixes. It's free lifetime Pro for the first 50 people who connect, because right now I mostly want feedback.

SEO Receipts verified leaderboard showing 36 verified sites ranked by 28-day search clicks, with GainFrame at number three showing 4.0K clicks and plus 395 percent growth

The SEO Receipts leaderboard — 36 verified sites and counting. GainFrame is #3.

And here's what I forgot: being at the bottom feels like being at the bottom. Three weeks in, SEO Receipts has 36 verified sites. I refresh it to see if one more connected. I get a little jolt when the count ticks up by one. I check the analytics on an empty-ish dashboard and feel that specific mix of hope and impatience I had completely lost the memory of.

It's the exact feeling I had in February and March with GainFrame, when I was DMing people in fitness subreddits and chasing every early user for feedback after my first app flopped in silence. I'd forgotten that grind so thoroughly that GainFrame's current numbers had stopped registering as anything at all.


The Number That Used to Be a Fantasy

Here is the part that actually rearranged my head.

GainFrame now adds close to 500 new users a week. I can't give you a clean, single, audited number for that — it's app installs plus web signups, and recent weeks have run hotter than the 30-day average — so read it as "roughly 500," not a promise. But roughly 500 a week is the truth of it right now.

The version of me from May 2025, staring at a TestFlight build nobody had opened, would not have believed that sentence. He would have taken 500 users total, ever, and called it a career. And I get to sit at 500 a week and be so numb to it that I had to start a whole second company at zero to feel the number again.

The part I didn't appreciate at all, the entire climb: very few apps make it this far. Most never get a single paying stranger. Mine has hundreds, and I spent months treating every milestone as evidence that it still wasn't enough instead of evidence that it was working. The problem was never the numbers. It was that "not enough" was the only setting I ran in.

GainFrame's verified SEO receipt on SEO Receipts showing 4,038 verified clicks in the last 28 days, up 395 percent, 185,689 impressions, 2.2 percent CTR, average position 8.5, with 4K Club, Ranked #1, and Fastest Growing badges

GainFrame's verified receipt: 4,038 clicks, +395%, avg position 8.5. This is what past-me would have wept over. Present-me nearly scrolled past it.

None of this is a flex. GainFrame at ~$1,061 MRR is still small money next to a salary, and the organic traffic that drives it could soften the next time Google reshuffles. The point is the opposite of a flex. It's that I built the exact life-a-year-ago-me wanted and walked right past it because I was already living in the next goal.


What I'm Actually Changing

I'm not going to pretend a blog post cured this. I still can't fully feel the $1,000. The treadmill is the default setting, and "just get to the next number" is a genuinely useful engine for a solo founder with a full-time job and a toddler. I don't want to turn it off.

What I'm doing instead is smaller and more mechanical. Three things.

Write the goal down before you hit it, with a date and a real number. I already do this, and it works — the May goals post is the only reason I can tell you exactly what I was aiming for.

Keep the ones you've cleared on the same page as the ones ahead. My list was all future rungs. Now the ladder above has the cleared rungs on it too, because the whole trap is that you stop seeing them.

When you cross a line, record the date and do one small thing — tell one person, write the number down, take the afternoon. Not because you'll feel it in the moment. You won't; the goalpost has already moved. You record it so a future version of you, standing on an even higher rung and feeling nothing, can look back and see how far the floor has risen.

The receipt sitting at #3 didn't feel like anything the first time I saw it. Writing this is me making myself notice. If you're building something and blowing past your own milestones without looking up, go back and read your old goals. You've probably already passed the thing you swore would be enough.

If you're deep in the grind on your own project and can't remember the last win you actually celebrated, I'd genuinely like to hear about it — and if you run a site, the tool that started this whole reflection is below.

See your own SEO receipt

SEO Receipts connects to your Google Search Console and turns your real search traffic into a verified, shareable receipt — plus a leaderboard and automated fixes for your site. It's free lifetime Pro for the first 50 people who connect, and I'm actively looking for feedback.

Get your SEO Receipt

Related Articles