- Bo to a Million: Bootstrapping to $1M ARR (60% now)
- Posts
- My Startup Earned $73,489, Made First Acquisition, and Rebooted Google Ads
My Startup Earned $73,489, Made First Acquisition, and Rebooted Google Ads

Hey friends, greetings from my new desk in Berlin!
If we haven’t met yet, I’m Bo, co-founder of SavvyNomad, the software that helps U.S. expats reduce their tax bill by claiming domicile in states with no income tax.
Each month, I share the raw numbers, the face-palm moments, and the little wins that keep this bootstrapped rocket inching toward $1M ARR.
July was equal parts business sprint and travel documentary:
We nudged MRR up to $51,312 (+14 %), which means the halfway mark to $ M ARR is firmly in the rear-view mirror.
For the first time, Google Ads outpaced organic search in bringing new customers, a milestone that feels great—until you look at the ad bill (details in the Ads autopsy below).
I bought my first media asset and drafted its creator, Mike, to help grow our new Americans Abroad list and crank out YouTube videos.
Speaking of video, we published four long-form deep dives and six Shorts, tripling our monthly views.
On the personal side, I racked up miles in Portugal, Copenhagen, Zürich, and finally dropped anchor in Berlin, where the plan is to bulk up: both the company and, for once, my muscles.
Here's the detailed breakdown:

Finally, a powerful CRM—made simple.
Attio is the AI-native CRM built to scale your company from seed stage to category leader. Powerful, flexible, and intuitive to use, Attio is the CRM for the next-generation of teams.
Sync your email and calendar, and Attio instantly builds your CRM—enriching every company, contact, and interaction with actionable insights in seconds.
With Attio, AI isn’t just a feature—it’s the foundation.
Instantly find and route leads with research agents
Get real-time AI insights during customer conversations
Build AI automations for your most complex workflows
Join fast growing teams like Flatfile, Replicate, Modal, and more.
Key metrics
Sign-ups nosedived in July (-31 %), but we squeezed far more value out of every visitor: the signup → customer conversion rate jumped +70 %, nudging Monthly Recurring Revenue past the $51k mark (+14 %). The trade-off was a small uptick in churn to 2.87 %, so the growth story now hinges on tightening retention while we fix top-of-funnel efficiency.
Metric | June 2025 | July 2025 | % Change |
---|---|---|---|
Sign-ups | 4,424 | 3,089 | -31 % |
Website visits (new users) | 63,019 | 58,000 | -8 % |
Visit → Signup CR | 7.0 % | 5.3 % | -25 % |
Signup → Customer CR | 1.47 % | 2.50 % | +70 % |
Added MRR | $7 031 | $6 308 | -10 % |
Total MRR | $45,006 | $51,312 | +14 % |
Progress toward $1 M ARR | 54 % | 62 % | +8 pp |
Active subscribers | 578 | 643 | +11 % |
New subscribers | 67 | 77 | +15 % |
Churn rate | 2.36 % | 2.87 % | +22 % |
Where did new customers come from?
In July, we welcomed 77 new paying subscribers, and for the first time, Google Ads delivered noticeably more new customers than organic search.
Analytics records 23 ad-sourced sign-ups vs. 14 from all organic engines combined.
Yet our onboarding survey still shows most users believe they arrived organically or directly, underlining the classic attribution-perception gap.
Pipeline upgrade: Survey answers now flow automatically (Bubble → Segment) into BigQuery, and we surface the blended “pixel vs. self-report” view in Looker dashboards. No more CSV uploads or manual joins—every team now sees channel truth in real time.


Key insights
Analytics vs. memory gap: Only 6 % of users realise they clicked a Google ad, even though ads generated most of the new customers. The perception mismatch persists, especially among older cohorts.
Google Ads now dominant: July marks the first month ads overtook organic search as the top acquisition channel, confirming paid search can scale, providing we keep quality in check.
Optimisation next up: We haven’t tuned Google Ads yet (bid strategy, creative, negatives). Expect a deep dive and action plan in the forthcoming Paid Traffic section.
Organic traffic
July’s organic traffic held steady overall, with just a minor 3% dip—typical month-to-month variation. Let’s take a quick look separately at Google and Bing.


