← back to Animals
docs/monetization.md
132 lines
# Monetization — Project: Animals
Three independent revenue rails, ranked by build cost / unit economics.
---
## Rail A · Display ads (lowest friction, lowest CPM)
**Where:** every public page — breed pages, clinic pages, vet pages, groomer/pet-store/
shelter/breeder/trainer/boarding pages, breed-vs-breed, city directory pages, "best
vets in {city}" SEO pages, and the city-map "everything near you" pages.
**Slot inventory per page:**
- Header banner (728×90 desktop / 320×50 mobile)
- Mid-content native (in-flow card)
- Sidebar sticky (300×600 desktop only)
- Footer (728×90)
**Implementation:**
- Phase 1: Google AdSense (`AD_PROVIDER=adsense`, just inject the snippet).
Pros: zero sales effort. Cons: $1-3 RPM in this vertical.
- Phase 2: Direct contextual ads (`AD_PROVIDER=inhouse`). Sell directly to:
- Pet food (Chewy affiliate, Farmer's Dog, The Honest Kitchen, Open Farm)
- Pet insurance (Lemonade, Trupanion, Pets Best, Healthy Paws, MetLife)
- Pet retailers (Chewy, Petco, BarkBox)
- Vet schools / continuing ed (low priority)
- Each clinic page that has ≥1 ad-friendly trigger keyword (e.g., "puppy",
"vaccination", "senior dog") gets a contextually-matched native card.
**Target unit economics at scale:**
- 70k clinic pages + 500 breed pages + 1k city pages = ~71k indexable pages
- 5 sessions/page/mo (modest SEO baseline) = 355k sessions/mo
- $4 effective RPM = **~$1,420/mo** at first
- Realistic 12-month target with SEO: 200 sessions/page = $5.7k/mo
- Realistic 24-month target with SEO + brand: 500 sessions/page = $14k/mo
**Schema:** `ad_slots`, `ad_impressions`, `ad_clicks` (rail A is mostly third-party
served — we just track impressions for our own analytics + ad-fraud verification).
---
## Rail B · Lead-gen funnel (highest LTV per lead)
**Where:** every clinic/vet/groomer/trainer/breeder page has a "Get matched
with a {role} near you" CTA that opens a 4-field form (name, email, ZIP,
species + symptom or service).
**Routing:**
- Form submit → `leads` row → `match_engine.js` picks top 3 businesses by:
- distance from ZIP (Haversine)
- species match (dog/cat/exotic/etc.)
- service match (general/emergency/dental/dermatology/etc.)
- `verified=true` priority (clinics that responded to a prior outreach)
- George (gmail agent on tailnet) emails the matched business owner with a
1-click "Claim this lead" link.
**Pricing:**
| Vertical | Per-lead |
| ----------- | -------- |
| Veterinarians (general) | $25 |
| Vets (specialty: derma/cards/onco) | $60 |
| Emergency vets | $80 |
| Groomers | $15 |
| Trainers | $25 |
| Breeders (puppy buyers) | $50 |
| Boarding/daycare | $20 |
| Pet store (premium feature placement) | flat $39/mo |
**Target:** 200 leads/mo @ avg $35 = **$7k/mo MRR** within 6 months.
**Schema:** `leads`, `lead_matches`, `lead_charges` (Stripe usage-billed).
---
## Rail C · White-label "Vet Site Upgrade" SaaS
**The pitch (auto-generated, sent to clinic email from site_audit):**
> Hi [Clinic Name] team — we audited your website and noticed a few things
> that may be costing you new patients (no mobile menu, no schema.org for
> Google to understand your services, no online booking, slow page load).
>
> We rebuilt 3 mockups for you — see them at:
> https://animalsdirectory.com/upgrade/preview/[token]
>
> $499 one-time, $49/mo. We host, maintain, update — you just send us your
> photos and we ship in 7 days.
**What they get:**
- Modern responsive site (one of 3 templates — same as lawyer EZ-Upgrade)
- Custom domain (theirs) or our subdomain `[clinic].vetpages.com`
- Online appointment request form (POSTs to clinic email)
- Schema.org `VeterinaryCare` markup (so Google ranks them for local-pack)
- Photo gallery, services list, team bios
- Hosted on Kamatera, deployed via push-to-deploy bare repo (per Steve pattern)
**Funnel:**
1. `audit:websites` cron computes `marketing_score` for every clinic with a
known website. Anything < 60 enters the upgrade pipeline.
2. `audit:mockups` generates 3 PNG mockups via Playwright + EJS templates.
3. Outbound email sent via George with a `/upgrade/preview/:token` link.
4. Clinic clicks → sees mockups + price → submits `upgrade_order`.
5. Admin gets Stripe checkout → onboards clinic → ships site in 7 days.
**Target:** 70k clinics × 0.3% conversion = 210 customers
- 210 × $499 setup = **$104,790 one-time** in year 1
- 210 × $49/mo = **$10,290 MRR** by end of year 1
**Schema:** `site_audits`, `site_mockups`, `upgrade_orders`, `app_users`
(clinic owner login to claim profile + manage subscription).
---
## Combined target (12-month base case)
| Rail | Year-1 revenue | Notes |
| ---- | -------------- | ---------------------------------- |
| A | $30k | Ad CPMs grow w/ SEO |
| B | $70k | 200 leads/mo at $35 avg |
| C | $135k | $105k setup + $30k from MRR ramp |
| **Total** | **~$235k** | with one full-time human handling C delivery |
---
## Build sequence (revenue-first)
1. Scaffold + ingest 5k clinic seed (CA + TX) — needed to demo any rail
2. Build viewer w/ ad slots wired (AdSense first) — turns on Rail A immediately
3. Build site_audit + mockup generator — turns on Rail C
4. Build lead form + George outbound — turns on Rail B
5. Hire 1 part-time site-builder when Rail C books >$5k/mo