{
 "updated": "2026-10-05",
 "consultant": {
  "name": "Daniel Deepak",
  "base": "Bengaluru, India",
  "email": "danieldeepak3519@gmail.com",
  "linkedin": "https://linkedin.com/in/danny-ai-marketing",
  "github": "https://github.com/dannygrowthmarketing",
  "line": "Before I spend a rupee, I find where the last one leaked."
 },
 "stages": [
  {
   "id": "visibility",
   "name": "Get found"
  },
  {
   "id": "click",
   "name": "Click"
  },
  {
   "id": "enquiry",
   "name": "Enquiry / cart"
  },
  {
   "id": "booking",
   "name": "Booking / order"
  },
  {
   "id": "revenue",
   "name": "Revenue"
  },
  {
   "id": "repeat",
   "name": "Repeat"
  },
  {
   "id": "measurement",
   "name": "Measurement"
  }
 ],
 "leaks": [
  {
   "id": "measurement",
   "name": "Miscounted conversions",
   "one": "The ad platform reports sales the till never saw. Bidding chases fiction.",
   "signal": "Platform conversions above real orders. Value per conversion far from average order.",
   "fix": "Read conversion actions, not goal cards. Reconcile to the till weekly. Stop rule at 60%."
  },
  {
   "id": "allocation",
   "name": "Money on the wrong intent",
   "one": "Budget sits where it is easy to spend, not where buyers convert.",
   "signal": "Share of spend and share of results don't match. One ad group starves the rest.",
   "fix": "Rank spend by revenue per rupee at the unit that bills. Cap, kill or fund."
  },
  {
   "id": "postclick",
   "name": "Post-click friction",
   "one": "The ad works. The page, form or checkout after it doesn't.",
   "signal": "Healthy CTR, poor conversion. Results move while spend and CPC stay flat.",
   "fix": "Book it yourself on a phone. Cut steps, fix speed, price and phone above the fold."
  },
  {
   "id": "visibility",
   "name": "Invisible where buyers look",
   "one": "Missing from the map pack, directories, page one, even brand search.",
   "signal": "Competitors with fewer reviews rank above you. Your own name shows someone else.",
   "fix": "Profile, listings, service and location pages. Defend the brand term."
  },
  {
   "id": "pricing",
   "name": "Price and channel leakage",
   "one": "Your own stock sold cheaper elsewhere, with commission on top.",
   "signal": "Google Hotels or marketplaces list third parties below your direct price.",
   "fix": "One rate card, one owner, weekly parity check, best-rate-direct promise."
  },
  {
   "id": "speed",
   "name": "Lead-to-booking gap",
   "one": "Leads arrive at record volume. Nobody converts them fast enough.",
   "signal": "Leads up, bookings flat or down. Calls fall while direction requests rise.",
   "fix": "Every lead to the right person's WhatsApp in five minutes. Mystery-shop peak hours."
  },
  {
   "id": "postsale",
   "name": "Post-sale leakage",
   "one": "The sale happens. The money doesn't stay or doesn't come back.",
   "signal": "High returns, falling ticket size, one-time buyers.",
   "fix": "Returns report by SKU and checkout. Ticket-size work on the floor. Lifecycle triggers."
  },
  {
   "id": "notmarketing",
   "name": "Not a marketing problem",
   "one": "Sometimes the biggest number isn't mine to fix. Saying so early saves months.",
   "signal": "The same complaint in reviews. A gap no ad change moves.",
   "fix": "Name the owner: ops, product, pricing or the shop floor. Put a rupee value on it."
  }
 ],
 "evidenceLabels": [
  "MEASURED",
  "CALCULATED",
  "ESTIMATED",
  "ASSUMPTION",
  "DATA NOT AVAILABLE"
 ],
 "cases": [
  {
   "id": "toni-and-guy",
   "url": "toni-and-guy.html",
   "name": "TONI&GUY Bangalore",
   "industry": "Premium salon",
   "model": "16 salons · multi-location",
   "city": "Bengaluru",
   "market": "India",
   "status": "Closed",
   "period": "Data Jan 2025 – Aug 2026 · my work from Mar 2026",
   "role": "Growth consultant: Google, Meta, web, booking app, reporting",
   "grade": "A",
   "gradeNote": "Ad exports joined to point-of-sale revenue by salon",
   "leak": "Leads hit record volume; ticket size fell and no callback loop existed",
   "kpiBig": "+14.7%",
   "kpiText": "salon revenue vs same months of 2025",
   "big": "+14.7%",
   "bigLabel": "salon revenue on last year from March, when I joined (₹14.04 → ₹16.10 Cr). Jan–Feb ran +1.3%.",
   "leakIds": [
    "allocation",
    "measurement",
    "speed",
    "postsale",
    "notmarketing"
   ],
   "stages": {
    "visibility": "o",
    "click": "n",
    "enquiry": "o",
    "booking": "l",
    "revenue": "l",
    "repeat": "n",
    "measurement": "l"
   },
   "profile": {
    "business_model": "Multi-location premium hair salon network in Bangalore: 16 salons on the point-of-sale sheet (Aug 2026), with Lavelle Road and Koramangala 8th Block also carrying ad spend",
    "industry": "Premium salon (haircuts, colour, treatments, packages)",
    "target_customer": "Walk-in and local salon customers in Bangalore; Aug 2026 impressions skewed 69.83% male and 13.65% aged 55+ per Google Ads",
    "geography": "Bangalore, India (malls, Nexus, Phoenix, Koramangala, Whitefield, JP Nagar, Hennur and others)",
    "persona": "DATA NOT AVAILABLE",
    "commercial_objective": "Salon revenue against monthly store targets (Aug 2026 network target Rs 2.96 Cr, 99.5% attained)",
    "revenue_mechanism": "Point-of-sale bills: services, packages (28.1% of Aug sales) and product (5.4%); average bill Rs 2,813 in Aug 2026",
    "acquisition_routes": [
     "Google Ads Search, Performance Max, Demand Gen (store and network campaigns)",
     "Meta lead-form, click-to-WhatsApp and click-to-call campaigns per salon (from May 2026)",
     "Instagram post boosts (132 built, 73 delivered in Aug)",
     "Google Business Profile actions (directions, calls)",
     "Booking website toniandguyhairdressing.com"
    ],
    "conversion_mechanism": "Google conversions (calls, directions, store visits, web) and Meta leads/WhatsApp chats are followed up by salons; booking and billing happen at the salon. No lead-to-chair link exists in the data."
   },
   "story60": {
    "problem": "Sales growth had stalled at +1.3% on last year in Jan-Feb 2026 because average bill fell 13.5%, while Google ran an inherited, unstructured account.",
    "leak": "Leads rose but each returned less: revenue per Google lead fell from Rs 3,116 to Rs 1,361, and ad money drifted to low-return salons.",
    "discovered": "Joined 20 months of till data to Google exports, then in August joined ad spend to point-of-sale revenue salon by salon.",
    "did": "Rebuilt Google per salon, launched per-salon Meta, moved the site to Netlify, built a booking app, reported monthly with salon P&L.",
    "changed": "Mar-Aug 2026 revenue +14.7% (Rs 14.04 to 16.10 Cr), bills +21.6%, on Google spend +74%. Part is seasonal or new-salon capacity.",
    "evidence": "20-month point-of-sale and Google Ads ledger (Jan 2025 to Aug 2026) plus the August salon P&L, from the monthly reports.",
    "lesson": "Spend, clicks and leads rose faster than bills. Judge ad money by bills and salon-level return, and test lead counts for definition changes."
   },
   "problemTags": [
    "acquisition leakage",
    "follow-up",
    "tracking leakage",
    "booking leakage",
    "budget allocation",
    "attribution",
    "data fragmentation",
    "operational constraint",
    "pricing/channel"
   ],
   "stageTags": [
    "attract",
    "land",
    "convert",
    "close",
    "revenue",
    "measure"
   ],
   "bridge": [
    {
     "node": "Google Ads spend, Mar-Aug 2026 (Google only, excludes Meta)",
     "value": "Rs 25.36 L (+74.3% vs Rs 14.54 L)",
     "evidence": "MEASURED"
    },
    {
     "node": "Clicks into the brand",
     "value": "6,00,752 (+369%)",
     "evidence": "MEASURED"
    },
    {
     "node": "Google conversions (calls, directions, store visits, web)",
     "value": "1,18,253 (+165%); Aug includes unexplained 6-12 Aug spike",
     "evidence": "MEASURED"
    },
    {
     "node": "Lead to booked chair",
     "value": "DATA NOT AVAILABLE",
     "evidence": "DATA NOT AVAILABLE"
    },
    {
     "node": "Bills",
     "value": "60,027 (+21.6%). Monthly r = 0.83 between MQLs and bills over 20 months; CORRELATION only",
     "evidence": "CALCULATED"
    },
    {
     "node": "Salon revenue",
     "value": "Rs 16.10 Cr (+Rs 2.06 Cr vs 2025); incremental Rs 2.06 Cr / Rs 10.81 L extra Google spend = 19.1x, not causal (new salons, season, Meta also moved)",
     "evidence": "CALCULATED"
    }
   ]
  },
  {
   "id": "mr-jewels",
   "url": "mr-jewels.html",
   "name": "MR Jewels",
   "industry": "Jewellery D2C",
   "model": "Online store + Indiranagar showroom",
   "city": "Bengaluru",
   "market": "India",
   "status": "Closed",
   "period": "Data Jul 2024 – Aug 2026 · my work from Aug 2026",
   "role": "Google Ads lead + full business review",
   "grade": "A",
   "gradeNote": "Google exports reconciled to Shopify orders and billing",
   "leak": "Google claimed 11.8× real revenue; the losses sat in the cart and returns",
   "kpiBig": "−66%",
   "kpiText": "showroom cost per click after one goal fix",
   "big": "−66%",
   "bigLabel": "showroom cost per click after one conversion-goal fix (₹38.60 → ₹13.13)",
   "leakIds": [
    "measurement",
    "allocation",
    "postclick",
    "postsale",
    "notmarketing"
   ],
   "stages": {
    "visibility": "l",
    "click": "o",
    "enquiry": "o",
    "booking": "l",
    "revenue": "l",
    "repeat": "l",
    "measurement": "l"
   },
   "profile": {
    "business_model": "D2C Shopify store (mrjewels.in) plus one Indiranagar showroom; most orders complete in third-party headless checkouts",
    "industry": "Premium imitation jewellery (kadas, earrings, men's brooches, festive sets)",
    "target_customer": "Phone shoppers across Indian metros; four in five buyers are new customers",
    "geography": "Bengaluru showroom; demand spread over eight metros (45.9% of Indian sessions); Bengaluru 9.0%; 7.4% of sessions outside India",
    "persona": "A phone shopper in a metro, browsing midday or 9-11PM, often a man buying festive jewellery for a woman (known audience only ~4% of impressions, directional).",
    "commercial_objective": "Grow orders (plan documents target 50 Google orders a day by November and 100 total); profit goal unknown because margin was never supplied",
    "revenue_mechanism": "Online orders at AOV ~Rs 5,180 (prepaid and cash-on-delivery); showroom purchases close in person (value not tracked)",
    "acquisition_routes": [
     "Meta ads (78.4% of trailing-12-month ad spend)",
     "Google Shopping, Performance Max, Demand Gen, Search (21.6%)",
     "Organic Google and Instagram",
     "Chat/WhatsApp widget (kwikchat)",
     "Showroom Business Profile (directions, calls)"
    ],
    "conversion_mechanism": "Product page to cart to checkout; 75.8% of sales run through the fastrrv3 headless checkout; showroom visit as second route"
   },
   "story60": {
    "problem": "Google spend rose 143% in August; gross sales rose 21.8%. Profit could not be judged: margin and Meta spend were never supplied.",
    "leak": "Checkout (cart to order 13.5%), returns (19.8% of gross reversed) and tracking (Google claimed 11.8 times the company's revenue).",
    "discovered": "Reconciled Google exports to Shopify, billing and the client's 24-month workbook; per-campaign daily exports pinned the defect.",
    "did": "Built brand Search, showroom PMax and cart remarketing; fixed the showroom goal; specced tracking repair, call tracking and three scale stages.",
    "changed": "Showroom CPC Rs 38.60 to Rs 13.13; 1,356 showroom actions in August. Google spend +143.3%, orders +16.1%.",
    "evidence": "Google Ads campaign, daily and search-term exports; Shopify 12-month export; billing summary; client MER workbook.",
    "lesson": "Reconcile Google to Shopify weekly before scaling. Budget follows measured demand. Fix the cart before buying more traffic."
   },
   "problemTags": [
    "acquisition leakage",
    "conversion leakage",
    "tracking leakage",
    "attribution",
    "budget allocation",
    "retention",
    "operational constraint",
    "data fragmentation",
    "local search",
    "pricing/channel"
   ],
   "stageTags": [
    "attract",
    "land",
    "convert",
    "close",
    "revenue",
    "retain",
    "measure"
   ],
   "bridge": [
    {
     "node": "Google Ads spend (billed, Aug 2026)",
     "value": "Rs 10,87,899 (media ex-GST Rs 9,25,231)",
     "evidence": "MEASURED"
    },
    {
     "node": "Google impressions (Aug 2026)",
     "value": "1,15,59,854",
     "evidence": "MEASURED"
    },
    {
     "node": "Store sessions, all channels",
     "value": "4,20,817 (+53.3% vs July)",
     "evidence": "MEASURED"
    },
    {
     "node": "Orders, all channels",
     "value": "1,960 (+16.1%)",
     "evidence": "MEASURED"
    },
    {
     "node": "Orders traced to a channel (12 months)",
     "value": "3.4% (708 of 21,015); Google-to-order link not provable in Shopify",
     "evidence": "MEASURED"
    },
    {
     "node": "Net revenue (Aug 2026)",
     "value": "Rs 80,21,935 (gross Rs 1,06,84,206 less discounts and derived reversals)",
     "evidence": "CALCULATED"
    },
    {
     "node": "Profit",
     "value": "DATA NOT AVAILABLE",
     "evidence": "DATA NOT AVAILABLE"
    }
   ]
  },
  {
   "id": "elites-dental",
   "url": "elites-dental.html",
   "name": "Elites Dental Care",
   "industry": "Dental clinic",
   "model": "Single clinic, five specialists",
   "city": "TC Palya, Bengaluru",
   "market": "India",
   "status": "Active",
   "period": "Data Apr – Sep 2026 · my work from Sep 2026",
   "role": "Audit, Business Profile rebuild, Search rebuild",
   "grade": "B",
   "gradeNote": "Google Ads, GA4, Search Console and Business Profile data; no clinic revenue yet",
   "leak": "₹3,140 per booking: the clicks were fine, everything after the click was broken",
   "kpiBig": "₹3,140",
   "kpiText": "per booking, before the rebuild",
   "big": "₹3,140",
   "bigLabel": "per booking before the rebuild: ₹25,122 for 8 bookings",
   "leakIds": [
    "postclick",
    "allocation",
    "visibility",
    "measurement"
   ],
   "stages": {
    "visibility": "l",
    "click": "l",
    "enquiry": "l",
    "booking": "l",
    "revenue": "n",
    "repeat": "o",
    "measurement": "l"
   },
   "profile": {
    "business_model": "Single-clinic family dental practice: six specialists (five MDS), operating since 2006, TC Palya Main Road, east Bengaluru.",
    "industry": "Dental clinic",
    "target_customer": "Local patients within about 5 km: routine care (cleaning, root canal, fillings) and higher-value implants, aligners, crowns.",
    "geography": "CMS Towers, TC Palya Main Rd, Sannatammanahalli, Bengaluru; 5 km ad radius.",
    "persona": "Mobile searcher aged 25-44 near TC Palya, often in discomfort; the 45+ implant buyer was only 14.9% of ad reach.",
    "commercial_objective": "Turn a 4.9-star, 271-review reputation into booked appointments, weighted toward higher-value treatments.",
    "revenue_mechanism": "Fee per treatment. Treatment values and attendance not shared; published single implant ₹16k-95k in Bengaluru.",
    "acquisition_routes": [
     "Google Ads Search, one campaign, 5 km (4 Aug-17 Sep, paused 18 Sep)",
     "Google Business Profile and Maps (35-45 calls a month)",
     "Organic search (not on page one for 'dental clinic tc palya')",
     "Directories (Justdial only, under a wrong locality)",
     "Social (Instagram 30 followers, Facebook 2)"
    ],
    "conversion_mechanism": "Click or profile call, then a 4-step click4appointment widget (clinic, doctor, date, contact). Ads tag fires after the booking API is verified."
   },
   "story60": {
    "problem": "₹25,122 bought 8 bookings: ₹3,140 each, for a clinic rated 4.9 by 271 patients.",
    "leak": "After the click: a 2.6 s page, a 4-step booking widget, GA4 seeing about 1 in 6 clicks, and every booking valued at ₹1.",
    "discovered": "Matched ad-schedule slots to daily spend by weekday, then mapped each booking to its day and search term.",
    "did": "Audited 18 Sep. Rebuilt Business Profile 27 Sep (300 services to 121). Relaunched Search 1 Oct: 7 treatment ad groups.",
    "changed": "Nothing measured yet. Relaunch was 1 Oct. Baseline: ₹3,140 per booking; profile calls 42 in Aug, 18 by 27 Sep.",
    "evidence": "Google Ads daily, ad-schedule, search-term and device exports, 4 Aug-17 Sep; Business Profile calls Apr-Sep.",
    "lesson": "Five of eight bookings sit on one Sunday. Treat the morning edge as a test, not a finding."
   },
   "problemTags": [
    "conversion leakage",
    "tracking leakage",
    "booking leakage",
    "website UX",
    "local search",
    "budget allocation",
    "attribution"
   ],
   "stageTags": [
    "attract",
    "land",
    "convert",
    "revenue",
    "measure"
   ],
   "bridge": [
    {
     "node": "Google Ads spend, 4 Aug-17 Sep",
     "value": "₹25,122",
     "evidence": "MEASURED"
    },
    {
     "node": "Impressions / unique people reached",
     "value": "6,834 / 3,653",
     "evidence": "MEASURED"
    },
    {
     "node": "Clicks",
     "value": "469 (₹53.56 each)",
     "evidence": "MEASURED"
    },
    {
     "node": "Sessions registered in GA4",
     "value": "~78 (one in six of 469)",
     "evidence": "ESTIMATED"
    },
    {
     "node": "Bookings (Ads conversion)",
     "value": "8 (1.71% of clicks); 5 on one day, unverified",
     "evidence": "MEASURED"
    },
    {
     "node": "Patients attended, treatment value, revenue",
     "value": "DATA NOT AVAILABLE",
     "evidence": "DATA NOT AVAILABLE"
    }
   ]
  },
  {
   "id": "resort",
   "url": "resort.html",
   "name": "Gold Coins Club & Resort",
   "industry": "Resort & events",
   "model": "Rooms, day-outs, weddings, corporate",
   "city": "Electronic City, Bengaluru",
   "market": "India",
   "status": "Active",
   "period": "Data Jan – Sep 2026 · my work from Sep 2026",
   "role": "Revenue audit, Business Profile, sales dashboard, Google Ads from 17 Oct",
   "grade": "B",
   "gradeNote": "Sales CRM, Meta, Google Ads, GA4 and Business Profile; bookings not yet tied to channels",
   "leak": "Ad spend rose 3.2× in a quarter and bookings fell 13%: the leak sits between enquiry and booking",
   "kpiBig": "24% → 14%",
   "kpiText": "enquiry-to-booking conversion, Q2 to Q3",
   "big": "24% → 14%",
   "bigLabel": "enquiry-to-booking conversion, Q2 to Q3 2026",
   "leakIds": [
    "speed",
    "measurement",
    "allocation",
    "pricing",
    "postclick",
    "visibility",
    "notmarketing"
   ],
   "stages": {
    "visibility": "l",
    "click": "l",
    "enquiry": "o",
    "booking": "l",
    "revenue": "l",
    "repeat": "l",
    "measurement": "l"
   },
   "profile": {
    "business_model": "12-acre resort and events venue: rooms, day-outs, weddings, corporate offsites, celebrations, Sunday brunch. 59 rooms, 2,000-guest lawn.",
    "industry": "Resort and events (hospitality)",
    "target_customer": "Families and friend groups within ~15 km (day-outs, rooms); office teams (offsites); couples and parents (weddings); parents (birthdays).",
    "geography": "Andapura, Electronic City Phase II, Bengaluru 560100; 10 min from E-City.",
    "persona": "Bengaluru mobile searcher near Electronic City booking a day-out or room (96-97% of ad clicks on phones; 25-34 the largest known age band).",
    "commercial_objective": "Turn existing demand into booked revenue; grow direct bookings and higher-ticket events (weddings, corporate).",
    "revenue_mechanism": "Day-out ticket from ₹1,499 per adult, rooms from ₹3,999 a night, catering from ₹1,199 a plate, quoted corporate and wedding packages. Quoted value logged in Sales CRM. No online payment.",
    "acquisition_routes": [
     "Meta lead, WhatsApp and call ads (146 campaigns, Jan-1 Oct)",
     "Google Ads: Performance Max/YouTube and Search (from 13 Jul)",
     "Google Business Profile / Maps",
     "Organic and brand search (new site live 7 Sep)",
     "IVR phone line (82% of CRM enquiries)",
     "OTAs and resellers (Yatra via Google Hotels, BanBanjara, Thrillophilia)"
    ],
    "conversion_mechanism": "Phone, WhatsApp or web form enquiry logged in the Sales CRM, executive follow-up, quote, manual confirmation. No online booking or payment."
   },
   "story60": {
    "problem": "Ad spend rose 3.2x from Q2 to Q3. Enquiries rose 46%. Bookings fell 13%.",
    "leak": "Between enquiry and booking: conversion fell 24% to 14%, profile calls fell 55% May–Aug, and no booking is tied to any ad.",
    "discovered": "Joined CRM, Meta, Google, GA4 and Business Profile by month, then compared quarters before reading any campaign.",
    "did": "45 Business Profile changes (28 Sep). Sales dashboard. 17 Oct: Search rebuilt to 10 ad groups, 49 negatives, Performance Max on real-lead goals.",
    "changed": "Bookings not yet measurable. Found 52 of 55 Google 'conversions' were map taps: about ₹580 per real lead, not ₹95.",
    "evidence": "Sales CRM Jan–1 Oct, Meta and Google exports, GA4, Business Profile May–Oct (read 17 Oct), Google Ads 1–17 Oct.",
    "lesson": "Spend did not cause the drop. Conversion stepped down in June and bookings stayed near 100 a month at any volume."
   },
   "problemTags": [
    "conversion leakage",
    "follow-up",
    "tracking leakage",
    "attribution",
    "pricing/channel",
    "local search",
    "budget allocation",
    "data fragmentation",
    "operational constraint"
   ],
   "stageTags": [
    "attract",
    "land",
    "convert",
    "close",
    "revenue",
    "measure"
   ],
   "bridge": [
    {
     "node": "Ad spend, Jan-Sep (Meta + Google, ex-GST)",
     "value": "₹7.78L",
     "evidence": "MEASURED"
    },
    {
     "node": "Enquiries logged in Sales CRM (all channels)",
     "value": "5,621",
     "evidence": "MEASURED"
    },
    {
     "node": "Enquiries tagged to an ad",
     "value": "DATA NOT AVAILABLE (3 tagged Meta, 0 Google)",
     "evidence": "DATA NOT AVAILABLE"
    },
    {
     "node": "Bookings won (all channels)",
     "value": "788 (14.0% of enquiries; 19.5% in Mar-Sep tracked months)",
     "evidence": "CALCULATED"
    },
    {
     "node": "Booking value won, as quoted",
     "value": "₹2.69Cr",
     "evidence": "MEASURED"
    },
    {
     "node": "Booking value by channel",
     "value": "DATA NOT AVAILABLE",
     "evidence": "DATA NOT AVAILABLE"
    },
    {
     "node": "Invoiced revenue and margin",
     "value": "DATA NOT AVAILABLE",
     "evidence": "DATA NOT AVAILABLE"
    }
   ]
  },
  {
   "id": "foremost-pa",
   "url": "foremost-pa.html",
   "name": "Foremost Public Adjusters",
   "industry": "Insurance claims",
   "model": "Local lead gen, contingency fee",
   "city": "South Florida",
   "market": "USA",
   "status": "Closed",
   "period": "Data Jan – Jul 2026",
   "role": "Paid search audit, SEO fixes, campaign build, brand investigation",
   "grade": "B",
   "gradeNote": "Google Ads and Search Console exports; no claim or fee data",
   "leak": "Lead cost swung on post-click conversion, not budget, and the brand vanished",
   "kpiBig": "0 / 247",
   "kpiText": "live keywords that were branded",
   "big": "0 / 247",
   "bigLabel": "live keywords that were branded: the brand campaign was paused in a restructure",
   "leakIds": [
    "postclick",
    "visibility",
    "allocation"
   ],
   "stages": {
    "visibility": "l",
    "click": "l",
    "enquiry": "l",
    "booking": "n",
    "revenue": "n",
    "repeat": "n",
    "measurement": "o"
   },
   "profile": {
    "business_model": {
     "v": "Public adjusting firm. Represents policyholders against insurers. Contingency: No Recovery, No Fee.",
     "ev": "MEASURED",
     "src": "foremost-pa growth report index.html s02 Company Overview"
    },
    "industry": "Insurance claims (public adjusting), property damage",
    "target_customer": "Homeowners and commercial property owners with storm, water, roof, fire damage",
    "geography": "Coral Gables HQ. Miami-Dade, Broward, Palm Beach. Emerging Nashville TN presence.",
    "persona": "DATA NOT AVAILABLE",
    "commercial_objective": "Signed claims. Lead volume at a lower cost per lead ahead of hurricane season (Jun-Nov).",
    "revenue_mechanism": {
     "v": "Fee on settled claims. Typical 10-20% of recovery per README. Actual fee and settlement values not shared.",
     "ev": "ASSUMPTION",
     "src": "README Unique Value Proposition ('typically 10-20%'); no client fee data in any source"
    },
    "acquisition_routes": [
     "Google Search (DSA, local near-me, all-services)",
     "Organic search (foremostpa.com)",
     "Brand search (campaign paused)"
    ],
    "conversion_mechanism": "Lead form and phone call on landing pages. 89.6% of tracked conversions on mobile. Lead definition and call tracking: DATA NOT AVAILABLE."
   },
   "story60": {
    "problem": "Flat ~$1,700 monthly spend produced 7-15 leads. CPL swung $114-$209. The firm's own name had no live ad.",
    "leak": "Post-click conversion, desktop spend at $398 per lead, and brand campaign paused with 0 of 247 live keywords branded.",
    "discovered": "Monthly spend vs CVR comparison, device and geo splits, then keyword-level history for the paused brand campaign.",
    "did": "Fixed 19 crawl issues, rewrote 24 pages, mapped 140 keywords, built all-services campaign, specced brand rebuild.",
    "changed": "Crawl issues 19 to 0. HTS campaign $48 CPL on 3 leads. Brand rebuild specced, not confirmed live. No revenue claimed.",
    "evidence": "Google Ads monthly table Jan-May, device and geo exports, Screaming Frog crawl, 8 Jul 2026 keyword history.",
    "lesson": "Check what each paused campaign protected before restructuring. Lead counts this small cannot prove a CVR swing."
   },
   "problemTags": [
    "brand visibility",
    "conversion leakage",
    "budget allocation",
    "tracking leakage",
    "attribution",
    "website UX",
    "acquisition leakage"
   ],
   "stageTags": [
    "attract",
    "land",
    "convert",
    "measure"
   ],
   "bridge": [
    {
     "node": "Google Ads spend (Jan-May)",
     "value": "$8,320",
     "evidence": "MEASURED"
    },
    {
     "node": "Clicks",
     "value": "782",
     "evidence": "MEASURED"
    },
    {
     "node": "Leads",
     "value": "56 (monthly table). A second export shows 48 on a different window.",
     "evidence": "MEASURED"
    },
    {
     "node": "Signed claims",
     "value": "DATA NOT AVAILABLE",
     "evidence": "DATA NOT AVAILABLE"
    },
    {
     "node": "Settled fees",
     "value": "DATA NOT AVAILABLE",
     "evidence": "DATA NOT AVAILABLE"
    },
    {
     "node": "Return",
     "value": "Cannot calculate. README ~9.1x ROAS is leads x 25% x $45k x 12%, all assumed. Do not use.",
     "evidence": "ASSUMPTION"
    }
   ]
  },
  {
   "id": "everywatch",
   "url": "everywatch.html",
   "name": "EveryWatch",
   "industry": "Luxury-watch marketplace",
   "model": "Two-sided marketplace",
   "city": "Global, remote",
   "market": "Global",
   "status": "Past role",
   "period": "Data Jan 2024 – Aug 2025 · in-house",
   "role": "Growth & performance lead (in-house)",
   "grade": "C",
   "gradeNote": "Monthly series from an earlier case study; raw exports not re-checked",
   "leak": "Acquisition scaled; returning users stayed near one in ten",
   "kpiBig": "20×",
   "kpiText": "monthly new users in 17 months",
   "big": "20×",
   "bigLabel": "monthly new users, Jan 2024 (9,113) → May 2025 (182,782), GA4",
   "leakIds": [
    "postsale",
    "measurement"
   ],
   "stages": {
    "visibility": "o",
    "click": "n",
    "enquiry": "o",
    "booking": "n",
    "revenue": "n",
    "repeat": "l",
    "measurement": "l"
   },
   "profile": {
    "business_model": {
     "v": "Two-sided marketplace: price and listing data for watch collectors (demand) and dealers (supply).",
     "ev": "MEASURED",
     "src": "everywatch index.html s02 The Market; v2/data.py everywatch sells"
    },
    "industry": "Luxury and collectible watches, secondary market",
    "target_customer": "Collectors researching fair price, provenance and availability. Dealers listing inventory.",
    "geography": "Global; I worked remotely from Bangalore. Catalogue provenance line says 'India operation'.",
    "persona": "DATA NOT AVAILABLE",
    "commercial_objective": "Grow collector audience, then returning users, then dealer supply. Subscription or fee revenue.",
    "revenue_mechanism": {
     "v": "Unclear. Catalogue Folio V lists listing fees, dealer subscriptions or data API as candidates and says the product line in scope is undefined.",
     "ev": "DATA NOT AVAILABLE",
     "src": "catalogue.html Folio V caveat 02"
    },
    "acquisition_routes": [
     "Organic search: programmatic watch reference and model pages",
     "Google Ads (Search, PMax per catalogue; Meta also claimed)",
     "Unknown share direct, referral, social"
    ],
    "conversion_mechanism": "Sign-up, saved search and alerts, dealer handoff. Lead definition for Google Ads: DATA NOT AVAILABLE (counts inflated by multi-fire conversions)."
   },
   "story60": {
    "problem": "Monthly new users sat at 4.5K-17.7K through May 2024. Returning users stayed near one in ten as the base grew.",
    "leak": "Returning users, and measurement: paid leads inflated, revenue undefined, October 2024 totals broken. Revenue links are missing.",
    "discovered": "Back-solved paid spend from leads and ROAS. Compared GA4 users with Search Console impressions month by month.",
    "did": "Built reference-level content pages, ran paid at a small fixed budget, cut spend when lead cost rose. All claimed in narrative.",
    "changed": "New users 9,113 to 182,782 (Jan 2024 to May 2025, GA4). Returning share 7.0% to 10.2%. No revenue claimed.",
    "evidence": "GA4 users series (17 months) and Search Console impressions (19 months). Paid series is lead counts, not revenue.",
    "lesson": "A 34x ROAS was leads times $15. Define one revenue event before reporting a return. Audit any rate above 100%."
   },
   "problemTags": [
    "attribution",
    "tracking leakage",
    "retention",
    "data fragmentation",
    "budget allocation",
    "acquisition leakage"
   ],
   "stageTags": [
    "attract",
    "land",
    "convert",
    "retain",
    "measure",
    "revenue"
   ],
   "bridge": [
    {
     "node": "Organic impressions (May 2025)",
     "value": "5.23M a month",
     "evidence": "MEASURED"
    },
    {
     "node": "Organic clicks",
     "value": "1.06M lifetime stated. No monthly series.",
     "evidence": "MEASURED"
    },
    {
     "node": "New users (May 2025)",
     "value": "182,782 (GA4)",
     "evidence": "MEASURED"
    },
    {
     "node": "Paid leads (May 2025)",
     "value": "10,700, inflated; CVR 214.9% stated",
     "evidence": "MEASURED"
    },
    {
     "node": "Subscriptions or dealer revenue",
     "value": "DATA NOT AVAILABLE",
     "evidence": "DATA NOT AVAILABLE"
    },
    {
     "node": "Return on paid spend",
     "value": "Cannot calculate. 34x is leads x $15. Retired.",
     "evidence": "DATA NOT AVAILABLE"
    }
   ]
  },
  {
   "id": "swift-restoration",
   "url": "swift-restoration.html",
   "name": "Swift Restoration",
   "industry": "Emergency restoration",
   "model": "Local services, 24/7",
   "city": "Boone, Iowa",
   "market": "USA",
   "status": "Diagnostic",
   "period": "June 2026 audit",
   "role": "Audit and execution plan",
   "grade": "D",
   "gradeNote": "Site crawl, Ahrefs, SERP and ad checks; no lead or revenue data",
   "leak": "A 5.0★ operator with no service pages, no location pages and no Local Services Ads",
   "kpiBig": "0",
   "kpiText": "service or location pages at audit",
   "big": "0",
   "bigLabel": "service or location pages on the site. Service cards linked to \"#\".",
   "leakIds": [
    "visibility",
    "postclick"
   ],
   "stages": {
    "visibility": "l",
    "click": "l",
    "enquiry": "n",
    "booking": "n",
    "revenue": "n",
    "repeat": "o",
    "measurement": "n"
   },
   "profile": {
    "business_model": {
     "v": "Owner-operated emergency restoration (water, fire, mold, storm, commercial). Founded 2018. 24/7 response.",
     "ev": "MEASURED",
     "src": "README engagement table; 02-Business-Overview"
    },
    "industry": "Emergency restoration and cleanup",
    "target_customer": "Homeowners and commercial clients in 8 central-Iowa counties. Property managers noted as recurring B2B potential.",
    "geography": "Boone, IA home base. Boone, Story, Polk, Dallas, Webster, Hamilton, Greene, Guthrie counties. Des Moines metro to the south.",
    "persona": "A customer in a flood or fire, such as a flooded basement at 11pm, who calls the first credible provider.",
    "commercial_objective": "Qualified emergency phone calls, not rankings. Win Boone and Ames first.",
    "revenue_mechanism": {
     "v": "Insurance-billed jobs plus possible recurring B2B. Job value and volume not shared.",
     "ev": "DATA NOT AVAILABLE",
     "src": "02-Business-Overview 'Model' line states the model only; no figures in any source"
    },
    "acquisition_routes": [
     "Google Business Profile / map pack (5.0 stars, 15 reviews)",
     "Google Search ads (2 generic ads)",
     "Organic search (near zero for commercial terms)",
     "Local Services Ads (none)",
     "Referral and word of mouth: DATA NOT AVAILABLE"
    ],
    "conversion_mechanism": "Phone call (515 number) and request-quote form. No call tracking or analytics installed at audit."
   },
   "story60": {
    "problem": "A 5.0-star, 15-review operator has almost no digital footprint. Franchises win the emergency searches.",
    "leak": "No service pages, no location pages, no Local Services Ads, placeholder homepage title, no call tracking.",
    "discovered": "Live crawl, Screaming Frog export, Ahrefs DR, Business Profile read, Ads Transparency Center check.",
    "did": "Delivered 20-section audit, keyword workbook, competitor research and a sequenced 30/60/90/180-day plan.",
    "changed": "Nothing verified live. DATA NOT AVAILABLE for leads, calls, rankings or revenue.",
    "evidence": "Site crawl (~93 URLs), Ahrefs DR 3.2 and competitors, GBP review count, Ads Transparency Center.",
    "lesson": "Outside-in audits give a diagnosis, not a result. Install call tracking before claiming anything."
   },
   "problemTags": [
    "local search",
    "website UX",
    "tracking leakage",
    "attribution",
    "brand visibility",
    "acquisition leakage",
    "conversion leakage"
   ],
   "stageTags": [
    "attract",
    "land",
    "convert",
    "measure"
   ],
   "bridge": [
    {
     "node": "Google Search and LSA",
     "value": "DATA NOT AVAILABLE (2 ads seen; no spend, clicks or leads)",
     "evidence": "DATA NOT AVAILABLE"
    },
    {
     "node": "Google Business Profile views and calls",
     "value": "DATA NOT AVAILABLE ('Not yet captured')",
     "evidence": "DATA NOT AVAILABLE"
    },
    {
     "node": "Website sessions",
     "value": "DATA NOT AVAILABLE ('Not yet tracked')",
     "evidence": "DATA NOT AVAILABLE"
    },
    {
     "node": "Tracked phone calls and forms",
     "value": "DATA NOT AVAILABLE",
     "evidence": "DATA NOT AVAILABLE"
    },
    {
     "node": "Booked jobs",
     "value": "DATA NOT AVAILABLE",
     "evidence": "DATA NOT AVAILABLE"
    },
    {
     "node": "Revenue",
     "value": "DATA NOT AVAILABLE",
     "evidence": "DATA NOT AVAILABLE"
    }
   ]
  }
 ]
}