diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f49bee..bceecd3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - Template sync: copier update v0.9.0 → v0.10.0 — `export_serving.py` module, `@padelnomics_glob()` macro, `setup_server.sh`, supervisor export_serving step +### Fixed +- **Eurostat JSON-stat parsing** — API returns 4-7 dimension sparse dictionaries (583K values) + that caused DuckDB OOM; extractor now pre-processes JSON-stat into flat records with + configurable dimension filters per dataset +- **Playtomic venue lat/lon** — staging model used wrong JSON path (`address.coordinate_lat` + vs actual `address.coordinate.lat`) +- **dim_cities CTE** — unused `eurostat_labels` CTE caused `city_slug_raw` column not found error + ### Removed - `extract/.../execute.py` — replaced by per-source modules - `models/raw/` directory — raw layer eliminated; staging reads landing files directly diff --git a/PROJECT.md b/PROJECT.md new file mode 100644 index 0000000..93adf10 --- /dev/null +++ b/PROJECT.md @@ -0,0 +1,227 @@ +# Padelnomics — Project Tracker + +> Move tasks across columns as you work. Add new tasks at the top of the relevant column. +> Last updated: 2026-02-22. + +--- + +## Done ✅ + +> Confirmed by full code audit (2026-02-22). More is built than the original strategy docs assumed. + +### Infrastructure & Deploy +- [x] UV workspace monorepo structure (web/, transform/, extract/ members) +- [x] Docker + docker-compose production deploy +- [x] Litestream R2 backup (1-year retention, auto-restore on startup) +- [x] CI pipeline (GitLab, env vars, health check gated deploys) +- [x] Pre-migration DB backup + auto-restore on failed deploy +- [x] Nginx router config + +### Auth & Users +- [x] Magic link auth (signup + login) +- [x] User accounts + sessions +- [x] RBAC (admin role, supplier role) +- [x] User dashboard (stats, settings, account deletion) +- [x] Admin impersonation (login as any user, return to admin) + +### Planner / Calculator +- [x] Full 60-var financial planner — **fully open, no login required** +- [x] HTMX refactor (server-rendered tabs, ~200 line JS) +- [x] Planner i18n (EN + DE, all strings translated) +- [x] Currency formatting by country (€ / £ / $) +- [x] Market data endpoint (`/planner/api/market-data`) — city-specific defaults from DuckDB +- [x] Scenario save/load (requires login) +- [x] "Get Supplier Quotes" button linking to quote wizard + +### Leads / Quote Flow +- [x] 9-step quote wizard — no login required, heat scoring, email verification +- [x] Lead heat scoring (hot 35 credits / warm 20 / cool 8) +- [x] Guest email verification (magic link sent before lead activates) +- [x] Admin lead management (list, detail, status transitions, manual forwarding) +- [x] Supplier credit-based lead unlock (atomic credit spend + email notification to both sides) +- [x] i18n for full quote flow + +### Supplier Directory & Dashboard +- [x] Directory — fully public, search/FTS/filter/pagination/detail/enquiry +- [x] Tier-based ordering (sticky > pro > growth > basic > free) +- [x] Boost badges on directory cards +- [x] Supplier signup wizard (4-step, plan selection, Paddle checkout, waitlist-gatable) +- [x] Supplier dashboard (4 tabs: overview, leads feed, listing editor, boosts) +- [x] Listing editor with live HTMX preview, logo/cover upload +- [x] Boost purchase from dashboard (Paddle checkout) +- [x] Credit pack purchase from dashboard +- [x] i18n for directory + supplier pages + +### Billing & Credits +- [x] Paddle billing (SDK, 18 products, webhooks, checkout, subscription lifecycle) +- [x] Credit system (balance, ledger, atomic unlock, monthly refill on 1st of month) +- [x] Business Plan PDF purchase flow (Paddle one-time → webhook → async generation) +- [x] Boost purchases (logo, highlight, verified, card color, sticky week/month) +- [x] Credit pack purchases (25/50/100/250) +- [x] Supplier subscription tiers (Basic free / Growth €149 / Pro €399, monthly + annual) +- [x] `WAITLIST_MODE` toggle — gates supplier signup + export on GET (default: false) +- [x] Resend email integration (transactional: magic link, welcome, quote verify, lead forward, enquiry) +- [x] Auto-create Resend audiences per blueprint (waitlist, planner nurture) + +### Business Plan PDF Export +- [x] Full WeasyPrint PDF pipeline (not just a CTA — actually generates PDFs) +- [x] Paddle checkout for PDF purchase +- [x] Async generation via worker queue, email on completion +- [x] PDF content: executive summary, CAPEX, OPEX, 5-year P&L, financing, IRR/MOIC/payback/DSCR +- [x] EN + DE PDF localization + +### CMS / Programmatic SEO +- [x] Article template engine (Jinja2 Markdown + `[scenario:slug:section]` markers) +- [x] Seed script (`seed_content.py`) — 40 cities × EN + DE = 80 articles +- [x] City coverage: DE (8), US (6), UK (4), ES (5), FR (3), IT (2), NL, AT, CH, SE, PT (2), BE, AE, AU (2), IE +- [x] Per-city financial model overrides (rates, rent, utilities, permits, court config) +- [x] Admin CMS (template CRUD, data row management, bulk CSV upload, bulk generate, publish toggle, rebuild) +- [x] Markets hub (`//markets`) — article listing with FTS + country/region filters +- [x] DuckDB refresh script (`refresh_from_daas.py`) + +### Data Pipeline (DaaS) +- [x] Overpass API extractor (OSM padel courts) +- [x] Eurostat extractor (city demographics) +- [x] Playtomic unauthenticated tenant search extractor +- [x] SQLMesh 3-layer DuckDB pipeline (staging → foundation → serving) +- [x] `dim_venues` (OSM + Playtomic deduped), `dim_cities` (Eurostat population) +- [x] `city_market_profile` (market score OBT), `planner_defaults` (per-city calculator pre-fill) +- [x] DuckDB analytics reader in app lifecycle + +### i18n +- [x] Full i18n across entire app (EN + DE) +- [x] URL prefixes (`/en/`, `/de/`) on all public blueprints +- [x] Language detection (cookie + Accept-Language header) +- [x] `tformat` Jinja2 filter for parameterized translations +- [x] German copy: informal "Du/Dein" throughout +- [x] hreflang tags + `x-default` + +### Admin Panel +- [x] Comprehensive admin: users, tasks, leads, suppliers, CMS templates, scenarios, articles, feedback +- [x] Task queue management (list, retry, delete) +- [x] Lead funnel stats on admin dashboard + +### SEO & Legal +- [x] Sitemap (both language variants, `` on all entries) +- [x] robots.txt +- [x] JSON-LD schemas (Organization, FAQPage, Article) +- [x] OG tags + canonical on all pages +- [x] German legal pages (Impressum, Datenschutz, AGB — DSGVO compliant) +- [x] English legal pages (GDPR, proper controller identity) +- [x] Cookie consent banner (functional/A/B categories, 1-year cookie) +- [x] Virtual office address on imprint + +### Other +- [x] A/B testing framework (`@ab_test` decorator + Umami `data-tag`) +- [x] Mobile nav (hamburger < 900px, full overlay panel) +- [x] Padel racket SVG logo/favicon +- [x] Feedback widget (HTMX POST, rate-limited) +- [x] Interactive ROI calculator widget on landing page (JS sliders, no server call) + +--- + +## In Progress 🔄 + +_Move here when you start working on it._ + +--- + +## Next Up 📋 + +> Two independent tracks — pick from either at any time, no sequencing between them. +> Tech tasks can be shipped in hours. Business tasks depend on other people and run in parallel. + +### Go-Live (config, not code) + +| 🛠 Tech | 📣 Business | +|--------|------------| +| Paddle: set production env vars + run `setup_paddle` against prod | First 3–5 supplier outreach emails | +| Publish SEO articles: run `seed_content --generate` on prod (or trigger from admin) | First LinkedIn post | +| Wipe 5 test suppliers (`example.com` entries from `seed_dev_data.py`) | | +| Verify Resend production API key — test magic link email | | +| Submit sitemap to Google Search Console | Set up Google Search Console + Bing Webmaster Tools | +| Verify Litestream R2 backup running on prod | | + +### Week 1–2 — First Revenue + +| 🛠 Tech | 📣 Business | +|--------|------------| +| Email nurture sequence (3-email drip for planner users who save scenarios — Resend infra ready, just need content + scheduling) | 30–50 supplier outreach emails | +| | 2–3 founding member deals (free leads for 3 months) | +| | "State of Padel Q1 2026" report written + published | +| | First 3 priority SEO articles (see `docs/MARKETING.md` for titles) | +| | LinkedIn: 5 posts published | + +### Week 2–4 — Market Map + +| 🛠 Tech | 📣 Business | +|--------|------------| +| Market map UI (geographic visualization over DuckDB city data — no map exists yet) | Follow up on founding member outreach | +| | More SEO articles | + +### Month 2 — Market Intelligence + +| 🛠 Tech | 📣 Business | +|--------|------------| +| Market Intelligence Dashboard (city analytics, occupancy estimates, demand map) | Explorer tier (€79/mo) promoted to email list | +| Explorer tier paywall (€79/mo subscription gate) | Email drip running | + +--- + +## Backlog 🗂️ + +> Validated ideas not yet scheduled. Pick up when capacity allows. + +### Product +- [ ] Market Intelligence Pro tier (€149/mo — hall-level data, competitor tracking, historical) +- [ ] Location Scorer (mechanical turk first: form → manual PDF delivery → automate if demand) +- [ ] Operational analytics for running venues (€49–99/mo, Phase 3 product) +- [ ] Business Plan Pro subscription (€39/mo, saved scenarios + auto-updates) +- [ ] Site Selection Reports (€499–999 high-ticket, productized) +- [ ] "State of Padel" quarterly report product (€299–499, gated) +- [ ] Enterprise / API tier (custom pricing) +- [ ] Padel Hall Accelerator (€999 — report + call + supplier intros) + +### Data & Intelligence +- [ ] Multi-source data aggregation (add booking platforms beyond Playtomic) +- [ ] Google Maps signals (reviews, ratings) +- [ ] Weather + demographic overlays +- [ ] Voluntary data sharing from operating venues (benchmarking network effects) +- [ ] ML/forecasting layer (demand forecasting, pricing optimization) +- [ ] Scraping risk mitigation: rotate sources, voluntary sharing fallback + +### Bugs / Tech Debt +- [ ] Resend audiences: two segments both using "waitlist-auth" — review audience/segment model and fix duplication +- [ ] Transactional emails not all translated to German — some emails still sent in English regardless of user language +- [ ] Resend inbound emails enabled — plan how to integrate (webhook routing, reply handling, support inbox?) +- [ ] Extraction: Playtomic API only returns ~20 venues per bbox — investigate smaller/targeted bboxes + +### Marketing & Content +- [ ] LinkedIn presence (ongoing — founder posts, thought leadership) +- [ ] "Wirecutter for padel" affiliate site (racket reviews, gear guides) +- [ ] "The Padel Business Report" newsletter +- [ ] Equipment supplier affiliate partnerships (€500–1,000/lead or 5%) +- [ ] Padel podcasts (guest appearances) +- [ ] Sports business media outreach +- [ ] National padel associations (DTB, LTA — co-distribution) +- [ ] Franchise partnerships (market data / leads) +- [ ] Lender distribution (banks recommending Padelnomics plans) + +### Geographic Expansion +- [ ] Austria + Switzerland (language done, cities seeded — just outreach + supplier onboarding) +- [ ] France (cities seeded in CMS) +- [ ] Italy, Netherlands, Sweden (cities seeded) +- [ ] UAE / Middle East (cities seeded) +- [ ] Pan-European supplier directory + +--- + +## Decisions Log + +| Date | Decision | Rationale | +|------|----------|-----------| +| 2026-02-22 | Two-sided marketplace framing (Side A = aspiring owners, Side B = suppliers) | Suppliers are the main revenue engine; calling them "secondary" was wrong | +| 2026-02-22 | Tennis/sports club owner as beachhead | Faster decision cycle, talk to each other, ~500–1,000 targets, small enough to dominate | +| 2026-02-22 | Credit system over pay-per-lead blast | Suppliers self-select → higher quality perception; scales without manual intervention | +| 2026-02-22 | No soft email gate on planner | Planner already captures emails at natural points (scenario save → login, quote wizard step 9). Gate would add friction without meaningful list value. Revisit if data shows a gap. | +| 2026-02-22 | Wipe test suppliers before launch | 5 `example.com` entries from seed_dev_data.py — empty directory with "Be the first" CTA is better than obviously fake data | diff --git a/docs/MARKETING.md b/docs/MARKETING.md new file mode 100644 index 0000000..f5c2d74 --- /dev/null +++ b/docs/MARKETING.md @@ -0,0 +1,533 @@ +# Padelnomics — Marketing Master Doc + +> Living doc. Update state column as things progress. Last updated: 2026-02-22. + +--- + +## Positioning & Messaging + +**One-liner:** "The only platform that helps you plan, fund, and build a padel facility with real market data — not guesswork." + +**DaaS framing (aspirational):** "Bloomberg for padel hall operators." We sell unfair advantages to people making six-figure facility investment decisions — using data nobody else is aggregating. + +**30-second pitch:** +> We're building the data intelligence platform for the padel industry. We start with a free court planning tool that captures every aspiring padel entrepreneur via SEO. Then we layer real market intelligence on top — occupancy data, pricing, demand gaps, competitive analysis — scraped and aggregated from booking platforms. Operators making €200K decisions pay €79–149/month to de-risk their investment. As the market grows from 25K to 50K+ facilities, we become the industry-standard data backbone. Think "Kpler for padel" — bootstrapped, capital-efficient, moat that compounds daily. + +**Core insight:** The job is never "I need a calculator." It's "I need to feel confident committing €200K+." Confidence is the product. Calculator is the vehicle. + +### Why This Works (DaaS Thesis) + +| Check | Answer | +|-------|--------| +| High-stakes decisions? | ✅ €100K–€500K facility investments | +| Information asymmetry? | ✅ No centralized market data exists | +| Willingness to pay? | ✅ B2B operators, not casual players | +| Unique data capability? | ✅ Playtomic scraping + multi-source aggregation | +| 500+ potential customers? | ✅ ~25,000 padel facilities globally, growing to 50K+ | +| Low commoditization risk? | ✅ Historical data depth = compounding moat | + +**Analogy:** Kpler started by tracking LNG cargo shipments in an opaque commodity market. We're doing the same for padel: tracking "demand shipments" (bookings) across an opaque facility market. + +### Competitive Positioning + +| vs. | Their position | Our position | +|-----|---------------|--------------| +| Playtomic | OpenTable for padel — booking marketplace for players | Restaurant P&L analytics suite — optimizing for operators. Complementary, we sit on top of their data. | +| Padelfinder | Directory, no planning tools | Intelligence layer + planning + directory | +| Sportstättenrechner | Generic sports calculators, not padel-specific | Padel-specific, automated, with data moat | +| Generic BI (Tableau, Power BI) | Operator finds, cleans, models own data | Padel-specific insights out of the box. No setup, no data engineering. Just answers. | +| Nothing (current state) | Excel, gut feel, word of mouth. The real competitor. | 10× faster with 10× better data. | + +--- + +## Platform Model (Two-Sided) + +Padelnomics is a two-sided marketplace. Both sides must be acquired and retained. + +``` +Side A — Aspiring Owners Side B — Suppliers / Builders +(Lead Supply) (Lead Demand / Revenue Engine) + +Free planner → email capture →→→ Lead marketplace → credits → MRR + ↓ ↑ +SEO traffic drives acquisition Outreach + founding deals + ↓ ↑ +Small direct revenue Main revenue: subscriptions + credits + upsells +(PDF export, market intel) +``` + +**Chicken-and-egg cold start:** Need aspiring owners using the planner to have leads. Need leads to sell supplier subscriptions. Need supplier directory for aspiring owners to trust the platform. Solve by: (1) launching calculator publicly first to build Side A, (2) simultaneously signing 2–3 founding suppliers at steep discount for social proof. + +--- + +## Audiences + +### Side A — Aspiring Owners (Lead Supply) + +> First-time facility investor, €200K–2M decision. Primarily DACH. + +**Job:** "Validate the opportunity with real data and build a credible financial case, so I can make a confident go/no-go decision and secure funding." + +**Struggling moments (= acquisition triggers):** +1. "I've been talking about this for months and I need to decide" +2. "The bank asked for a business plan and I have no idea what to put in it" +3. "I found conflicting information and I don't know what to trust" +4. "A competitor just opened nearby — is there still room?" +5. "My partner/spouse is skeptical and I need proof" + +**Emotional job:** Feel smart and diligent, not like someone who gambled on hype. +**Social job:** Look professional and thorough to banks / investors / spouse. ← underserved, pricing lever. + +**Acquired via:** SEO, free calculator, content marketing. +**Direct revenue:** Business plan PDF (€99), market intel subscriptions (future). + +#### Beachhead Sub-segment — Tennis/Sports Club Owner (Germany) + +> Seeing padel demand from members, competitors adding courts. ~500–1,000 targets. Club board vote, not investor pitch. + +**Why start here:** Small enough to dominate, talk to each other (DTB/federations), fastest decision cycle. + +**Whole product needed:** Club-specific planner defaults, business plan PDF for board vote, 2–3 builder quotes, financing options. + +**What NOT to build for this segment:** Operator dashboards, M&A tools, franchise features, AI advisor. + +### Side B — Suppliers / Builders (Lead Demand, Main Revenue) + +> Growing a construction/equipment business, wants qualified prospects not cold leads. + +**Job:** "Get a reliable stream of serious prospects so I can focus on closing, not chasing." + +**Struggling moments:** +1. "We quote 20 projects but only close 3. Most leads aren't serious" +2. "We have capacity for 5 more projects this quarter but pipeline is thin" +3. "A new competitor opened and they're undercutting price" + +**Key insight:** Padelnomics leads come with full financial models attached — a builder can write a targeted proposal in 1 hour vs. 3 qualification calls. + +**Acquired via:** Manual outreach, founding member deals, word-of-mouth. +**Revenue:** Directory subscriptions, lead credits, upsell stack. + +### Future Segments (Phase 3+) + +| Segment | Pain | Product | Price sensitivity | +|---------|------|---------|-------------------| +| Operating venue owner | "Am I performing well vs. market?" | Operational analytics (€49–99/mo) | Medium — easy ROI | +| Padel franchise | "Where should we expand next?" | Enterprise intelligence + API | Very low | +| Real estate developer | "Is padel viable for this space?" | Site selection reports (€499–999) | Very low | +| Equipment supplier | "Who's about to build a hall?" | Lead gen / affiliate partnerships | Pay per lead | +| Investor | "What does the padel market look like?" | Industry reports (€299–499) | Very low | + +--- + +## Demand Phases (Aspiring Owner Buying Timeline) + +| Phase | Timeframe | State of Mind | What Padelnomics Needs | +|-------|-----------|---------------|------------------------| +| Passive | 3–12 mo | "Padel is booming, I wonder about investing" | Thought leadership, market reports, social content | +| Active | 2–8 wk | "What does it cost? What's the ROI?" | Free calculator, SEO articles, city-specific pages | +| Deciding | 1–4 wk | "I need a tool, a builder, and a bank" | Full planner, PDF export, builder quotes, financing | +| Consuming | Ongoing | "Am I on track? Do I need to adjust?" | Benchmarks, competitive radar, performance tracking | + +> **Current gap:** Padelnomics only serves Active + Deciding. Passive phase = no presence yet. + +--- + +## Product Vision & Funnel + +``` +FREE: Padel Court Planner (ROI Calculator) +─ Distribution engine: SEO traffic, email capture, credibility +─ Also generates leads for Side B + ↓ +PAID: Market Intelligence Dashboard (€79–149/mo) +─ Core monetization from aspiring owners (Phase 2) +─ Occupancy data, pricing, demand gaps, city analytics + ↓ +EXPANSION: Operational Analytics (€49–99/mo) +─ Recurring revenue from operating venue owners (Phase 3) +─ Benchmarking, optimization, competitor alerts + ↓ +HIGH-TICKET: Consulting + Reports (€499–999) +─ Premium upsell: site selection reports, industry reports (Phase 4+) +``` + +### Phase 2 — Market Intelligence Dashboard (Month 1–3) + +**What we scrape from Playtomic:** +- Booking slot availability → reverse-engineer occupancy rates per hall +- Listed pricing → map pricing strategies (peak vs. off-peak) +- New hall listings → track market expansion +- Halls disappearing / low bookings → detect failure signals +- Court counts per facility → supply density by area + +**Dashboard features:** + +| Feature | Value | +|---------|-------| +| Market Map | Interactive map of all halls with occupancy heat overlay | +| City Analytics | Avg occupancy, pricing, court density, growth trends per city | +| Site Selection Tool | "Enter a location → see demand, competition, revenue potential" | +| Competitor Spy | Track any hall's occupancy and pricing over time | +| Demand Gaps | Identify underserved areas (high population, low court density) | +| Trend Reports | Which cities are growing fastest, weekly/monthly | + +**Tiers:** Explorer (€79/mo) · Pro (€149/mo) · Enterprise (custom, multi-country + API) + +**Killer pitch:** *"You're about to invest €200K. For €149/month, you'll know that the 4 halls near your target location run at 73% weekday occupancy and 94% weekends, charge €40/hour peak, and that there's an underserved suburb 15km north with zero courts and 200K residents."* + +### Phase 3 — Operational Analytics (Month 3–6) + +Every Phase 1 planner user who actually opens a hall becomes a Phase 3 customer. Built-in pipeline. + +- Benchmark your hall vs. market averages (occupancy, pricing, revenue/court) +- Pricing optimization — see competitor pricing, get dynamic suggestions +- Demand forecasting — historical patterns + weather + local events +- Competitor alerts — new hall openings, pricing changes nearby +- Utilization tracking — connect booking system or manual input + +--- + +## Data Moat Strategy + +The moat compounds over time — this is critical to long-term defensibility. + +1. **Historical depth** — Every day of scraping = data competitors can't replicate. In 12 months we'll have a year of occupancy trends nobody else has. +2. **Multi-source aggregation** — Start with Playtomic, add other booking platforms, Google Maps reviews, social signals, weather, demographics, real estate pricing. +3. **Network effects** — As operating customers share their own data for benchmarking, the dataset grows. More data → better insights → more customers → more data. +4. **Processing layer** — Raw bookings → occupancy models → demand forecasting → site selection algorithms. The ML/analytics layer is hard to replicate. + +**Scraping risk mitigation:** Scrape respectfully (1×/day), diversify data sources early, build toward voluntary data sharing from hall operators. + +--- + +## Channel Strategy + +### Owned (build now) + +| Channel | Approach | State | +|---------|----------|-------| +| **Email list** | Gate planner results behind email; build from day 1 | [ ] Not live | +| **SEO blog** | Programmatic city articles + editorial content | [~] In progress | +| **Public free calculator** | No-signup, shareable URL; primary traffic driver | [ ] Not live | + +### Rented (primary B2B) + +| Channel | Approach | State | +|---------|----------|-------| +| **LinkedIn** | Founder posts, thought leadership, padel community | [ ] Not started | +| **Reddit** | r/padel, r/entrepreneur — seeding calculator, articles | [ ] Not started | +| **Facebook Groups** | Padel business groups, sports entrepreneur communities | [ ] Not started | + +### Borrowed (Month 2+) + +| Channel | Approach | State | +|---------|----------|-------| +| Padel podcasts | Guest appearances, case studies | [ ] Planned | +| Sports business media | Press outreach ("padel boom + intelligence gap" angle) | [ ] Planned | +| National padel associations | DTB, LTA, etc. — co-distribution potential | [ ] Planned | +| Lenders as distribution | Banks recommend Padelnomics plans → massive trust signal | [ ] Future | + +### Skip (explicitly excluded at launch) + +- Product Hunt +- Paid ads +- Twitter/X +- Webinars + +--- + +## SEO & Content + +### Topic Cluster Structure + +``` +Hub: /padel-business/ + ├── costs, market, location, business plan +Hub: /rechner/ (or /calculator/) + ├── cost, ROI, financing calculators +Hub: /markt/ (or /market/) + ├── /markt/berlin, /markt/muenchen, etc. +``` + +### Priority Articles (write in this order) + +| # | Title | Phase Served | State | +|---|-------|--------------|-------| +| 1 | "Is Padel Still a Good Investment in 2026? The Data Says..." | Passive | [ ] | +| 2 | "How Much Does It Cost to Open a Padel Hall in Germany?" | Active | [ ] | +| 3 | "What Banks Want to See in a Padel Business Plan" | Deciding | [ ] | +| 4 | "State of Padel Q1 2026" (market report, email-gated) | Passive + PR | [ ] | +| 5+ | Programmatic city pages (Berlin, Munich, Hamburg...) | Active | [ ] | + +### SEO Targets + +- "padel court business plan" / "padel halle business plan" +- "padel hall ROI calculator" / "padel rechner" +- "how to open padel hall" / "padel halle eröffnen" +- "padel court cost Germany" / "padel halle kosten" +- City variants: "padel [city]" patterns + +### Programmatic SEO + +City articles via CMS template engine (see `docs/CMS.md`). Template → CSV → generate → serve. `[scenario:slug:section]` markers embed planner output. Stagger via `articles_per_day`. + +--- + +## Product-Led Growth + +### Free Tool Flywheel (Finanzfluss / Sportstättenrechner model) + +Proven by Sportstättenrechner: 18,400 unique users/month, 492 leads/month forwarded to paying suppliers, revenue ~€500K–750K/yr. We replicate padel-specific + add automated self-serve marketplace layer. + +**Free tools to build (traffic generators):** + +| Tool | URL | State | +|------|-----|-------| +| Padel ROI Calculator | /rechner or /calculator | [~] Exists, gated | +| Padel Market Map | /map or /courts | [ ] Planned | +| Location Scorer | /score | [ ] Future | +| Market Report PDF | /reports/q1-2026 | [ ] Planned | +| Unit Economics Benchmarks | /benchmarks | [ ] Future | + +**Critical first step:** Ungate the calculator — no signup required, shareable URL, email gate after results. #1 RICE item (score 1,350). + +### Email Capture Gate + +After calculator results: prompt for email to save/share scenario. Every planner user = email lead. + +--- + +## Supplier Acquisition (Side B) + +### Founding Member Deals (launch goal) + +- Steep discount in exchange for testimonials / social proof +- Target: 2–3 deals in first 30 days +- Manual outreach, 30–50 contacts per market +- Script: "Free leads for 3 months, just respond within 48hr. After month 1, would you pay €199/mo for continued access?" (Infiltrator pretotype) + +### Directory Tiers + +| Tier | Price | Includes | State | +|------|-------|----------|-------| +| Basic | Free | Listing, no leads | [ ] | +| Growth | €149/mo | Listing + 30 credits/mo + basic analytics | [ ] | +| Pro | €399/mo | Listing + 100 credits/mo + full analytics | [ ] | + +### Upsell Stack (RemoteOK playbook) + +Pre-select recommended bundle (logo + highlight + verified + lead feed = ~€316/mo). Suppliers actively uncheck what they don't want. When Pieter Levels added upsells on RemoteOK, avg price jumped from $310 → $484 overnight. + +| Upsell | Price | Claimed lift | State | +|--------|-------|--------------|-------| +| Company logo | €29/mo | +40% clicks | [ ] | +| Highlight listing | €39/mo | +65% views | [ ] | +| Verified badge | €49/mo | +55% inquiries | [ ] | +| Custom brand color | €59/mo | +80% recognition | [ ] | +| Lead feed access | €199/mo | Direct contact | [ ] | +| Newsletter feature | €99/mo | +120 impressions/wk | [ ] | +| Sticky top 1 week | €79 | 2× views | [ ] | +| Sticky top 1 month | €199 | 6× views | [ ] | + +### Lead Marketplace (credit system) + +Inspired by Bark.com. Planner users' specs become anonymized briefs in a feed: +> "Indoor padel center, 6 courts, Lower Saxony, €400K–600K budget, Q3 2026" + +Suppliers self-select which leads to unlock with credits. Lead cost scales by project value. + +**Heat scoring:** + +| Heat | Credits | Signals | +|------|---------|---------| +| Hot | 30–40 | Location secured + financing + <6mo timeline + solo decision | +| Warm | 15–25 | Shortlisted + seeking financing + 6–12mo + partners | +| Cool | 5–10 | Still searching + not started + 12+mo + committee | + +**Credit packs:** + +| Pack | Price | Per credit | +|------|-------|-----------| +| 25 credits | €99 | €3.96 | +| 50 credits | €179 | €3.58 | +| 100 credits | €329 | €3.29 | +| 250 credits | €749 | €3.00 | + +--- + +## Revenue Streams + +### Core (now) + +| Stream | Model | State | +|--------|-------|-------| +| Lead credits (Side B) | Suppliers buy credits to unlock leads | [ ] Not live | +| Directory subscriptions (Side B) | Growth €149/mo, Pro €399/mo | [ ] Not live | +| Directory upsells (Side B) | Logo, highlight, verified, sticky | [ ] Not live | +| Business Plan PDF (Side A) | €99 one-time | [ ] CTA exists, no product | + +### Near-term (Phase 2–3) + +| Stream | Model | State | +|--------|-------|-------| +| Business Plan Pro (Side A) | €39/mo subscription | [ ] Planned | +| Market Intelligence Explorer | €79/mo | [ ] Phase 2 | +| Market Intelligence Pro | €149/mo | [ ] Phase 2 | +| Operational Analytics | €49–99/mo (operating venues) | [ ] Phase 3 | + +### High-ticket (Phase 4+) + +| Stream | Model | State | +|--------|-------|-------| +| Site Selection Reports | €499–999 one-time | [ ] Future | +| Padel Hall Accelerator | €999 (report + call + introductions) | [ ] Future | +| Industry Reports | €299–499 quarterly | [ ] Future | +| Enterprise / API | Custom pricing | [ ] Future | + +### Affiliate & Partnerships + +| Stream | Model | State | +|--------|-------|-------| +| Equipment supplier affiliates | €500–1,000/lead or 5% of sale | [ ] Future | +| "Wirecutter for padel" | SEO affiliate site: racket reviews, gear guides, €1–3K/mo passive | [ ] Future | +| Franchise partnerships | Market data or qualified leads for franchise brands | [ ] Future | +| Newsletter sponsorships | "The Padel Business Report" — €200–1,000/wk at 5K+ subs | [ ] Future | +| API / data licensing | Raw data feeds to hedge funds, analysts, franchise operators | [ ] Future | + +--- + +## Email & Nurture + +| Step | Description | State | +|------|-------------|-------| +| Capture | Email gate on planner results | [ ] Not live | +| Welcome sequence | Introduce platform, case studies, articles | [ ] Not started | +| Lead nurture (Side A) | 5–7 email sequence for aspiring owners | [ ] Not started | +| Supplier nurture (Side B) | Separate sequence for suppliers | [ ] Not started | + +--- + +## PR & Partnerships + +| Opportunity | Approach | State | +|-------------|----------|-------| +| "State of Padel Q1 2026" report | Write with limited data, gate behind email, post LinkedIn, email 20 industry contacts. Target: 200+ downloads, 5+ shares, 1+ media citation | [ ] Planned | +| Padel podcasts | Guest spots, position as data/planning expert | [ ] Month 2+ | +| National associations (DTB etc.) | Co-distribution, credibility | [ ] Month 2+ | +| Sports business press | Angle: "padel boom + nobody has the data" | [ ] Month 2+ | +| Lenders as distribution | Banks recommend Padelnomics plans → massive trust signal + built-in pipeline | [ ] Future | + +--- + +## Pretotypes (validate before building) + +| Idea | Test Method | Success Metric | State | +|------|------------|----------------|-------| +| Business Plan PDF export | Fake door: button → "launching soon + email capture" | 10%+ click rate, 30%+ leave email | [ ] | +| Location Scorer | Mechanical Turk: landing page → manual PDF delivery within 24hr | 20+ submissions/wk, 3+ ask "how much for more detail?" | [ ] | +| Operator Benchmarking | One-night stand: offer 5 venue owners free competitive analysis | 3/5 say yes AND ask for next update unprompted | [ ] Future | +| Builder Subscriptions | Infiltrator: free leads for 3mo → ask if they'd pay €199/mo | 3+ builders want to continue AND will pay | [~] Doing with founding members | +| Market Reports | Pinocchio: write Q1 2026 report with limited data, gate + share widely | 200+ downloads, 5+ shares, 1 media citation | [ ] | + +--- + +## Geographic Expansion + +**Current:** Germany + English (USA, UK). + +**Whitespace (nobody has replicated Sportstättenrechner model in):** +France, Italy, Netherlands, Sweden, Belgium, Austria, Portugal, UAE/Middle East, Mexico/Latin America, UK (properly). + +First-mover in each captures the entire search funnel for "how to open a padel hall in [country]." + +**Roadmap:** DACH → Western Europe → Global. ~Month 12–24. + +--- + +## Timelines + +> Assumes ~half a day per feature, 20–30 hrs/week. Big chunks are already built: planner (HTMX-refactored), auth, CMS + 80 SEO articles, i18n (EN+DE), supplier directory scaffold, 9-step quote wizard, Playtomic extractor + DuckDB pipeline, market data endpoint, Paddle billing setup, Resend + waitlist mode. Timelines reflect remaining work only. + +### What's already done (confirmed by code audit 2026-02-22) + +Most "Week 1" items were already shipped. The actual state: +- ✅ Planner fully open — no login gate, never was one +- ✅ Supplier directory live — public, no waitlist gate +- ✅ Business Plan PDF — full WeasyPrint pipeline, not just a CTA +- ✅ Paddle billing — 18 products, webhooks, checkout, subscription lifecycle fully wired +- ✅ Lead admin view — full list/detail/status/manual-forward management +- ✅ Supplier dashboard — 4 tabs, credit-based unlock, listing editor, boosts +- ✅ Credit system — balance, ledger, atomic unlock, monthly refill +- ✅ Quote wizard — 9-step, heat scoring, email verification + +### Go-Live (this week, config not code) +- [ ] Paddle: switch from sandbox to production (env vars + `setup_paddle`) +- [ ] Publish SEO articles on prod (`seed_content --generate` or admin panel) +- [ ] Wipe 5 test suppliers (`example.com` entries, not real data) +- [ ] Verify Resend production API key — test a real email +- [ ] Submit sitemap to Google Search Console + +### Week 1–2 — First Revenue Signal +- [ ] Email nurture sequence (3-email drip for planner users — Resend infra exists, write content + schedule) +- [ ] 30–50 supplier outreach emails +- [ ] 2–3 founding member deals (free leads for 3 months) +- [ ] "State of Padel Q1 2026" report written + published +- [ ] First 3 priority SEO articles +- [ ] LinkedIn: first 5 posts + +### Week 2–4 — Market Map +- [ ] Market map UI (geographic viz over DuckDB city data — only tech that doesn't exist yet) +- [ ] Follow up on founding member outreach +- [ ] More SEO articles + +### Month 2 — Market Intelligence MVP +> Data pipeline already running (Playtomic + SQLMesh + DuckDB). Mostly a UI build. +- [ ] Market Intelligence Dashboard (city analytics, occupancy estimates, demand map) +- [ ] Explorer tier paywall (€79/mo) +- [ ] Target: €1,500–3,000/mo + +### Month 3–6 — Pro Tier + Operational Analytics +- [ ] Market Intelligence Pro (€149/mo, hall-level data, competitor tracking) +- [ ] Operational analytics for running venues (€49–99/mo) +- [ ] Location Scorer MVP (mechanical turk initially) +- [ ] Target: €3,000–8,000/mo + +### Month 6–12 — Scale +- [ ] Site Selection Reports (high-ticket) +- [ ] "State of Padel" quarterly reports (gated, press distribution) +- [ ] Enterprise tier + API +- [ ] Pan-European expansion (FR, IT, NL, SE — cities already seeded) +- [ ] Target: €8,000–20,000/mo + +### Revenue milestones + +| Milestone | Target MRR | Realistic timeline | +|-----------|-----------|-------------------| +| First paying customer | €99–499 | Week 1–2 (post go-live config) | +| €1K MRR | €1,000 | Month 1 | +| €3K MRR | €3,000 | Month 2 | +| €8K MRR | €8,000 | Month 4–6 | +| €20K MRR | €20,000 | Month 8–12 | +| €35K+ MRR | €35,000+ | Month 12–18 | + +**Path to €3K MRR:** +- Builder lead credits: €150/lead avg × 10 leads/mo = €1,500/mo +- Builder subscriptions: €199/mo avg × 3 builders = €597/mo +- Business plan export: €49/mo avg × 15 subs = €735/mo +- Total: ~€2,832/mo + +--- + +## Source Files + +> See `PROJECT.md` at repo root for open tasks, in-progress work, and done items. + +These are the raw strategy files this doc consolidates. Treat this doc as the source of truth going forward. + +- `research/PLAN.md` — Phase-by-phase execution plan with product specs & pricing +- `research/padelnomics-master-strategy.md` — 22-section strategic reference +- `research/padelnomics-strategy-stack.md` — 7 frameworks (Lean Canvas, Blue Ocean, Wardley, etc.) +- `research/padelnomics-jtbd-analysis.md` — Customer segments and struggling moments +- `research/padelnomics_lead_platform_discussion_summary.md` — Lead platform design + Sportstättenrechner analysis +- `research/padel-daas-vision-plan.md` — DaaS thesis, "Bloomberg for padel" vision, data moat strategy, name candidates +- `memory/launch-strategy.md` — Pre-launch sequencing and 30-day milestones diff --git a/research/PLAN.md b/research/PLAN.md index 3301364..81888e2 100644 --- a/research/PLAN.md +++ b/research/PLAN.md @@ -1,5 +1,7 @@ # Padelnomics — Execution Plan +> ⚠️ **Superseded.** This doc mixed technical and business/marketing tasks in sequenced phases, which imposed artificial dependencies. Use `PROJECT.md` (task tracker) and `docs/MARKETING.md` (marketing strategy) instead. Kept here as historical context. + **Date:** 2026-02-16 **Model:** Zillow for padel — open consumer tool, monetize both sides diff --git a/docs/data-sources-inventory.md b/research/data-sources-inventory.md similarity index 100% rename from docs/data-sources-inventory.md rename to research/data-sources-inventory.md diff --git a/docs/market-research-padel-costs-2026.md b/research/market-research-padel-costs-2026.md similarity index 100% rename from docs/market-research-padel-costs-2026.md rename to research/market-research-padel-costs-2026.md diff --git a/.claude/Padel DaaS Vision & Plan.md b/research/padel-daas-vision-plan.md similarity index 98% rename from .claude/Padel DaaS Vision & Plan.md rename to research/padel-daas-vision-plan.md index 2207d4a..ce608d2 100644 --- a/.claude/Padel DaaS Vision & Plan.md +++ b/research/padel-daas-vision-plan.md @@ -1,5 +1,7 @@ # Padel Business Intelligence — Vision & Plan +> ⚠️ **Superseded.** Content consolidated into `docs/MARKETING.md` (strategy + positioning + timelines). Kept here as historical context and for the naming candidates section. + ## The One-Liner **"Bloomberg for padel hall operators."** We sell unfair advantages to people making six-figure facility investment decisions — using data nobody else is aggregating.