Founder Playbook · Sub Club by RevenueCat

11 tactics from Eric Duffett

Shot Pattern (golf GPS strategy app)High school teacher who built a golf GPS app as a side project; turned down $75K acquisition offer; reached $500K+ ARR working nights and weekends, paying himself $100K in 2024.

Turning a Side Project into a Six-Figure Subscription Business – Eric Duffett, Shot Pattern

Watch the full episode
Idea validation
Golf influencers had already trained golfers to use apps on the course. They taught the behaviour — I just built the product that fulfilled the need they'd created. You don't need to create a new behaviour if someone else has already done the hard work.

Ride a behaviour influencers already taught — don't try to create a new one

Duffett noticed that YouTube golf channels were teaching viewers to use GPS yardage apps to improve their course management — but the apps available were clunky and data-poor. Rather than educating a market from scratch, he entered a market where the education was already happening and the demand was unmet. This is a distribution insight as much as a product insight: existing media consumption created pull before the product existed.

Idea validation
I had zero marketing. I just submitted it to the App Store. And people were finding it and paying for it — people I'd never talked to, never told about the app. That's when I knew the product had something.

The clearest PMF signal: strangers paying without you ever talking to them

Duffett submitted Shot Pattern without a launch campaign, email list, or social media push. Organic downloads followed by paid conversions from strangers — people who found the app through App Store search and chose to pay — told him the product solved a real problem at a price people accepted. He contrasts this with a previous app that required constant persuasion to convert anyone, which he now recognises as an absence of product-market fit.

Launching
I joined every golf subreddit, every Facebook group, every Discord I could find. For months I just answered questions about course management — didn't mention the app. Then one day I posted a screenshot and said 'hey, I built this.' The response was immediate because I'd already earned trust.

Build in public inside your niche community before launch — add value first, drop screenshots second

Duffett spent several months participating in golf communities as a genuine contributor before mentioning Shot Pattern. This wasn't a calculated growth strategy — he was a golfer who was interested in the conversations. But the consequence was that when he revealed the app, the community recognised him as one of them, not a marketer. His post spread organically because the trust was real and pre-existing.

Launching
I started posting 'here's what I'm working on next' — not at launch but throughout the year. People started tagging their friends saying 'this is coming, you need this.' That sustained engagement carried me through dead periods where I had nothing actually ready to ship.

Teasing a coming feature before it ships — not just at launch — is what unlocked momentum

Duffett found that pre-announcing upcoming features (with screenshots or demos of in-progress work) drove more engagement than post-launch announcements. Users who anticipated a feature became advocates before it shipped, tagging others and amplifying reach. This created a predictable engagement cycle independent of release cadence — especially valuable for a solo developer whose shipping pace is irregular.

Bootstrapping
I spent $5,000 on a golf course database — every hole, every tee box, GPS coordinates for the entire course. That forced me to get serious about monetisation because I had a real cost. And it made the product meaningfully better than anything free because nobody else was willing to make that investment.

A $5K data purchase was a forcing function and the feature unlock that changed everything

Buying proprietary course data served two purposes: it created a defensible data moat (competitors using free public data couldn't match the accuracy) and forced revenue discipline. With a real ongoing cost, Duffett had to charge enough to cover it — which in turn required building a genuinely better product. The constraint became a competitive advantage.

Mindset
Someone offered me $75,000 for the app. And I almost took it. Then I found industry benchmarks showing what apps at my revenue level typically sell for — and I realised $75K was less than one times annual revenue. I said no. A year later I was glad I did.

Industry benchmarks gave confidence to decline a $75K acquisition offer — know where you stand

At the point of the offer, Shot Pattern was generating meaningful recurring revenue but Duffett had no frame for valuation. Finding acquisition multiple benchmarks (typical consumer subscription apps sell at 3-5x ARR) gave him the context to recognise $75K was far below market. This underscores why knowing your numbers — and knowing industry norms — is a prerequisite for high-stakes decisions, not just operational hygiene.

Distribution
I hired an influencer for $1,500. Professional video, beautiful footage on a real golf course, edited perfectly. My $0 screen recording from my basement — literally just me talking over a screen capture — doubled its install rate. I would never have known without testing both.

The basement screen-recording ad outperformed the $1,500 influencer video — iterate on raw content first

Duffett's experience echoes a pattern across consumer subscription apps: raw, authentic content — especially in acquisition contexts — outperforms polished production. The influencer video looked like an ad; the screen recording felt like advice from a fellow golfer. In a high-trust niche like golf, the latter framing converts better because it matches the context (someone sharing a tool they use) rather than advertising.

Mindset
My accountant looked at my numbers and asked: 'Is this a hobby or a business?' It was the most important question anyone ever asked me about Shot Pattern. Once I decided it was a business, everything — pricing, marketing, decisions — changed.

"Is this a hobby or a business?" — the question that forces the right mindset shift

For Duffett, treating the app as a hobby meant making decisions based on what felt comfortable (low prices, reluctance to promote, irregular work hours). Committing to it as a business meant charging what the market would bear, investing in growth, and taking the work seriously enough to quit teaching. The label shift preceded the revenue shift — the mindset change came first.

Product
Golf is seasonal. Looking at week-over-week or even month-over-month metrics would tell me the business was dying every October. The only number that tells the true story is the same month last year — that's where I can see compound growth happening.

Seasonal apps look flat week-to-week — only same-month year-over-year reveals whether you're compounding

Duffett warns against applying standard SaaS metric cadences to seasonal apps. Monthly MRR trend lines show frightening drops every autumn and look deceptively strong every spring — neither tells you if the business is actually growing. Year-over-year same-month comparisons remove seasonal noise and reveal whether retention is compounding, cohorts are expanding, and absolute numbers are improving.

Idea validation
I spent five years on an app before Shot Pattern. Never broke $500 in a month. I kept building features thinking 'this will be the thing that makes people pay.' It never was. Looking back, nobody had a problem worth paying for.

Five years on the wrong app taught what PMF isn't — no purchasing intent means no problem to solve

Duffett's first app (a coaching tool for a sport he played recreationally) never generated meaningful revenue despite sustained effort and multiple pivots. He now diagnoses it as a fundamental PMF absence: users were mildly interested but didn't have an urgent, recurring problem that made them willing to pay. The lesson is that feature iteration cannot substitute for a problem people are already motivated to solve.

Mindset
I told my wife: if this doesn't hit $10K MRR by the end of the year, I'll shut it down. I didn't really want to shut it down — but I needed to feel like failure was real. Once the downside was concrete, I made decisions completely differently.

Loss aversion is a more reliable motivator than ambition — engineer the stakes deliberately

Duffett engineered artificial stakes to activate loss aversion as a motivator. With no external investors or boss, the natural default for indie founders is infinite tolerance for slow progress. By committing to a shutdown condition publicly (to his wife), he created a real cost to under-performance. The psychological research is consistent with his experience: people work harder to avoid losing something than to gain something equivalent.