feat: fix travel placement bug, add theme-based alternate icons, fix animated background crash
- Fix repeat-city travel placement: use stop indices instead of global city name matching so Follow Team trips with repeat cities show travel correctly - Add TravelPlacement helper and regression tests (7 tests) - Add alternate app icons for each theme, auto-switch on theme change - Fix index-out-of-range crash in AnimatedSportsBackground (19 configs, was iterating 20) - Add marketing video configs, engine, and new video components - Add docs and data exports Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
136
docs/codexGrowthReviewTemplate.md
Normal file
136
docs/codexGrowthReviewTemplate.md
Normal file
@@ -0,0 +1,136 @@
|
||||
# SportsTime Monday Growth Review Template
|
||||
|
||||
Use this every Monday. Timebox: 20-30 minutes.
|
||||
|
||||
## 1) Week Snapshot
|
||||
|
||||
`review_date:`
|
||||
`review_owner:`
|
||||
`week_range:`
|
||||
|
||||
`headline:` one sentence on how the week went.
|
||||
|
||||
## 2) KPI Scorecard (This Week vs Last Week vs Goal)
|
||||
|
||||
| Metric | This Week | Last Week | Delta | Goal | Status (Green/Yellow/Red) |
|
||||
|---|---:|---:|---:|---:|---|
|
||||
| Installs | | | | | |
|
||||
| Cost (paid spend) | | | | | |
|
||||
| CPI | | | | | |
|
||||
| Activation rate (`install -> trip_saved`) | | | | | |
|
||||
| Paywall view rate | | | | | |
|
||||
| Paywall conversion (`paywall_view -> purchase_success`) | | | | | |
|
||||
| New subscribers | | | | | |
|
||||
| Weekly revenue | | | | | |
|
||||
| D1 retention | | | | | |
|
||||
| D7 retention | | | | | |
|
||||
| D30 retention | | | | | |
|
||||
| Shares per activated user | | | | | |
|
||||
|
||||
## 3) Funnel Breakdown
|
||||
|
||||
| Step | Users | Conversion from prior step | Notes |
|
||||
|---|---:|---:|---|
|
||||
| Installs | | | |
|
||||
| First open | | | |
|
||||
| Onboarding complete | | | |
|
||||
| Trip options generated | | | |
|
||||
| Trip saved | | | |
|
||||
| Paywall viewed | | | |
|
||||
| Purchase started | | | |
|
||||
| Purchase success | | | |
|
||||
|
||||
`largest_drop_off_step:`
|
||||
`suspected_cause:`
|
||||
`fix_to_ship_this_week:`
|
||||
|
||||
## 4) Channel Performance
|
||||
|
||||
| Channel | Spend | Installs | CPI | Activation rate | Purchase rate | Keep / Improve / Cut |
|
||||
|---|---:|---:|---:|---:|---:|---|
|
||||
| App Store Organic | | | | | | |
|
||||
| Apple Search Ads | | | | | | |
|
||||
| TikTok Organic | | | | | | |
|
||||
| TikTok Paid | | | | | | |
|
||||
| Meta Paid | | | | | | |
|
||||
| Reddit | | | | | | |
|
||||
| Creator/Influencer | | | | | | |
|
||||
| Referral/Invite | | | | | | |
|
||||
|
||||
## 5) Experiments Reviewed
|
||||
|
||||
### Experiment 1
|
||||
`name:`
|
||||
`hypothesis:`
|
||||
`change_shipped:`
|
||||
`result:`
|
||||
`decision:` Ship / Iterate / Kill
|
||||
|
||||
### Experiment 2
|
||||
`name:`
|
||||
`hypothesis:`
|
||||
`change_shipped:`
|
||||
`result:`
|
||||
`decision:` Ship / Iterate / Kill
|
||||
|
||||
### Experiment 3
|
||||
`name:`
|
||||
`hypothesis:`
|
||||
`change_shipped:`
|
||||
`result:`
|
||||
`decision:` Ship / Iterate / Kill
|
||||
|
||||
## 6) Product + UX Issues
|
||||
|
||||
Top friction points from analytics, support, or user feedback:
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
|
||||
`highest_priority_fix_for_this_week:`
|
||||
|
||||
## 7) Content + Distribution Review
|
||||
|
||||
| Content Type | Published | Avg views | Avg CTR to store/site | Top performer | Next action |
|
||||
|---|---:|---:|---:|---|---|
|
||||
| TikTok/Reels | | | | | |
|
||||
| X/Twitter | | | | | |
|
||||
| Reddit posts/comments | | | | | |
|
||||
| Email newsletter | | | | | |
|
||||
| Creator placements | | | | | |
|
||||
|
||||
`winning_content_angle:`
|
||||
`angle_to_drop:`
|
||||
|
||||
## 8) Decisions (Write Explicitly)
|
||||
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
|
||||
## 9) This Week Plan (Top 3 Priorities Only)
|
||||
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
|
||||
## 10) Owner + Deadline Grid
|
||||
|
||||
| Task | Owner | Deadline | Success metric |
|
||||
|---|---|---|---|
|
||||
| | | | |
|
||||
| | | | |
|
||||
| | | | |
|
||||
|
||||
## 11) Risk Watch
|
||||
|
||||
`biggest_risk_next_2_weeks:`
|
||||
`mitigation:`
|
||||
|
||||
## 12) Weekly Close Checklist
|
||||
|
||||
- [ ] KPI table filled with real numbers
|
||||
- [ ] One funnel fix selected and scheduled
|
||||
- [ ] One distribution channel reduced or scaled based on data
|
||||
- [ ] Three decisions documented
|
||||
- [ ] Three priorities set for current week
|
||||
138
docs/codexGrowthReviewWeek1Example.md
Normal file
138
docs/codexGrowthReviewWeek1Example.md
Normal file
@@ -0,0 +1,138 @@
|
||||
# SportsTime Monday Growth Review - Example (Week 1)
|
||||
|
||||
Use this as a concrete starter. Date context:
|
||||
- Review date: February 9, 2026
|
||||
- Week range: February 2-8, 2026
|
||||
|
||||
## 1) Week Snapshot
|
||||
|
||||
`review_date:` 2026-02-09
|
||||
`review_owner:` Trey
|
||||
`week_range:` 2026-02-02 to 2026-02-08
|
||||
|
||||
`headline:` Strong launch-week top-of-funnel; biggest gap is install-to-trip-save activation.
|
||||
|
||||
## 2) KPI Scorecard (This Week vs Last Week vs Goal)
|
||||
|
||||
| Metric | This Week | Last Week | Delta | Goal | Status (Green/Yellow/Red) |
|
||||
|---|---:|---:|---:|---:|---|
|
||||
| Installs | 486 | 0 | +486 | 500 | Yellow |
|
||||
| Cost (paid spend) | $118 | $0 | +$118 | <= $120 | Green |
|
||||
| CPI | $2.43 | $0 | n/a | <= $3.00 | Green |
|
||||
| Activation rate (`install -> trip_saved`) | 16.9% | 0% | +16.9pp | 22% | Red |
|
||||
| Paywall view rate | 12.4% | 0% | +12.4pp | 15% | Yellow |
|
||||
| Paywall conversion (`paywall_view -> purchase_success`) | 8.3% | 0% | +8.3pp | 10% | Yellow |
|
||||
| New subscribers | 5 | 0 | +5 | 8 | Yellow |
|
||||
| Weekly revenue | $11.85 | $0 | +$11.85 | $20 | Yellow |
|
||||
| D1 retention | 31.7% | 0% | +31.7pp | 32% | Yellow |
|
||||
| D7 retention | n/a (insufficient) | 0% | n/a | 14% | Yellow |
|
||||
| D30 retention | n/a | 0% | n/a | 7% | Yellow |
|
||||
| Shares per activated user | 0.41 | 0 | +0.41 | 0.50 | Yellow |
|
||||
|
||||
## 3) Funnel Breakdown
|
||||
|
||||
| Step | Users | Conversion from prior step | Notes |
|
||||
|---|---:|---:|---|
|
||||
| Installs | 486 | - | Launch week traffic healthy |
|
||||
| First open | 459 | 94.4% | Normal app install/open drop |
|
||||
| Onboarding complete | 365 | 79.5% | Step completion acceptable |
|
||||
| Trip options generated | 146 | 40.0% | Biggest drop starts here |
|
||||
| Trip saved | 82 | 56.2% | Save intent good once options seen |
|
||||
| Paywall viewed | 57 | 69.5% | Trigger points working |
|
||||
| Purchase started | 12 | 21.1% | CTA can improve |
|
||||
| Purchase success | 5 | 41.7% | Early conversion acceptable |
|
||||
|
||||
`largest_drop_off_step:` onboarding_complete -> trip_options_generated
|
||||
`suspected_cause:` users not selecting enough required fields in wizard and/or route generation feels heavy before first win
|
||||
`fix_to_ship_this_week:` add progress hints + "minimum required to generate first route" helper + one-tap defaults
|
||||
|
||||
## 4) Channel Performance
|
||||
|
||||
| Channel | Spend | Installs | CPI | Activation rate | Purchase rate | Keep / Improve / Cut |
|
||||
|---|---:|---:|---:|---:|---:|---|
|
||||
| App Store Organic | $0 | 206 | $0.00 | 18.4% | 1.3% | Improve |
|
||||
| Apple Search Ads | $86 | 118 | $0.73 | 22.0% | 1.7% | Keep |
|
||||
| TikTok Organic | $0 | 72 | $0.00 | 11.1% | 0.4% | Improve |
|
||||
| TikTok Paid | $32 | 54 | $0.59 | 9.3% | 0.0% | Cut |
|
||||
| Meta Paid | $0 | 0 | $0.00 | - | - | Not run |
|
||||
| Reddit | $0 | 29 | $0.00 | 20.7% | 1.4% | Keep |
|
||||
| Creator/Influencer | $0 | 7 | $0.00 | 14.3% | 0.0% | Improve |
|
||||
| Referral/Invite | $0 | 0 | $0.00 | - | - | Not live yet |
|
||||
|
||||
## 5) Experiments Reviewed
|
||||
|
||||
### Experiment 1
|
||||
`name:` Review prompt after second successful session
|
||||
`hypothesis:` delaying prompt until post-value moment improves rating conversion
|
||||
`change_shipped:` prompt gate after second session + successful route save
|
||||
`result:` 9 ratings, average 4.8, no negative spike
|
||||
`decision:` Ship
|
||||
|
||||
### Experiment 2
|
||||
`name:` Launch paywall on first blocked action only
|
||||
`hypothesis:` contextual paywall increases purchase start rate vs generic modal
|
||||
`change_shipped:` paywall shown only on 3 blocked actions
|
||||
`result:` paywall start rate 21.1%, purchase success 41.7% from starts
|
||||
`decision:` Iterate (test stronger annual framing)
|
||||
|
||||
### Experiment 3
|
||||
`name:` TikTok "3 games in 4 days" hook
|
||||
`hypothesis:` challenge framing drives higher installs than static demo
|
||||
`change_shipped:` 4 videos with challenge overlay
|
||||
`result:` higher views, low activation quality from paid traffic
|
||||
`decision:` Iterate for organic; kill paid variant
|
||||
|
||||
## 6) Product + UX Issues
|
||||
|
||||
Top friction points from analytics + qualitative feedback:
|
||||
1. Too many required fields before first route output.
|
||||
2. Users unclear why no routes returned in some date windows.
|
||||
3. Region selection not obvious to first-time users.
|
||||
|
||||
`highest_priority_fix_for_this_week:` simplify first route flow and auto-fill defaults to increase `trip_options_generated`.
|
||||
|
||||
## 7) Content + Distribution Review
|
||||
|
||||
| Content Type | Published | Avg views | Avg CTR to store/site | Top performer | Next action |
|
||||
|---|---:|---:|---:|---|---|
|
||||
| TikTok/Reels | 7 | 2,540 | 1.8% | "Can you hit 3 NBA games in 4 days?" | Repeat challenge format with city-specific hooks |
|
||||
| X/Twitter | 8 | 740 | 1.2% | Team-first route thread | Post 1 route teardown/day |
|
||||
| Reddit posts/comments | 3/19 | n/a | n/a | Value post in `r/roadtrip` | Keep value-first, no direct promo tone |
|
||||
| Email newsletter | 1 | n/a | 5.1% | Launch email | Send weekly route drop |
|
||||
| Creator placements | 2 | 1,100 | 0.7% | MLB weekend route clip | Send 20 custom creator route DMs |
|
||||
|
||||
`winning_content_angle:` "Can you hit X games in Y days from [city]?"
|
||||
`angle_to_drop:` generic feature walkthrough with no concrete trip scenario
|
||||
|
||||
## 8) Decisions (Write Explicitly)
|
||||
|
||||
1. Shift remaining paid budget to Apple Search Ads; pause TikTok paid for now.
|
||||
2. Prioritize activation improvements before scaling top-of-funnel.
|
||||
3. Launch referral loop in next sprint to increase low-cost installs.
|
||||
|
||||
## 9) This Week Plan (Top 3 Priorities Only)
|
||||
|
||||
1. Ship onboarding simplification and default route helper.
|
||||
2. Implement referral/deep-link invite loop for polls and shared routes.
|
||||
3. Publish 5 short videos using city + league challenge format.
|
||||
|
||||
## 10) Owner + Deadline Grid
|
||||
|
||||
| Task | Owner | Deadline | Success metric |
|
||||
|---|---|---|---|
|
||||
| Onboarding simplification + defaults | Trey | 2026-02-12 | `onboarding_complete -> trip_options_generated` +8pp |
|
||||
| Referral/deep-link invite MVP | Trey | 2026-02-14 | 25 referred installs in first 7 days |
|
||||
| Content batch (5 challenge videos) | Trey | 2026-02-15 | >= 10k total views, >= 2% CTR |
|
||||
|
||||
## 11) Risk Watch
|
||||
|
||||
`biggest_risk_next_2_weeks:` traffic quality can outpace product readiness and suppress ratings/retention
|
||||
`mitigation:` keep paid spend constrained until activation and D1 retention stabilize above target
|
||||
|
||||
## 12) Weekly Close Checklist
|
||||
|
||||
- [x] KPI table filled with real numbers
|
||||
- [x] One funnel fix selected and scheduled
|
||||
- [x] One distribution channel reduced or scaled based on data
|
||||
- [x] Three decisions documented
|
||||
- [x] Three priorities set for current week
|
||||
363
docs/codexMarketing.md
Normal file
363
docs/codexMarketing.md
Normal file
@@ -0,0 +1,363 @@
|
||||
# SportsTime iOS Launch & Growth Plan (90 Days)
|
||||
|
||||
Assumptions used for this plan:
|
||||
- You are pre-launch on TestFlight with no meaningful existing audience.
|
||||
- Budget is $500/month total.
|
||||
- You can ship product changes quickly.
|
||||
- US-only, iPhone-only, sports leagues are US-focused.
|
||||
- Pricing is currently `$0.99/month` and `$9.99/year` (strongly recommend testing higher price points in Month 2).
|
||||
|
||||
Proposed 90-day targets (edit as needed):
|
||||
- Baseline: `12,000 installs`, `300 paid subscribers`, `D1 32%`, `D7 14%`, `D30 7%`.
|
||||
- Stretch: `30,000 installs`, `800 paid subscribers`, `D1 35%`, `D7 16%`, `D30 8%`.
|
||||
- 100k installs in 90 days is only realistic if a viral loop from sharing/polls lands hard; paid media alone cannot do this on $500/mo.
|
||||
|
||||
## 1. Positioning & Messaging
|
||||
|
||||
- Core hook: “Plan multi-game sports road trips in minutes, not spreadsheets.”
|
||||
- Positioning statement: SportsTime is the only iPhone app that combines real game schedules, route logic, and stadium tracking into one trip-planning flow.
|
||||
- Target audience psychology: sports fans with FOMO, completionist behavior (visit all stadiums), social bragging (share routes/progress), and “planning as entertainment” during downtime.
|
||||
- Why they install: they want an answer to “What games can I realistically hit in one trip?”.
|
||||
- Why they pay: unlimited saved trips, group planning/polls, and stadium progress tracking are “identity” features for serious fans.
|
||||
|
||||
Main competitor set:
|
||||
- `Roadtrippers` and `Wanderlog` for generic road-trip planning.
|
||||
- `MLB Ballpark` for in-stadium check-in utility.
|
||||
- `StadiumTrack` / `Stadium Rover` / `Balltrip` for stadium/fan tracking or lightweight sports-trip planning.
|
||||
- `SeatGeek` as adjacent discovery/ticket competitor.
|
||||
|
||||
Why SportsTime wins:
|
||||
- Sports-native planning modes (`by dates`, `by games`, `by route`, `follow team`, `by teams`) rather than generic POI routing.
|
||||
- Cross-league coverage in one planner.
|
||||
- Built-in “fan progression” layer (stadium tracking + achievements), not just itinerary.
|
||||
- Group poll collaboration tied to trip options.
|
||||
|
||||
Tagline ideas:
|
||||
- “From Couch to Kickoff.”
|
||||
- “Build Your Ultimate Stadium Run.”
|
||||
- “Plan the Trip. Chase the Games.”
|
||||
- “See More Games. Drive Less.”
|
||||
- “The Road-Trip Brain for Sports Fans.”
|
||||
|
||||
App Store subtitle ideas:
|
||||
- “Plan Multi-Game Road Trips”
|
||||
- “Sports Route + Stadium Tracker”
|
||||
- “Trip Planner for Sports Fans”
|
||||
- “Find Games, Build the Route”
|
||||
- “Road Trips for Game Days”
|
||||
|
||||
## 2. Pre-Launch Plan (30-60 Days Before)
|
||||
|
||||
Landing page strategy:
|
||||
- One CTA only: “Get your first 3-game route.”
|
||||
- Inputs on page: favorite team, home city, month, max driving hours/day, email.
|
||||
- Output: send a personalized sample itinerary by email within 24 hours.
|
||||
- Add 3 social proof blocks from TestFlight users and one short demo video.
|
||||
|
||||
Waitlist strategy:
|
||||
- Segment by league interest and distance willingness.
|
||||
- Send weekly “Route Drop” emails: one weekend plan, one 5-day plan, one “follow-team” plan.
|
||||
- Use scarcity: “Founding 500 get lifetime Founder Badge in app + 1 free pro year.”
|
||||
|
||||
Beta/TestFlight plan:
|
||||
- Recruit 150-250 testers with high intent from fan communities.
|
||||
- Use a structured mission each week: “Plan and save 1 trip” then “Share 1 trip card” then “Log 1 stadium visit.”
|
||||
- Track activation target: 60% of testers reach `trip_saved`.
|
||||
- Run 2 in-app surveys: after first trip save and after first week.
|
||||
|
||||
Community building channels:
|
||||
- Reddit: `r/baseball`, `r/NBA`, `r/nfl`, `r/hockey`, `r/mls`, `r/wnba`, `r/NWSL`, `r/roadtrip`.
|
||||
- TikTok/Reels: 4-5 short videos/week, each showing real route scenarios.
|
||||
- X/Twitter: daily “Can this trip work?” route posts with screenshots.
|
||||
|
||||
How to collect emails:
|
||||
- Website route generator.
|
||||
- “Free printable stadium checklist” gated download.
|
||||
- “Opening Week Route Pack” gated PDF.
|
||||
- QR code from social video overlays to waitlist page.
|
||||
|
||||
How to seed early users:
|
||||
- DM 100 fan creators/podcasters with a custom route built for their team.
|
||||
- Offer “free pro for creators + audience code”.
|
||||
- Run “First 1,000 Founders” campaign with public counter.
|
||||
|
||||
## 3. App Store Optimization (ASO)
|
||||
|
||||
Keyword strategy:
|
||||
- Intent cluster A: `sports trip planner`, `stadium trip planner`, `game day trip`.
|
||||
- Intent cluster B: `road trip planner`, `multi stop route planner`, `travel itinerary`.
|
||||
- Intent cluster C: `MLB trip`, `NBA trip`, `NFL trip`, `NHL trip`, `MLS trip`.
|
||||
- Intent cluster D: `stadium tracker`, `ballpark tracker`, `sports bucket list`.
|
||||
|
||||
Title/subtitle structure:
|
||||
- Title format: `Brand + core intent`.
|
||||
- Candidate title: `SportsTime: Stadium Trips`.
|
||||
- Candidate subtitle: `Plan Multi-Game Road Trips`.
|
||||
|
||||
Screenshot strategy (8 screens):
|
||||
- 1: “Plan by dates, games, routes, or teams.”
|
||||
- 2: “See all games in your trip window.”
|
||||
- 3: “Get optimized route options with drive time.”
|
||||
- 4: “Compare itinerary options fast.”
|
||||
- 5: “Save trips and revisit anytime.”
|
||||
- 6: “Track stadiums visited across leagues.”
|
||||
- 7: “Plan with friends using trip polls.”
|
||||
- 8: “Share polished trip cards and PDFs.”
|
||||
|
||||
Preview video plan:
|
||||
- Video A (15s): instant value, “from dates to route in seconds.”
|
||||
- Video B (30s): real scenario, “hit 3 games in 4 days.”
|
||||
- Video C (20s): stadium tracker + achievements + social sharing.
|
||||
|
||||
Review/rating strategy for first 100 reviews:
|
||||
- Trigger `SKStoreReviewController` only after `trip_saved` + second successful session.
|
||||
- Do not prompt after errors or paywall rejection.
|
||||
- Send direct asks to top 100 TestFlight users with one-tap review deep link.
|
||||
- In-app “Founding User” card asking for review after user shares a route.
|
||||
|
||||
Localization strategy:
|
||||
- English (US) first.
|
||||
- Spanish metadata next for US Hispanic market.
|
||||
- Localize title/subtitle/keywords/screenshots before localizing full app UI.
|
||||
|
||||
## 4. Launch Week Strategy
|
||||
|
||||
| Day | Objective | Tactics | KPI |
|
||||
|---|---|---|---|
|
||||
| Day 1 (Mon) | Final prep | Freeze build, finalize ASO assets, schedule manual release, set analytics dashboards, queue 7 short videos | Zero blocker bugs |
|
||||
| Day 2 (Tue) | Public launch burst | App Store live + Product Hunt launch + waitlist email blast + creator DMs (30) + ASA exact-match campaign start | Day-1 installs, CVR |
|
||||
| Day 3 (Wed) | Reddit credibility | Post 3 value-first route breakdowns (not promo spam), reply to comments for 4 hours, publish one “how I planned this trip” thread | Saves/comments/clicks |
|
||||
| Day 4 (Thu) | Short-form reach | Publish 3 TikToks/Reels showing team-specific route examples, CTA to free route planner | CTR to App Store |
|
||||
| Day 5 (Fri) | Press + podcasts | Send 50 personalized pitches to sports newsletters/podcasts/blogs with team-angle hooks and demo links | Replies/bookings |
|
||||
| Day 6 (Sat) | Community activation | Run “Weekend Stadium Challenge” with hashtag + share card template, repost user submissions | UGC count, shares |
|
||||
| Day 7 (Sun) | Conversion optimization | Analyze funnel drop-offs, ship onboarding/paywall copy fixes, rotate ad creatives, publish launch recap thread | Activation uplift |
|
||||
|
||||
Product Hunt strategy:
|
||||
- Launch Tuesday 12:01am PT.
|
||||
- First comment must include one specific use case and roadmap.
|
||||
- Ask 25 close contacts to engage in first 4 hours.
|
||||
|
||||
Reddit strategy:
|
||||
- 70% value content, 20% discussion, 10% product mention.
|
||||
- Post local/team-specific trip examples, not generic promo.
|
||||
|
||||
TikTok strategy:
|
||||
- Repeatable content format: “Can you hit X games in Y days from [city]?”
|
||||
- One visual hook in first 1.5 seconds, route reveal by second 5.
|
||||
|
||||
Influencer outreach:
|
||||
- Target micro-creators in sports travel/fan vlog niche (`5k-100k followers`).
|
||||
- Offer custom route build + 1-year pro for coverage.
|
||||
|
||||
Press outreach:
|
||||
- Pitch angle by season moment (opening day, playoffs, rivalry weeks).
|
||||
- Focus on niche sports outlets first, then broader travel tech.
|
||||
|
||||
Hacker News:
|
||||
- Use only if you pitch technical angle: route algorithm + schedule constraints.
|
||||
|
||||
Paid ads in launch week:
|
||||
- Spend `$120` max in week 1 for signal collection.
|
||||
- Keep campaigns narrow and high-intent.
|
||||
|
||||
## 5. Growth Engine (Post-Launch)
|
||||
|
||||
Organic loops:
|
||||
- Poll invite loop: each poll invite sends a deep link; recipient installs to vote.
|
||||
- Share loop: route cards/PDFs include app watermark + CTA.
|
||||
- Progress loop: stadium milestones create social posts (“12/30 MLB parks completed”).
|
||||
|
||||
Referral system:
|
||||
- Give 1 month Pro for every referred user who completes first `trip_saved`.
|
||||
- Cap at 12 months to avoid abuse.
|
||||
|
||||
Viral features to prioritize:
|
||||
- Public “Team Trip Templates” share pages.
|
||||
- “Weekend Route Generator” for each league.
|
||||
- “Stadium Chase leaderboard” by city/team fandom.
|
||||
|
||||
Content strategy:
|
||||
- Daily short route content tied to upcoming schedule windows.
|
||||
- Weekly newsletter: “Best trips this week from [major US cities].”
|
||||
|
||||
SEO strategy:
|
||||
- Create indexed pages: `/routes/[team]/[month]/[origin-city]`.
|
||||
- Publish “best sports road trips by month” content with real route screenshots.
|
||||
|
||||
Community building:
|
||||
- Launch a Discord with 3 channels only: `route-help`, `trip-recaps`, `feature-vote`.
|
||||
- Host weekly “route office hours”.
|
||||
|
||||
Retention strategy:
|
||||
- Push notifications on intent:
|
||||
- Trigger if user planned but did not save in 24h.
|
||||
- Trigger when favorite team has dense game window.
|
||||
- Trigger when user is near unvisited stadium.
|
||||
- Email cadence:
|
||||
- Day 1: “Your first route + edit tips.”
|
||||
- Day 3: “3 trips you can do from your city.”
|
||||
- Day 10: “Track your first stadium visit.”
|
||||
|
||||
## 6. Paid Acquisition Plan (If Budget > $0)
|
||||
|
||||
Budget recommendation at `$500/month`:
|
||||
- Apple Search Ads: `$325`
|
||||
- TikTok Ads: `$125`
|
||||
- Meta Ads: `$50`
|
||||
- Creator seed spend: barter/free-pro only unless one creator clearly performs.
|
||||
|
||||
Apple Search Ads strategy:
|
||||
- Campaign groups: brand, competitor, category, discovery.
|
||||
- Start exact-match with high intent keywords only.
|
||||
- Use CPT caps tightly; pause anything above target CPI by day 4.
|
||||
|
||||
TikTok ads strategy:
|
||||
- Use native-style UGC clips, not polished promo ads.
|
||||
- Creative angles: “I planned this Yankees trip in 30 seconds”, “3 games, 4 days challenge”.
|
||||
|
||||
Meta ads strategy:
|
||||
- Interest stack: league fans + road trips + travel planning.
|
||||
- Run one retargeting ad set once pixel audience exists.
|
||||
|
||||
Creator partnerships:
|
||||
- Prioritize sports trip vloggers and fan podcasters.
|
||||
- Give creator-specific deep links and offer their audience 30-day pro.
|
||||
|
||||
Expected CPI ranges (US, non-gaming guidance + practical inference):
|
||||
- Apple Search Ads: roughly `$3.5-$6.0` per install.
|
||||
- TikTok: roughly `$1.5-$4.0`.
|
||||
- Meta: roughly `$2.0-$6.0`.
|
||||
|
||||
Testing plan:
|
||||
- 2-week sprints.
|
||||
- 3 creatives per channel minimum.
|
||||
- Kill rule: pause ad after `3x target CPI` with no activation.
|
||||
- Scale rule: increase 20% budget/day only on ad sets hitting activation and paywall conversion thresholds.
|
||||
|
||||
## 7. Analytics & Tracking Setup
|
||||
|
||||
Must-have tools:
|
||||
- Product analytics: `PostHog` or `Amplitude`.
|
||||
- Crash/perf: `Firebase Crashlytics`.
|
||||
- Subscription tracking: StoreKit transaction events + server-side receipt status.
|
||||
- Attribution at this budget: Apple Ads native attribution + SKAN/AdAttributionKit signals.
|
||||
|
||||
North-star metric:
|
||||
- `Weekly Trip Saves (WTS)` and `Weekly Activated Users (WAU-Activated)`.
|
||||
|
||||
Core funnel:
|
||||
- `install -> first_open -> onboarding_complete -> trip_options_generated -> trip_saved -> paywall_view -> purchase_success -> week1_return`.
|
||||
|
||||
Event schema to implement now:
|
||||
- `app_first_open`
|
||||
- `onboarding_started`
|
||||
- `onboarding_completed`
|
||||
- `planning_mode_selected`
|
||||
- `sports_selected`
|
||||
- `date_range_set`
|
||||
- `regions_selected`
|
||||
- `games_loaded`
|
||||
- `trip_options_generated`
|
||||
- `trip_option_viewed`
|
||||
- `trip_saved`
|
||||
- `trip_shared`
|
||||
- `pdf_export_generated`
|
||||
- `paywall_viewed`
|
||||
- `paywall_cta_tapped`
|
||||
- `purchase_started`
|
||||
- `purchase_success`
|
||||
- `purchase_failed`
|
||||
- `subscription_renewed`
|
||||
- `subscription_canceled`
|
||||
- `poll_create_started`
|
||||
- `poll_created`
|
||||
- `poll_invite_sent`
|
||||
- `poll_vote_submitted`
|
||||
- `stadium_visit_logged`
|
||||
- `achievement_unlocked`
|
||||
- `push_opt_in_status_changed`
|
||||
- `push_opened`
|
||||
- `deeplink_opened`
|
||||
- `referral_accepted`
|
||||
|
||||
Required event properties:
|
||||
- `league`, `planning_mode`, `trip_option_count`, `trip_distance`, `trip_days`, `origin_city`, `paywall_trigger`, `product_id`, `price`, `utm_source`, `creative_id`.
|
||||
|
||||
Metrics to track weekly:
|
||||
- Install-to-activation rate.
|
||||
- Activation-to-paywall rate.
|
||||
- Paywall view-to-purchase rate.
|
||||
- D1/D7/D30 retention.
|
||||
- ARPPU, trial-to-paid (if trials added), refund rate.
|
||||
- LTV/CAC payback window by channel.
|
||||
|
||||
## 8. 90-Day Execution Roadmap
|
||||
|
||||
Week 1-2:
|
||||
- Ship analytics and event taxonomy.
|
||||
- Finalize ASO metadata and first 8 screenshots.
|
||||
- Build waitlist landing page and route-lead magnet.
|
||||
- Recruit first 150 TestFlight users.
|
||||
- Publish 10 short videos before launch day.
|
||||
|
||||
Week 3-4:
|
||||
- Launch publicly.
|
||||
- Run launch week playbook.
|
||||
- Collect first 50 public reviews.
|
||||
- Ship onboarding and paywall copy improvements from funnel data.
|
||||
- Start weekly route newsletter.
|
||||
|
||||
Month 2:
|
||||
- Release referral loop and creator deep links.
|
||||
- Add public route templates for SEO pages.
|
||||
- Run 2 pricing/paywall experiments.
|
||||
- Publish 20 additional short videos tied to schedule moments.
|
||||
- Scale only top-performing acquisition channel.
|
||||
|
||||
Month 3:
|
||||
- Double down on best league-specific growth channel.
|
||||
- Launch “Stadium Challenge” campaign with leaderboard.
|
||||
- Expand metadata localization to Spanish (US-focused).
|
||||
- Add one retention feature tied to favorite teams and upcoming game clusters.
|
||||
- Prepare playoff-season campaign calendar.
|
||||
|
||||
## 9. Aggressive Growth Ideas
|
||||
|
||||
1. Build “Weekend Trip Generator” web tool that creates shareable route images instantly.
|
||||
2. Make first poll free (even on free tier) to maximize invite-based installs.
|
||||
3. Run “30 Stadiums in 90 Days” public challenge with weekly leaderboard.
|
||||
4. Auto-generate team-specific social content daily from schedule windows.
|
||||
5. Offer fan podcasters a custom route segment they can run each week.
|
||||
6. Launch “Founder handle” badges that appear on shared cards for status.
|
||||
7. Create local city route packs (“Best Chicago-based sports trips this month”).
|
||||
8. Ship one-tap “Share to Instagram Stories” templates for every saved trip.
|
||||
9. Partner with sports betting/travel newsletters for co-branded route drops.
|
||||
10. Build seasonal event pages around rivalry weeks and playoffs for search capture.
|
||||
|
||||
## 10. Biggest Mistakes to Avoid
|
||||
|
||||
- Keeping pricing too low for too long; it hurts perceived value and makes paid growth non-viable.
|
||||
- Gating every social loop behind paywall; you need free-tier virality before monetization pressure.
|
||||
- Launching without instrumentation; no event-level data means blind iteration.
|
||||
- Broad targeting (“all sports fans”) instead of high-intent segments by league/team/city.
|
||||
- Posting self-promo spam in Reddit communities; you will get blocked and lose your best channel.
|
||||
- Ignoring retention and over-focusing on top-of-funnel installs.
|
||||
- Shipping with schedule/timezone inaccuracies; trust is the product in planning apps.
|
||||
- Running too many channels at once as a solo founder; pick 2 organic channels + 1 paid channel.
|
||||
- Not building reusable creative systems; growth will stall if content production is ad hoc.
|
||||
- Delaying referral/deep-link loops; with $500/month budget, this is your real growth lever.
|
||||
|
||||
## Sources
|
||||
|
||||
- Wanderlog App Store listing: <https://apps.apple.com/us/app/wanderlog-travel-planner/id1476732439>
|
||||
- Roadtrippers App Store listing: <https://apps.apple.com/us/app/roadtrippers-trip-planner/id944060491>
|
||||
- Balltrip App listing: <https://apps.apple.com/us/app/balltrip-app/id1625957435>
|
||||
- StadiumTrack listing: <https://apps.apple.com/us/app/stadiumtrack/id6752205919>
|
||||
- Stadium Rover listing: <https://apps.apple.com/us/app/stadium-rover/id6744362780>
|
||||
- MLB Ballpark listing: <https://apps.apple.com/us/app/mlb-ballpark/id513135722>
|
||||
- SeatGeek listing: <https://apps.apple.com/us/app/seatgeek-buy-event-tickets/id582790430>
|
||||
- TripIt listing: <https://apps.apple.com/us/app/tripit-travel-planner/id311035142>
|
||||
- AppTweak Apple Ads benchmarks (US CPI reference): <https://www.apptweak.com/en/aso-blog/apple-ads-benchmarks>
|
||||
- AppsFlyer market trend references:
|
||||
- <https://www.appsflyer.com/resources/reports/performance-index/>
|
||||
- <https://www.appsflyer.com/resources/reports/top-5-data-trends-report/>
|
||||
133
docs/codexMarketingChecklist.md
Normal file
133
docs/codexMarketingChecklist.md
Normal file
@@ -0,0 +1,133 @@
|
||||
# SportsTime 90-Day Growth Operator Checklist
|
||||
|
||||
Use this as a weekly execution sheet. Check every item before ending the week.
|
||||
|
||||
## KPI Guardrails (Track Weekly)
|
||||
|
||||
- [ ] Installs (weekly) hit target
|
||||
- [ ] `install -> trip_saved` activation rate improves or holds
|
||||
- [ ] `paywall_view -> purchase_success` conversion improves or holds
|
||||
- [ ] D1 retention
|
||||
- [ ] D7 retention
|
||||
- [ ] Revenue and subscriber count
|
||||
|
||||
## Week 1
|
||||
|
||||
- [ ] Implement core analytics events (`first_open`, `onboarding_completed`, `trip_options_generated`, `trip_saved`, `paywall_viewed`, `purchase_success`, `trip_shared`, `poll_created`, `stadium_visit_logged`)
|
||||
- [ ] Build dashboard for activation, paywall conversion, retention, revenue
|
||||
- [ ] Finalize App Store title, subtitle, keywords
|
||||
- [ ] Draft 8 screenshot concepts (one value message each)
|
||||
- [ ] Build launch waitlist landing page with one CTA
|
||||
- [ ] Add email capture with simple segmentation (league + home city)
|
||||
- [ ] Create 5 short-form video scripts for launch
|
||||
|
||||
## Week 2
|
||||
|
||||
- [ ] Produce and queue at least 10 short videos
|
||||
- [ ] Recruit first 150 TestFlight users (Reddit/X/DM outreach)
|
||||
- [ ] Run TestFlight mission: every tester plans and saves 1 trip
|
||||
- [ ] Collect and tag beta feedback (onboarding, route quality, pricing, bugs)
|
||||
- [ ] Implement review prompt trigger after successful `trip_saved` + second session
|
||||
- [ ] Prepare press and creator outreach list (minimum 100 contacts total)
|
||||
|
||||
## Week 3 (Launch Week)
|
||||
|
||||
- [ ] Monday: release readiness check, analytics sanity, content queue ready
|
||||
- [ ] Tuesday: App Store release + Product Hunt launch
|
||||
- [ ] Tuesday: send launch email to waitlist
|
||||
- [ ] Tuesday: start Apple Search Ads exact-match campaign
|
||||
- [ ] Wednesday: publish 3 value-first Reddit posts
|
||||
- [ ] Thursday: post 3 short videos (team-specific route examples)
|
||||
- [ ] Friday: send 50 personalized press/newsletter/podcast pitches
|
||||
- [ ] Weekend: run user-generated “Stadium Challenge” post format
|
||||
- [ ] Sunday: funnel review and quick fixes shipped
|
||||
|
||||
## Week 4
|
||||
|
||||
- [ ] Publish post-launch update with roadmap and fixes
|
||||
- [ ] Optimize onboarding copy based on Week 3 drop-offs
|
||||
- [ ] Optimize paywall copy and placement based on Week 3 conversion
|
||||
- [ ] Refresh App Store screenshots with top-performing messaging angle
|
||||
- [ ] Collect first 50 App Store reviews
|
||||
- [ ] Start weekly “Route Drop” newsletter
|
||||
|
||||
## Week 5
|
||||
|
||||
- [ ] Ship referral flow (`referral_accepted` tracked)
|
||||
- [ ] Ship creator deep links with source tagging
|
||||
- [ ] Publish 5 new short videos tied to upcoming game windows
|
||||
- [ ] Launch one “origin city -> weekend trips” content page
|
||||
- [ ] Cut any paid channel/ad set above kill threshold CPI
|
||||
|
||||
## Week 6
|
||||
|
||||
- [ ] Launch first pricing/paywall test (copy, offer framing, or annual emphasis)
|
||||
- [ ] Add push nudges for unfinished trip planning (24-hour trigger)
|
||||
- [ ] Publish 5 route-focused short videos
|
||||
- [ ] Run outreach wave #2 to 30 creators with custom team routes
|
||||
- [ ] Review retention cohorts by planning mode
|
||||
|
||||
## Week 7
|
||||
|
||||
- [ ] Launch second paywall/pricing test (alternate variant)
|
||||
- [ ] Ship one viral sharing improvement (better card CTA, cleaner share template, deep-link recovery)
|
||||
- [ ] Publish 2 SEO pages for team/month route templates
|
||||
- [ ] Run Reddit AMA-style value thread (planning workflows, not promo spam)
|
||||
- [ ] Weekly KPI review and decision log updated
|
||||
|
||||
## Week 8
|
||||
|
||||
- [ ] Launch “Stadium Progress” social campaign format
|
||||
- [ ] Add push trigger for favorite-team high-density game window
|
||||
- [ ] Publish 5 short videos and 1 long-form walkthrough
|
||||
- [ ] Expand creator program with simple affiliate-like tracking code
|
||||
- [ ] Rebalance paid budget to top channel only
|
||||
|
||||
## Week 9
|
||||
|
||||
- [ ] Ship public route template library MVP
|
||||
- [ ] Publish 3 new city-based route pages for SEO
|
||||
- [ ] Audit funnel by source (`utm_source`, `creative_id`)
|
||||
- [ ] Replace lowest-performing screenshot and subtitle variant
|
||||
- [ ] Gather 10 qualitative user calls or DM interviews
|
||||
|
||||
## Week 10
|
||||
|
||||
- [ ] Launch “Challenge” feature campaign (e.g., 30 stadiums progress stories)
|
||||
- [ ] Add one retention feature driven by user feedback
|
||||
- [ ] Publish 5 short videos with playoff/rivalry angles
|
||||
- [ ] Outreach wave #3 to niche podcasts/newsletters
|
||||
- [ ] Validate CAC vs 30-day value trend
|
||||
|
||||
## Week 11
|
||||
|
||||
- [ ] Localize App Store metadata to Spanish (US-focused)
|
||||
- [ ] Re-run ASO keyword refresh from actual query data
|
||||
- [ ] Ship referral optimization (friction reduction + clearer reward copy)
|
||||
- [ ] Run one focused promo with creator partner
|
||||
- [ ] Weekly KPI review and decision log updated
|
||||
|
||||
## Week 12
|
||||
|
||||
- [ ] Prepare playoff-season campaign package (assets, routes, content calendar)
|
||||
- [ ] Create best-performing content playbook from last 60 days
|
||||
- [ ] Consolidate winning onboarding/paywall variants as new default
|
||||
- [ ] Publish retention and win-back email sequence v2
|
||||
- [ ] Collect net-new review push to pass 100 reviews total
|
||||
|
||||
## Week 13 (Day 85-90)
|
||||
|
||||
- [ ] Run full 90-day retrospective: installs, activation, retention, revenue, CAC/LTV
|
||||
- [ ] Decide channel strategy for next 90 days (double down on top 1-2)
|
||||
- [ ] Lock next-quarter growth bets (3 max)
|
||||
- [ ] Archive failed experiments and reasons
|
||||
- [ ] Publish internal growth memo with next-quarter numeric targets
|
||||
|
||||
## Weekly Operating Rhythm (Repeat Every Week)
|
||||
|
||||
- [ ] Monday: KPI review + top 3 experiments selected
|
||||
- [ ] Tuesday: ship product changes tied to funnel
|
||||
- [ ] Wednesday: distribution day (community + creator outreach)
|
||||
- [ ] Thursday: content day (short-form + newsletter)
|
||||
- [ ] Friday: experiment readout + budget reallocation
|
||||
- [ ] Sunday: prepare next week assets and schedule
|
||||
66
docs/reelRollOut.md
Normal file
66
docs/reelRollOut.md
Normal file
@@ -0,0 +1,66 @@
|
||||
# SportsTime Reels Rollout (14 Days)
|
||||
|
||||
Timezone: **US Eastern (ET)**
|
||||
|
||||
Start date: **Monday, February 9, 2026**
|
||||
End date: **Sunday, February 22, 2026**
|
||||
|
||||
## Hashtag Sets
|
||||
|
||||
Use one set per post (rotate to avoid repetitive footprint).
|
||||
|
||||
- **Set A (General Sports Travel)**
|
||||
- `#SportsTime #SportsRoadTrip #GameDay #RoadTrip #SportsFans #TravelTok #iPhoneApps #WeekendTrip`
|
||||
- **Set B (Follow Team / Away Games)**
|
||||
- `#SportsTime #AwayGame #FollowYourTeam #NBATok #NFLTok #MLBTok #NHLTok #SoccerTok`
|
||||
- **Set C (Group Planning / Polls)**
|
||||
- `#SportsTime #GroupTrip #TripPlanning #FriendGroup #SportsTrip #RoadTripIdeas #SportsTok #BucketList`
|
||||
- **Set D (Stadium Tracker / Completionist)**
|
||||
- `#SportsTime #StadiumTracker #StadiumChallenge #SportsBucketList #FanLife #BucketList #TravelGoals #USRoadTrip`
|
||||
- **Set E (Lifestyle / Vlog)**
|
||||
- `#SportsTime #WeekendVibes #RoadTripVlog #SportsTravel #CoupleTravel #FriendTrips #TravelReels #SportsReels`
|
||||
|
||||
## 14-Day Posting Calendar (Exact Publish Times)
|
||||
|
||||
| Date | Day | Time (ET) | Video ID | Title | Caption | Hashtag Set | Hook A | Hook B |
|
||||
|---|---|---|---|---|---|---|---|---|
|
||||
| 2026-02-09 | Mon | 12:20 PM | V01 | 3-in-4 Challenge | `3 games, 4 days, one car. No spreadsheet. Want one for your city?` | Set A | `I planned a 3-stadium weekend in 14 seconds.` | `This sports road trip looked impossible until I did this.` |
|
||||
| 2026-02-09 | Mon | 8:40 PM | V02 | Fan Test | `Hot take: if you’ve never done an away-game road trip, you’re missing out.` | Set B | `If you’ve never done an away-game road trip… are you even a fan?` | `Real fans do at least one away-game run a season.` |
|
||||
| 2026-02-10 | Tue | 12:20 PM | V03 | "We Should Do This" | `Every group chat says "we should do a trip." Nobody plans it.` | Set C | `Group chat said “we should do this.” No one planned it.` | `Your group chat has ideas. This is how it actually happens.` |
|
||||
| 2026-02-10 | Tue | 8:40 PM | V04 | Stadium Count Flex | `My friend said he’s a diehard fan. I asked for his stadium count.` | Set D | `My friend: 4 stadiums. Me: 27.` | `If you don’t track your stadiums, does it even count?` |
|
||||
| 2026-02-11 | Wed | 12:20 PM | V06 | Date Range Tutorial | `How to build a sports trip in 3 taps.` | Set A | `How to plan a sports road trip in 3 taps.` | `Takes me less than 20 seconds to build a route now.` |
|
||||
| 2026-02-11 | Wed | 8:40 PM | V07 | Follow Team Mode | `If you’re obsessed with one team, this mode is unfair.` | Set B | `Want to follow your team on the road? Do this.` | `Pick your team, and it maps a real road stretch.` |
|
||||
| 2026-02-12 | Thu | 12:20 PM | V08 | Route-First Planning | `Already driving? Add games on the way without blowing up the trip.` | Set A | `Driving Dallas to Atlanta? Add games on the way.` | `You can turn any long drive into a game-day run.` |
|
||||
| 2026-02-12 | Thu | 8:40 PM | V09 | Must-See Games First | `I pick the matchups first. The route can figure itself out.` | Set B | `Pick the games first. Let the route figure itself out.` | `Stop planning around highways. Plan around games.` |
|
||||
| 2026-02-13 | Fri | 12:20 PM | V16 | The 4 Trip Friends | `Tag your group roles right now 😂` | Set C | `Every sports trip has these 4 people.` | `One of your friends is 100% this person.` |
|
||||
| 2026-02-13 | Fri | 8:40 PM | V19 | Casual Fan Take | `Hot take Friday: home-games-only fans are missing half the fun.` | Set B | `Hot take: home-games-only fans are missing half the fun.` | `Away-game runs are peak fan experience. Debate me.` |
|
||||
| 2026-02-14 | Sat | 10:30 AM | V11 | 48-Hour Sports Trip | `Perfect weekend blueprint: 2 stadiums, one route, zero chaos.` | Set E | `This is what a perfect sports weekend looks like.` | `48 hours. 2 stadiums. Best weekend in months.` |
|
||||
| 2026-02-14 | Sat | 7:30 PM | V12 | Date Night, But 300 Miles | `Our date nights are weird and elite.` | Set E | `Our date night is 2 games in 2 cities.` | `Couple’s therapy: road trip + live sports.` |
|
||||
| 2026-02-15 | Sun | 11:00 AM | V13 | Squad Road Run | `4 friends, 1 car, and finally no planning meltdown.` | Set E | `4 friends, 1 car, 3 games, no planning pain.` | `What happens when your friend group actually commits.` |
|
||||
| 2026-02-16 | Mon | 8:40 PM | V05 | Local Instant Trip | `Drop your city and I’ll reply with a weekend game run.` | Set A | `From Chicago this weekend? You can hit these 2 games.` | `Your city has a hidden 2-game weekend route.` |
|
||||
| 2026-02-17 | Tue | 8:40 PM | V10 | Polls / Group Voting | `This feature ended our 200-message argument instantly.` | Set C | `Your group can vote instead of arguing for days.` | `Group trip deadlocks are solved with one poll.` |
|
||||
| 2026-02-18 | Wed | 8:40 PM | V14 | Road to All Stadiums | `Completionist fans: what’s your count right now?` | Set D | `Trying to hit every stadium before 35.` | `This app turned my fandom into a mission.` |
|
||||
| 2026-02-19 | Thu | 8:40 PM | V17 | Spreadsheet vs SportsTime | `My old planning method was literally 9 tabs and pain.` | Set A | `How we used to plan trips 🤡` | `Before: spreadsheets. After: one app.` |
|
||||
| 2026-02-20 | Fri | 8:40 PM | V15 | Sunday Ritual (posted Friday teaser) | `Steal this weekend planning ritual before Sunday.` | Set E | `Bored Sunday? Plan your next sports weekend in 2 minutes.` | `My Sunday reset now includes locking one sports trip.` |
|
||||
| 2026-02-21 | Sat | 11:00 AM | V18 | "I’m Down" Friend Test | `Send this to the flaky "I’m down" friend.` | Set C | `“I’m down” friend when it’s time to pick dates…` | `If they’re really down, make them vote.` |
|
||||
| 2026-02-22 | Sun | 7:30 PM | V20 | Completionist Debate | `Controversial take: no tracker = no bucket list proof.` | Set D | `You can’t call it a stadium bucket list if you don’t track it.` | `No scoreboard, no flex. What’s your count?` |
|
||||
|
||||
## Posting Ops Checklist (Per Post)
|
||||
|
||||
- [ ] Publish at listed ET time.
|
||||
- [ ] Pin a first comment with CTA: `Search SportsTime on App Store`.
|
||||
- [ ] Reply to first 10 comments within 20 minutes.
|
||||
- [ ] If city is mentioned in comments, reply with `I’ll build your route next.`
|
||||
- [ ] Save best viewer phrases for next hook variants.
|
||||
|
||||
## Hook A/B Testing Rule
|
||||
|
||||
- First 30 minutes weak retention (<35% at 3s): re-upload next day with Hook B.
|
||||
- If Hook A drives comments but weak CTR, keep hook and change caption + first comment CTA.
|
||||
- Don’t change both hook and caption on same retry.
|
||||
|
||||
## Caption Formula (Reusable)
|
||||
|
||||
- `Pain/identity line` + `proof line` + `comment bait`.
|
||||
- Example: `Every group chat says “we should do this.” I built 3 real options in one app. Drop your city and I’ll do one.`
|
||||
|
||||
411
docs/reels.md
Normal file
411
docs/reels.md
Normal file
@@ -0,0 +1,411 @@
|
||||
# SportsTime Short-Form Video Concepts (20)
|
||||
|
||||
These are designed for TikTok / Reels / Shorts and mapped to install intent.
|
||||
|
||||
## Video IDs
|
||||
- V01 3-in-4 Challenge
|
||||
- V02 Fan Test
|
||||
- V03 "We Should Do This" Group Chat
|
||||
- V04 Stadium Count Flex
|
||||
- V05 Local Instant Trip
|
||||
- V06 Date Range Tutorial
|
||||
- V07 Follow Team Mode
|
||||
- V08 Route-First Planning
|
||||
- V09 Build Around Must-See Games
|
||||
- V10 Stop Group Trip Deadlocks (Polls)
|
||||
- V11 48-Hour Sports Trip Montage
|
||||
- V12 Date Night, But 300 Miles
|
||||
- V13 Squad Road Run
|
||||
- V14 Road to All Stadiums
|
||||
- V15 Sunday Planning Ritual
|
||||
- V16 The 4 Trip Friends
|
||||
- V17 Spreadsheet Era vs SportsTime Era
|
||||
- V18 "I’m Down" Friend Test
|
||||
- V19 Casual Fan Take (Away Games)
|
||||
- V20 Completionist Debate
|
||||
|
||||
## 1) V01 - 3-in-4 Challenge (Viral)
|
||||
1. Hook: "I planned a 3-stadium weekend in 14 seconds."
|
||||
2. Concept: Impossible-sounding trip planning proven live.
|
||||
3. Storyboard:
|
||||
- Scene 1: Face cam in car, urgent zoom.
|
||||
- Scene 2: App date range + league selection.
|
||||
- Scene 3: Route map auto-build.
|
||||
- Scene 4: Itinerary timeline + drive segments.
|
||||
- Scene 5: Save + share card preview.
|
||||
4. On-screen text:
|
||||
- "3 GAMES. 4 DAYS."
|
||||
- "No spreadsheet"
|
||||
- "Real schedules + real route"
|
||||
5. VO: "Picked dates, picked leagues, and it built the trip for me."
|
||||
6. Shot list: Face cam + screen recording + quick road b-roll.
|
||||
7. Length: 14s
|
||||
8. CTA: "Search SportsTime on App Store."
|
||||
9. Why it performs: utility + challenge + fan flex.
|
||||
|
||||
## 2) V02 - Fan Test (Viral)
|
||||
1. Hook: "If you’ve never done an away-game road trip… are you even a fan?"
|
||||
2. Concept: Identity challenge -> Follow Team demo.
|
||||
3. Storyboard:
|
||||
- Scene 1: Bold face cam hot take.
|
||||
- Scene 2: Follow Team mode selection.
|
||||
- Scene 3: Road games surfaced.
|
||||
- Scene 4: Route + itinerary shown.
|
||||
- Scene 5: "This is your weekend." reaction.
|
||||
4. On-screen text:
|
||||
- "HOT TAKE"
|
||||
- "Follow Team mode"
|
||||
- "Plan it in seconds"
|
||||
5. VO: "If you’re obsessed, do at least one away-game run this season."
|
||||
6. Shot list: Face cam + follow team screen recording.
|
||||
7. Length: 18s
|
||||
8. CTA: "Search SportsTime and run your team’s road stretch."
|
||||
9. Why it performs: debate comments + identity trigger.
|
||||
|
||||
## 3) V03 - "We Should Do This" Group Chat (Viral)
|
||||
1. Hook: Group chat screenshot + "NOBODY planned it."
|
||||
2. Concept: Group chat talk -> one person ships plan + poll.
|
||||
3. Storyboard:
|
||||
- Scene 1: Chaotic group text overlay.
|
||||
- Scene 2: Build trip by dates.
|
||||
- Scene 3: Routes generated.
|
||||
- Scene 4: Create poll + share code.
|
||||
- Scene 5: Votes arrive quickly.
|
||||
4. On-screen text:
|
||||
- "Every group chat ever"
|
||||
- "All talk"
|
||||
- "Poll it. Done."
|
||||
5. VO: "We talked about this for months. I built it and made everyone vote."
|
||||
6. Shot list: iMessage overlays + app screen recording.
|
||||
7. Length: 16s
|
||||
8. CTA: "If your group chat is all talk, search SportsTime."
|
||||
9. Why it performs: social pain + collaboration payoff.
|
||||
|
||||
## 4) V04 - Stadium Count Flex (Viral)
|
||||
1. Hook: "My friend: 4 stadiums. Me: 27."
|
||||
2. Concept: Completionist scoreboard flex.
|
||||
3. Storyboard:
|
||||
- Scene 1: Friend vs me split text.
|
||||
- Scene 2: Open stadium tracker.
|
||||
- Scene 3: Scroll visited list.
|
||||
- Scene 4: Next targets on map.
|
||||
- Scene 5: "catch me at 30".
|
||||
4. On-screen text:
|
||||
- "STADIUM FLEX"
|
||||
- "Visited: 27"
|
||||
- "Track your run"
|
||||
5. VO: "Once you track it, it gets addictive."
|
||||
6. Shot list: tracker screen recording + optional reaction cam.
|
||||
7. Length: 12s
|
||||
8. CTA: "Search SportsTime if you’re a completionist fan."
|
||||
9. Why it performs: status + collection psychology.
|
||||
|
||||
## 5) V05 - Local Instant Trip (Viral)
|
||||
1. Hook: "From Chicago this weekend? You can hit these 2 games."
|
||||
2. Concept: Hyper-local route reveal format.
|
||||
3. Storyboard:
|
||||
- Scene 1: City text card.
|
||||
- Scene 2: Enter start/end city.
|
||||
- Scene 3: Route with game pins.
|
||||
- Scene 4: Itinerary timing.
|
||||
- Scene 5: Save and share.
|
||||
4. On-screen text:
|
||||
- "Chicago -> 2 games"
|
||||
- "Drive-time checked"
|
||||
- "Build yours"
|
||||
5. VO: "If you’re in [city], here’s a legit two-game run."
|
||||
6. Shot list: map-heavy screen recording + optional city b-roll.
|
||||
7. Length: 13s
|
||||
8. CTA: "Comment your city. Search SportsTime."
|
||||
9. Why it performs: local relevance + comments.
|
||||
|
||||
## 6) V06 - Date Range Tutorial (Useful)
|
||||
1. Hook: "How to plan a sports road trip in 3 taps."
|
||||
2. Concept: Step-based quick tutorial.
|
||||
3. Storyboard:
|
||||
- Scene 1: Pick dates.
|
||||
- Scene 2: Pick leagues.
|
||||
- Scene 3: Generate routes.
|
||||
- Scene 4: Compare options.
|
||||
- Scene 5: Save trip.
|
||||
4. On-screen text: "Step 1", "Step 2", "Step 3", "Done".
|
||||
5. VO: "Dates, leagues, generate. That’s it."
|
||||
6. Shot list: pure screen recording, tap circles.
|
||||
7. Length: 15s
|
||||
8. CTA: "Search SportsTime and test your next free weekend."
|
||||
9. Why it performs: clarity lowers install friction.
|
||||
|
||||
## 7) V07 - Follow Team Mode (Useful)
|
||||
1. Hook: "Want to follow your team on the road? Do this."
|
||||
2. Concept: Team-first intent flow.
|
||||
3. Storyboard:
|
||||
- Scene 1: Select Follow Team.
|
||||
- Scene 2: Pick team + dates.
|
||||
- Scene 3: Road games list.
|
||||
- Scene 4: Route generated.
|
||||
- Scene 5: miles/days/games summary.
|
||||
4. On-screen text:
|
||||
- "Follow Team"
|
||||
- "Road games only"
|
||||
- "Route + schedule synced"
|
||||
5. VO: "Pick your team, pick dates, get a runnable trip."
|
||||
6. Shot list: app screen recording + team logo sticker.
|
||||
7. Length: 17s
|
||||
8. CTA: "Search SportsTime and chase the road schedule."
|
||||
9. Why it performs: direct fit for team-obsessed users.
|
||||
|
||||
## 8) V08 - Route-First Planning (Useful)
|
||||
1. Hook: "Driving Dallas -> Atlanta? Add games on the way."
|
||||
2. Concept: Existing travel plus sports optimization.
|
||||
3. Storyboard:
|
||||
- Scene 1: Enter start/end city.
|
||||
- Scene 2: Set stops and dates.
|
||||
- Scene 3: Game stops inserted.
|
||||
- Scene 4: Compare options A/B.
|
||||
- Scene 5: Save preferred route.
|
||||
4. On-screen text:
|
||||
- "Start + End"
|
||||
- "Add game stops"
|
||||
- "Compare routes"
|
||||
5. VO: "If you’re already driving, this adds games without chaos."
|
||||
6. Shot list: map route recording + optional steering wheel shot.
|
||||
7. Length: 18s
|
||||
8. CTA: "Search SportsTime before your next long drive."
|
||||
9. Why it performs: practical utility for road-trippers.
|
||||
|
||||
## 9) V09 - Must-See Games First (Useful)
|
||||
1. Hook: "Pick the games first. Let the route figure itself out."
|
||||
2. Concept: Matchup-driven planning.
|
||||
3. Storyboard:
|
||||
- Scene 1: Open By Games.
|
||||
- Scene 2: Tap 2 must-see games.
|
||||
- Scene 3: Date range adapts.
|
||||
- Scene 4: Route options load.
|
||||
- Scene 5: Final itinerary timeline.
|
||||
4. On-screen text:
|
||||
- "Must-see first"
|
||||
- "Route auto-built"
|
||||
- "No headache"
|
||||
5. VO: "I pick matchups. The app handles logistics."
|
||||
6. Shot list: game card taps + route output.
|
||||
7. Length: 16s
|
||||
8. CTA: "Search SportsTime if you plan around big games."
|
||||
9. Why it performs: emotionally-driven fan flow.
|
||||
|
||||
## 10) V10 - Stop Group Trip Deadlocks (Useful)
|
||||
1. Hook: "Your group can vote instead of arguing for days."
|
||||
2. Concept: Poll flow from route options.
|
||||
3. Storyboard:
|
||||
- Scene 1: Generate 3 options.
|
||||
- Scene 2: Create poll.
|
||||
- Scene 3: Share code to chat.
|
||||
- Scene 4: Votes come in.
|
||||
- Scene 5: Winner route selected.
|
||||
4. On-screen text:
|
||||
- "3 options"
|
||||
- "Create poll"
|
||||
- "Decision made"
|
||||
5. VO: "This replaced 200 group chat messages."
|
||||
6. Shot list: app poll + iMessage overlay.
|
||||
7. Length: 20s
|
||||
8. CTA: "Search SportsTime and settle your group chat."
|
||||
9. Why it performs: high social relatability + clear solve.
|
||||
|
||||
## 11) V11 - 48-Hour Sports Trip Montage (Lifestyle)
|
||||
1. Hook: "This is what a perfect sports weekend looks like."
|
||||
2. Concept: Mini-vlog tied to app plan.
|
||||
3. Storyboard:
|
||||
- Scene 1: Packing + itinerary open.
|
||||
- Scene 2: Highway sunrise + route overlay.
|
||||
- Scene 3: Stadium #1 clip.
|
||||
- Scene 4: Night drive + day 2 plan.
|
||||
- Scene 5: Stadium #2 + completed checklist.
|
||||
4. On-screen text:
|
||||
- "FRI -> SUN"
|
||||
- "2 stadiums"
|
||||
- "0 chaos"
|
||||
5. VO: "Friday we planned it, Sunday we checked two stadiums off."
|
||||
6. Shot list: vlog b-roll + app overlays.
|
||||
7. Length: 22s
|
||||
8. CTA: "Build your next weekend in SportsTime."
|
||||
9. Why it performs: aspiration + proof.
|
||||
|
||||
## 12) V12 - Date Night, But 300 Miles (Lifestyle)
|
||||
1. Hook: "Our date night is 2 games in 2 cities."
|
||||
2. Concept: Couple sports-trip format.
|
||||
3. Storyboard:
|
||||
- Scene 1: Couple selfie in car.
|
||||
- Scene 2: Itinerary sequence screen.
|
||||
- Scene 3: Stadium + food shot.
|
||||
- Scene 4: Hotel + next game card.
|
||||
- Scene 5: Tracker updates +2.
|
||||
4. On-screen text:
|
||||
- "Couple trip"
|
||||
- "Game + road trip"
|
||||
- "Itinerary handled"
|
||||
5. VO: "We just pick dates, SportsTime does the rest."
|
||||
6. Shot list: couple b-roll + app screen captures.
|
||||
7. Length: 19s
|
||||
8. CTA: "Search SportsTime for your next sports weekend."
|
||||
9. Why it performs: relationship + travel + fandom crossover.
|
||||
|
||||
## 13) V13 - Squad Road Run (Lifestyle)
|
||||
1. Hook: "4 friends, 1 car, 3 games, zero planning pain."
|
||||
2. Concept: Group road-trip energy.
|
||||
3. Storyboard:
|
||||
- Scene 1: Friends pile into car.
|
||||
- Scene 2: Route on phone mount.
|
||||
- Scene 3: In-car energy + map progress.
|
||||
- Scene 4: Stadium arrival.
|
||||
- Scene 5: Next step planned.
|
||||
4. On-screen text:
|
||||
- "No planner friend suffering"
|
||||
- "Route locked"
|
||||
- "Squad weekend"
|
||||
5. VO: "Usually one friend does all the work. Not this time."
|
||||
6. Shot list: handheld group footage + route screen insert.
|
||||
7. Length: 20s
|
||||
8. CTA: "Send this to your group, then search SportsTime."
|
||||
9. Why it performs: taggable friend dynamic.
|
||||
|
||||
## 14) V14 - Road to All Stadiums (Lifestyle)
|
||||
1. Hook: "Trying to hit every stadium before 35."
|
||||
2. Concept: Long-term progression narrative.
|
||||
3. Storyboard:
|
||||
- Scene 1: Tracker count (12/30 etc).
|
||||
- Scene 2: Archive clips from past visits.
|
||||
- Scene 3: Plan next route in app.
|
||||
- Scene 4: New visit added.
|
||||
- Scene 5: Updated count.
|
||||
4. On-screen text:
|
||||
- "Bucket list goal"
|
||||
- "12/30 -> 13/30"
|
||||
- "One by one"
|
||||
5. VO: "This turned random trips into an actual mission."
|
||||
6. Shot list: tracker before/after + archive b-roll.
|
||||
7. Length: 18s
|
||||
8. CTA: "Search SportsTime if you’re on a stadium mission."
|
||||
9. Why it performs: progress storytelling loop.
|
||||
|
||||
## 15) V15 - Sunday Planning Ritual (Lifestyle)
|
||||
1. Hook: "Bored Sunday? Plan your next sports weekend in 2 minutes."
|
||||
2. Concept: Planning as ritual content.
|
||||
3. Storyboard:
|
||||
- Scene 1: Coffee + couch reset shot.
|
||||
- Scene 2: Choose dates/leagues.
|
||||
- Scene 3: Route options generated.
|
||||
- Scene 4: Share itinerary.
|
||||
- Scene 5: Add to calendar.
|
||||
4. On-screen text:
|
||||
- "Sunday ritual"
|
||||
- "Pick dates"
|
||||
- "Weekend secured"
|
||||
5. VO: "I do this every Sunday now."
|
||||
6. Shot list: cozy lifestyle + over-shoulder app shots.
|
||||
7. Length: 15s
|
||||
8. CTA: "Search SportsTime and make this your Sunday ritual."
|
||||
9. Why it performs: repeatable weekly behavior.
|
||||
|
||||
## 16) V16 - The 4 Trip Friends (Funny)
|
||||
1. Hook: "Every sports trip has these 4 people."
|
||||
2. Concept: One-person roleplay + poll solution.
|
||||
3. Storyboard:
|
||||
- Scene 1: The hype friend.
|
||||
- Scene 2: The picky friend.
|
||||
- Scene 3: The loyalist.
|
||||
- Scene 4: The confused friend.
|
||||
- Scene 5: Poll decides route.
|
||||
4. On-screen text:
|
||||
- "The hype one"
|
||||
- "The picky one"
|
||||
- "The confused one"
|
||||
- "Poll > arguing"
|
||||
5. VO: "Instead of debating for days, we voted and moved."
|
||||
6. Shot list: quick costume swaps + app poll screen.
|
||||
7. Length: 21s
|
||||
8. CTA: "Tag your group roles. Search SportsTime."
|
||||
9. Why it performs: humor + tagging behavior.
|
||||
|
||||
## 17) V17 - Spreadsheet Era vs SportsTime Era (Funny)
|
||||
1. Hook: "How we used to plan trips 🤡"
|
||||
2. Concept: before/after pain-to-relief format.
|
||||
3. Storyboard:
|
||||
- Scene 1: 9 tabs and notes chaos.
|
||||
- Scene 2: frustrated face.
|
||||
- Scene 3: hard cut to SportsTime flow.
|
||||
- Scene 4: instant route and calm reaction.
|
||||
4. On-screen text:
|
||||
- "Before: chaos"
|
||||
- "After: 1 app"
|
||||
- "Same result"
|
||||
5. VO: "I used to spend 2 hours; now it’s 2 minutes."
|
||||
6. Shot list: laptop chaos + app screen capture.
|
||||
7. Length: 13s
|
||||
8. CTA: "Retire the spreadsheet. Search SportsTime."
|
||||
9. Why it performs: pain-relief contrast.
|
||||
|
||||
## 18) V18 - "I’m Down" Friend Test (Funny)
|
||||
1. Hook: "‘I’m down’ friend when it’s time to pick dates…"
|
||||
2. Concept: flaky friend callout + poll accountability.
|
||||
3. Storyboard:
|
||||
- Scene 1: "I’m down" text.
|
||||
- Scene 2: excuse texts.
|
||||
- Scene 3: poll creation in app.
|
||||
- Scene 4: vote deadline.
|
||||
- Scene 5: winner route.
|
||||
4. On-screen text:
|
||||
- "I’m down starter pack"
|
||||
- "No decisions"
|
||||
- "Poll > excuses"
|
||||
5. VO: "If you’re really down, vote."
|
||||
6. Shot list: message overlays + poll screen recording.
|
||||
7. Length: 14s
|
||||
8. CTA: "Send this to your flaky friend. Search SportsTime."
|
||||
9. Why it performs: relatable social friction + taggable joke.
|
||||
|
||||
## 19) V19 - Casual Fan Take (Bold)
|
||||
1. Hook: "Hot take: home-games-only fans are missing half the fun."
|
||||
2. Concept: away-game opinion + follow-team proof.
|
||||
3. Storyboard:
|
||||
- Scene 1: face cam hot take.
|
||||
- Scene 2: away-game benefits list.
|
||||
- Scene 3: follow-team route build.
|
||||
- Scene 4: itinerary with 2 away games.
|
||||
- Scene 5: "debate me" end card.
|
||||
4. On-screen text:
|
||||
- "HOT TAKE"
|
||||
- "Away games > comfort"
|
||||
- "Debate below"
|
||||
5. VO: "If you’re serious, do one road stretch this season."
|
||||
6. Shot list: face cam + follow-team app demo.
|
||||
7. Length: 17s
|
||||
8. CTA: "Search SportsTime for your first away-game run."
|
||||
9. Why it performs: controversy + identity.
|
||||
|
||||
## 20) V20 - Completionist Debate (Bold)
|
||||
1. Hook: "You can’t call it a stadium bucket list if you don’t track it."
|
||||
2. Concept: status challenge using tracker proof.
|
||||
3. Storyboard:
|
||||
- Scene 1: "prove it" face cam.
|
||||
- Scene 2: tracker milestones.
|
||||
- Scene 3: next targets map.
|
||||
- Scene 4: "drop your count" challenge.
|
||||
- Scene 5: clean progress UI outro.
|
||||
4. On-screen text:
|
||||
- "No tracking = no scoreboard"
|
||||
- "Drop your number"
|
||||
5. VO: "Everyone says they’re doing the bucket list. What’s your count?"
|
||||
6. Shot list: face cam + tracker screen recording.
|
||||
7. Length: 12s
|
||||
8. CTA: "Search SportsTime and start your real count."
|
||||
9. Why it performs: competitive status challenge.
|
||||
|
||||
## Batch Production Plan (One Week)
|
||||
- Day 1: Capture all app screen recordings.
|
||||
- Day 2: Film all face-cam hooks in one session.
|
||||
- Day 3: Capture road/stadium/lifestyle b-roll.
|
||||
- Day 4: Edit and export first 10 videos.
|
||||
- Day 5: Edit and export final 10 videos.
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user