App Masters · 2026-10-24
How a Full-Time Teacher Built a Nearly $1M App Business
Eric Duffett, a full-time teacher, built Shot Pattern (golf strategy/GPS app) to ~$1M lifetime sales after 7 years of failed apps. He shipped a two-feature MVP in 3 weeks, grew on X, declined a $75K offer after benchmarking on RevenueCat, priced toward $75/yr, and scaled Meta install ads with a lo-fi screen-recording ad ($1.57 CPI, ~$100K net in a summer, funded on credit). Shorter paywalls lifted trials but cut revenue; an interactive tutorial onboarding lifted trials 19%. Ends with live audits of two viewer apps.
Play the episode22 tactics
Numbers mentioned
| Who | Metric | Value | Context | When |
|---|---|---|---|---|
| Shot Pattern | revenue | USD 1M approximate | Lifetime sales, shown on a sales chart slide | 2:50 |
| Shot Pattern | revenue | USD 1M/year approximate | 'Closer to a million dollars a year' this year | 2:50 |
| Shot Pattern | time to milestone | 3 weeks | Development time from start to App Store launch | 4:31 |
| Shot Pattern | revenue | USD 1,000 approximate | Revenue by end of June of launch summer; the goal was $1,000 for the summer | 10:10 |
| Shot Pattern | cost | USD 5,000/one-time | Upfront purchase of golf course data API; its documentation revealed the feature that later went viral | 12:11 |
| Shot Pattern | revenue | USD 2,000 approximate | Lifetime revenue at the time of the acquisition offer; lifetime profit still negative | 14:34 |
| golf company that offered to buy Shot Pattern | offer value | USD 75K | Offer to acquire Shot Pattern; declined | 15:43 |
| Shot Pattern | rank | 99 percentile approximate | Trial start rate and trial conversion rate vs RevenueCat State of Subscription Apps benchmarks, at the time of the offer | 15:43 |
| Shot Pattern | profit | USD 1,000/year approximate | First year's profit (seen at tax time after declining $75K) | 17:30 |
| Shot Pattern | price | USD 39.99/year | Annual price before preparing to run paid ads | 18:27 |
| benchmarkMinimum annual price for paid ads to work, per the Sub Club chat | price | USD 75/year approximate | Guest adopted this as his target price; host disagrees and says founders succeed at ~$20/year | 18:27 |
| marketTop annual price among golf GPS apps | price | USD 99/year approximate | 42:52 | |
| benchmarkAnnual price levels at which subscription apps can still succeed (host's founder conversations) | price | USD 20/year illustrative | Host's counterpoint to the $75/year rule; says LTV matters more than price | 47:49 |
| benchmarkMeta ad spend needed for a campaign to exit the learning phase (what the guest had heard) | ad spend | USD 10K/month approximate | 25:16 | |
| Shot Pattern | ad spend | USD 300/day estimate | Daily budget of the first Meta install campaign | 25:16 |
| Shot Pattern | share | 80–90% approximate | Share of Meta spend that went to the founder's lo-fi screen-recording ad (of three creatives) | 25:59 |
| Shot Pattern | cpi | USD 1.57 | Final blended CPI of the first Meta install campaign | 25:59 |
| Shot Pattern | cpi | USD 1 approximate | Under $1 per install in the campaign's early days | 25:59 |
| Shot Pattern | cac | USD 1.5 approximate | Cost to acquire a customer from Meta (as the guest framed it) | 30:12 |
| Shot Pattern | ltv | USD 4–5per customer approximate | Revenue per acquired customer within 30 days | 30:12 |
| Shot Pattern | roas | 4 x approximate | $4 back per $1 of Meta spend within 8 days (as explained to his wife) | 30:12 |
| Shot Pattern | profit | USD 100K approximate | Net income over one summer of Meta ads (July-August push, then ads turned off) | 30:12 |
| Shot Pattern | views | 1.3M–1.8M viewsper video | Paid views on individual ugly ads (1.8M and 1.3M), all from Meta spend, not organic | 32:13 |
| Shot Pattern | ad spend | USD 500/day approximate | Daily budget on the Meta ad set behind the ongoing ugly ads | 32:13 |
| Shot Pattern | conversion rate | 21% approximate | Trial start rate on the short winning paywall (control) | 37:32 |
| Shot Pattern | conversion rate | 18% approximate | Trial start rate on the long feature-list paywall (variant D); a 12% relative drop, but more revenue | 37:32 |
| Shot Pattern | conversion rate | +8% approximate | Sign-ups after switching to interactive tutorial onboarding | 38:43 |
| Shot Pattern | trial starts | +19% approximate | Trial starts after switching to interactive tutorial onboarding | 38:43 |
| Shot Pattern | conversion rate | 74% approximate | Onboarding completion to account creation (sign-up rate) after removing tutorial part two; downstream trial conversion difference not statistically significant | 41:01 |
| Shot Pattern | count | 9,000 users approximate | Users through the shorter-tutorial onboarding experiment so far; result still a wash | 41:01 |
| personSpeedgolf Rob, TikTok golf creator paid for an ad | followers | hundreds of thousands approximate | 23:00 |