Google sent us slightly fewer clicks this month (-3%), but this was mostly due to natural fluctuations rather than any real loss in visibility.
Some of our newer articles, particularly guides covering banks, are gaining traction and climbing the rankings. I’m watching them closely to see if they can become strong traffic drivers over the next few months.
Finished experiment: content syndication

I recently wrapped up a three-month experiment testing whether reposting our articles on external platforms (with canonical links pointing back to our blog) could boost organic traffic.
What I expected:
Publishing existing content elsewhere, even without direct SEO-follow links, would strengthen our original article’s authority and increase traffic.
What I did:
Selected one article—our Foreign Earned Income Exclusion guide—and syndicated it on external platforms, monitoring its performance over three months.
What happened:
Clicks rose from 23 to 190 (+167 clicks).
Google impressions increased by 37,000.
Average rank improved slightly (26 → 22).
But click-through rate stayed flat at just 0.4%, and the additional traffic accounted for less than 0.25% of total site visits.
Overall, the experiment brought some extra traffic, but the benefit was small compared to traditional backlink-building.
What’s next:
I’m pausing further spending on content syndication for now. Instead, I’ll focus that budget on proven SEO tactics like building high-authority backlinks and optimizing articles currently sitting on Google’s second page.
Bing
Bing continues to pleasantly surprise us, delivering another +17% growth in clicks. While Bing traffic is smaller overall, its steady growth suggests it’s worth continuing to invest in optimizing our articles for Bing-specific best practices.

Google Ads

Google Ads
July’s numbers jumped around a bit, but—if I’m honest—I spent more time hunting for a Google Ads partner than actually optimising campaigns. Posting my “help wanted” note on Telegram/LinkedIn triggered a flood of intros (thanks, build-in-public crew!), and an Upwork listing brought another pile of pitches.
Below are the two takeaways.
What I found inside the account after audits (a.k.a. my own mistakes)
Remarketing wasn’t remarketing. Audience expansion was left on, so 99 % of that budget was chasing strangers instead of warm leads.
Negative-keyword list = Swiss cheese. We were paying for junk terms like “fake address generator” and “generate address,” bleeding the budget every day.
Performance Max surprises. It quietly hoovered up spend on brand keywords, used auto-added sitelinks I’d never approved, and ran with incomplete assets.
Geo-targeting too fuzzy. “Presence or interest” was pulling clicks from random locations; switching to “presence” only—and eventually splitting by top expat hotspots—should tighten CPA.
Missing middle-funnel signals. We feed Ads only the final “purchase” event; adding a “finished onboarding” step will give the algorithm something smarter to chase.
In short, I’ve been leaving money on the table—and lighting a little on fire.
What I learned from the hiring marathon
I screened 50+ freelancers and agencies, and I set up a Notion page that spelled out exactly what I needed: an intro about the business and current Google Ads challenges, questions to answer, and clear “Step 1 → Step 2 → Step 3” instructions.
You’d think that would make screening easy, yet the experience was … educational:
Instructions? What instructions? Roughly half the applicants ignored the Notion checklist entirely. They replied with “Sounds great, when do we start?” without answering a single question. If you can’t follow a three-step doc during the sales dance, I can’t trust you with a five-figure ad budget.
Energy check. A surprising number joined discovery calls unprepared, low-energy, and zero understanding of what SavvyNomad does. Instant pass.
Generic fluff vs. real insight. Slick one-pagers that said “optimize creatives, add negatives” went straight to the archive. The keepers were the few who opened my account, spotted specific leaks (e.g., remarketing expansion at 99 % spend), and sent a same-day action plan.
Motivation > marquee logo. In the end, I shortlisted three agencies that delivered the deepest audits, then picked the one operator who kept asking smart questions and followed every single step in the Notion doc—proof they’ll be disciplined long-term.
Our first acquisition
July ended with a milestone I’ve wanted to hit for a while: we bought our first media asset.
Nomad Deals was a twice-weekly newsletter curating flight hacks and remote-work discounts for digital nomads. Its founder, Mike, had built an engaged (but hard-to-monetise) list and reached out just days after I’d published my own budget and launch plan for Americans Abroad—proof that building in public pays off.
Why we bought it – Instant distribution: ~4k subscribers who are already location-independent and cost-conscious—exactly the top-of-funnel we need for SavvyNomad’s services.
Next steps – We’re re-branding the list under the Americans Abroad umbrella and bringing Mike on part-time from August to record YouTube explainers and polish the weekly deals round-up.
Bigger picture – This is Step 1 in the “own the pipes” strategy: build or buy media channels first so launching new products later is a distribution, not a discovery, problem.
Very excited about acquisition #1—hopefully not the last.
I also ran a paid test with the expat community InterNations: one dedicated e-mail plus a two-week banner slot.
The headline? Good reach, zero pipeline.
Metric (July campaign) | Result |
---|---|
Total exposures | 24 900 |
Opens (e-mail) | 8 721 (46 %) |
Clicks | 91 |
Site sessions | 79 |
Sign-ups / conversions | 0 |
Take-aways:
Great subject line, weak body copy – A 46 % open rate shows the audience was curious, but sub-1 % click-through means the e-mail itself didn’t land.
Landing page mismatch – The 79 visitors who did click stuck around ~1 min but none progressed to sign-up; message scent broke somewhere between ad and offer.
Display banners ≈ noise – 6 k impressions, 7 clicks—nice for awareness, irrelevant for acquisition.
We’ve tried sponsored sends in other newsletters before and hit the same wall: one-touch impressions rarely convert a complex B2C SaaS.
We might revisit InterNations in peak U.S. tax season when urgency is higher, but the real upside lies in nurturing our own lists, starting with the newly acquired Nomad Deals.
YouTube

