Lead-first analytics for local businesses

The idea

The crowd has judged generic web analytics a commodity three times over β€” privacy-first pageview tools at $9-20/mo all rated replaceable. But a plumber never wanted pageviews in the first place. The question that matters is whether the $300/mo Google Ads spend or the free Business Profile produced the $4,000 repipe job, and no pageview dashboard can answer it because the lead arrives as a phone call.

The wedge is call tracking plus form attribution collapsed into one screen a non-marketer reads in ten seconds. CallRail answers this question but charges $45+/mo and looks like a tool for agencies, because it is one. A $29/mo product with five source buckets, junk-call filtering, and a three-sentence Monday email is what the owner actually wants β€” and the missed-calls count alone changes behavior in week one.

Who pays

The buyer is the owner of a plumbing, HVAC, roofing, landscaping, or similar local service business, paying $29/mo β€” self-serve, no sales call. The stronger channel is the agencies and freelancers who build these owners’ websites: they install it on every client site to prove their own value, so offer a white-label tier later. Distribute through web-designer communities, local-SEO forums, and comparison content against CallRail pricing.

MVP scope

  • One-tag install with five-bucket source classification, cookieless
  • Dynamic number insertion with Twilio numbers per source, instant forwarding
  • Call logging with junk-call filtering and missed-call tracking
  • Form submission capture with matching attribution
  • One-screen dashboard plus the Claude-written weekly email
  • Skip for v1: keyword-level attribution, call recording/transcription, white-label, Google Ads API import
// Build prompt β€” paste into Cursor / Claude Code / Lovable / Bolt
Build LeadLens, analytics for local service businesses that counts leads, not pageviews. Stack: Next.js (App Router) on Vercel, Twilio for tracking numbers and call webhooks, Postgres via Prisma for events and attribution, Claude API for the weekly plain-English email.

Core flow: owner adds one script tag. The script classifies each visit's source into five buckets only β€” Google Ads, Google Business Profile, organic search, Facebook/Instagram, direct/other β€” and swaps the site's displayed phone number for a Twilio tracking number assigned per source (dynamic number insertion, 5 numbers per site). Calls forward instantly to the real line; Twilio webhooks log source, duration, and first-time-caller status. Form submissions are captured by listening for submit events on any form with a phone or email field, attributed to the same source buckets.

Dashboard is one screen: this month's leads by source, calls vs forms, answered vs missed calls. No funnels, no segments, no jargon. Every Monday, Claude writes a three-sentence email: leads this week, best channel, one anomaly worth knowing (you missed 6 calls after 5pm).

Non-obvious details: number-swap must run before first paint via an inline snippet to avoid flashing the real number; mark calls under 20 seconds as junk so wrong numbers do not inflate lead counts.

Pricing: $29/mo including 5 tracking numbers and 500 call minutes, overage metered. Stripe billing, 14-day trial.

// More Micro-SaaS ideas