Case Study 03 · AI Product · 2026

Revenue Leak Calculator — Full PM process on an AI-native build

Healthcare clinics lose revenue to invisible process failures — but can't quantify it. I applied full product discipline: JTBD, PRD, architecture spec, data strategy, and shipped a live product in 4 days using AI as the development lever.

Type
Personal build · AI-native product
Stack
Claude + Claude Code + Vercel
Status
Live
Build time
4 days
4 days
Problem to deployed product
Live
calculadora.dentalgrowstack.com
Full PRD
JTBD · Architecture · Data strategy · Sprints

What this case study is about

This isn't a case study about building a tool. It's a case study about applying full product management discipline to a product I built myself, using AI as the development lever. The decisions were real. The product is live.

View live product →

The problem I identified

Dental clinic owners in Latin America operate with chronic revenue leakage — patients who don't show up, budgets that don't get accepted, treatments that start but never finish, and a dormant patient base that was never re-engaged. Most owners suspect something is wrong. None of them can quantify it.

The standard approach from growth agencies: cold outreach with vague promises about "recovering patients." The result: distrust. Clinic owners have been burned by vendors selling unsubstantiated claims.

The competitor of a revenue leak calculator isn't another calculator. It's the owner's inaction and inherited distrust from bad agency experiences. Which means the feature that matters most isn't calculation accuracy — it's credibility of the number.

Discovery: mapping the job

Before writing a single line of code, I mapped the Job to be Done.

The Job (canonical formulation)

JTBD When I suspect my clinic earns less than it could but don't know where the money is leaking or how much it is, I want to see a credible and concrete number of what I'm losing and where, so I can decide whether it's worth doing something about it — without feeling like I'm being sold to.

Forces of Progress mapping

ForceWhat it looks likeDesign response
Push (toward product)Pain of unresolved suspicion · bad month · gaps in scheduleLead with the number, not the pitch
Pull (the promise)Concrete number in 10 minutes · curiosityFast, frictionless flow
Friction (to overcome)Distrust: "Is this inflated to sell me?" · Effort: "I don't have these figures"Transparent benchmarks · editable assumptions · conservative defaults
Anchor (status quo)"I've operated like this for years" · "I'll deal with it when critical"Quantify the invisible cost of inaction

Strategic framing: the data is the product

The calculator has two simultaneous functions: a lead magnet that replaces cold outreach with value delivery, and a data capture instrument that feeds a proprietary benchmark database with every use.

The strategic principle: at 20–30 reports, I can say something no competitor can — "Based on real data from the Chilean dental market — which only we have — your leak is exactly this."

Three product horizons

H1 · Now
Trustworthy calculator
Free lead magnet. Owner trusts the number and leaves contact. Feeds benchmark database.
H2 · Next
Paid diagnosis
Owner pays for the real number with their actual data — extracted from their system.
H3 · Later
Benchmark system
Self-serve LATAM product. Certify results with market data no one else has.

Architecture decisions

The first version was a single HTML file with all logic in JavaScript — meaning anyone could read the formula in DevTools. That's the core differentiation, exposed in plain text.

Non-negotiable constraint: calculation logic cannot be visible on the client side.

Decision: move all calculation to a backend. Frontend collects inputs and displays results. Never sees the formula.

┌─────────────────┐   inputs (9 data points)   ┌──────────────────────┐
│   FRONTEND      │ ─────────────────────────▶  │   BACKEND            │
│  (owner sees)   │                             │  (no one sees)       │
│                 │ ◀─────────────────────────  │ · 4-leak logic       │
│ · Collects data │      results only           │ · ROI ramp           │
│ · Displays      │                             │ · The method         │
└─────────────────┘                             └──────┬───────────────┘
                                                       │
                           saves everything ◀──────────┤──────▶ contact only
                                   │                              │
                       ┌───────────▼──────────┐     ┌────────────▼───────┐
                       │  Benchmark database  │     │       CRM          │
                       │  (the data moat)     │     │  name, email only  │
                       └──────────────────────┘     └────────────────────┘

Boundary 1: logic never crosses to frontend
Boundary 2: detailed analysis never goes to CRM — only contact

Data quality strategy

The calculator is public. Curious visitors will type fake data. Contaminated benchmarks are a liability, not an asset. My principle: mark at entry, filter at analysis.

Don't reject data on input — that adds friction and penalizes real owners. Instead, tag each calculation with quality signals: Did they leave contact? Are values in plausible ranges? Did they complete suspiciously fast? Clean at analysis time, not entry time. With volume, noise becomes a statistical problem with known solutions.

What I decided not to build (H1)

Saying no to these in H1 was product discipline, not a resource constraint. Building H2 before H1 captures clean data is the classic mistake of jumping horizons.

How AI changed the build

PM StageHow AI was used
DiscoverySynthesizing JTBD framework, pressure-testing the Forces of Progress map
StrategyStructuring the three-horizon roadmap, defining H1 scope boundaries
ArchitectureDesigning the frontend/backend separation spec
PRDWriting a full PRD with data quality strategy before build started
BuildClaude Code for frontend and backend implementation
DesignDesign brief and visual system for Sprint 2 redesign

AI was the development lever, not the product thinking. The JTBD, the strategic framing, the architecture decisions, the data quality design — those were product judgment calls. Claude executed them.

Reflection

This project taught me something about the difference between building a tool and building a product. A tool solves a functional problem. A product manages forces — of adoption, distrust, inaction, and motivation — in addition to the functional problem.

The calculator's most important design decision wasn't technical. It was the commitment to transparency: showing benchmarks, making assumptions editable, defaulting to conservative estimates. That's the anti-distrust mechanism. It's also what makes it hard to copy.

The data quality strategy was the most counterintuitive decision: don't reject bad data at entry, mark it and filter at analysis. That feels wrong until you understand the goal isn't a clean form — it's a usable benchmark database. Different problems, different solutions.

What I'd do differently: instrument the funnel from day one. The first version had zero visibility into where users dropped off. That's the most expensive technical debt in a product built to learn.

← HSJD Emergency Redesign Next: Kira →