July was our most active month on camera so far:
4 new long-form videos (10-15 min deep dives)
6 Shorts (sub-60-second tips & wins)
What’s next
With Mike (creator behind the newly-acquired Nomad Deals) joining part-time in August, we’ll step up to two videos per week, one tutorial, and a 2-4 Shorts batch.
Personal updates
July was intense in the best possible way.
I started the month back in Lisbon, my home base, catching up with friends and soaking in the city before hitting the road. Then came a coastal road trip through central and northern Portugal with a car full of friends. (I’ll drop a video soon with some of the best moments.)
From there, I spent a week exploring Copenhagen for the first time (great bikes, amazing architecture, and pastries).

Then visited Zurich, where I stayed with a friend and slowed down a bit.

Now I’ve landed in Berlin, where I’ll be staying for the next few months. After a lot of travel and movement, it feels good to settle, even if just temporarily.

Body & health updates
I also got new data on my health this month: blood test, epigenetic test, and genetic insights. More numbers, more clarity.
Here’s where I’m at:
Biological age: 29.7 (I’m 27). Not bad, but I’d like to tighten that gap.
Inflammation is low, recovery markers are solid, and VO₂ max + hormone profile are strong.
My homocysteine levels are high, though, which could become an issue for heart or brain health down the line, so I’ve already adjusted my supplement stack.
I also confirmed that my B12 is borderline low, so I’m switching to a higher-quality, methylated form.
And yes, my eyes and ears are still younger than I am, which was a fun ego boost.
But the biggest shift?
Mindset shift: from cutting → to building
For the past 6 months, I’ve been mostly focused on staying lean. It felt good, I got compliments, but I’ve realized I’ve hit a plateau. I haven’t built much muscle, and long-term, that’s the investment that matters most.
So starting in August, I’m flipping the focus: eat more, lift heavier, and build muscle intentionally without falling into old traps.
Why this matters:
The last time I tried gaining weight, it usually meant emotional eating and fat gain. Now it’s different. I’m not doing it from a place of feeling bad—I’m doing it because I feel good, and I want to build a body that’ll carry me strong for decades.
I’ll keep tracking my numbers and progress.
So yeah—new cities, new bloodwork, and a new goal.
Let’s see what Berlin does to a man in growth mode.
Plans for August
Google Ads: onboard the new agency, clean up remarketing and keyword issues, and get the account ready to scale.
Product: kick off mobile-app work, add new email flow, and lay the groundwork for a new product.
SEO: run a focused link-building sprint for one top article and track the impact over the next three months.
Content: move to two YouTube videos per week and relaunch the Americans Abroad newsletter using the Nomad Deals list.
Life in Berlin: explore the city, meet local founders, and recharge between sprints.
As always, I’ll report back next month on what sticks—and what flops.
Thanks for reading, and see you in the next one:)