<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://sourav.sh/feed.xml" rel="self" type="application/atom+xml" /><link href="https://sourav.sh/" rel="alternate" type="text/html" /><updated>2026-05-08T11:07:15+00:00</updated><id>https://sourav.sh/feed.xml</id><title type="html">Field Notes</title><subtitle>Quick docs, instantly shareable.
</subtitle><author><name>Sourav Padhi</name></author><entry><title type="html">Clarity Migrate</title><link href="https://sourav.sh/clarity-migrate.html" rel="alternate" type="text/html" title="Clarity Migrate" /><published>2026-05-08T00:00:00+00:00</published><updated>2026-05-08T00:00:00+00:00</updated><id>https://sourav.sh/clarity-migrate</id><content type="html" xml:base="https://sourav.sh/clarity-migrate.html"><![CDATA[<h2 id="the-problem-were-solving">The Problem We’re Solving</h2>

<p>Every year, hundreds of health systems in the United States switch their electronic health record system to Epic. Some are moving from Cerner. Some from Meditech. Some from Allscripts. Some are consolidating multiple Epic instances into one.</p>

<p>When this happens, the clinical side gets most of the attention — training doctors, mapping workflows, configuring order sets. But behind the scenes, there’s a massive data problem that nobody talks about until it’s too late.</p>

<h3 id="the-pipeline-problem">The Pipeline Problem</h3>

<p>Over the years, every health system builds hundreds of data pipelines. These are automated processes that move data from the EHR into reporting systems, analytics platforms, data warehouses, billing systems, quality dashboards, and regulatory feeds.</p>

<p>A typical health system has:</p>
<ul>
  <li>200-500 Informatica PowerCenter mappings</li>
  <li>50-150 SQL stored procedures</li>
  <li>30-80 HL7 interface feeds</li>
  <li>20-50 flat-file extracts</li>
  <li>Dozens of custom scripts nobody documented</li>
</ul>

<p>Every single one of these pipelines reads from tables in the old EHR. When you switch to Epic, those old tables don’t exist anymore. The data is now in Epic’s Clarity database, which has a completely different structure — different table names, different column names, different conventions for how data is stored.</p>

<p>Every pipeline must be rewritten.</p>

<h3 id="why-this-is-so-painful">Why This Is So Painful</h3>

<p><strong>It takes forever.</strong> Each pipeline takes a consultant 2-5 days to manually convert. With 500 pipelines, that’s 1,500 days of work — roughly 18 months with a team of 8 people.</p>

<p><strong>It costs a fortune.</strong> At consulting rates, that’s $10-20 million in professional services just for the data migration. This comes on top of the $100M+ the health system is already spending on the Epic implementation itself.</p>

<p><strong>It requires rare expertise.</strong> To convert a pipeline, you need someone who understands both the old system (Cerner’s data model) and the new system (Epic’s Clarity database). These people are extremely hard to find. On a team of 8 consultants, usually only 2-3 know both systems well enough.</p>

<p><strong>The quality is inconsistent.</strong> Junior consultants miss subtle but critical details about how Epic stores data. They sort by the wrong date column. They assume the first diagnosis in a list is the primary one. They use numeric codes instead of text values. These bugs are invisible during development and only surface in production — where they cause billing delays, incorrect quality reports, and compliance failures.</p>

<p><strong>The deadline doesn’t move.</strong> Epic go-live dates are immovable. If the data pipelines aren’t ready, the health system operates blind — no dashboards, no reports, no analytics. Revenue suffers. Patient safety suffers.</p>

<h3 id="the-hidden-complexity-of-epics-data">The Hidden Complexity of Epic’s Data</h3>

<p>Epic’s database isn’t just big (18,000-30,000 tables). It’s genuinely strange. It was originally built on a 1960s programming language called MUMPS, and many of those design decisions survive today in the form of patterns that look wrong to anyone trained on modern databases.</p>

<p>For example:</p>
<ul>
  <li>When a patient has multiple diagnoses for a visit, they’re stored with a LINE number. But LINE 1 is NOT the primary diagnosis — it’s just the first one entered. The primary diagnosis could be at LINE 5. There’s a separate flag field you have to check.</li>
  <li>When you need to sort events chronologically, you can’t use the date column. Multiple events on the same day all have the same date. Instead, Epic has a special decimal number that encodes both the date AND the sequence. You have to sort by that decimal number. This number counts days since December 31, 1840. Why 1840? Because that’s what the MUMPS programming language chose in the 1960s.</li>
  <li>Category values like “Completed,” “Scheduled,” “Canceled” are stored as text, not as numeric codes. There are no lookup tables. You have to match on the exact text.</li>
  <li>ICD-10 diagnosis codes (which you need for billing and quality reporting) are NOT in the diagnosis table where you’d expect them. They’re buried three joins deep through the claims tables.</li>
  <li>A field called INPATIENT_DATA_ID sounds like it identifies hospital admissions. It doesn’t. 95% of records with this field are outpatient visits. It actually enables a workflow tracking feature.</li>
</ul>

<p>Every migration team discovers these gotchas the hard way. Usually in production. Usually at great cost.</p>

<hr />

<h2 id="what-clarity-migrate-does">What Clarity Migrate Does</h2>

<p>Clarity Migrate converts legacy data pipelines to Epic Clarity automatically. You give it a pipeline file from your old system, and it gives you back a working Epic-native pipeline — tested, validated, and ready to deploy.</p>

<p>The core idea: an AI agent that has been taught everything about Epic’s data model — all 6,630 documented tables, all 55,159 columns, all the naming conventions, all the gotchas — and uses that knowledge to do in minutes what a human consultant does in days.</p>

<h3 id="how-it-works--the-simple-version">How It Works — The Simple Version</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>You:      Here's a Cerner Informatica mapping that builds a patient demographics table.
          [drops XML file]

Kiro:     Reading... Found 2 source tables (PATIENT, CLARITY_SER).
          Verified both exist in Epic Clarity.
          Found 4 transformations: filter, expression, lookup, load.

          Generated:
          ✓ PySpark job (148 lines)
          ✓ Target table DDL
          ✓ 26 automated tests
          ✓ All tests passing

          Done in 3 minutes.
</code></pre></div></div>

<h3 id="how-it-works--the-detailed-version">How It Works — The Detailed Version</h3>

<p><strong>Step 1: Understanding the source.</strong>
The agent reads the legacy pipeline file. If it’s an Informatica XML, it parses the source tables, target table, transformations (filters, expressions, lookups, joins, aggregations), and the data flow between them. If it’s SQL, it extracts the table references, joins, WHERE clauses, and business logic.</p>

<p><strong>Step 2: Finding the Epic equivalents.</strong>
For each table referenced in the old pipeline, the agent searches an index of Epic’s 6,630 tables to find the equivalent. If the old pipeline reads from Cerner’s CV3_ENCOUNTER table, the agent finds that the Epic equivalent is PAT_ENC. It looks up the exact column names, data types, and relationships.</p>

<p>When there’s no perfect match (for example, Cerner’s CV3_CLINICAL_EVENT maps loosely to Epic’s ORDER_PROC with only 87% confidence), the agent flags it for human review and explains why.</p>

<p><strong>Step 3: Applying Epic’s rules.</strong>
This is where the agent earns its keep. It reads a set of rules about how Epic stores data — the patterns that trip up every migration team — and applies them to the generated code.</p>

<p>If the old pipeline sorts by a date column, the agent knows to use Epic’s decimal _REAL column instead. If the old pipeline looks up a diagnosis code, the agent knows that ICD-10 codes are in the CLM_DX table, not CLARITY_EDG. If the old pipeline filters on a status code, the agent knows to use the text value (‘Completed’), not a number (‘2’).</p>

<p>These aren’t guesses. These are rules derived from Epic’s official documentation and validated against real Epic data.</p>

<p><strong>Step 4: Generating the code.</strong>
The agent writes a complete PySpark job that reads from Epic Clarity (via JDBC), applies all the transformation logic from the original pipeline, and writes the results to the target data warehouse (Snowflake or Postgres). The code uses environment variables for all database credentials — never hardcoded.</p>

<p>It also writes a CREATE TABLE statement for the target table, with proper data types, primary keys, and indexes.</p>

<p><strong>Step 5: Writing and running tests.</strong>
The agent writes automated tests that verify the generated code is correct:</p>
<ul>
  <li>Does the code compile?</li>
  <li>Does it reference the right source and target tables?</li>
  <li>Are database credentials coming from environment variables (not hardcoded)?</li>
  <li>Are the key transformation keywords present (filter, join, age calculation, gender mapping)?</li>
  <li>Are Epic patterns applied correctly?</li>
</ul>

<p>Then it runs the tests. If any fail, it reads the error, fixes the code, and re-runs. It keeps trying until all tests pass (up to 3 attempts).</p>

<p><strong>Step 6: Proving it works.</strong>
Once tests pass, the agent can run the actual PySpark job against test databases — a MySQL instance with sample Epic data (source) and a Postgres instance (target). It verifies that data actually landed in the target table, checks row counts, validates the schema, and runs the job twice to confirm it’s idempotent (produces the same results on re-run).</p>

<p><strong>Step 7: Committing the code.</strong>
Only after the proof passes does the agent commit the code to git. It creates a branch with a timestamp, writes a commit message summarizing what was converted and the proof results, and pushes. If the proof didn’t pass, nothing is pushed. Broken code never makes it to the repository.</p>

<hr />

<h2 id="the-four-modes">The Four Modes</h2>

<h3 id="read-mode--what-do-i-have">Read Mode — “What do I have?”</h3>

<p>You drop legacy pipeline files into Read mode and get back an analysis report. No code is generated. The agent tells you:</p>
<ul>
  <li>What source tables the pipeline references</li>
  <li>What the Epic equivalent is for each one (with confidence scores)</li>
  <li>What transformations are applied (filters, joins, aggregations)</li>
  <li>What flags to watch out for (ambiguous mappings, missing equivalents)</li>
  <li>How complex the conversion will be</li>
</ul>

<p><strong>When you use this:</strong> Day 1 of a migration engagement. Drop all 500 pipelines at once and get a complete inventory — what can be auto-converted, what needs manual review, and how long the project will take. This report alone is worth $50-100K to a health system because it replaces days of manual discovery.</p>

<h3 id="write-mode--build-me-something-new">Write Mode — “Build me something new.”</h3>

<p>You describe what you need in plain English, and the agent builds it from scratch. You don’t need a source pipeline — just a requirement.</p>

<p>“Build a pipeline that creates a 30-day readmission fact table from Epic Clarity, including patient demographics, admission diagnosis, length of stay, and the department of the index visit.”</p>

<p>The agent figures out which Epic tables to use (PAT_ENC, PAT_ENC_HSP, PROBLEM_LIST, CLARITY_DEP), how to join them, how to calculate length of stay, and how to identify a readmission. It writes the PySpark, the DDL, the tests, and runs everything.</p>

<p><strong>When you use this:</strong> Post-migration, when the health system needs new analytics capabilities that didn’t exist in the old system. Instead of scoping a multi-day project, you get working code in minutes.</p>

<h3 id="bidi-mode--convert-this-end-to-end">Bidi Mode — “Convert this end-to-end.”</h3>

<p>The full conversion pipeline. Give it a legacy pipeline file, and it does everything: reads, maps, generates code, tests, proves, and pushes to git.</p>

<p>This is the main work mode during a migration sprint. A data engineer feeds 20 pipelines per day through Bidi mode, reviews the output, and merges the pull requests. What used to take the team months now takes days.</p>

<p><strong>When you use this:</strong> The daily conversion workflow during a migration project. This is the mode that turns a 14-month project into a days-long project.</p>

<h3 id="ask-mode--answer-a-question">Ask Mode — “Answer a question.”</h3>

<p>You ask a question about Epic data in plain English, and the agent generates the SQL, runs it, and gives you the answer along with an explanation of which tables it used and why.</p>

<p>“How many diabetic patients had an ER visit in the last 90 days and were readmitted within 30 days?”</p>

<p>The agent knows that “diabetic” means searching PROBLEM_LIST for active diabetes diagnoses. It knows “ER visit” means filtering PAT_ENC by department name (not a dedicated encounter type column). It knows “readmitted” means checking PAT_ENC_HSP for hospital admissions within 30 days. It knows to sort by the decimal _REAL date, not the text date column. It writes a 30-line SQL query that a human analyst would take an hour to construct.</p>

<p><strong>When you use this:</strong> Ongoing, forever. Every analyst, every CMIO, every VP of Revenue Cycle can query Epic data without knowing SQL or Epic’s schema. This is the mode that creates recurring SaaS revenue.</p>

<p><strong>What makes Ask mode different from ChatGPT or any generic text-to-SQL tool:</strong>
A generic LLM would write <code class="language-plaintext highlighter-rouge">SELECT * FROM patients WHERE diagnosis = 'diabetes'</code>. That query doesn’t work in Epic. There is no <code class="language-plaintext highlighter-rouge">patients</code> table with a <code class="language-plaintext highlighter-rouge">diagnosis</code> column.</p>

<p>Our agent knows Epic. It knows the patient table is called PATIENT. Diagnoses are in PROBLEM_LIST (for ongoing conditions) or PAT_ENC_DX (for visit-specific ones). The diagnosis name is in CLARITY_EDG, joined by DX_ID. Active problems have PROBLEM_STATUS_C_NAME = ‘Active’ (text, not a number). And to get the ER department, you join PAT_ENC to CLARITY_DEP on DEPARTMENT_ID and filter by DEPARTMENT_NAME.</p>

<p>This level of Epic-specific knowledge is what separates a toy demo from a real product.</p>

<hr />

<h2 id="who-this-is-for">Who This Is For</h2>

<h3 id="the-consulting-firm-cardamom-health">The Consulting Firm (Cardamom Health)</h3>

<p>Cardamom Health is an Epic consulting firm based in Madison, Wisconsin, founded by former Epic employees. They serve 150+ health systems doing Epic optimization, data services, and AI/ML. Their CTO has publicly advocated for agentic AI approaches to healthcare data problems.</p>

<p><strong>Their current model:</strong> Charge by the hour. Revenue is linear with headcount. To do more work, they need more consultants. Finding consultants who know both legacy EHRs and Epic is their biggest hiring constraint.</p>

<p><strong>With Clarity Migrate:</strong></p>
<ul>
  <li><strong>Read mode</strong> becomes a product they can sell: a migration assessment for $50-100K, delivered in hours instead of weeks</li>
  <li><strong>Bidi mode</strong> makes their existing consultants 10x more productive: they review agent output instead of writing code from scratch</li>
  <li><strong>Ask mode</strong> becomes a SaaS product: self-service Epic analytics sold as a monthly subscription to every health system they serve</li>
  <li>Junior consultants become productive in days instead of months — they learn Epic patterns by reviewing agent output</li>
</ul>

<p>The revenue model shifts from selling hours to selling outcomes.</p>

<h3 id="the-health-system-cio">The Health System CIO</h3>

<p>The person who has to deliver the Epic migration on time and on budget.</p>

<p><strong>Their nightmare:</strong> Pipeline conversions fall behind schedule. The data team is the bottleneck. Go-live happens with broken dashboards, missing reports, and incorrect quality measures. The board asks why they spent $100M on an EHR that can’t produce a readmission report.</p>

<p><strong>With Clarity Migrate:</strong></p>
<ul>
  <li>Day 1: Complete pipeline inventory with complexity scores and timeline estimates</li>
  <li>Days 2-5: Automated conversion of 500 pipelines with proof reports</li>
  <li>Go-live: Every pipeline tested, proven, and committed. No surprises.</li>
  <li>Post go-live: Self-service analytics for everyone who needs data</li>
</ul>

<h3 id="the-clinical-informaticist-cmio">The Clinical Informaticist (CMIO)</h3>

<p>The doctor or nurse who bridges clinical practice and IT.</p>

<p><strong>Their frustration:</strong> They need data answers but can’t write SQL. Every question is a 3-5 day IT ticket. By the time the answer comes back, the meeting is over, the decision is made, and the data would have changed the outcome.</p>

<p><strong>With Clarity Migrate Ask mode:</strong></p>
<ul>
  <li>“What’s our 30-day readmission rate for heart failure patients?” → Answer in 10 seconds</li>
  <li>“Which departments have the highest no-show rate?” → Answer in 10 seconds</li>
  <li>“Compare medication count per patient between 2024 and 2025” → Answer in 10 seconds</li>
  <li>Export the SQL, share it with IT for the official dashboard</li>
</ul>

<h3 id="the-vp-of-revenue-cycle">The VP of Revenue Cycle</h3>

<p>The person responsible for making sure the health system gets paid.</p>

<p><strong>Their fear:</strong> A broken billing pipeline delays $2M per week in claims. The billing data model is the most complex part of Epic — 35+ tables with no direct link between clinical encounters and billing transactions. The previous migration team missed the ICD-10 code location and the CSN linkage path. It took 3 months to find and fix those bugs.</p>

<p><strong>With Clarity Migrate:</strong></p>
<ul>
  <li>The billing-expert knowledge file encodes every critical join path and gotcha</li>
  <li>The agent knows ICD-10 codes are in CLM_DX (not CLARITY_EDG)</li>
  <li>The agent knows to bridge through ARPB_VISITS (not try a direct CSN join)</li>
  <li>Proof reports verify billing data before go-live</li>
  <li>Zero revenue leakage on Day 1</li>
</ul>

<h3 id="the-data-engineer">The Data Engineer</h3>

<p>The person who actually writes the code.</p>

<p><strong>Their reality:</strong> They spend 70% of their time on research — looking up Epic table documentation, figuring out which table to use, understanding join patterns — and 30% on actual coding. Epic has 18,000+ tables. The documentation is one table at a time with no cross-referencing. They keep forgetting the rules (is LINE 1 the primary diagnosis? which date column do I sort by?).</p>

<p><strong>With Clarity Migrate:</strong></p>
<ul>
  <li>Read mode: Drop the XML, immediately see which Epic tables to use</li>
  <li>Write mode: Describe the pipeline, get working code with tests</li>
  <li>The agent applies all the patterns correctly every time — no more forgetting</li>
  <li>Tests are generated automatically — no more skipping them under deadline pressure</li>
  <li>They review and refine instead of writing from scratch</li>
  <li>They learn Epic patterns by reading the agent’s output</li>
</ul>

<hr />

<h2 id="the-epic-knowledge-engine">The Epic Knowledge Engine</h2>

<p>The reason this works is the knowledge layer. It’s not a generic AI writing code. It’s an AI that has been systematically taught the complete Epic data model and the rules that experienced consultants learn over years of practice.</p>

<h3 id="how-the-knowledge-is-organized">How the knowledge is organized</h3>

<p><strong>The schema index.</strong> All 6,630 Epic table schemas from Epic’s official documentation site (open.epic.com/EHITables) are loaded into a SQLite database with full-text search. When the agent needs to find a table related to “billing transactions,” it runs one SQL query and gets results in milliseconds. This is critical — without the index, the agent would have to scan 6,630 individual files and would time out before finding anything useful.</p>

<p><strong>The pattern rules.</strong> Six rules that govern how Epic stores data differently from every other database. These rules are encoded in a markdown file that the agent reads before generating any code. Every rule includes examples of what’s wrong (the way a generic LLM would do it) and what’s correct (the way an Epic expert does it).</p>

<p><strong>The domain knowledge.</strong> Separate files for billing and clinical data that contain the join paths, gotchas, and domain-specific rules that can’t be inferred from the schema alone. For example, the billing file documents that there’s no direct link between clinical encounters and billing transactions — you have to go through a bridge table — and explains why this matters and how to handle it.</p>

<p><strong>The cross-EHR mappings.</strong> A file that maps table names from Cerner, Meditech, and Allscripts to their Epic equivalents, with confidence scores. This is what enables the agent to understand a Cerner pipeline and know which Epic tables to use.</p>

<h3 id="why-this-cant-be-replicated-by-prompting-chatgpt">Why this can’t be replicated by prompting ChatGPT</h3>

<p>You could paste Epic documentation into ChatGPT and ask it to convert a pipeline. Here’s why that doesn’t work:</p>

<ol>
  <li>
    <p><strong>Context window limits.</strong> Epic’s documentation is millions of tokens. You can’t fit it all in one prompt. You need a searchable index.</p>
  </li>
  <li>
    <p><strong>Hallucination.</strong> Without verified schema data, the LLM will confidently generate table and column names that don’t exist. Our agent searches the actual schema database and only uses verified tables.</p>
  </li>
  <li>
    <p><strong>Pattern application.</strong> Knowing that LINE ≠ priority is different from consistently applying that rule across every query in a 150-line PySpark job. Our pattern rules are injected into the agent’s system prompt so they’re applied to every line of generated code.</p>
  </li>
  <li>
    <p><strong>Validation loop.</strong> ChatGPT generates code and hopes it works. Our agent generates code, writes tests, runs them, reads the failures, fixes the code, and re-runs until everything passes. This self-correction loop catches the mistakes that slip through on the first attempt.</p>
  </li>
  <li>
    <p><strong>Domain-specific join paths.</strong> The CSN-to-billing linkage, the ICD-10 code location, the INPATIENT_DATA_ID misnomer — these are things you only learn from years of Epic experience. We’ve encoded them so the agent knows them from day one.</p>
  </li>
</ol>

<hr />

<h2 id="the-dashboard">The Dashboard</h2>

<p>The platform includes a web dashboard built on Next.js with a Cloudflare-inspired dark design. It provides a visual interface for all four modes.</p>

<p><strong>Overview.</strong> Stats at a glance: 6,630 schemas loaded, 414 tables with data, 5 subagents active. Quick-action cards for each mode. Recent run history with status badges.</p>

<p><strong>Read page.</strong> Drag-drop area for pipeline files. Source EHR selector (Cerner, Meditech, Allscripts, Athena). Analyze button. Results show mapping table with confidence scores, flags for ambiguous mappings, and the full agent trace.</p>

<p><strong>Write page.</strong> Text input for natural language requirements. Example prompts to get started. Generated file list with line counts. View code button.</p>

<p><strong>Bidi page.</strong> File upload plus a stage progress bar (READ → WRITE → TEST → PROVE). Live streaming terminal showing agent activity — which schemas it’s searching, which patterns it’s applying, which files it’s writing. Proof report with row counts and verification status.</p>

<p><strong>Ask page.</strong> Text input for plain English questions. Example queries. Big answer display with the SQL that generated it, the tables used, and explanatory notes. Query history.</p>

<p><strong>Runs page.</strong> Table of all runs with mode, pipeline name, status, duration, and table count. Filter and sort.</p>

<p><strong>Settings page.</strong> Integration cards for Epic Clarity (source), Snowflake (target), PostgreSQL (dev target), GitHub (code push), and AWS Bedrock (LLM). Each card shows connection status, configuration details, and test/edit buttons. Security section showing PHI redaction, audit trail, encryption, and telemetry status.</p>

<hr />

<h2 id="security">Security</h2>

<p>The platform is designed for HIPAA-covered environments.</p>

<p><strong>What the agent processes:</strong> Table names, column names, data types, SQL structures, ETL logic. This is metadata — descriptions of the data structure, not patient data itself.</p>

<p><strong>What the agent never sees:</strong> Individual patient records, names, dates of birth, social security numbers, or any other protected health information.</p>

<p><strong>Even so, every precaution is taken:</strong></p>

<p>All text that passes through the system is scrubbed for 18 categories of protected health information before being logged, stored, or sent to the LLM. Social security numbers, medical record numbers, phone numbers, email addresses, dates of birth, IP addresses, patient names, ZIP codes, and account numbers are all redacted automatically.</p>

<p>Every action the agent takes is recorded in an immutable audit log. Each entry includes a timestamp, the action performed, the source and target, and an HMAC signature that makes tampering detectable.</p>

<p>Database credentials are encrypted at rest using industry-standard encryption. In generated code, credentials always come from environment variables — never hardcoded.</p>

<p>The agent binary has been stripped of all telemetry. There are zero outbound network calls except to the AWS Bedrock API (which runs in the customer’s own AWS account under their own HIPAA Business Associate Agreement). No data phones home. No analytics. No tracking.</p>

<p>The container runs as a non-root user with read-only access to source files and write access only to the output workspace.</p>

<hr />

<h2 id="what-weve-proven">What We’ve Proven</h2>

<h3 id="the-test-suite">The test suite</h3>

<p>We ran 10 automated tests covering every capability of the platform:</p>

<ul>
  <li><strong>Schema search:</strong> Can the agent find Epic tables related to encounters? To billing? (Passed in 16-44 seconds)</li>
  <li><strong>Pattern knowledge:</strong> Does the agent correctly explain LINE joins? _REAL date sorting? (Passed in 23-26 seconds)</li>
  <li><strong>Clinical domain:</strong> Can the agent design a readmission query with the right tables and gotchas? (Passed in 52 seconds)</li>
  <li><strong>Billing domain:</strong> Does the agent know the CSN-to-billing linkage path? Where ICD-10 codes live? (Passed in 22 seconds)</li>
  <li><strong>Cross-EHR mapping:</strong> Can the agent map 5 Cerner tables to Epic with confidence scores? (Passed in 64 seconds)</li>
  <li><strong>Full Read mode:</strong> Can the agent analyze a complete Cerner SQL pipeline and produce a mapping report? (Passed in 91 seconds)</li>
  <li><strong>Ask mode (clinical):</strong> Can the agent write a 30-line diabetic readmission SQL query using correct Epic patterns? (Passed in 92 seconds)</li>
  <li><strong>Ask mode (billing):</strong> Can the agent write an AR aging query? (Timed out at 2 minutes — query was too complex for the time limit, but partial output was correct)</li>
</ul>

<p>9 out of 10 passed. The one timeout was a limit issue, not a quality issue.</p>

<h3 id="the-live-conversion">The live conversion</h3>

<p>We ran a full Bidi conversion on a real Informatica PowerCenter mapping (m_patient_demographics.xml). The agent:</p>

<ol>
  <li>Parsed the XML and identified 2 source tables, 1 target table, and 4 transformations</li>
  <li>Verified both source tables exist in Epic’s schema index</li>
  <li>Applied Epic conventions (text category values for gender, date arithmetic for age)</li>
  <li>Generated a 148-line PySpark job with JDBC connectivity, filtering, expressions, and a provider lookup join</li>
  <li>Generated a CREATE TABLE with primary key and indexes</li>
  <li>Generated 26 automated tests covering compilation, table names, credential safety, and transformation logic</li>
  <li>Ran all 26 tests — all passed</li>
  <li>Produced a conversion report with full traceability, including a flag that one column (SPECIALTY) doesn’t appear in Epic’s schema index</li>
</ol>

<p>Total time: approximately 3 minutes.</p>

<p>This is a pipeline that would take a consultant 2-3 days.</p>

<hr />

<h2 id="the-business-opportunity">The Business Opportunity</h2>

<h3 id="the-market">The market</h3>

<ul>
  <li>40% of hospital IT leaders are planning EHR migration projects in 2026</li>
  <li>Epic is the dominant destination — they hold 38% of the US hospital market and growing</li>
  <li>Each migration involves 200-1,000+ data pipelines that must be converted</li>
  <li>The data migration component typically costs $10-20M in professional services</li>
</ul>

<h3 id="the-math">The math</h3>

<table>
  <thead>
    <tr>
      <th> </th>
      <th>Manual</th>
      <th>Clarity Migrate</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Pipelines</td>
      <td>500</td>
      <td>500</td>
    </tr>
    <tr>
      <td>Time per pipeline</td>
      <td>3 days</td>
      <td>4 minutes</td>
    </tr>
    <tr>
      <td>Total effort</td>
      <td>1,500 days</td>
      <td>33 hours</td>
    </tr>
    <tr>
      <td>Calendar time</td>
      <td>18 months</td>
      <td>2 days</td>
    </tr>
    <tr>
      <td>Cost</td>
      <td>$15M+</td>
      <td>~$50K compute</td>
    </tr>
  </tbody>
</table>

<p>Even if we’re conservative and assume the agent handles 60% of pipelines fully automatically and 40% need human review, the project drops from 18 months to days and the cost drops by 80%.</p>

<h3 id="the-revenue-model">The revenue model</h3>

<table>
  <thead>
    <tr>
      <th>Mode</th>
      <th>When</th>
      <th>Revenue</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Read</td>
      <td>Day 1 of engagement</td>
      <td>Migration assessment fee ($50-100K)</td>
    </tr>
    <tr>
      <td>Bidi</td>
      <td>Days 2-5</td>
      <td>Project delivery (same fee, 10x faster, higher margin)</td>
    </tr>
    <tr>
      <td>Write</td>
      <td>Post-migration</td>
      <td>Analytics pipeline upsell</td>
    </tr>
    <tr>
      <td>Ask</td>
      <td>Ongoing</td>
      <td>SaaS subscription (per seat per month)</td>
    </tr>
  </tbody>
</table>

<p>Read and Bidi are project revenue. Ask is recurring revenue. The platform serves both models.</p>

<h3 id="the-competitive-advantage">The competitive advantage</h3>

<p>Nobody else has this combination:</p>
<ol>
  <li>A headless, HIPAA-hardened autonomous agent</li>
  <li>An indexed knowledge base of Epic’s complete schema catalog</li>
  <li>Domain-specific rules for billing and clinical data</li>
  <li>Cross-EHR mapping tables with confidence scoring</li>
  <li>A prove-then-push validation loop</li>
  <li>All four modes (Read, Write, Bidi, Ask) on the same knowledge layer</li>
</ol>

<p>Generic text-to-SQL tools don’t know Epic. Epic consultants don’t have agents. We have both.</p>]]></content><author><name>Sourav Padhi</name></author><category term="engineering" /><category term="data" /><summary type="html"><![CDATA[The Problem We’re Solving]]></summary></entry><entry><title type="html">Data Migration Strategies for Healthcare Systems</title><link href="https://sourav.sh/data-migration-strategies.html" rel="alternate" type="text/html" title="Data Migration Strategies for Healthcare Systems" /><published>2026-05-07T00:00:00+00:00</published><updated>2026-05-07T00:00:00+00:00</updated><id>https://sourav.sh/data-migration-strategies</id><content type="html" xml:base="https://sourav.sh/data-migration-strategies.html"><![CDATA[<h2 id="overview">Overview</h2>

<p>There are three approaches to data migration when modernizing healthcare systems. The choice depends on how the system is used and the organization’s priorities. In healthcare, these map to <strong>risk tiers</strong> — not just technical approaches.</p>

<table>
  <thead>
    <tr>
      <th>Strategy</th>
      <th>Risk</th>
      <th>What Moves</th>
      <th>Timeline</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Reader-First</td>
      <td>Low</td>
      <td>Reports, dashboards, analytics queries</td>
      <td>Month 1-6</td>
    </tr>
    <tr>
      <td>Bi-Directional</td>
      <td>Moderate</td>
      <td>Parallel systems during transition</td>
      <td>Month 3-9</td>
    </tr>
    <tr>
      <td>Writer-First</td>
      <td>High</td>
      <td>ETL pipelines, data feeds, write-backs</td>
      <td>Month 6-12</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="why-healthcare-is-different">Why Healthcare is Different</h2>

<p>Healthcare isn’t “move data from A to B.” It’s a regulated, high-stakes environment where:</p>

<ul>
  <li>A broken report can delay a CMS submission — <strong>financial penalties</strong></li>
  <li>A bad data write can surface wrong info in a clinical workflow — <strong>patient safety risk</strong></li>
  <li>Any data movement touching PHI needs audit trails — <strong>HIPAA compliance</strong></li>
  <li>Epic changes the Clarity schema with every upgrade — <strong>moving target</strong></li>
</ul>

<hr />

<h2 id="strategy-1-reader-first-migration">Strategy 1: Reader-First Migration</h2>

<h3 id="what-it-means">What it means</h3>

<p>Migrate everything that <strong>reads</strong> from Epic Clarity/Caboodle — reports, dashboards, quality measures, analytics queries. These are read-only operations that present data to analysts, clinicians, and executives.</p>

<h3 id="why-hospitals-start-here">Why hospitals start here</h3>

<ul>
  <li>No risk to patient data integrity (read-only, nothing writes back)</li>
  <li>Immediate, visible ROI (reports run 10x faster on Snowflake)</li>
  <li>Regulatory reports (HEDIS, CMS Stars, meaningful use) modernize without touching clinical workflows</li>
  <li>Analysts can self-serve instead of waiting in the Crystal Reports queue</li>
</ul>

<h3 id="how-it-works-in-clarity">How it works in Clarity</h3>

<p><strong>Sarah (Data Architect) logs into Clarity.</strong></p>

<p>She goes to Migrate, creates a new migration, and connects the GitHub repo where Informatica XMLs are stored. She picks “Reader-First” strategy.</p>

<p>The agent runs. 10 minutes later she has:</p>
<ul>
  <li>41 PySpark jobs generated</li>
  <li>41 DDL files for Snowflake tables</li>
  <li>738 tests, all green</li>
  <li>A conversion report showing every Informatica expression mapped to PySpark</li>
</ul>

<p>She clicks into the completed job and sees the lineage map — every source table flowing through transformations into target tables. She screenshots this for the steering committee deck.</p>

<p>She shares the lineage map link with James (the consultant). He opens it, sees the full picture, and flags that 3 mappings reference a deprecated table (<code class="language-plaintext highlighter-rouge">PAT_ENC_HSP</code>) that was merged into <code class="language-plaintext highlighter-rouge">PAT_ENC</code> in Clarity 23.1. The agent already flagged this in the conversion report.</p>

<h3 id="what-the-agent-generates">What the agent generates</h3>

<p>For each Informatica XML mapping, the agent produces:</p>
<ul>
  <li>A PySpark job that reads from MySQL (Epic Clarity), applies the same transformations, and writes to Snowflake</li>
  <li>A Snowflake DDL file (CREATE TABLE with correct types)</li>
  <li>Automated tests validating the conversion</li>
  <li>A conversion report with lineage, patterns used, and test results</li>
</ul>

<h3 id="supported-source-formats">Supported source formats</h3>

<ul>
  <li>Informatica PowerCenter XML (available today)</li>
  <li>Crystal Reports .rpt (planned)</li>
  <li>SSRS .rdl (planned)</li>
  <li>Business Objects .rep/.biar (planned)</li>
</ul>

<hr />

<h2 id="strategy-2-bi-directional-migration">Strategy 2: Bi-Directional Migration</h2>

<h3 id="what-it-means-1">What it means</h3>

<p>During the transition period (which can be 6-18 months for a hospital), both old and new systems run in parallel. Data must stay consistent across both.</p>

<h3 id="why-this-matters-in-healthcare">Why this matters in healthcare</h3>

<ul>
  <li>Hospitals do phased rollouts — department by department, not big-bang</li>
  <li>During transition, some reports read from Clarity, some from Snowflake</li>
  <li>Financial data reconciliation is legally required (SOX-equivalent for hospital finance)</li>
  <li>If a regulatory report runs in both systems and produces different numbers — that’s an audit finding</li>
</ul>

<h3 id="how-it-works-in-clarity-1">How it works in Clarity</h3>

<p><strong>Month 3-6: Phased Rollout</strong></p>

<p>The team decides to roll out department by department. Cardiology goes first.</p>

<p>Sarah goes to the Go-Live Readiness dashboard. It shows:</p>
<ul>
  <li>Cardiology: 12 reports migrated, all validated, 3 signed off by Dr. Chen, 9 pending sign-off</li>
  <li>Emergency Dept: 8 reports migrated, 6 validated, 2 have data drift warnings</li>
  <li>Internal Medicine: not started</li>
</ul>

<p>She sets Cardiology to dual-write mode. Now every night, the PySpark jobs write to BOTH the old MySQL staging tables (so legacy Crystal Reports still work) AND the new Snowflake tables (so the new dashboards work).</p>

<p>The Data Drift Monitor runs every 6 hours. On day 3, it flags that <code class="language-plaintext highlighter-rouge">FACT_ENCOUNTER</code> in Snowflake has 12 more rows than MySQL. She investigates — a late-arriving encounter got picked up by the Snowflake incremental load but the Informatica job hasn’t run yet. Not a real issue. She marks it “expected” and the drift monitor learns to ignore timing gaps under 24 hours.</p>

<p>After 2 weeks of dual-write with zero drift, the Cardiology director signs off. Sarah flips Cardiology to Snowflake-only mode. The old Crystal Reports for that department get decommissioned.</p>

<p>She repeats for each department. The go-live dashboard shows progress ticking up from 15% to 40% to 78% to 100% over 4 months.</p>

<h3 id="key-capabilities">Key capabilities</h3>

<ul>
  <li><strong>Dual-write mode</strong>: Generated PySpark jobs write to both MySQL staging and Snowflake simultaneously</li>
  <li><strong>Data drift monitor</strong>: Scheduled checks that compare row counts, checksums, and aggregates between source and target. Alerts when systems diverge beyond a configurable threshold.</li>
  <li><strong>Go-live readiness dashboard</strong>: Visual status of which departments/reports are migrated, validated, and signed off</li>
  <li><strong>Rollback</strong>: If Snowflake target diverges, auto-generated recovery scripts restore from source of truth</li>
</ul>

<hr />

<h2 id="strategy-3-writer-first-migration">Strategy 3: Writer-First Migration</h2>

<h3 id="what-it-means-2">What it means</h3>

<p>Migrate ETL pipelines that <strong>write</strong> data — data entry feeds, lab result ingestion, claims submissions, clinical registry updates. These are write operations that push data into clinical and financial systems.</p>

<h3 id="why-this-is-the-highest-risk">Why this is the highest risk</h3>

<ul>
  <li>Writing to Epic requires Epic-approved integration methods (Bridges, Open.Epic, Interconnect, FHIR APIs)</li>
  <li>Every write path needs HL7/FHIR compliance for interoperability</li>
  <li>PHI writes need audit trails (HIPAA §164.312)</li>
  <li>Wrong data written to a patient chart is a patient safety event</li>
  <li>Wrong data written to billing is a fraud risk (False Claims Act)</li>
</ul>

<h3 id="how-it-works-in-clarity-2">How it works in Clarity</h3>

<p><strong>Month 6-9: Write Path Migration</strong></p>

<p>Once the read path is fully migrated, the team tackles the write path.</p>

<p>They have an Informatica workflow that ingests lab results from an external lab vendor, transforms them, and writes to Epic via HL7 Bridge. This is a clinical write path — if it breaks, lab results don’t show up in Epic and clinicians don’t see them.</p>

<p>Sarah goes to Migrate and selects “Writer-First” strategy.</p>

<p>The agent flags this as high risk because:</p>
<ul>
  <li>It writes to a clinical system (patient-facing)</li>
  <li>It contains PHI (PAT_ID, RESULT_VALUE)</li>
  <li>The target is an Epic API, not a database table</li>
</ul>

<p>The generated PySpark job includes:</p>
<ul>
  <li>FHIR resource mapping (lab result to FHIR R4 Observation)</li>
  <li>An audit trail for every record written</li>
  <li>A sandbox validation step that runs against Epic’s test environment first</li>
  <li>A rollback script that can reverse the last batch if something goes wrong</li>
</ul>

<p>Before this goes to production, it goes through an approval workflow:</p>
<ol>
  <li>The data architect reviews the generated code</li>
  <li>The Epic analyst validates the FHIR mapping</li>
  <li>The compliance officer confirms the PHI handling</li>
  <li>The clinical informatics director signs off</li>
</ol>

<p>Each approval is tracked in the migration timeline.</p>

<h3 id="key-capabilities-1">Key capabilities</h3>

<ul>
  <li><strong>FHIR pipeline generation</strong>: Convert legacy HL7v2 feeds to FHIR R4 bundles</li>
  <li><strong>CDC pattern detection</strong>: Identify incremental load patterns in Informatica and convert to streaming/micro-batch PySpark with MERGE statements</li>
  <li><strong>Write-back validation sandbox</strong>: Run converted write pipelines against Epic’s test environment before production</li>
  <li><strong>Audit trail generation</strong>: Every record written is logged with timestamp, user, target system, and PHI columns touched</li>
</ul>

<hr />

<h2 id="cross-cutting-reconciliation">Cross-Cutting: Reconciliation</h2>

<h3 id="the-1-question-from-every-cfo-and-cmo">The #1 question from every CFO and CMO</h3>

<blockquote>
  <p>“How do we know the numbers match?”</p>

</blockquote>

<p>Every migration — regardless of strategy — needs validation. After each migration job completes, Clarity auto-generates reconciliation checks.</p>

<h3 id="how-it-works">How it works</h3>

<p>Sarah runs a migration against staging Snowflake. The jobs complete. She goes to the Validation tab in the job detail view.</p>

<p>The reconciliation report shows every table side by side:</p>
<ul>
  <li><code class="language-plaintext highlighter-rouge">DIM_PATIENT</code>: 48,231 rows in source, 48,231 in target. Checksums match. Green.</li>
  <li><code class="language-plaintext highlighter-rouge">FACT_ENCOUNTER</code>: 312,445 rows in source, 312,402 in target. 43 rows missing. Yellow warning.</li>
</ul>

<p>She clicks “View Diff” on <code class="language-plaintext highlighter-rouge">FACT_ENCOUNTER</code>. Clarity shows her the 43 rows that exist in source but not target. They’re all encounters with <code class="language-plaintext highlighter-rouge">APPT_STATUS_C = 6</code> (canceled but with a specific sub-status). The Informatica filter was <code class="language-plaintext highlighter-rouge">APPT_STATUS_C IN (2,6)</code> but the agent converted it as <code class="language-plaintext highlighter-rouge">APPT_STATUS_C = 2</code>. She edits the PySpark job, re-runs, and now it’s green across the board.</p>

<p>Without reconciliation, this would have gone to production with 43 missing encounters. In revenue cycle, that’s potentially $43K+ in unbilled charges.</p>

<h3 id="what-gets-compared">What gets compared</h3>

<table>
  <thead>
    <tr>
      <th>Metric</th>
      <th>What it catches</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Row count</td>
      <td>Missing or extra records</td>
    </tr>
    <tr>
      <td>Column count</td>
      <td>Schema drift (added/removed columns)</td>
    </tr>
    <tr>
      <td>Null rate</td>
      <td>Transformation logic errors (NVLs not applied)</td>
    </tr>
    <tr>
      <td>Aggregate checksums</td>
      <td>Data value differences (SUM, AVG, MIN, MAX on key columns)</td>
    </tr>
    <tr>
      <td>Date ranges</td>
      <td>Temporal gaps or truncation</td>
    </tr>
    <tr>
      <td>Referential integrity</td>
      <td>Broken foreign keys after migration</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="cross-cutting-phi-detection">Cross-Cutting: PHI Detection</h2>

<h3 id="hipaa-compliance-built-in">HIPAA compliance, built in</h3>

<p>Every migration job gets a PHI scan before it runs. The agent detects columns that contain Protected Health Information based on the HIPAA Safe Harbor standard (18 identifier types).</p>

<h3 id="how-it-works-1">How it works</h3>

<p>When Sarah creates a new migration, the first thing she sees is:</p>

<blockquote>
  <p>“This migration involves 8 high-risk PHI columns including PAT_FIRST_NAME, PAT_MRN_ID, and BIRTH_DATE. Snowflake column-level masking policies are recommended before granting analyst access.”</p>

</blockquote>

<p>The lineage map shows PHI columns with a red shield icon. The reconciliation report includes a PHI section confirming that PHI columns in the target have encryption-at-rest and masking policies applied.</p>

<p>When she shares the migration report with the compliance team, they can see exactly which PHI flows where — without needing to read any code.</p>

<h3 id="phi-classification">PHI classification</h3>

<table>
  <thead>
    <tr>
      <th>Risk Level</th>
      <th>Column Examples</th>
      <th>Recommendation</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>High</td>
      <td>PAT_FIRST_NAME, PAT_MRN_ID, SSN</td>
      <td>Hash or tokenize in target. Do not store in plaintext outside Epic.</td>
    </tr>
    <tr>
      <td>High</td>
      <td>BIRTH_DATE</td>
      <td>Consider age bucketing (18-25, 26-35) for analytics tables.</td>
    </tr>
    <tr>
      <td>Medium</td>
      <td>ZIP</td>
      <td>Truncate to 3-digit prefix per Safe Harbor. Full ZIP is PHI if population &lt; 20,000.</td>
    </tr>
    <tr>
      <td>Medium</td>
      <td>HOSP_ADMSN_TIME</td>
      <td>Acceptable for operational analytics. Restrict for de-identified datasets.</td>
    </tr>
    <tr>
      <td>Safe</td>
      <td>DEPARTMENT_ID, ENC_TYPE_C</td>
      <td>No restrictions.</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="application-features-summary">Application Features Summary</h2>

<table>
  <thead>
    <tr>
      <th>Feature</th>
      <th>Who Uses It</th>
      <th>Why They Care</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Strategy selector</td>
      <td>Data architects</td>
      <td>Pick the right approach — not everything is the same</td>
    </tr>
    <tr>
      <td>Reconciliation reports</td>
      <td>Data architects, auditors</td>
      <td>“Prove the numbers match” — the #1 question</td>
    </tr>
    <tr>
      <td>Go-live readiness dashboard</td>
      <td>Project managers, CIO</td>
      <td>“How far along are we?” — tracks the 12-month program</td>
    </tr>
    <tr>
      <td>Dual-write mode</td>
      <td>Data engineers</td>
      <td>“Run both systems safely during transition”</td>
    </tr>
    <tr>
      <td>Data drift monitor</td>
      <td>Data engineers, on-call</td>
      <td>“Alert me if systems diverge”</td>
    </tr>
    <tr>
      <td>PHI detection</td>
      <td>Compliance, security</td>
      <td>“Show me where patient data flows” — HIPAA audit readiness</td>
    </tr>
    <tr>
      <td>Writer-first migration</td>
      <td>Epic analysts, clinical informatics</td>
      <td>“Modernize our data feeds” — the next frontier</td>
    </tr>
    <tr>
      <td>Lineage map</td>
      <td>Everyone</td>
      <td>Visual source-to-target flow for every migration</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="the-thread-connecting-everything">The Thread Connecting Everything</h2>

<p><strong>Trust.</strong></p>

<p>Hospitals won’t migrate to Snowflake unless they trust the data is correct, the PHI is protected, and they can roll back if something goes wrong. Every feature above is a trust signal.</p>

<ul>
  <li>Reconciliation says: “The numbers match. Here’s proof.”</li>
  <li>PHI detection says: “We know where patient data flows. It’s protected.”</li>
  <li>Dual-write says: “You can run both systems until you’re confident.”</li>
  <li>Go-live readiness says: “Here’s exactly where you are in the program.”</li>
  <li>Rollback says: “If something goes wrong, we can undo it.”</li>
</ul>

<p>The technology is table stakes. The trust is the product.</p>]]></content><author><name>Sourav Padhi</name></author><category term="engineering" /><category term="data" /><summary type="html"><![CDATA[Overview]]></summary></entry><entry><title type="html">Epic Clarity — Agentic AI Layer</title><link href="https://sourav.sh/epic-agentic-layer.html" rel="alternate" type="text/html" title="Epic Clarity — Agentic AI Layer" /><published>2026-05-05T00:00:00+00:00</published><updated>2026-05-05T00:00:00+00:00</updated><id>https://sourav.sh/epic-agentic-layer</id><content type="html" xml:base="https://sourav.sh/epic-agentic-layer.html"><![CDATA[<p><strong>Purpose:</strong> Intelligence map of Epic Clarity’s data topology for teams building an agentic AI layer on top of clinical EHR data. Covers all 12 domains, agent use cases, investment wedges, build sequence, and architecture decisions.</p>

<hr />

<h2 id="quick-orientation">Quick Orientation</h2>

<table>
  <thead>
    <tr>
      <th> </th>
      <th>Chronicles</th>
      <th>Clarity</th>
      <th>Caboodle</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Type</strong></td>
      <td>Hierarchical MUMPS/Caché DB</td>
      <td>Relational SQL (~30,000 tables)</td>
      <td>Star schema EDW (~300 tables)</td>
    </tr>
    <tr>
      <td><strong>Purpose</strong></td>
      <td>Live clinical operations</td>
      <td>Reporting &amp; analytics</td>
      <td>Dashboards &amp; KPIs</td>
    </tr>
    <tr>
      <td><strong>Granularity</strong></td>
      <td>Full operational record</td>
      <td>Record-level, full depth</td>
      <td>Aggregated, curated subset</td>
    </tr>
    <tr>
      <td><strong>Freshness</strong></td>
      <td>Real-time</td>
      <td>T-1 (nightly ETL)</td>
      <td>T-1 (nightly ETL)</td>
    </tr>
    <tr>
      <td><strong>AI Surface</strong></td>
      <td>Not queryable directly</td>
      <td><strong>Primary agent surface</strong></td>
      <td>Secondary / faster reads</td>
    </tr>
    <tr>
      <td><strong>External data</strong></td>
      <td>No</td>
      <td>No</td>
      <td>Yes (claims, registries)</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p> <strong>The insight:</strong> Clarity’s complexity — 30,000 tables, ZC_ join dependencies, continuation tables — is the moat. Whoever builds schema intelligence on top of it first wins. The difficulty is the feature.</p>

</blockquote>

<hr />

<h2 id="critical-constraints--read-before-building">Critical Constraints — Read Before Building</h2>

<blockquote>
  <p> <strong>These are not edge cases. Every one surfaces in the first month.</strong></p>

  <ul>
    <li><strong>T-1 freshness</strong> — All data is one day old. Agents must surface data-as-of timestamps on every output. Never use Clarity for real-time operational decisions.</li>
    <li><strong>Date format</strong> — Dates stored as days since <code class="language-plaintext highlighter-rouge">12/31/1840</code> in <code class="language-plaintext highlighter-rouge">_REAL</code> columns (MUMPS heritage). All time-series logic requires conversion before use.</li>
    <li><strong>ZC_ dependency</strong> — Every categorical field (gender, race, order status, encounter type) is a numeric code requiring a <code class="language-plaintext highlighter-rouge">JOIN ZC_*</code> for human-readable output. LLM-generated SQL that skips this produces unreadable garbage.</li>
    <li><strong>Continuation tables</strong> — <code class="language-plaintext highlighter-rouge">PATIENT</code>, <code class="language-plaintext highlighter-rouge">PATIENT_2</code>, <code class="language-plaintext highlighter-rouge">PATIENT_3</code> are one logical record. Same for <code class="language-plaintext highlighter-rouge">CLARITY_SER</code>, <code class="language-plaintext highlighter-rouge">ORDER_MED</code>, others. Querying only the base table silently loses data.</li>
    <li><strong>LINE column pattern</strong> — One-to-many relationships use a <code class="language-plaintext highlighter-rouge">LINE</code> column (MUMPS inheritance). Appears in medications, flowsheets, diagnoses, charge lines. Agents that ignore this produce row-multiplied aggregations.</li>
    <li><strong>30K table surface</strong> — RAG over the data dictionary is the only viable architecture. No LLM can navigate this at context scale. Build schema retrieval before writing any agent logic.</li>
    <li><strong>Multi-tenant schema variation</strong> — Health systems customize their Clarity schemas. An agent built against one instance will silently fail against another. Tenant-aware schema isolation is the core technical moat.</li>
  </ul>
</blockquote>

<hr />

<h2 id="domain-map--12-subject-areas">Domain Map — 12 Subject Areas</h2>

<h3 id="01--patient-identity--demographics">01 · Patient Identity &amp; Demographics</h3>

<p><strong>Key Tables:</strong> <code class="language-plaintext highlighter-rouge">PATIENT</code> · <code class="language-plaintext highlighter-rouge">PATIENT_2</code> · <code class="language-plaintext highlighter-rouge">PATIENT_3</code></p>

<p><strong>Fields &amp; Subtypes</strong></p>

<table>
  <thead>
    <tr>
      <th>Field Group</th>
      <th>Detail</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Identity</td>
      <td>MRN, DOB, gender, race, ethnicity</td>
    </tr>
    <tr>
      <td>Contact</td>
      <td>Language, address, zip code</td>
    </tr>
    <tr>
      <td>Linkage</td>
      <td>Guarantor ID, coverage ID → payer</td>
    </tr>
    <tr>
      <td>Status</td>
      <td>Patient status flags, merge history</td>
    </tr>
  </tbody>
</table>

<p><strong>Agent Use Cases</strong></p>

<ul>
  <li>Identity resolution and deduplication across source systems</li>
  <li>SDOH risk stratification using zip-level poverty index and language barriers</li>
  <li>Patient cohort builder for population health programs</li>
  <li>Outreach eligibility filtering by demographics and payer</li>
</ul>

<hr />

<h3 id="02--encounters--visits">02 · Encounters &amp; Visits</h3>

<p><strong>Key Tables:</strong> <code class="language-plaintext highlighter-rouge">PAT_ENC</code> · <code class="language-plaintext highlighter-rouge">PAT_ENC_2</code> · <code class="language-plaintext highlighter-rouge">PAT_ENC_DX</code> · <code class="language-plaintext highlighter-rouge">HSP_ACCOUNT</code></p>

<p><strong>Fields &amp; Subtypes</strong></p>

<table>
  <thead>
    <tr>
      <th>Field Group</th>
      <th>Detail</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Core</td>
      <td>Visit date/time, encounter type, department</td>
    </tr>
    <tr>
      <td>Settings</td>
      <td>Ambulatory · Inpatient · ED · Telehealth · Telephone · MyChart</td>
    </tr>
    <tr>
      <td>Inpatient</td>
      <td>LOS, discharge disposition, ADT events (admit-discharge-transfer)</td>
    </tr>
    <tr>
      <td>Diagnosis</td>
      <td>Encounter-level ICD-10 linkage</td>
    </tr>
  </tbody>
</table>

<p><strong>Agent Use Cases</strong></p>

<ul>
  <li>Readmission prediction via encounter sequence modeling</li>
  <li>Care pathway anomaly detection across patient timelines</li>
  <li>No-show and cancellation propensity scoring</li>
  <li>ED-to-inpatient conversion analysis</li>
  <li>LOS benchmarking against cohort and DRG norms</li>
</ul>

<hr />

<h3 id="03--clinical-documentation">03 · Clinical Documentation</h3>

<p><strong>Key Tables:</strong> <code class="language-plaintext highlighter-rouge">PROBLEM_LIST</code> · <code class="language-plaintext highlighter-rouge">ALLERGY</code> · <code class="language-plaintext highlighter-rouge">IP_FLWSHT_REC</code> · <code class="language-plaintext highlighter-rouge">HNO_NOTE_TEXT</code> · <code class="language-plaintext highlighter-rouge">PAT_ENC_DX</code></p>

<p><strong>Fields &amp; Subtypes</strong></p>

<table>
  <thead>
    <tr>
      <th>Field Group</th>
      <th>Detail</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Diagnoses</td>
      <td>ICD-10 codes, problem list, onset date</td>
    </tr>
    <tr>
      <td>Notes</td>
      <td>Progress notes, discharge summaries, surgical notes, consult notes — <strong>free text</strong></td>
    </tr>
    <tr>
      <td>Observations</td>
      <td>Vital signs, flowsheet rows, measurements</td>
    </tr>
    <tr>
      <td>History</td>
      <td>Immunizations, social history, SDOH fields</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p> <strong><code class="language-plaintext highlighter-rouge">HNO_NOTE_TEXT</code> is the highest-value unstructured table in Clarity.</strong> This is where the clinical story lives. Every NLP use case runs through here.</p>

</blockquote>

<p><strong>Agent Use Cases</strong></p>

<ul>
  <li>NLP / LLM extraction from note text — chief complaint, HPI, assessment, plan</li>
  <li>Diagnosis coding accuracy audit — ICD vs. free-text alignment</li>
  <li>Clinical decision support triggers from flowsheet deviations</li>
  <li>Automated prior auth documentation generation</li>
  <li>Allergy-drug interaction alerting</li>
</ul>

<hr />

<h3 id="04--orders--medications">04 · Orders &amp; Medications</h3>

<p><strong>Key Tables:</strong> <code class="language-plaintext highlighter-rouge">ORDER_PROC</code> · <code class="language-plaintext highlighter-rouge">ORDER_MED</code> · <code class="language-plaintext highlighter-rouge">MAR_ADMIN_DOSES</code> · <code class="language-plaintext highlighter-rouge">RX_PHR_ORDER</code></p>

<p><strong>Fields &amp; Subtypes</strong></p>

<table>
  <thead>
    <tr>
      <th>Field Group</th>
      <th>Detail</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Orders</td>
      <td>Order type, datetime, ordering provider, priority, status</td>
    </tr>
    <tr>
      <td>Medications</td>
      <td>Route, dose, frequency, administration record (MAR)</td>
    </tr>
    <tr>
      <td>Pharmacy</td>
      <td>Dispenses, refills, renewals, IV infusions</td>
    </tr>
    <tr>
      <td>Protocol</td>
      <td>Order set linkage, standing orders, protocol flags</td>
    </tr>
  </tbody>
</table>

<p><strong>Agent Use Cases</strong></p>

<ul>
  <li>Polypharmacy risk detection across multi-drug regimens</li>
  <li>Medication adherence inference from refill gap analysis</li>
  <li>Order set optimization — co-ordered items correlated against outcomes</li>
  <li>High-cost drug utilization monitoring</li>
  <li>Formulary compliance enforcement and alerting</li>
</ul>

<hr />

<h3 id="05--labs--results">05 · Labs &amp; Results</h3>

<p><strong>Key Tables:</strong> <code class="language-plaintext highlighter-rouge">ORDER_RESULTS</code> · <code class="language-plaintext highlighter-rouge">LNS_RESULT</code> · <code class="language-plaintext highlighter-rouge">LNS_SPECIMEN</code> · <code class="language-plaintext highlighter-rouge">CLARITY_COMPONENT</code></p>

<p><strong>Fields &amp; Subtypes</strong></p>

<table>
  <thead>
    <tr>
      <th>Field Group</th>
      <th>Detail</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Results</td>
      <td>Value, unit, reference range, abnormal flag, status</td>
    </tr>
    <tr>
      <td>Specimen</td>
      <td>Collection datetime, specimen type, accession number</td>
    </tr>
    <tr>
      <td>Categories</td>
      <td>Chemistry · Hematology · Microbiology / cultures · Pathology</td>
    </tr>
    <tr>
      <td>POC</td>
      <td>Point-of-care and rapid testing</td>
    </tr>
  </tbody>
</table>

<p><strong>Agent Use Cases</strong></p>

<ul>
  <li>Trend-based early warning from deteriorating lab trajectories over time</li>
  <li>Sepsis, AKI, and deterioration alerting from multi-lab sequences</li>
  <li>Critical value notification gap detection</li>
  <li>Lab utilization and redundancy reduction by ordering pattern</li>
  <li>Research cohort identification by lab phenotype</li>
</ul>

<hr />

<h3 id="06--imaging--radiology">06 · Imaging &amp; Radiology</h3>

<p><strong>Key Tables:</strong> <code class="language-plaintext highlighter-rouge">ORDER_PROC</code> (rad) · <code class="language-plaintext highlighter-rouge">RAD_EXAM</code> · <code class="language-plaintext highlighter-rouge">CLARITY_PROC</code> · <code class="language-plaintext highlighter-rouge">Cupid</code> (cardiology)</p>

<p><strong>Fields &amp; Subtypes</strong></p>

<table>
  <thead>
    <tr>
      <th>Field Group</th>
      <th>Detail</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Orders</td>
      <td>CPT codes, modality, ordering indication, priority</td>
    </tr>
    <tr>
      <td>Results</td>
      <td>Report text (free text), read datetime, radiologist</td>
    </tr>
    <tr>
      <td>Modalities</td>
      <td>X-ray · CT · MRI · Ultrasound · Echo · Cath · Nuclear</td>
    </tr>
    <tr>
      <td>Procedures</td>
      <td>Interventional, procedural imaging</td>
    </tr>
  </tbody>
</table>

<p><strong>Agent Use Cases</strong></p>

<ul>
  <li>LLM extraction from radiology report text — incidental finding triage</li>
  <li>Imaging appropriateness scoring against clinical guidelines</li>
  <li>Repeat imaging detection and cost flagging</li>
  <li>Order-to-read turnaround time SLA monitoring</li>
</ul>

<hr />

<h3 id="07--scheduling--access">07 · Scheduling &amp; Access</h3>

<p><strong>Key Tables:</strong> <code class="language-plaintext highlighter-rouge">PAT_ENC</code> (appt view) · <code class="language-plaintext highlighter-rouge">CLARITY_DEP</code> · <code class="language-plaintext highlighter-rouge">CLARITY_SER_DEPT</code></p>

<p><strong>Fields &amp; Subtypes</strong></p>

<table>
  <thead>
    <tr>
      <th>Field Group</th>
      <th>Detail</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Appointments</td>
      <td>Datetime, type, status, slot, provider, location</td>
    </tr>
    <tr>
      <td>Outcomes</td>
      <td>No-show flag, cancellation reason, reschedule history</td>
    </tr>
    <tr>
      <td>Access</td>
      <td>Wait time, referral source, waitlist position</td>
    </tr>
    <tr>
      <td>Type</td>
      <td>New patient · Follow-up · Procedure · Urgent · Waitlist</td>
    </tr>
  </tbody>
</table>

<p><strong>Agent Use Cases</strong></p>

<ul>
  <li>Intelligent slot fill and open access optimization</li>
  <li>No-show prediction driving proactive outreach</li>
  <li>Referral leakage detection — did the patient follow through?</li>
  <li>Access equity analysis by zip code, race, and payer</li>
  <li>Demand forecasting for capacity planning by service line</li>
</ul>

<hr />

<h3 id="08--billing--revenue-cycle">08 · Billing &amp; Revenue Cycle</h3>

<p><strong>Key Tables:</strong> <code class="language-plaintext highlighter-rouge">HSP_ACCOUNT</code> · <code class="language-plaintext highlighter-rouge">ARPB_TRANSACTIONS</code> · <code class="language-plaintext highlighter-rouge">CLARITY_EDI</code> · <code class="language-plaintext highlighter-rouge">COVERAGE</code> · <code class="language-plaintext highlighter-rouge">ACCOUNT</code></p>

<p><strong>Fields &amp; Subtypes</strong></p>

<table>
  <thead>
    <tr>
      <th>Field Group</th>
      <th>Detail</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Charges</td>
      <td>CPT / DRG codes, charge amount, charge drop timing</td>
    </tr>
    <tr>
      <td>Claims</td>
      <td>Payer, claim status, denial reason, remittance</td>
    </tr>
    <tr>
      <td>AR</td>
      <td>AR aging, patient balance, co-pay, write-offs</td>
    </tr>
    <tr>
      <td>Auth</td>
      <td>Authorization records, referral linkage</td>
    </tr>
  </tbody>
</table>

<p><strong>Agent Use Cases</strong></p>

<ul>
  <li>Denial prediction before claim submission — intercept at charge entry</li>
  <li>Undercoding / upcoding audit — ICD vs. charges alignment</li>
  <li>Prior authorization automation from clinical documentation</li>
  <li>Revenue leakage detection — charges not dropped post-procedure</li>
  <li>Payer contract performance analysis and renegotiation intelligence</li>
</ul>

<hr />

<h3 id="09--operational--capacity">09 · Operational &amp; Capacity</h3>

<p><strong>Key Tables:</strong> <code class="language-plaintext highlighter-rouge">ADT_ARRIVAL</code> · <code class="language-plaintext highlighter-rouge">ADT_DAYS</code> · <code class="language-plaintext highlighter-rouge">OT_CASE_RECORD</code> · <code class="language-plaintext highlighter-rouge">BED_CENSUS</code></p>

<p><strong>Fields &amp; Subtypes</strong></p>

<table>
  <thead>
    <tr>
      <th>Field Group</th>
      <th>Detail</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Beds</td>
      <td>Status, unit, service line, census by hour</td>
    </tr>
    <tr>
      <td>OR</td>
      <td>Case start/end, surgeon, turnover time, cancellation reason</td>
    </tr>
    <tr>
      <td>Flow</td>
      <td>Patient transport, transfer events, escalation flags</td>
    </tr>
    <tr>
      <td>Staffing</td>
      <td>Assignments, coverage gaps, float pool</td>
    </tr>
  </tbody>
</table>

<p><strong>Agent Use Cases</strong></p>

<ul>
  <li>Real-time bed demand prediction and proactive discharge planning</li>
  <li>OR block utilization optimization — recover unused time</li>
  <li>LOS outlier detection triggering case management workflow</li>
  <li>Patient flow bottleneck analysis — ED through inpatient</li>
  <li>Staffing demand-supply mismatch alerting by unit and shift</li>
</ul>

<hr />

<h3 id="10--providers--workforce">10 · Providers &amp; Workforce</h3>

<p><strong>Key Tables:</strong> <code class="language-plaintext highlighter-rouge">CLARITY_SER</code> · <code class="language-plaintext highlighter-rouge">CLARITY_SER_2</code> · <code class="language-plaintext highlighter-rouge">CLARITY_EMP</code> · <code class="language-plaintext highlighter-rouge">SER_DEPT_ATTND</code></p>

<p><strong>Fields &amp; Subtypes</strong></p>

<table>
  <thead>
    <tr>
      <th>Field Group</th>
      <th>Detail</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Identity</td>
      <td>NPI, specialty, department, credentials, DEA</td>
    </tr>
    <tr>
      <td>Attribution</td>
      <td>Ordering, attending, referring, and cosigning linkage</td>
    </tr>
    <tr>
      <td>Care team</td>
      <td>Composition, role, shift, assignment</td>
    </tr>
    <tr>
      <td>Activity</td>
      <td>User access logs, documentation timestamps, after-hours patterns</td>
    </tr>
  </tbody>
</table>

<p><strong>Agent Use Cases</strong></p>

<ul>
  <li>Provider performance benchmarking across outcomes, utilization, and coding</li>
  <li>Referral pattern analysis and out-of-network leakage detection</li>
  <li>Care team attribution for value-based contract performance</li>
  <li>Clinical variation analysis by provider and service line</li>
  <li>Burnout proxy signals from documentation burden and after-hours login patterns</li>
</ul>

<hr />

<h3 id="11--population-health--quality">11 · Population Health &amp; Quality</h3>

<p><strong>Key Tables:</strong> <code class="language-plaintext highlighter-rouge">REGISTRY_PATIENT</code> · <code class="language-plaintext highlighter-rouge">QM_RESULT</code> · <code class="language-plaintext highlighter-rouge">CARE_PLAN</code> · <code class="language-plaintext highlighter-rouge">HEALTHY_PLANET_*</code></p>

<p><strong>Fields &amp; Subtypes</strong></p>

<table>
  <thead>
    <tr>
      <th>Field Group</th>
      <th>Detail</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Measures</td>
      <td>HEDIS, CMS Stars, MIPS, MACRA result values</td>
    </tr>
    <tr>
      <td>Gaps</td>
      <td>Care gap flags, measure numerator/denominator status</td>
    </tr>
    <tr>
      <td>Risk</td>
      <td>Patient risk scores, registry membership, tier</td>
    </tr>
    <tr>
      <td>SDOH</td>
      <td>Social risk factors, community resource linkage</td>
    </tr>
  </tbody>
</table>

<p><strong>Agent Use Cases</strong></p>

<ul>
  <li>Automated care gap closure via outreach agent</li>
  <li>Risk stratification driving proactive intervention prioritization</li>
  <li>Quality measure trajectory forecasting for month-end performance</li>
  <li>SDOH-adjusted outcome benchmarking for equity reporting</li>
  <li>Value-based contract P&amp;L attribution by attributed population</li>
</ul>

<hr />

<h3 id="12--system--configurationfoundation-layer">12 · System &amp; Configuration <em>(Foundation Layer)</em></h3>

<p><strong>Key Tables:</strong> <code class="language-plaintext highlighter-rouge">ZC_*</code> (all category master files) · <code class="language-plaintext highlighter-rouge">CLARITY_DEP</code> · <code class="language-plaintext highlighter-rouge">CLARITY_POS</code></p>

<p><strong>Fields &amp; Subtypes</strong></p>

<table>
  <thead>
    <tr>
      <th>Field Group</th>
      <th>Detail</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Code maps</td>
      <td>Numeric code → display value for every categorical field</td>
    </tr>
    <tr>
      <td>Structure</td>
      <td>Department hierarchy, facility structure, POS codes</td>
    </tr>
    <tr>
      <td>Security</td>
      <td>User roles, access levels, build configuration</td>
    </tr>
    <tr>
      <td>Metadata</td>
      <td>Epic version, module activation, local customizations</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p> <strong>Every domain query depends on this layer.</strong> ZC_ joins are a precondition for human-readable output across all 11 other domains. Build the ZC_ resolver before writing any agent logic.</p>

</blockquote>

<p><strong>Agent Use Cases</strong></p>

<ul>
  <li>Schema-aware SQL generation — LLM grounding on ZC_ maps is mandatory</li>
  <li>Data dictionary embedding for RAG-based analytics assistant</li>
  <li>Role-based query scoping in the agent access control layer</li>
  <li>Cross-domain lineage mapping for compliance audit trails</li>
</ul>

<hr />

<h2 id="agent-architecture--how-the-layer-stacks">Agent Architecture — How the Layer Stacks</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>USER / WORKFLOW TRIGGER
Natural language query  ·  scheduled job  ·  API event  ·  alert threshold

        ↓

[ 01 ]  ORCHESTRATION LAYER
        Intent classification
        Domain router  →  selects one of 12 Clarity domains
        ReAct planning loop  →  multi-step decomposition
        Memory / state management across turns

        ↓                              ↓

[ 02a ]  NLP / LLM MODULE         [ 02b ]  SQL GENERATION MODULE
         Free-text extraction               Schema RAG over data dictionary
         HNO_NOTE_TEXT parsing             ZC_ map grounding (mandatory)
         Summarisation                      Domain-scoped query builder
         Structured field population        Query validation + explain plan

                    ↓                    ↓

        [ 03 ]  CLARITY DATABASE LAYER
                ~30,000 SQL tables  ·  12 domains
                Nightly ETL  ·  T-1 freshness
                Domain-scoped views recommended over raw tables

                            ↓

                [ 04 ]  OUTPUT LAYER
                        Insight cards  ·  alerts  ·  triggers
                        Draft documents (prior auth, appeal letters)
                        Downstream API calls (RCM system, payer portal, care management)
                        Data-as-of timestamp on every output  ←  non-negotiable
</code></pre></div></div>

<blockquote>
  <p> <strong>The domain router is the most consequential design decision.</strong> Intent misclassification routes a billing query to clinical tables and produces numerically plausible wrong answers — which is worse than an obvious error. The router must be purpose-built, not a general-purpose prompt.</p>

</blockquote>

<hr />

<h2 id="high-value-wedges--vc--pe-lens">High-Value Wedges — VC / PE Lens</h2>

<p><em>Ranked by combined score: willingness to pay + time-to-ROI + structural moat.</em></p>

<table>
  <thead>
    <tr>
      <th>Domain</th>
      <th>Agent Wedge</th>
      <th>TAM Signal</th>
      <th>Moat</th>
      <th>Sharp Insight</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Billing / RCM</strong></td>
      <td>Denial prediction + auto-appeal</td>
      <td>$20B+ RCM market</td>
      <td>Payer-specific model training</td>
      <td>CFO-level pain. Denial rate is a visible P&amp;L line. Fastest path to a signed contract.</td>
    </tr>
    <tr>
      <td><strong>Scheduling</strong></td>
      <td>No-show prediction + slot fill</td>
      <td>Access crisis is acute</td>
      <td>Cross-system network effect</td>
      <td>Every unfilled slot is quantifiable lost revenue. Easy to instrument ROI from day one.</td>
    </tr>
    <tr>
      <td><strong>Clinical Docs</strong></td>
      <td>Prior auth automation via NLP</td>
      <td>$35B admin waste annually</td>
      <td>Fine-tuned on Epic note schemas</td>
      <td><code class="language-plaintext highlighter-rouge">HNO_NOTE_TEXT</code> is the crown jewel. Unstructured data no one else has modeled well.</td>
    </tr>
    <tr>
      <td><strong>Labs</strong></td>
      <td>Deterioration early warning</td>
      <td>Patient safety liability</td>
      <td>Outcome-labeled training data</td>
      <td>Sepsis and AKI are the two lead use cases. Direct patient harm reduction narrative.</td>
    </tr>
    <tr>
      <td><strong>Population Health</strong></td>
      <td>Care gap closure + VBC attribution</td>
      <td>VBC contract penetration growing</td>
      <td>Measure-specific logic + payer rules</td>
      <td>HEDIS and CMS Stars drive the ROI. Requires deepest Epic integration to win.</td>
    </tr>
    <tr>
      <td><strong>OR / Capacity</strong></td>
      <td>Block utilization optimizer</td>
      <td>$150B surgical market</td>
      <td>OR data is notoriously siloed</td>
      <td>30% of block time goes unused industry-wide. Direct surgical margin impact.</td>
    </tr>
    <tr>
      <td><strong>Provider Analytics</strong></td>
      <td>Clinical variation + benchmarking</td>
      <td>MIPS / value-based pressure</td>
      <td>Multi-system benchmarking data</td>
      <td>Requires multi-system data to build the comparison set — the network is the moat.</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="architecture-decisions-to-lock-early">Architecture Decisions to Lock Early</h2>

<blockquote>
  <p>These five decisions have the highest cost if deferred. Each becomes exponentially harder to change once agent logic is built on top of it.</p>

</blockquote>

<h3 id="01--schema-retrieval-strategy">01 · Schema Retrieval Strategy</h3>

<p>Vector store over the Clarity data dictionary is the only viable architecture at 30,000 tables. The embedding corpus must include table names, column names, descriptions, ZC_ join dependencies, and sample values. <strong>Build this before writing a single agent.</strong> Everything else depends on it.</p>

<h3 id="02--domain-router-design">02 · Domain Router Design</h3>

<p>Fine-tune a small classifier on domain-labeled Clarity queries. Do not rely on a general LLM’s prompt-following for routing. Routing errors produce plausible wrong answers with no visible error signal — the worst failure mode in an analytics agent.</p>

<h3 id="03--zc_-grounding-layer">03 · ZC_ Grounding Layer</h3>

<p>Build a static ZC_ resolver that maps every categorical field to its human-readable lookup at query construction time. Bake it into the SQL generation layer as a mandatory post-processing step. Without it, every categorical output is a numeric code that users cannot interpret.</p>

<h3 id="04--data-freshness-contract">04 · Data Freshness Contract</h3>

<p>Every agent output must carry a <code class="language-plaintext highlighter-rouge">data_as_of</code> timestamp. Build this into the output schema from day one — not as a UI afterthought. Clinical users who do not understand T-1 lag will use agent outputs in operational contexts where stale data causes patient harm.</p>

<h3 id="05--multi-tenant-schema-isolation">05 · Multi-Tenant Schema Isolation</h3>

<p>Design the vector store and SQL generation module to be tenant-aware from the start. Health systems customize their Clarity schemas. An agent built against one instance silently fails against another. This is your core technical moat if you scale across health systems — and your deepest risk if you ignore it.</p>

<hr />

<p>Epic Clarity — Agentic AI Layer · Internal Brainstorm · Confidential</p>]]></content><author><name>Sourav Padhi</name></author><category term="engineering" /><category term="data" /><summary type="html"><![CDATA[Purpose: Intelligence map of Epic Clarity’s data topology for teams building an agentic AI layer on top of clinical EHR data. Covers all 12 domains, agent use cases, investment wedges, build sequence, and architecture decisions.]]></summary></entry><entry><title type="html">Growth Experiment Tracker</title><link href="https://sourav.sh/growth-experiments.html" rel="alternate" type="text/html" title="Growth Experiment Tracker" /><published>2026-04-12T00:00:00+00:00</published><updated>2026-04-12T00:00:00+00:00</updated><id>https://sourav.sh/growth-experiments</id><content type="html" xml:base="https://sourav.sh/growth-experiments.html"><![CDATA[<p>Growth Experiment Tracker</p>

<p>frameworks · templates · 20 starter experiments</p>

<p>Growth
Experimentation
AARRR Metrics
ICE Framework
MBA Intern Playbook</p>

<p>Growth isn’t magic. It isn’t “going viral.” It isn’t hiring a growth hacker who sprinkles fairy dust on your funnel. Growth is a systematic process: form a hypothesis, design an experiment, run it, measure the result, learn something, and repeat. The teams that grow fastest are the ones that run the most experiments — because each experiment, win or lose, compounds into knowledge about your customers that competitors don’t have.</p>

<p>This playbook gives you the system: how to prioritize experiments, how to design them properly, a tracker to log everything, and 20 starter ideas organized by funnel stage so you can begin running experiments this week.</p>

<p><strong>Who this is for:</strong> MBA interns running growth experiments, product managers building experiment culture, founders who want a structured approach to growth, and anyone tired of guessing what will move the needle.</p>

<hr />

<p>Part I</p>

<p>The Experiment Mindset</p>

<p>Before you run a single experiment, you need to understand why experimentation matters and how to decide which experiments to run first. Most teams have more ideas than capacity — the framework for prioritization matters more than the ideas themselves.</p>

<h1 id="01-why-experiments">01 Why Experiments</h1>

<p>Every successful growth team operates on a simple belief: <strong>opinions are cheap, data is expensive, and only experiments produce data.</strong></p>

<p>The math is compelling:</p>

<table>
  <thead>
    <tr>
      <th>Experiment Velocity</th>
      <th>Win Rate</th>
      <th>Avg Lift per Win</th>
      <th>Compounded Annual Impact</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>2 experiments/week</td>
      <td>~20%</td>
      <td>+5% on target metric</td>
      <td>~70% annual improvement</td>
    </tr>
    <tr>
      <td>5 experiments/week</td>
      <td>~20%</td>
      <td>+5% on target metric</td>
      <td>~170% annual improvement</td>
    </tr>
    <tr>
      <td>10 experiments/week</td>
      <td>~20%</td>
      <td>+5% on target metric</td>
      <td>~340% annual improvement</td>
    </tr>
  </tbody>
</table>

<p>Most experiments fail. That’s the point. A 20% win rate is excellent. If you’re winning more than 30% of your experiments, you’re not being ambitious enough — you’re testing things you already know will work.</p>

<p>The compound effect is what matters. Each winning experiment makes every future visitor, user, or customer slightly more valuable. Over a year, a team running 5 experiments per week with a 20% win rate and 5% average lift per win will more than <strong>double</strong> their core metric. That’s not theory — that’s math.</p>

<h2 id="the-alternative-guessing">The Alternative: Guessing</h2>

<p>Without experiments, growth decisions look like this:</p>

<ul>
  <li>The CEO says “our homepage needs a redesign” because they’re tired of looking at it.</li>
  <li>The PM says “let’s add a free tier” because a competitor did.</li>
  <li>The marketing lead says “let’s try TikTok” because they read a blog post.</li>
</ul>

<p>These might all be good ideas. They might all be terrible. <strong>Without experiments, you’ll never know which.</strong> And you’ll spend 3 months on a homepage redesign that turns out to decrease conversion by 8%, but nobody will know because nobody measured it.</p>

<p><strong>The cost of not experimenting:</strong> A homepage redesign takes 3 months and costs $50K in design + engineering time. An experiment to test the new headline takes 3 days and costs nothing. If the headline test shows a 15% lift, you know the redesign direction is right. If it shows no lift, you just saved $50K and 3 months.</p>

<hr />

<h1 id="02-the-ice-framework">02 The ICE Framework</h1>

<p>You’ll always have more experiment ideas than capacity to run them. The ICE framework helps you prioritize ruthlessly.</p>

<table>
  <thead>
    <tr>
      <th>Dimension</th>
      <th>What It Measures</th>
      <th>Scale</th>
      <th>How to Score</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Impact</strong></td>
      <td>How much will this move the target metric if it works?</td>
      <td>1–10</td>
      <td><strong>10:</strong> Could double conversion. <strong>5:</strong> 10–20% improvement. <strong>1:</strong> Marginal, &lt;5% improvement.</td>
    </tr>
    <tr>
      <td><strong>Confidence</strong></td>
      <td>How confident are you that it will work?</td>
      <td>1–10</td>
      <td><strong>10:</strong> Strong data/evidence. <strong>5:</strong> Qualitative evidence (user feedback). <strong>1:</strong> Pure gut feeling.</td>
    </tr>
    <tr>
      <td><strong>Ease</strong></td>
      <td>How easy is it to implement and run?</td>
      <td>1–10</td>
      <td><strong>10:</strong> Copy change, 1 hour. <strong>5:</strong> Small feature, 1 week. <strong>1:</strong> Full rebuild, 1+ month.</td>
    </tr>
  </tbody>
</table>

<p><strong>ICE Score = Impact × Confidence × Ease</strong></p>

<p>Higher score = do it first. Simple as that.</p>

<h2 id="worked-examples">Worked Examples</h2>

<table>
  <thead>
    <tr>
      <th>Experiment</th>
      <th>I</th>
      <th>C</th>
      <th>E</th>
      <th>ICE</th>
      <th>Priority</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Change homepage headline from feature-focused to outcome-focused</td>
      <td>7</td>
      <td>6</td>
      <td>9</td>
      <td><strong>378</strong></td>
      <td>Do this week</td>
    </tr>
    <tr>
      <td>Add social proof (customer logos) above the fold</td>
      <td>6</td>
      <td>7</td>
      <td>8</td>
      <td><strong>336</strong></td>
      <td>Do this week</td>
    </tr>
    <tr>
      <td>Reduce onboarding from 7 steps to 3 steps</td>
      <td>8</td>
      <td>5</td>
      <td>4</td>
      <td><strong>160</strong></td>
      <td>Queue for next sprint</td>
    </tr>
    <tr>
      <td>Build a referral program with double-sided incentives</td>
      <td>8</td>
      <td>4</td>
      <td>3</td>
      <td><strong>96</strong></td>
      <td>Backlog</td>
    </tr>
    <tr>
      <td>Complete redesign of pricing page</td>
      <td>9</td>
      <td>3</td>
      <td>2</td>
      <td><strong>54</strong></td>
      <td>Deprioritize — test components first</td>
    </tr>
  </tbody>
</table>

<p><strong>The scoring trap:</strong> Everyone inflates Impact and deflates Ease. Be honest. If you’ve never tested headlines before, your Confidence should be 4, not 8. If the change requires backend work, Ease is a 4, not a 7. Dishonest scoring defeats the purpose of the framework.</p>

<p><strong>Common mistake:</strong> Scoring by committee. ICE works best when one person scores and the group challenges. Group scoring regresses to the mean — everything becomes a 5, and you’ve learned nothing about priorities.</p>

<hr />

<p>Part II</p>

<p>The Experiment Framework</p>

<p>A good experiment has a clear hypothesis, a defined category, and a proper design. Most failed experiments fail because they were poorly designed, not because the idea was bad.</p>

<h1 id="03-hypothesis-format">03 Hypothesis Format</h1>

<p>Every experiment starts with a hypothesis. Not “let’s try changing the button color” — that’s a task, not a hypothesis. A hypothesis is a falsifiable prediction about cause and effect.</p>

<h2 id="the-template">The Template</h2>

<p>We believe that [change] will cause [effect] for [segment], which we’ll measure by [metric] over [timeframe]. We’ll consider this successful if [threshold].</p>

<h2 id="good-vs-bad-hypotheses">Good vs Bad Hypotheses</h2>

<p>BAD</p>

<p>“Let’s test a new onboarding flow.”</p>

<p>No prediction. No metric. No success criteria. You’ll learn nothing.</p>

<p>GOOD</p>

<p>“We believe that <strong>replacing the 7-step onboarding wizard with a 3-step quick-start</strong> will cause <strong>higher activation rates</strong> for <strong>new free trial users</strong>, measured by <strong>% of users who complete core action within 24 hours</strong> over <strong>3 weeks</strong>. Success = <strong>activation rate increases from 34% to 42%+</strong>.”</p>

<p>Specific change. Named segment. Defined metric. Clear timeframe. Quantified threshold.</p>

<h2 id="more-examples">More Examples</h2>

<table>
  <thead>
    <tr>
      <th>Category</th>
      <th>Hypothesis</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Acquisition</td>
      <td>“We believe that <strong>switching our homepage headline from ‘The Modern Data Stack’ to ‘Cut Your Data Pipeline Build Time by 80%’</strong> will increase <strong>demo request rate from 2.1% to 2.8%+</strong> among <strong>direct traffic visitors</strong> over <strong>2 weeks</strong>.”</td>
    </tr>
    <tr>
      <td>Activation</td>
      <td>“We believe that <strong>sending a personalized ‘getting started’ email 1 hour after signup (vs. generic welcome)</strong> will increase <strong>Day-1 retention from 45% to 55%+</strong> for <strong>self-serve signups</strong> over <strong>3 weeks</strong>.”</td>
    </tr>
    <tr>
      <td>Revenue</td>
      <td>“We believe that <strong>defaulting the pricing toggle to annual billing (vs. monthly)</strong> will increase <strong>annual plan selection from 28% to 40%+</strong> among <strong>pricing page visitors</strong> over <strong>4 weeks</strong>.”</td>
    </tr>
    <tr>
      <td>Retention</td>
      <td>“We believe that <strong>sending a ‘you’re falling behind’ email when usage drops below 2 logins/week</strong> will reduce <strong>30-day churn from 6.2% to 5.0%</strong> for <strong>accounts in months 2–6</strong> over <strong>6 weeks</strong>.”</td>
    </tr>
    <tr>
      <td>Referral</td>
      <td>“We believe that <strong>adding a ‘Give $50, Get $50’ referral prompt after the first successful project</strong> will generate <strong>0.15+ referrals per activated user</strong> for <strong>users who complete onboarding</strong> over <strong>4 weeks</strong>.”</td>
    </tr>
  </tbody>
</table>

<hr />

<h1 id="04-experiment-categories--the-aarrr-framework">04 Experiment Categories — The AARRR Framework</h1>

<p>Dave McClure’s pirate metrics framework gives you five categories to organize experiments. Every experiment should map to exactly one stage.</p>

<table>
  <thead>
    <tr>
      <th>Stage</th>
      <th>Question</th>
      <th>Key Metrics</th>
      <th>Example Experiments</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Acquisition</strong></td>
      <td>How do users find us?</td>
      <td>Traffic, signup rate, CAC, channel efficiency</td>
      <td>Landing page tests, ad creative, SEO content, referral sources</td>
    </tr>
    <tr>
      <td><strong>Activation</strong></td>
      <td>Do they have a great first experience?</td>
      <td>Onboarding completion, time-to-value, “aha moment” rate</td>
      <td>Onboarding flow, welcome emails, first-use guidance, feature discovery</td>
    </tr>
    <tr>
      <td><strong>Revenue</strong></td>
      <td>Do they pay us?</td>
      <td>Conversion rate, ARPU, ACV, expansion revenue</td>
      <td>Pricing, upsell triggers, paywall placement, billing defaults</td>
    </tr>
    <tr>
      <td><strong>Retention</strong></td>
      <td>Do they come back?</td>
      <td>DAU/MAU, churn rate, NPS, feature adoption</td>
      <td>Re-engagement emails, health scores, QBR cadence, in-app prompts</td>
    </tr>
    <tr>
      <td><strong>Referral</strong></td>
      <td>Do they tell others?</td>
      <td>Referral rate, viral coefficient, NPS, invite acceptance rate</td>
      <td>Referral incentives, sharing mechanics, testimonial collection</td>
    </tr>
  </tbody>
</table>

<p><strong>Where to start:</strong> Most teams over-invest in Acquisition and under-invest in Activation and Retention. A 10% improvement in Activation has the same revenue impact as a 10% increase in traffic — but it’s usually 5x cheaper to achieve. <strong>Fix your leaky bucket before pouring more water in.</strong></p>

<h2 id="the-funnel-math">The Funnel Math</h2>

<p>Here’s why Activation and Retention experiments often have the highest ROI:</p>

<p><strong>Scenario A: Improve Acquisition by 20%</strong><br />
10,000 visitors → <strong>12,000 visitors</strong> → 1,200 signups → 408 activated → 204 paying → $204K MRR</p>

<p><strong>Scenario B: Improve Activation by 20% (same traffic)</strong><br />
10,000 visitors → 10,000 visitors → 1,000 signups → <strong>408 activated</strong> → 204 paying → $204K MRR</p>

<p><strong>Same result. But Scenario B cost $0 in ad spend.</strong></p>

<hr />

<h1 id="05-experiment-design">05 Experiment Design</h1>

<p>A poorly designed experiment is worse than no experiment. It gives you false confidence in a wrong conclusion. Here’s how to design experiments that produce real learnings.</p>

<h2 id="control-vs-variant">Control vs Variant</h2>

<table>
  <thead>
    <tr>
      <th>Term</th>
      <th>Definition</th>
      <th>Rule</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Control</strong></td>
      <td>The current experience. Nothing changes.</td>
      <td>Always have a control. “Before/after” comparisons without a control are unreliable (seasonality, external factors).</td>
    </tr>
    <tr>
      <td><strong>Variant</strong></td>
      <td>The changed experience you’re testing.</td>
      <td>Change one thing at a time. If you change the headline AND the CTA AND the image, you won’t know which change caused the result.</td>
    </tr>
    <tr>
      <td><strong>Split</strong></td>
      <td>Traffic is randomly divided between control and variant.</td>
      <td>50/50 is standard. For high-risk changes, start with 90/10 and increase if no negative impact.</td>
    </tr>
  </tbody>
</table>

<h2 id="sample-size--when-is-n-big-enough">Sample Size — When Is n Big Enough?</h2>

<p>You don’t need to be a statistician. But you do need to know the basics:</p>

<table>
  <thead>
    <tr>
      <th>Baseline Conversion</th>
      <th>Minimum Detectable Effect</th>
      <th>Required Sample Size (per variant)</th>
      <th>At 1,000 visitors/day, how long?</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>2%</td>
      <td>+0.5% (2% → 2.5%)</td>
      <td>~6,000</td>
      <td>12 days</td>
    </tr>
    <tr>
      <td>5%</td>
      <td>+1% (5% → 6%)</td>
      <td>~4,700</td>
      <td>10 days</td>
    </tr>
    <tr>
      <td>10%</td>
      <td>+2% (10% → 12%)</td>
      <td>~3,600</td>
      <td>7 days</td>
    </tr>
    <tr>
      <td>30%</td>
      <td>+5% (30% → 35%)</td>
      <td>~1,500</td>
      <td>3 days</td>
    </tr>
  </tbody>
</table>

<p>Based on 95% confidence level and 80% statistical power. Use an online calculator (Evan Miller’s is the best free one) for your specific numbers.</p>

<h2 id="duration-rules">Duration Rules</h2>

<ul>
  <li><strong>Minimum 2 weeks for B2B.</strong> B2B traffic has weekly cycles (Mon–Fri vs weekends). Running for less than 2 weeks means you’re comparing weekdays to weekends.</li>
  <li><strong>Minimum 1 full business cycle.</strong> If your customers have a monthly billing cycle, run for at least one full cycle.</li>
  <li><strong>Don’t peek.</strong> Checking results daily and stopping when it “looks good” is the fastest way to get a false positive. Set the duration upfront and don’t stop early.</li>
  <li><strong>Never stop on a Friday.</strong> Weekend traffic behaves differently. End experiments on the same day of the week you started.</li>
</ul>

<p><strong>The “peeking” problem:</strong> If you check your experiment every day and plan to stop when it reaches significance, there’s a 26% chance of a false positive (instead of 5%). This is called the “multiple comparisons” problem. Decide your sample size upfront, run until you hit it, then analyze. One look. One decision.</p>

<h2 id="what-to-measure">What to Measure</h2>

<table>
  <thead>
    <tr>
      <th>Type</th>
      <th>Definition</th>
      <th>Example</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Primary metric</strong></td>
      <td>The one metric that determines success or failure.</td>
      <td>Signup rate, activation rate, conversion rate.</td>
    </tr>
    <tr>
      <td><strong>Secondary metrics</strong></td>
      <td>2–3 metrics that provide context.</td>
      <td>Time on page, bounce rate, feature adoption.</td>
    </tr>
    <tr>
      <td><strong>Guardrail metrics</strong></td>
      <td>Metrics that should NOT get worse.</td>
      <td>Page load time, support ticket volume, churn rate.</td>
    </tr>
  </tbody>
</table>

<p><strong>Guardrail metrics matter:</strong> You could increase signup rate by 50% by removing all form fields — but activation would plummet because you’re now getting unqualified signups. Guardrail metrics prevent you from optimizing one metric at the expense of another.</p>

<hr />

<p>Part III</p>

<p>The Tracker</p>

<p>A growth program without a tracker is just a collection of random acts. The tracker is the institutional memory of your growth team — it prevents you from re-running failed experiments, helps you build on past wins, and creates a playbook that survives team turnover.</p>

<h1 id="06-experiment-log-template">06 Experiment Log Template</h1>

<p>Copy this table into a spreadsheet. Every experiment gets a row. No exceptions. Even failed experiments. <strong>Especially</strong> failed experiments.</p>

<table>
  <thead>
    <tr>
      <th>Column</th>
      <th>Description</th>
      <th>Example</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>ID</strong></td>
      <td>Sequential number. Never reuse.</td>
      <td><code class="language-plaintext highlighter-rouge">GE-042</code></td>
    </tr>
    <tr>
      <td><strong>Hypothesis</strong></td>
      <td>Full hypothesis statement (use the template from section 3).</td>
      <td>“We believe that switching to outcome-focused headline…”</td>
    </tr>
    <tr>
      <td><strong>Category</strong></td>
      <td>AARRR stage.</td>
      <td>Acquisition</td>
    </tr>
    <tr>
      <td><strong>ICE Score</strong></td>
      <td>Impact × Confidence × Ease</td>
      <td>7 × 6 × 9 = <strong>378</strong></td>
    </tr>
    <tr>
      <td><strong>Status</strong></td>
      <td>Queued / Running / Complete / Killed</td>
      <td>Complete</td>
    </tr>
    <tr>
      <td><strong>Start Date</strong></td>
      <td>When the experiment went live.</td>
      <td>2026-04-14</td>
    </tr>
    <tr>
      <td><strong>End Date</strong></td>
      <td>When you stopped and analyzed.</td>
      <td>2026-04-28</td>
    </tr>
    <tr>
      <td><strong>Primary Metric</strong></td>
      <td>The metric you’re optimizing.</td>
      <td>Demo request rate</td>
    </tr>
    <tr>
      <td><strong>Baseline</strong></td>
      <td>Control group’s metric value.</td>
      <td>2.1%</td>
    </tr>
    <tr>
      <td><strong>Result</strong></td>
      <td>Variant’s metric value.</td>
      <td>2.9%</td>
    </tr>
    <tr>
      <td><strong>Lift</strong></td>
      <td>% change from baseline.</td>
      <td>+38%</td>
    </tr>
    <tr>
      <td><strong>Stat Sig?</strong></td>
      <td>Did it reach 95% confidence?</td>
      <td>Yes (p=0.02)</td>
    </tr>
    <tr>
      <td><strong>Winner?</strong></td>
      <td>Y / N / Inconclusive</td>
      <td>Y</td>
    </tr>
    <tr>
      <td><strong>Learning</strong></td>
      <td>What did you learn? (1–2 sentences)</td>
      <td>“Outcome-focused headlines outperform feature-focused for direct traffic. Effect stronger on mobile.”</td>
    </tr>
    <tr>
      <td><strong>Next Action</strong></td>
      <td>What do you do with this result?</td>
      <td>“Ship variant to 100%. Test sub-headlines next.”</td>
    </tr>
  </tbody>
</table>

<h2 id="example-a-completed-experiment-log-entry">Example: A Completed Experiment Log Entry</h2>

<p><strong>GE-042</strong> · Acquisition · ICE: 378 · WINNER</p>

<p><strong>Hypothesis:</strong> Switching homepage headline from “The Modern Data Platform” to “Build Data Pipelines 80% Faster” will increase demo requests from 2.1% to 2.8%+ among direct traffic over 2 weeks.</p>

<p><strong>Duration:</strong> Apr 14 – Apr 28 (14 days)<br />
<strong>Sample:</strong> 4,218 visitors per variant (8,436 total)<br />
<strong>Baseline (control):</strong> 2.1% demo request rate<br />
<strong>Result (variant):</strong> 2.9% demo request rate<br />
<strong>Lift:</strong> +38% (p=0.02, statistically significant)<br />
<strong>Guardrails:</strong> Bounce rate unchanged. Avg time on page +4 seconds. No negative impact on trial signups.</p>

<p><strong>Learning:</strong> Outcome-focused headlines significantly outperform feature-focused ones for direct traffic. The effect was stronger on mobile (44% lift) vs desktop (31% lift). Visitors who saw the outcome headline also explored 1.3 more pages on average.</p>

<p><strong>Next action:</strong> Ship variant to 100%. Run follow-up experiment testing different outcome claims (“80% faster” vs “save 20 hours/week” vs “ship in days, not months”).</p>

<hr />

<h1 id="07-20-starter-experiment-ideas">07 20 Starter Experiment Ideas</h1>

<p>These are proven experiments that work across B2B SaaS companies. Adapt them to your product. Each one includes the hypothesis framing so you can drop it straight into your tracker.</p>

<h2 id="acquisition-top-of-funnel">Acquisition (Top of Funnel)</h2>

<ol>
  <li>Homepage Headline Test</li>
</ol>

<p>Ease: 9 · Typical lift: 10–40% · Duration: 2 weeks</p>

<p>Test your current headline against an outcome-focused alternative. “The all-in-one platform for X” vs “Reduce X time by 60%.” Almost always, specific outcomes beat vague feature descriptions.</p>

<ol>
  <li>Pricing Page Layout</li>
</ol>

<p>Ease: 7 · Typical lift: 5–20% · Duration: 3 weeks</p>

<p>Test 3 tiers vs 2 tiers. Test highlighting the middle tier as “most popular.” Test showing annual pricing by default vs monthly. The pricing page is usually the second-highest-leverage page after the homepage.</p>

<ol>
  <li>SEO Content Cluster</li>
</ol>

<p>Ease: 5 · Typical lift: 50–200% organic traffic · Duration: 8–12 weeks</p>

<p>Publish 8–12 articles around one keyword cluster (e.g., “data pipeline” + long-tail variations). Interlink them. Measure organic traffic growth to the cluster after 8 weeks. This is a slower experiment but often has the highest long-term ROI.</p>

<ol>
  <li>LinkedIn Ad Creative Test</li>
</ol>

<p>Ease: 8 · Typical lift: 15–50% CTR · Duration: 2 weeks</p>

<p>Test 4 ad creatives simultaneously: (A) customer quote, (B) data/stat, (C) pain-point question, (D) product screenshot. Almost always, customer quotes and pain-point questions outperform product screenshots.</p>

<ol>
  <li>Referral Landing Page</li>
</ol>

<p>Ease: 6 · Typical lift: 20–40% referral conversion · Duration: 3 weeks</p>

<p>Create a dedicated landing page for referred visitors (different from homepage). Include the referrer’s name, a tailored value prop, and a simplified signup flow. Referred visitors convert at 3–5x the rate of cold traffic when the landing page matches the referral context.</p>

<h2 id="activation-onboarding--aha-moment">Activation (Onboarding &amp; Aha Moment)</h2>

<ol>
  <li>Onboarding Flow Simplification</li>
</ol>

<p>Ease: 5 · Typical lift: 15–30% completion · Duration: 3 weeks</p>

<p>Cut your onboarding from N steps to N/2 steps. Move non-essential setup to post-activation. The fastest path to the “aha moment” wins. Every additional step loses 10–20% of users.</p>

<ol>
  <li>Time-to-Value Reduction</li>
</ol>

<p>Ease: 4 · Typical lift: 20–50% activation · Duration: 4 weeks</p>

<p>Pre-populate the product with sample data so users see value before doing any work. Figma does this with starter templates. Notion does this with pre-built pages. The first moment of “oh, this is useful” needs to happen in minutes, not days.</p>

<ol>
  <li>Checklist vs Guided Tour</li>
</ol>

<p>Ease: 6 · Typical lift: 10–25% completion · Duration: 2 weeks</p>

<p>Test a static checklist (“Set up your first project, Invite a teammate, Create a dashboard”) vs an interactive guided tour that walks them through each step. Some users prefer autonomy (checklist). Some prefer hand-holding (tour). Test which wins for your audience.</p>

<ol>
  <li>In-App Tooltip Sequence</li>
</ol>

<p>Ease: 7 · Typical lift: 10–20% feature discovery · Duration: 2 weeks</p>

<p>After the user completes onboarding, show 3–5 contextual tooltips highlighting features they haven’t discovered yet. Trigger them based on behavior, not time. “You created a project — did you know you can automate reports?” beats a random tooltip on day 3.</p>

<h2 id="revenue-pricing--upsell">Revenue (Pricing &amp; Upsell)</h2>

<ol>
  <li>Price Increase Test</li>
</ol>

<p>Ease: 8 · Typical lift: 10–30% ARPU · Duration: 4 weeks</p>

<p>Show new visitors a price that’s 20% higher than current pricing. If conversion drops by less than 20%, you’ve increased revenue. Most B2B SaaS is underpriced. A 20% price increase with a 5% conversion drop = 14% more revenue.</p>

<ol>
  <li>Annual Billing Default</li>
</ol>

<p>Ease: 9 · Typical lift: 15–40% annual plan selection · Duration: 2 weeks</p>

<p>Default the pricing toggle to annual instead of monthly. Show the monthly price crossed out with the annual price highlighted. Annual billing improves cash flow, reduces churn (customers commit for a year), and increases LTV.</p>

<ol>
  <li>Upsell Trigger Email</li>
</ol>

<p>Ease: 7 · Typical lift: 5–15% upsell rate · Duration: 4 weeks</p>

<p>Send an automated email when a user hits 80% of their plan limit (seats, API calls, storage). “You’re at 80% of your limit. Upgrade now and get 20% off your first month of Pro.” Timing is everything — send it when the pain is real.</p>

<ol>
  <li>Feature Gating Experiment</li>
</ol>

<p>Ease: 5 · Typical lift: 10–25% upgrade rate · Duration: 4 weeks</p>

<p>Take a popular feature currently available on the free tier and gate it behind the paid plan. Measure: does upgrade rate increase more than free-tier churn increases? If yes, the feature was undervalued and should be gated permanently.</p>

<h2 id="retention-churn-reduction">Retention (Churn Reduction)</h2>

<ol>
  <li>Health Score Alerts</li>
</ol>

<p>Ease: 5 · Typical lift: 10–20% churn reduction · Duration: 6 weeks</p>

<p>Build a simple health score based on login frequency, feature usage, and support tickets. When a customer’s score drops below threshold, auto-assign them to a CSM for proactive outreach. Most churn is predictable 30–60 days in advance.</p>

<ol>
  <li>Re-engagement Campaign</li>
</ol>

<p>Ease: 7 · Typical lift: 5–15% reactivation · Duration: 3 weeks</p>

<p>For users who haven’t logged in for 14+ days, send a 3-email sequence: (1) “Here’s what you missed” with new feature highlights, (2) “Your teammates are active” with social proof, (3) “Can we help?” with an offer for a 1:1 walkthrough.</p>

<ol>
  <li>QBR Cadence Change</li>
</ol>

<p>Ease: 6 · Typical lift: 10–20% renewal rate · Duration: 8 weeks</p>

<p>Switch from quarterly business reviews to monthly 15-minute check-ins. Shorter, more frequent touchpoints catch problems earlier and keep the relationship warm. Test on half your accounts and measure renewal rate vs control.</p>

<ol>
  <li>NPS Follow-Up Automation</li>
</ol>

<p>Ease: 7 · Typical lift: variable · Duration: 4 weeks</p>

<p>When someone gives an NPS score of 0–6 (detractor), auto-trigger a personal email from the CEO within 1 hour asking what’s wrong. When someone gives 9–10 (promoter), auto-ask for a G2 review or referral. Most companies collect NPS and do nothing with it.</p>

<h2 id="referral-viral-loops">Referral (Viral Loops)</h2>

<ol>
  <li>Invite Incentive Test</li>
</ol>

<p>Ease: 6 · Typical lift: 30–80% referral rate · Duration: 4 weeks</p>

<p>Test three referral incentives: (A) $25 credit for both parties, (B) 1 month free for both, (C) exclusive feature unlock. Double-sided incentives (both giver and receiver benefit) consistently outperform one-sided. Test the format, not just the amount.</p>

<ol>
  <li>Sharing Mechanics</li>
</ol>

<p>Ease: 7 · Typical lift: 15–40% share rate · Duration: 3 weeks</p>

<p>Add share prompts at moments of success: after completing a project, after hitting a milestone, after generating a report. The prompt should pre-fill a message like “I just used [product] to [outcome] — worth checking out.” Make sharing effortless.</p>

<ol>
  <li>Partner Referral Program</li>
</ol>

<p>Ease: 4 · Typical lift: new channel entirely · Duration: 8 weeks</p>

<p>Recruit 10 partners (consultants, agencies, complementary tools) and give them a custom referral link with a 15–20% revenue share for the first year. Track which partners send qualified leads vs noise. Double down on the top 3.</p>

<p><strong>How to use this list:</strong> Score each experiment using ICE for your specific situation. A price increase test might be high-impact for an underpriced product but irrelevant for one with price-sensitive customers. Context matters more than the idea itself.</p>

<hr />

<p>Part IV</p>

<p>Running the Program</p>

<p>Ideas and frameworks are worthless without execution. This part covers the weekly cadence, how to build a culture of experimentation, and the hardest decision in growth: when to scale a winner vs kill a loser.</p>

<h1 id="08-the-weekly-growth-meeting">08 The Weekly Growth Meeting</h1>

<p>30 minutes. Every week. Same time. Non-negotiable. This meeting is the heartbeat of your growth program.</p>

<h2 id="the-agenda-30-minutes">The Agenda (30 Minutes)</h2>

<table>
  <thead>
    <tr>
      <th>Time</th>
      <th>Block</th>
      <th>What Happens</th>
      <th>Output</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>0–10 min</strong></td>
      <td><strong>Review Results</strong></td>
      <td>Go through every experiment that completed in the last week. Read the result, the learning, and the recommended next action. No debate on methodology — that happens offline.</td>
      <td>Updated experiment log. Ship/kill decisions made.</td>
    </tr>
    <tr>
      <td><strong>10–20 min</strong></td>
      <td><strong>This Week’s Launches</strong></td>
      <td>Review the top 3–5 experiments by ICE score from the backlog. Confirm they’re ready to launch (design done, tracking in place, hypothesis written). Assign owners. Set launch dates.</td>
      <td>3–5 experiments launching this week with clear owners.</td>
    </tr>
    <tr>
      <td><strong>20–30 min</strong></td>
      <td><strong>Brainstorm</strong></td>
      <td>Open floor. Anyone can pitch a new experiment idea. Quick ICE scoring. Add to backlog. Keep it high-energy — no idea is too small or too weird at this stage.</td>
      <td>5–10 new experiment ideas in the backlog, ICE scored.</td>
    </tr>
  </tbody>
</table>

<p><strong>The rules of the growth meeting:</strong> (1) Everyone comes prepared — read the results before the meeting. (2) Decisions are final — don’t relitigate last week’s decisions. (3) No experiment launches without a written hypothesis. (4) The meeting ends at 30 minutes, period. If you need more time, something is broken.</p>

<h2 id="who-attends">Who Attends</h2>

<ul>
  <li><strong>Required:</strong> Growth lead (runs the meeting), PM, 1 engineer, 1 designer, 1 marketer.</li>
  <li><strong>Optional:</strong> Data analyst (for statistical questions), sales rep (for qualitative input).</li>
  <li><strong>Never:</strong> More than 8 people. Growth meetings die when they become status updates for leadership.</li>
</ul>

<hr />

<h1 id="09-building-a-growth-culture">09 Building a Growth Culture</h1>

<p>The difference between a team that runs 2 experiments/week and one that runs 10 isn’t headcount or budget. It’s culture. Here’s how to build it.</p>

<h2 id="the-five-principles">The Five Principles</h2>

<h3 id="1-document-everything">1. Document Everything</h3>

<p>Every experiment goes in the tracker. Every result gets a written analysis. Every learning gets tagged and searchable. In 12 months, you’ll have 200+ experiments worth of institutional knowledge. New team members can read the log and understand what works in days, not months.</p>

<h3 id="2-celebrate-learnings-not-just-wins">2. Celebrate Learnings, Not Just Wins</h3>

<p>A failed experiment that teaches you something is more valuable than a successful experiment you can’t explain. When an experiment fails:</p>

<ul>
  <li>Don’t hide it. Share it in Slack. “GE-047 failed: outcome-focused CTAs don’t work for enterprise prospects. They prefer specificity (‘see how Acme saved $1.2M’) over generality (‘save 40%’).”</li>
  <li>Ask “what did we learn?” not “why did it fail?”</li>
  <li>Update your mental model. Failure + learning = progress. Failure + silence = waste.</li>
</ul>

<p>The most dangerous outcome of an experiment is not failure. It’s success you can’t explain. If you don’t know WHY something worked, you can’t replicate it, scale it, or build on it. Always understand the “why.”</p>

<h3 id="3-lower-the-bar-for-launching">3. Lower the Bar for Launching</h3>

<p>If an experiment requires a design review, a product spec, a legal review, and a VP sign-off, you’ll run 2 experiments per month instead of 10 per week. Most experiments are low-risk (copy changes, email sequences, landing page variants). Create a fast lane:</p>

<table>
  <thead>
    <tr>
      <th>Experiment Type</th>
      <th>Approval Needed</th>
      <th>Time to Launch</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Copy/headline change</td>
      <td>None — just launch</td>
      <td>Same day</td>
    </tr>
    <tr>
      <td>Email sequence test</td>
      <td>Growth lead approval</td>
      <td>1–2 days</td>
    </tr>
    <tr>
      <td>Landing page variant</td>
      <td>Growth lead + designer</td>
      <td>2–3 days</td>
    </tr>
    <tr>
      <td>Onboarding flow change</td>
      <td>PM + engineer sign-off</td>
      <td>1 week</td>
    </tr>
    <tr>
      <td>Pricing change</td>
      <td>VP + finance approval</td>
      <td>2 weeks</td>
    </tr>
    <tr>
      <td>Core product change</td>
      <td>Full product review</td>
      <td>Sprint planning</td>
    </tr>
  </tbody>
</table>

<h3 id="4-build-a-growth-playbook">4. Build a Growth Playbook</h3>

<p>After 6 months of experiments, you’ll notice patterns. Document them:</p>

<ul>
  <li>“Outcome-focused headlines beat feature-focused headlines 80% of the time (n=12 experiments).”</li>
  <li>“Re-engagement emails work best when sent at Day 14, not Day 7 (n=4 experiments).”</li>
  <li>“Annual billing defaults increase annual plan selection by 20–35% with no measurable drop in total signups (n=3 experiments).”</li>
</ul>

<p>This playbook is your competitive advantage. It’s knowledge that took months and thousands of dollars of experiment time to build. Competitors don’t have it.</p>

<h3 id="5-make-data-accessible">5. Make Data Accessible</h3>

<p>If only the data analyst can check experiment results, you’ve created a bottleneck. Set up dashboards that anyone on the growth team can check. The tools don’t matter (Amplitude, Mixpanel, even a Google Sheet that auto-updates). What matters is that any team member can answer “how is GE-042 performing?” in 30 seconds.</p>

<hr />

<h1 id="10-when-to-scale-vs-kill">10 When to Scale vs Kill</h1>

<p>Every completed experiment leads to one of three decisions: <strong>scale it, kill it, or iterate on it.</strong> This is where most teams get stuck — they don’t have clear criteria, so winning experiments sit in limbo for weeks and losing experiments zombie on because nobody wants to admit they failed.</p>

<h2 id="the-decision-framework">The Decision Framework</h2>

<table>
  <thead>
    <tr>
      <th>Result</th>
      <th>Criteria</th>
      <th>Action</th>
      <th>Timeline</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Clear Winner</strong></td>
      <td>+10% or more improvement, statistically significant (p &lt; 0.05), no guardrail degradation</td>
      <td><strong>Scale immediately.</strong> Ship to 100% of users. Document the learning. Plan follow-up experiments to amplify the effect.</td>
      <td>Ship within 48 hours of analysis.</td>
    </tr>
    <tr>
      <td><strong>Promising</strong></td>
      <td>+5–10% improvement, statistically significant, guardrails intact</td>
      <td><strong>Scale, but keep monitoring.</strong> Ship to 100% and re-check metrics after 2 weeks. Smaller effects can sometimes be noise amplified by luck.</td>
      <td>Ship within 1 week. Re-check at week 3.</td>
    </tr>
    <tr>
      <td><strong>Inconclusive</strong></td>
      <td>Small effect (&lt;5%), not statistically significant even with adequate sample</td>
      <td><strong>Kill the experiment, iterate on the hypothesis.</strong> The change wasn’t big enough. Try a bolder variant. If you’ve tested 3 variants with no signal, abandon the hypothesis entirely.</td>
      <td>Decision within 24 hours. Don’t extend hoping for significance.</td>
    </tr>
    <tr>
      <td><strong>Clear Loser</strong></td>
      <td>Negative impact, or guardrail metrics degraded</td>
      <td><strong>Kill immediately.</strong> Revert to control. Document the learning — understanding why it failed is the whole point.</td>
      <td>Revert within 24 hours.</td>
    </tr>
  </tbody>
</table>

<p><strong>The sunk cost trap:</strong> “But we spent 2 weeks building this feature for the experiment.” Doesn’t matter. If the data says it doesn’t work, kill it. The 2 weeks are gone whether you ship it or not. Shipping a losing variant because you feel bad about the effort is the most expensive mistake in growth.</p>

<h2 id="scaling-checklist">Scaling Checklist</h2>

<p>Before scaling a winning experiment to 100%:</p>

<ul>
  <li>Confirm statistical significance with your data team. Don’t trust the A/B tool’s dashboard blindly.</li>
  <li>Check segment-level results. Did it work for all segments, or just one? If it only worked for enterprise but hurt SMB, you need a segmented rollout.</li>
  <li>Verify guardrail metrics. A 20% lift in signups means nothing if 30-day retention dropped 15%.</li>
  <li>Document the learning in the experiment log and the growth playbook.</li>
  <li>Plan the follow-up. If the headline test won, what headline variants should you test next? Compounding wins is the game.</li>
</ul>

<h2 id="the-velocity-target">The Velocity Target</h2>

<p>Track your team’s experiment velocity as a meta-metric:</p>

<table>
  <thead>
    <tr>
      <th>Stage</th>
      <th>Weekly Experiments</th>
      <th>What It Means</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Getting started</td>
      <td>1–2</td>
      <td>Building the muscle. Focus on process and documentation. Speed comes later.</td>
    </tr>
    <tr>
      <td>Functional</td>
      <td>3–5</td>
      <td>Good cadence. Running multiple experiments across AARRR stages. Learning is accumulating.</td>
    </tr>
    <tr>
      <td>High-performing</td>
      <td>5–10</td>
      <td>Growth is a core competency. Team has systems, tools, and culture to support high velocity.</td>
    </tr>
    <tr>
      <td>Elite</td>
      <td>10–15+</td>
      <td>Multiple parallel workstreams. Dedicated experimentation infrastructure. This is where companies like Airbnb, Booking.com, and Netflix operate.</td>
    </tr>
  </tbody>
</table>

<p><strong>Don’t compare yourself to Netflix on day one.</strong> Start at 1–2 experiments per week. Get the process right. Build the habit. In 3 months, you’ll naturally be at 5/week because you’ve eliminated the friction. Trying to force 10/week before you have the infrastructure leads to sloppy experiments and bad data.</p>

<hr />

<p><strong>The Growth Experiment Checklist</strong></p>

<p>Write the hypothesis first      no hypothesis = no experiment<br />
ICE score everything         prioritize ruthlessly, don’t go by gut<br />
One change per experiment    if you change two things, you learn nothing<br />
Set duration upfront         don’t peek, don’t stop early<br />
Define guardrail metrics     don’t optimize one metric by destroying another<br />
Log every experiment        wins, losses, and inconclusives<br />
Ship winners in 48 hours    velocity of scaling matters as much as velocity of testing<br />
Kill losers immediately     sunk costs are sunk</p>

<p>Growth is not a hack. It’s a system. Build the system. Run the system. Trust the math.</p>]]></content><author><name>Sourav Padhi</name></author><category term="playbooks" /><summary type="html"><![CDATA[Growth Experiment Tracker]]></summary></entry><entry><title type="html">Weekly Sales Dashboard Template</title><link href="https://sourav.sh/sales-dashboard.html" rel="alternate" type="text/html" title="Weekly Sales Dashboard Template" /><published>2026-04-11T00:00:00+00:00</published><updated>2026-04-11T00:00:00+00:00</updated><id>https://sourav.sh/sales-dashboard</id><content type="html" xml:base="https://sourav.sh/sales-dashboard.html"><![CDATA[<p>Weekly Sales Dashboard Template</p>

<p>metrics · formulas · benchmarks · cadence</p>

<p>Sales Ops
Dashboard
Forecasting
MBA Intern
Weekly Review</p>

<p>Most sales dashboards are decoration. They look impressive in board decks but nobody actually uses them to make decisions. The numbers are stale by the time anyone reads them, the metrics are vanity (total pipeline! total activities!), and there’s no connection between what the dashboard shows and what the team should <em>do differently</em>.</p>

<p>This playbook builds a dashboard that a sales leader actually opens every Monday morning, spends 15 minutes on, and walks away with 3 specific actions. It tracks leading indicators (what’s about to happen) not just lagging indicators (what already happened). And it’s opinionated — every metric has a target, and every missed target has a prescribed action.</p>

<p><strong>Who this is for:</strong> MBA interns building their first sales dashboard, RevOps analysts designing weekly reporting, and sales leaders who want a template they can ship in a day.</p>

<hr />

<p>Part I</p>

<p>The Dashboard Philosophy</p>

<p>Before building a single chart, you need to understand what makes a dashboard useful versus what makes it a vanity project. The difference is whether it changes behaviour.</p>

<h1 id="01-why-weekly-not-monthly">01 Why Weekly, Not Monthly</h1>

<p>Monthly reporting is an autopsy. By the time you see that pipeline coverage dropped or win rate tanked, you’ve already lost 4 weeks of potential correction. You can’t un-lose the deals. You can’t un-skip the prospecting.</p>

<p>Weekly reporting is a diagnostic. You catch problems <strong>while they’re still fixable</strong>:</p>

<ul>
  <li><strong>Pipeline coverage dropped below 3x this week?</strong> You have 3 weeks before it shows up in a missed forecast. Time to run a prospecting blitz.</li>
  <li><strong>Rep X had zero meetings booked last week?</strong> That means zero new pipeline in 30 days. Intervene now, not after the quarter ends.</li>
  <li><strong>Average deal size trending down?</strong> Catch it in week 3, not month 3. Are reps discounting? Selling to smaller accounts? Wrong product mix?</li>
</ul>

<p>A weekly dashboard that takes 15 minutes to review is worth more than a monthly dashboard that takes 3 hours to build and nobody reads.</p>

<h2 id="the-15-minute-monday-review">The 15-Minute Monday Review</h2>

<p>Your dashboard should answer exactly three questions in 15 minutes or less:</p>

<ol>
  <li><strong>Are we on track to hit the number this quarter?</strong> (Forecast vs quota)</li>
  <li><strong>Do we have enough pipeline to hit next quarter’s number?</strong> (Pipeline coverage)</li>
  <li><strong>Is anyone falling behind?</strong> (Rep-level attainment and activity)</li>
</ol>

<p>If your dashboard requires more than 15 minutes, it has too many metrics. Cut ruthlessly.</p>

<hr />

<h1 id="02-leading-vs-lagging-indicators">02 Leading vs Lagging Indicators</h1>

<p>This is the single most important concept in sales dashboarding. Most dashboards are 90% lagging indicators. Yours should be 60% leading.</p>

<table>
  <thead>
    <tr>
      <th>Type</th>
      <th>What it tells you</th>
      <th>Examples</th>
      <th>When you can act</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Leading</strong></td>
      <td>What’s about to happen</td>
      <td>Pipeline created, meetings booked, proposals sent, new contacts added</td>
      <td>While there’s still time to change the outcome</td>
    </tr>
    <tr>
      <td><strong>Lagging</strong></td>
      <td>What already happened</td>
      <td>Revenue closed, win rate, average deal size, churn</td>
      <td>After it’s too late to change this quarter</td>
    </tr>
    <tr>
      <td><strong>Diagnostic</strong></td>
      <td>Why something happened</td>
      <td>Loss reasons, sales cycle by segment, discount rates, stage conversion</td>
      <td>To fix the process for next quarter</td>
    </tr>
  </tbody>
</table>

<p><strong>The trap:</strong> Revenue closed is the metric the board cares about. But by the time you see a revenue miss, the deals were already lost 60–90 days ago. The leading indicators — meetings booked, pipeline created, proposals sent — told the story months earlier. Your dashboard should scream “warning” at the leading indicator stage, not at the revenue stage.</p>

<p><strong>Rule of thumb:</strong> For every lagging metric on your dashboard, you should have at least two leading metrics that predict it. Revenue is predicted by pipeline coverage + win rate. Pipeline is predicted by meetings booked + outbound activity. Work backwards from the number you need to hit.</p>

<hr />

<p>Part II</p>

<p>The Metrics</p>

<p>Every metric below includes the formula, the benchmark target, and what to do if you’re below target. If a metric doesn’t have a “what to do” action, it doesn’t belong on your dashboard.</p>

<h1 id="03-pipeline-metrics">03 Pipeline Metrics</h1>

<p>Pipeline is the lifeblood of a sales team. These metrics tell you whether you have enough opportunities, whether they’re moving, and whether they’re healthy.</p>

<table>
  <thead>
    <tr>
      <th>Metric</th>
      <th>Formula</th>
      <th>Target</th>
      <th>If Below Target</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Pipeline Coverage</strong></td>
      <td><code class="language-plaintext highlighter-rouge">Total Open Pipeline / Remaining Quota</code></td>
      <td>3.0x – 4.0x</td>
      <td>Prospecting blitz. Every AE adds 5 net-new opps this week. Cancel non-essential internal meetings.</td>
    </tr>
    <tr>
      <td><strong>Pipeline Velocity</strong></td>
      <td><code class="language-plaintext highlighter-rouge">(# Opps × Win Rate × Avg Deal Size) / Avg Sales Cycle Days</code></td>
      <td>Trending up or flat WoW</td>
      <td>Identify which variable is dragging: fewer opps? Lower win rate? Smaller deals? Longer cycles? Fix the bottleneck.</td>
    </tr>
    <tr>
      <td><strong>Pipeline Created This Week</strong></td>
      <td><code class="language-plaintext highlighter-rouge">Sum of ACV for opps created in the last 7 days</code></td>
      <td>15–20% of quarterly quota / 13 weeks</td>
      <td>SDR team needs more activity. AEs need to self-source. Review ICP — are we targeting the right accounts?</td>
    </tr>
    <tr>
      <td><strong>Aging Deals (&gt;2x avg cycle)</strong></td>
      <td><code class="language-plaintext highlighter-rouge"># of opps open longer than 2x average sales cycle</code></td>
      <td>&lt; 10% of total pipeline</td>
      <td>Force a decision: close or kill. Zombie deals inflate pipeline coverage and mask real problems.</td>
    </tr>
    <tr>
      <td><strong>Stage Conversion Rates</strong></td>
      <td><code class="language-plaintext highlighter-rouge">Opps moving to Stage N+1 / Opps in Stage N (weekly)</code></td>
      <td>Varies by stage (see below)</td>
      <td>If a stage has low conversion, the exit criteria are wrong, reps lack skills for that stage, or bad deals aren’t being disqualified.</td>
    </tr>
  </tbody>
</table>

<h3 id="stage-conversion-benchmarks-b2b-saas-mid-market">Stage Conversion Benchmarks (B2B SaaS, Mid-Market)</h3>

<table>
  <thead>
    <tr>
      <th>Stage</th>
      <th>Description</th>
      <th>Conversion to Next</th>
      <th>Typical Duration</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>S1</td>
      <td>Discovery / Qualification</td>
      <td>60–70%</td>
      <td>5–10 days</td>
    </tr>
    <tr>
      <td>S2</td>
      <td>Needs Analysis / Demo</td>
      <td>50–60%</td>
      <td>7–14 days</td>
    </tr>
    <tr>
      <td>S3</td>
      <td>Proposal / Evaluation</td>
      <td>40–55%</td>
      <td>10–21 days</td>
    </tr>
    <tr>
      <td>S4</td>
      <td>Negotiation / Legal</td>
      <td>70–85%</td>
      <td>7–14 days</td>
    </tr>
    <tr>
      <td>S5</td>
      <td>Closed Won</td>
      <td>—</td>
      <td>—</td>
    </tr>
  </tbody>
</table>

<p><strong>The pipeline coverage lie:</strong> 4x coverage means nothing if 40% of the pipeline is zombie deals that will never close. Calculate <strong>real coverage</strong>: remove all deals that haven’t had activity in 21+ days. If your “real” coverage is below 2.5x, you have a problem — regardless of what the headline number says.</p>

<hr />

<h1 id="04-activity-metrics">04 Activity Metrics</h1>

<p>Activity metrics are the purest leading indicators. They tell you <strong>right now</strong> whether next month’s pipeline will exist.</p>

<table>
  <thead>
    <tr>
      <th>Metric</th>
      <th>Formula</th>
      <th>Target (per AE/week)</th>
      <th>If Below Target</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Meetings Booked</strong></td>
      <td><code class="language-plaintext highlighter-rouge">Count of qualified meetings scheduled this week</code></td>
      <td>4–6</td>
      <td>Outbound volume too low, or messaging isn’t converting. Check email reply rates and call connect rates.</td>
    </tr>
    <tr>
      <td><strong>Meetings Held</strong></td>
      <td><code class="language-plaintext highlighter-rouge">Count of meetings that actually happened</code></td>
      <td>3–5 (75%+ show rate)</td>
      <td>No-show problem. Send calendar reminders. Confirm day-before via email. Call 5 min after no-show.</td>
    </tr>
    <tr>
      <td><strong>Calls Made</strong></td>
      <td><code class="language-plaintext highlighter-rouge">Outbound dials logged in CRM</code></td>
      <td>40–60 (AEs doing own prospecting)</td>
      <td>AEs spending too much time on non-selling activities. Audit their calendar for unnecessary internal meetings.</td>
    </tr>
    <tr>
      <td><strong>Emails Sent</strong></td>
      <td><code class="language-plaintext highlighter-rouge">Personalised outbound emails (not sequences)</code></td>
      <td>30–50</td>
      <td>Prospecting discipline issue. Block 1hr/day for outbound and treat it as non-negotiable.</td>
    </tr>
    <tr>
      <td><strong>Proposals Sent</strong></td>
      <td><code class="language-plaintext highlighter-rouge">Formal proposals or SOWs delivered to prospects</code></td>
      <td>2–4</td>
      <td>Deals stalling in discovery. Are reps afraid to ask for the next step? Do they lack proposal templates?</td>
    </tr>
  </tbody>
</table>

<p>Activity metrics are not about micromanagement. They’re about early warning systems. If an AE’s meetings booked drops to zero for two consecutive weeks, that AE will miss quota in 60 days. Guaranteed. The dashboard should make this visible before it’s a crisis.</p>

<hr />

<h1 id="05-revenue-metrics">05 Revenue Metrics</h1>

<p>These are the lagging indicators — the scoreboard. They tell you what happened, not what’s going to happen. Track them weekly to spot trends, but don’t use them as the primary management tool.</p>

<table>
  <thead>
    <tr>
      <th>Metric</th>
      <th>Formula</th>
      <th>Target</th>
      <th>If Below Target</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Closed Won (Weekly)</strong></td>
      <td><code class="language-plaintext highlighter-rouge">Sum of ACV for deals closed-won this week</code></td>
      <td>Quota / 13 weeks (linear)</td>
      <td>Check forecast accuracy. Were these deals expected? If not, your forecast process is broken.</td>
    </tr>
    <tr>
      <td><strong>Closed Lost (Weekly)</strong></td>
      <td><code class="language-plaintext highlighter-rouge">Sum of ACV for deals closed-lost this week</code></td>
      <td>Track trend, not absolute</td>
      <td>Review loss reasons. If a pattern emerges (price, competitor, timing), escalate to leadership.</td>
    </tr>
    <tr>
      <td><strong>ACV Trend</strong></td>
      <td><code class="language-plaintext highlighter-rouge">4-week rolling average ACV of closed-won deals</code></td>
      <td>Flat or increasing</td>
      <td>If decreasing: reps discounting too heavily, or selling to smaller accounts. Review discount approvals.</td>
    </tr>
    <tr>
      <td><strong>Win Rate</strong></td>
      <td><code class="language-plaintext highlighter-rouge">Closed Won / (Closed Won + Closed Lost)</code></td>
      <td>20–30% (mid-market SaaS)</td>
      <td>Below 20%: qualification problem (bad deals entering pipeline). Above 35%: not enough pipeline (only pursuing safe bets).</td>
    </tr>
    <tr>
      <td><strong>Average Sales Cycle</strong></td>
      <td><code class="language-plaintext highlighter-rouge">Average days from opp creation to close-won (rolling 90d)</code></td>
      <td>Varies by segment</td>
      <td>If lengthening: deals stalling in a specific stage. Check stage-level conversion to find the bottleneck.</td>
    </tr>
  </tbody>
</table>

<h3 id="sales-cycle-benchmarks-by-segment">Sales Cycle Benchmarks by Segment</h3>

<table>
  <thead>
    <tr>
      <th>Segment</th>
      <th>Typical ACV</th>
      <th>Average Cycle</th>
      <th>Stakeholders Involved</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>SMB</td>
      <td>$5K – $15K</td>
      <td>14 – 30 days</td>
      <td>1–2</td>
    </tr>
    <tr>
      <td>Mid-Market</td>
      <td>$25K – $75K</td>
      <td>30 – 60 days</td>
      <td>3–5</td>
    </tr>
    <tr>
      <td>Enterprise</td>
      <td>$100K – $500K</td>
      <td>60 – 120 days</td>
      <td>5–10</td>
    </tr>
    <tr>
      <td>Strategic</td>
      <td>$500K+</td>
      <td>120 – 270 days</td>
      <td>8–15+</td>
    </tr>
  </tbody>
</table>

<hr />

<h1 id="06-forecast-metrics">06 Forecast Metrics</h1>

<p>Forecasting is where art meets science. The dashboard should track both the forecast itself and how accurate the forecast has been — because most sales teams are terrible at forecasting, and they need to see that fact in writing.</p>

<table>
  <thead>
    <tr>
      <th>Metric</th>
      <th>Formula</th>
      <th>Target</th>
      <th>If Below Target</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Commit</strong></td>
      <td><code class="language-plaintext highlighter-rouge">Sum of ACV where AE says "will close this quarter" (90%+ confidence)</code></td>
      <td>≥ 80% of remaining quota</td>
      <td>Gap to quota = amount of pipeline that needs to convert from Upside to Commit. Is that realistic?</td>
    </tr>
    <tr>
      <td><strong>Upside</strong></td>
      <td><code class="language-plaintext highlighter-rouge">Sum of ACV with 50–80% probability, expected this quarter</code></td>
      <td>1.5–2x the gap between Commit and Quota</td>
      <td>Not enough deals in late stages. Either pipeline was created too late, or deals are stuck.</td>
    </tr>
    <tr>
      <td><strong>Best Case</strong></td>
      <td><code class="language-plaintext highlighter-rouge">Commit + Upside + stretch deals</code></td>
      <td>120–140% of quota</td>
      <td>If best case &lt; quota, the quarter is already lost barring a miracle. Start planning for next quarter.</td>
    </tr>
    <tr>
      <td><strong>Weighted Pipeline</strong></td>
      <td><code class="language-plaintext highlighter-rouge">Sum of (ACV × Stage Probability) for all open opps</code></td>
      <td>≥ Remaining Quota</td>
      <td>Not enough pipeline at high enough stages. Need to accelerate deals or create more pipeline.</td>
    </tr>
    <tr>
      <td><strong>Forecast Accuracy (trailing)</strong></td>
      <td><code class="language-plaintext highlighter-rouge">Actual Closed / Forecasted Commit (last 4 weeks)</code></td>
      <td>85–110%</td>
      <td>Below 85%: reps are committing deals that slip. Above 110%: reps are sandbagging. Both are problems.</td>
    </tr>
    <tr>
      <td><strong>Slip Rate</strong></td>
      <td><code class="language-plaintext highlighter-rouge">Deals that were in Commit last week but didn't close / Total Commit</code></td>
      <td>&lt; 15%</td>
      <td>Reps committing deals without confirmed close plans. Tighten commit criteria: must have verbal yes + legal in progress.</td>
    </tr>
  </tbody>
</table>

<p><strong>The sandbagging tax:</strong> When reps sandbag (hide good deals from the forecast to look like heroes), leadership can’t allocate resources, can’t plan hiring, and can’t set accurate expectations with the board. Sandbagging is just as bad as over-committing. Track forecast accuracy both ways.</p>

<hr />

<h1 id="07-rep-level-metrics">07 Rep-Level Metrics</h1>

<p>The team dashboard hides individual performance problems. A team hitting quota can have 2 reps at 150% and 3 reps at 60%. The rep-level view surfaces this.</p>

<table>
  <thead>
    <tr>
      <th>Metric</th>
      <th>What It Shows</th>
      <th>Action Trigger</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Individual Pipeline</strong></td>
      <td>Each AE’s open pipeline vs their individual quota</td>
      <td>Coverage &lt; 2.5x → 1:1 prospecting plan</td>
    </tr>
    <tr>
      <td><strong>Individual Activity</strong></td>
      <td>Meetings, calls, emails per AE per week</td>
      <td>Below 50% of team avg for 2+ weeks → performance conversation</td>
    </tr>
    <tr>
      <td><strong>Quota Attainment (QTD)</strong></td>
      <td>Each AE’s closed-won vs pro-rated quarterly quota</td>
      <td>Below 70% of pro-rata at midpoint → deal review + action plan</td>
    </tr>
    <tr>
      <td><strong>Win Rate (Individual)</strong></td>
      <td>Each AE’s win rate vs team average</td>
      <td>Consistently 10+ pts below avg → ride-alongs, deal coaching</td>
    </tr>
    <tr>
      <td><strong>Ramp Status</strong></td>
      <td>New hires: months since start, ramp quota, actual attainment</td>
      <td>Behind ramp by month 4 → additional enablement, adjusted territory</td>
    </tr>
  </tbody>
</table>

<h3 id="ramp-schedule-benchmarks-mid-market-ae">Ramp Schedule Benchmarks (Mid-Market AE)</h3>

<table>
  <thead>
    <tr>
      <th>Month</th>
      <th>Ramp Quota (% of full)</th>
      <th>Expected Pipeline</th>
      <th>Expected Closed</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Month 1</td>
      <td>0%</td>
      <td>Learning the product, shadowing calls</td>
      <td>$0</td>
    </tr>
    <tr>
      <td>Month 2</td>
      <td>0%</td>
      <td>Begin prospecting, first discovery calls</td>
      <td>$0</td>
    </tr>
    <tr>
      <td>Month 3</td>
      <td>25%</td>
      <td>1–2x quota in pipeline</td>
      <td>First deal possible</td>
    </tr>
    <tr>
      <td>Month 4</td>
      <td>50%</td>
      <td>2–3x quota in pipeline</td>
      <td>$15K–$25K</td>
    </tr>
    <tr>
      <td>Month 5</td>
      <td>75%</td>
      <td>3x+ quota in pipeline</td>
      <td>$25K–$40K</td>
    </tr>
    <tr>
      <td>Month 6+</td>
      <td>100%</td>
      <td>Full quota expectations</td>
      <td>Full quota</td>
    </tr>
  </tbody>
</table>

<hr />

<p>Part III</p>

<p>Building It</p>

<p>You don’t need a BI tool. Google Sheets or Excel with data pulled from your CRM is enough to build a dashboard that’s more useful than 90% of what Tableau produces. Here’s how.</p>

<h1 id="08-google-sheets--excel-setup">08 Google Sheets / Excel Setup</h1>

<p>Your dashboard workbook should have exactly 4 tabs:</p>

<table>
  <thead>
    <tr>
      <th>Tab</th>
      <th>Purpose</th>
      <th>Updated</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>1. Summary</strong></td>
      <td>The one-page view. All key metrics, colour-coded red/yellow/green. This is what you review on Monday.</td>
      <td>Auto-calculated</td>
    </tr>
    <tr>
      <td><strong>2. Pipeline Data</strong></td>
      <td>Raw CRM export: every open opportunity with stage, ACV, close date, owner, last activity date, days open</td>
      <td>Weekly (Monday AM)</td>
    </tr>
    <tr>
      <td><strong>3. Activity Data</strong></td>
      <td>Weekly activity totals per rep: calls, emails, meetings booked, meetings held, proposals sent</td>
      <td>Weekly (Monday AM)</td>
    </tr>
    <tr>
      <td><strong>4. History</strong></td>
      <td>Week-over-week tracking. Each row = one week. Columns = all key metrics. This is how you spot trends.</td>
      <td>Append each week</td>
    </tr>
  </tbody>
</table>

<p><strong>The simplicity principle:</strong> Resist the urge to build 12 tabs with pivot tables and conditional formatting. The dashboard you actually use every Monday is better than the beautiful one you stop updating in week 3. Start with 4 tabs. Add complexity only when you’ve used it for a full quarter.</p>

<h2 id="summary-tab-layout">Summary Tab Layout</h2>

<p>Structure the Summary tab in 5 horizontal sections, top to bottom:</p>

<ol>
  <li><strong>Header:</strong> Quarter, weeks remaining, team quota, closed-won QTD, gap to quota</li>
  <li><strong>Forecast:</strong> Commit, Upside, Best Case, Weighted Pipeline</li>
  <li><strong>Pipeline:</strong> Coverage, Created this week, Aging deals, Velocity</li>
  <li><strong>Activity:</strong> Team totals for meetings, calls, emails, proposals (with WoW change)</li>
  <li><strong>Rep Scorecard:</strong> One row per AE with pipeline, attainment %, activity grade</li>
</ol>

<hr />

<h1 id="09-crm-reports-to-pull">09 CRM Reports to Pull</h1>

<p>Whether you’re on Salesforce, HubSpot, Pipedrive, or Close, you need these 5 CRM reports exported weekly:</p>

<table>
  <thead>
    <tr>
      <th>#</th>
      <th>Report</th>
      <th>Fields Needed</th>
      <th>CRM Filter</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>1</strong></td>
      <td>Open Pipeline</td>
      <td>Opp name, Owner, Stage, ACV, Close date, Created date, Last activity, Days in current stage</td>
      <td>Stage != Closed Won/Lost, Close date = this quarter or next</td>
    </tr>
    <tr>
      <td><strong>2</strong></td>
      <td>Closed Won (This Week)</td>
      <td>Opp name, Owner, ACV, Close date, Sales cycle days, Source</td>
      <td>Close date = last 7 days, Stage = Closed Won</td>
    </tr>
    <tr>
      <td><strong>3</strong></td>
      <td>Closed Lost (This Week)</td>
      <td>Opp name, Owner, ACV, Close date, Loss reason, Competitor</td>
      <td>Close date = last 7 days, Stage = Closed Lost</td>
    </tr>
    <tr>
      <td><strong>4</strong></td>
      <td>Pipeline Created (This Week)</td>
      <td>Opp name, Owner, ACV, Source, Stage</td>
      <td>Created date = last 7 days</td>
    </tr>
    <tr>
      <td><strong>5</strong></td>
      <td>Activity Report</td>
      <td>Owner, Calls logged, Emails sent, Meetings booked, Meetings held, Proposals sent</td>
      <td>Activity date = last 7 days, grouped by owner</td>
    </tr>
  </tbody>
</table>

<p><strong>Pro tip:</strong> In Salesforce, save these as scheduled reports that email you a CSV every Monday at 7am. In HubSpot, create saved views with these exact filters. The goal is to make the Monday data pull take less than 5 minutes so you never skip it.</p>

<hr />

<h1 id="10-formulas-reference">10 Formulas Reference</h1>

<p>Every formula you need for the dashboard, written for Google Sheets. Adapt cell references to your layout.</p>

<table>
  <thead>
    <tr>
      <th>Metric</th>
      <th>Formula (Google Sheets)</th>
      <th>Notes</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Pipeline Coverage</strong></td>
      <td><code class="language-plaintext highlighter-rouge">=SUMIF(Pipeline!D:D,"&lt;&gt;Closed*",Pipeline!C:C) / (Quota - ClosedWonQTD)</code></td>
      <td>Exclude closed stages. Divide by remaining quota, not total quota.</td>
    </tr>
    <tr>
      <td><strong>Pipeline Velocity</strong></td>
      <td><code class="language-plaintext highlighter-rouge">=(NumOpps * WinRate * AvgDealSize) / AvgCycleDays</code></td>
      <td>Gives you daily revenue velocity. Multiply by remaining days for expected revenue.</td>
    </tr>
    <tr>
      <td><strong>Win Rate</strong></td>
      <td><code class="language-plaintext highlighter-rouge">=COUNTIF(Stage,"Closed Won") / (COUNTIF(Stage,"Closed Won") + COUNTIF(Stage,"Closed Lost"))</code></td>
      <td>Exclude open deals. Rolling 90-day window is most useful.</td>
    </tr>
    <tr>
      <td><strong>Weighted Pipeline</strong></td>
      <td><code class="language-plaintext highlighter-rouge">=SUMPRODUCT(ACV, StageProbability)</code></td>
      <td>Assign probability by stage: S1=10%, S2=25%, S3=50%, S4=75%, S5=100%</td>
    </tr>
    <tr>
      <td><strong>Aging Deals</strong></td>
      <td><code class="language-plaintext highlighter-rouge">=COUNTIFS(DaysOpen,"&gt;"&amp;(2*AvgCycle), Stage,"&lt;&gt;Closed*")</code></td>
      <td>Deals open longer than 2x your average sales cycle.</td>
    </tr>
    <tr>
      <td><strong>Forecast Accuracy</strong></td>
      <td><code class="language-plaintext highlighter-rouge">=ActualClosed / CommitForecast</code></td>
      <td>Calculate weekly. Track in History tab. 4-week rolling average smooths noise.</td>
    </tr>
    <tr>
      <td><strong>WoW Change</strong></td>
      <td><code class="language-plaintext highlighter-rouge">=(ThisWeek - LastWeek) / LastWeek</code></td>
      <td>Format as percentage. Conditional format: green if positive, red if negative.</td>
    </tr>
  </tbody>
</table>

<p><strong>Conditional formatting rules:</strong> Apply these to your Summary tab for instant visual scanning. Green = at or above target. Yellow = within 10% of target. Red = more than 10% below target. The Monday review should take 15 seconds of scanning colours before you read any numbers.</p>

<hr />

<p>Part IV</p>

<p>The Weekly Cadence</p>

<p>A dashboard without a meeting cadence is just a spreadsheet. These three weekly touchpoints turn data into action.</p>

<h1 id="11-monday-pipeline-review-15-min">11 Monday Pipeline Review (15 min)</h1>

<p><strong>When:</strong> Monday 9:00–9:15 AM. <strong>Who:</strong> Sales leader + all AEs. <strong>Format:</strong> Standing meeting, screen-sharing the dashboard.</p>

<h3 id="agenda">Agenda</h3>

<table>
  <thead>
    <tr>
      <th>Time</th>
      <th>Topic</th>
      <th>What to cover</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>0–3 min</strong></td>
      <td>Scoreboard</td>
      <td>QTD closed vs quota. Pipeline coverage. WoW change in key metrics. Green/yellow/red status.</td>
    </tr>
    <tr>
      <td><strong>3–8 min</strong></td>
      <td>Pipeline Health</td>
      <td>New pipeline created last week. Aging deals (name them). Stage conversion drops. Any deals slip from commit?</td>
    </tr>
    <tr>
      <td><strong>8–13 min</strong></td>
      <td>Activity Check</td>
      <td>Any rep below activity minimums? Any rep with zero meetings booked? What’s the plan to fix it?</td>
    </tr>
    <tr>
      <td><strong>13–15 min</strong></td>
      <td>Actions</td>
      <td>3 specific actions for the week. Who owns each. No more than 3.</td>
    </tr>
  </tbody>
</table>

<p><strong>The 15-minute rule:</strong> This meeting must end at 15 minutes. If a deal needs deeper discussion, take it to the Wednesday review. The Monday meeting is a pulse check, not a strategy session. If it consistently runs over, you have too many metrics or too many people talking.</p>

<hr />

<h1 id="12-wednesday-deal-review-30-min">12 Wednesday Deal Review (30 min)</h1>

<p><strong>When:</strong> Wednesday 2:00–2:30 PM. <strong>Who:</strong> Sales leader + 1–2 AEs (rotate). <strong>Format:</strong> Deep dive on 3–4 specific deals.</p>

<h3 id="deal-selection-criteria">Deal Selection Criteria</h3>

<p>Don’t review all deals. Review the ones that matter most right now:</p>

<ul>
  <li><strong>Commit deals closing this month:</strong> What’s the close plan? What could go wrong?</li>
  <li><strong>Largest deals in pipeline:</strong> Are they progressing? Multi-threaded? Executive sponsor identified?</li>
  <li><strong>Stuck deals:</strong> No stage movement in 14+ days. What’s the blocker?</li>
  <li><strong>Deals with competitors:</strong> What’s our positioning? Do we know the competitor’s pricing?</li>
</ul>

<h3 id="questions-to-ask-for-each-deal">Questions to Ask for Each Deal</h3>

<table>
  <thead>
    <tr>
      <th>Category</th>
      <th>Question</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Champion</strong></td>
      <td>Who is our champion? Have they sold internally on our behalf? What happens if they leave?</td>
    </tr>
    <tr>
      <td><strong>Decision</strong></td>
      <td>Who is the economic buyer? Have we met them? What’s their decision criteria?</td>
    </tr>
    <tr>
      <td><strong>Timeline</strong></td>
      <td>Why does this need to happen by the close date? What’s the compelling event? Is the timeline theirs or ours?</td>
    </tr>
    <tr>
      <td><strong>Competition</strong></td>
      <td>Who else are they evaluating? What do they like about the competitor? Where are we positioned?</td>
    </tr>
    <tr>
      <td><strong>Next Step</strong></td>
      <td>What is the specific next step? (If the answer is “follow up” that’s not a next step.)</td>
    </tr>
  </tbody>
</table>

<p>The best deal reviews don’t just ask “what’s the status?” — they ask “what’s the close plan?” A close plan has a specific next step, a specific date, and a specific person. “I’ll follow up next week” is not a close plan. “I’m sending the proposal to the CFO on Thursday, and we have a review call booked for Monday” is a close plan.</p>

<hr />

<h1 id="13-friday-forecast-15-min">13 Friday Forecast (15 min)</h1>

<p><strong>When:</strong> Friday 4:00–4:15 PM. <strong>Who:</strong> Sales leader (solo or with RevOps). <strong>Format:</strong> Update the forecast categories and submit to leadership.</p>

<h3 id="the-forecast-update-process">The Forecast Update Process</h3>

<ol>
  <li><strong>Review each AE’s Commit deals:</strong> Did anything slip this week? Is the close plan still intact? Move slipped deals from Commit to Upside.</li>
  <li><strong>Review Upside deals:</strong> Did any Upside deals advance enough to become Commit? (Must have: verbal yes, defined close plan, confirmed timeline.)</li>
  <li><strong>Calculate the gap:</strong> Remaining Quota minus Commit = Gap. Is the Upside pool large enough to fill the gap at a realistic conversion rate?</li>
  <li><strong>Submit the call:</strong> Your forecast to leadership should be: “We will close [Commit number]. Upside of [Upside number]. Risk: [biggest risk to the Commit number].”</li>
</ol>

<table>
  <thead>
    <tr>
      <th>Category</th>
      <th>Confidence</th>
      <th>Criteria</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Commit</strong></td>
      <td>90%+</td>
      <td>Verbal yes from decision maker. Legal/procurement in progress. Close date confirmed. Specific close plan exists.</td>
    </tr>
    <tr>
      <td><strong>Upside</strong></td>
      <td>50–80%</td>
      <td>In late stages (S3–S4). Champion identified and active. Expected close this quarter but close plan not yet confirmed.</td>
    </tr>
    <tr>
      <td><strong>Best Case</strong></td>
      <td>20–50%</td>
      <td>Viable deals that could close if everything goes right. Early stages or stalled deals that might reactivate.</td>
    </tr>
  </tbody>
</table>

<p><strong>Forecast accuracy goal:</strong> Over time, your Commit number should land within +/- 10% of actual closes each week. If you’re consistently off by more than 20%, the team’s commit criteria are too loose. Tighten them: verbal yes isn’t enough — require a signed order form or PO in progress to count as Commit.</p>

<hr />

<p>Part V</p>

<p>Complete Example Dashboard</p>

<p>A fully worked dashboard for a hypothetical 5-AE mid-market SaaS team. Q2 2026, Week 7 of 13. Quota: $2.5M team ($500K per AE). ACV: $45K average. All numbers are realistic.</p>

<h1 id="14-full-dashboard--novacrm-5-aes-q2-2026">14 Full Dashboard — NovaCRM (5 AEs, Q2 2026)</h1>

<p>NovaCRM — Q2 2026 Sales Dashboard · Week 7 of 13</p>

<table>
  <thead>
    <tr>
      <th>KPI</th>
      <th>Value</th>
      <th>Target</th>
      <th>Status</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Team Quota (Q2)</strong></td>
      <td>$2,500,000</td>
      <td>—</td>
      <td>—</td>
    </tr>
    <tr>
      <td><strong>Closed Won (QTD)</strong></td>
      <td>$1,180,000</td>
      <td>$1,346,000 (pro-rata W7)</td>
      <td>88%</td>
    </tr>
    <tr>
      <td><strong>Gap to Quota</strong></td>
      <td>$1,320,000</td>
      <td>—</td>
      <td>—</td>
    </tr>
    <tr>
      <td><strong>Weeks Remaining</strong></td>
      <td>6</td>
      <td>—</td>
      <td>—</td>
    </tr>
  </tbody>
</table>

<h2 id="forecast">Forecast</h2>

<table>
  <thead>
    <tr>
      <th>Category</th>
      <th>Amount</th>
      <th>Target</th>
      <th>Status</th>
      <th>Notes</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Commit</strong></td>
      <td>$890,000</td>
      <td>≥ $1,056,000 (80% of gap)</td>
      <td>84% of target</td>
      <td>$166K short of where Commit should be. Need 2 Upside deals to advance to Commit this week.</td>
    </tr>
    <tr>
      <td><strong>Upside</strong></td>
      <td>$720,000</td>
      <td>$660,000 (1.5x gap minus Commit)</td>
      <td>109%</td>
      <td>Healthy Upside pool. Focus on converting $200K to Commit.</td>
    </tr>
    <tr>
      <td><strong>Best Case</strong></td>
      <td>$2,790,000</td>
      <td>$3,000,000 (120% of quota)</td>
      <td>93%</td>
      <td>Achievable if win rate holds and no major slips.</td>
    </tr>
    <tr>
      <td><strong>Weighted Pipeline</strong></td>
      <td>$1,540,000</td>
      <td>$1,320,000 (gap)</td>
      <td>117%</td>
      <td>Weighted pipeline covers the gap. Watch for deal slippage.</td>
    </tr>
    <tr>
      <td><strong>Slip Rate (Last 2 weeks)</strong></td>
      <td>18%</td>
      <td>&lt; 15%</td>
      <td>Above target</td>
      <td>3 deals slipped from Commit. Two were “verbal yes” with no confirmed close plan. Tighten criteria.</td>
    </tr>
  </tbody>
</table>

<h2 id="pipeline-health">Pipeline Health</h2>

<table>
  <thead>
    <tr>
      <th>Metric</th>
      <th>Value</th>
      <th>Target</th>
      <th>Status</th>
      <th>WoW Change</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Total Open Pipeline</strong></td>
      <td>$4,620,000</td>
      <td>—</td>
      <td>—</td>
      <td>+$340K (+8%)</td>
    </tr>
    <tr>
      <td><strong>Pipeline Coverage</strong></td>
      <td>3.5x</td>
      <td>3.0–4.0x</td>
      <td>On target</td>
      <td>+0.3x</td>
    </tr>
    <tr>
      <td><strong>Pipeline Created This Week</strong></td>
      <td>$380,000</td>
      <td>$290,000</td>
      <td>131%</td>
      <td>+$120K</td>
    </tr>
    <tr>
      <td><strong>Aging Deals (&gt;90 days)</strong></td>
      <td>7 deals ($510K)</td>
      <td>&lt; 5 deals</td>
      <td>Above target</td>
      <td>+2 deals</td>
    </tr>
    <tr>
      <td><strong>Pipeline Velocity</strong></td>
      <td>$12,400/day</td>
      <td>$11,000/day</td>
      <td>113%</td>
      <td>+$800/day</td>
    </tr>
  </tbody>
</table>

<p><strong>Action needed:</strong> 7 aging deals totaling $510K are inflating pipeline coverage. Without them, real coverage drops to 3.1x. Review all 7 on Wednesday: close, advance, or kill. The 2 new aging deals this week (Meridian Corp $85K and TechFlow $65K) haven’t had activity in 28 days.</p>

<h2 id="activity-team-totals--this-week">Activity (Team Totals — This Week)</h2>

<table>
  <thead>
    <tr>
      <th>Metric</th>
      <th>Total</th>
      <th>Per AE Avg</th>
      <th>Target/AE</th>
      <th>Status</th>
      <th>WoW</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Meetings Booked</strong></td>
      <td>22</td>
      <td>4.4</td>
      <td>4–6</td>
      <td>On target</td>
      <td>+3</td>
    </tr>
    <tr>
      <td><strong>Meetings Held</strong></td>
      <td>18</td>
      <td>3.6</td>
      <td>3–5</td>
      <td>On target</td>
      <td>+1</td>
    </tr>
    <tr>
      <td><strong>Calls Made</strong></td>
      <td>185</td>
      <td>37</td>
      <td>40–60</td>
      <td>Below avg</td>
      <td>-22</td>
    </tr>
    <tr>
      <td><strong>Emails Sent</strong></td>
      <td>210</td>
      <td>42</td>
      <td>30–50</td>
      <td>On target</td>
      <td>+15</td>
    </tr>
    <tr>
      <td><strong>Proposals Sent</strong></td>
      <td>11</td>
      <td>2.2</td>
      <td>2–4</td>
      <td>On target</td>
      <td>+2</td>
    </tr>
  </tbody>
</table>

<h2 id="rep-scorecard">Rep Scorecard</h2>

<table>
  <thead>
    <tr>
      <th>AE</th>
      <th>Quota</th>
      <th>Closed QTD</th>
      <th>Attain %</th>
      <th>Pipeline</th>
      <th>Coverage</th>
      <th>Meetings</th>
      <th>Status</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Sarah Kim</strong></td>
      <td>$500K</td>
      <td>$340K</td>
      <td>68%</td>
      <td>$980K</td>
      <td>6.1x</td>
      <td>6</td>
      <td>On track</td>
    </tr>
    <tr>
      <td><strong>Marcus Reeves</strong></td>
      <td>$500K</td>
      <td>$310K</td>
      <td>62%</td>
      <td>$860K</td>
      <td>4.5x</td>
      <td>5</td>
      <td>On track</td>
    </tr>
    <tr>
      <td><strong>Aisha Patel</strong></td>
      <td>$500K</td>
      <td>$280K</td>
      <td>56%</td>
      <td>$1,020K</td>
      <td>4.6x</td>
      <td>4</td>
      <td>Watch — large pipeline but low close rate (15%)</td>
    </tr>
    <tr>
      <td><strong>Tom Nguyen</strong></td>
      <td>$500K</td>
      <td>$160K</td>
      <td>32%</td>
      <td>$680K</td>
      <td>2.0x</td>
      <td>5</td>
      <td>At risk — low pipeline, needs 3 new opps this week</td>
    </tr>
    <tr>
      <td><strong>Jess Rivera</strong> Ramp M4</td>
      <td>$250K</td>
      <td>$90K</td>
      <td>36%</td>
      <td>$580K</td>
      <td>3.6x</td>
      <td>2</td>
      <td>On ramp — tracking to ramp target</td>
    </tr>
  </tbody>
</table>

<p><strong>This week’s focus:</strong></p>
<ol>
  <li><strong>Tom Nguyen:</strong> 1:1 pipeline building session. Coverage at 2.0x is critical. Block 3 hours for prospecting blitz. Review his target account list.</li>
  <li><strong>Aisha Patel:</strong> Deal coaching. High pipeline (4.6x) but low win rate (15% vs team avg 24%). Review her discovery calls — likely not qualifying hard enough.</li>
  <li><strong>Aging deals:</strong> Review all 7 on Wednesday. Kill at least 3. That $510K is inflating everyone’s numbers.</li>
</ol>

<h2 id="revenue--this-week">Revenue — This Week</h2>

<table>
  <thead>
    <tr>
      <th>Metric</th>
      <th>This Week</th>
      <th>Last Week</th>
      <th>WoW</th>
      <th>Q2 Total</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Closed Won</strong></td>
      <td>$185,000 (3 deals)</td>
      <td>$140,000 (2 deals)</td>
      <td>+32%</td>
      <td>$1,180,000</td>
    </tr>
    <tr>
      <td><strong>Closed Lost</strong></td>
      <td>$120,000 (2 deals)</td>
      <td>$95,000 (2 deals)</td>
      <td>+26%</td>
      <td>$680,000</td>
    </tr>
    <tr>
      <td><strong>Average ACV (Won)</strong></td>
      <td>$61,700</td>
      <td>$70,000</td>
      <td>-12%</td>
      <td>$45,400 (rolling)</td>
    </tr>
    <tr>
      <td><strong>Win Rate (Rolling 90d)</strong></td>
      <td>24% — On target (20–30% benchmark)</td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td><strong>Avg Sales Cycle (Rolling 90d)</strong></td>
      <td>42 days — On target (30–60 day benchmark for mid-market)</td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
  </tbody>
</table>

<hr />

<p><strong>The Dashboard Checklist</strong></p>

<p>Update every Monday        5 min data pull, 15 min review<br />
Leading &gt; Lagging          60% leading indicators, 40% lagging<br />
Every metric has an action   if below target, what do you DO?<br />
Rep-level visibility        team averages hide individual problems<br />
Kill zombie deals           pipeline coverage means nothing if 30% is dead<br />
Track forecast accuracy     hold yourself accountable to what you commit<br />
3 actions per week max      focus beats coverage every time</p>

<p>The dashboard doesn’t close deals. It tells you where to focus so your team can.</p>]]></content><author><name>Sourav Padhi</name></author><category term="playbooks" /><summary type="html"><![CDATA[Weekly Sales Dashboard Template]]></summary></entry><entry><title type="html">Win/Loss Analysis Template</title><link href="https://sourav.sh/win-loss-analysis.html" rel="alternate" type="text/html" title="Win/Loss Analysis Template" /><published>2026-04-10T00:00:00+00:00</published><updated>2026-04-10T00:00:00+00:00</updated><id>https://sourav.sh/win-loss-analysis</id><content type="html" xml:base="https://sourav.sh/win-loss-analysis.html"><![CDATA[<p>Win/Loss Analysis Template</p>

<p>interviews · tracking · analysis · action loop</p>

<p>Sales Strategy
Competitive Intel
Win/Loss
Deal Analysis
Product Feedback</p>

<p>Every sales team has a graveyard of lost deals and a trophy case of wins. Almost none of them systematically study either. They move on to the next deal, repeating the same mistakes and accidentally replicating the same successes without understanding why.</p>

<p>Win/loss analysis is the most underused intelligence source in B2B sales. It tells you why buyers actually chose you (or didn’t), what your competitors are doing, where your product falls short, and which sales motions work. Learning from losses is <strong>3x more valuable</strong> than learning from wins — because losses reveal the gaps you can’t see from the inside.</p>

<p><strong>Who this is for:</strong> Sales leaders building a win/loss program, product marketers who own competitive intelligence, and founders who want to understand why deals are being lost.</p>

<hr />

<p>Part I</p>

<p>Why Win/Loss</p>

<p>Before building the system, you need to understand why this matters and why most companies don’t do it despite the obvious value.</p>

<h1 id="01-the-most-underused-intelligence-source">01 The Most Underused Intelligence Source</h1>

<p>Your CRM has a “Closed Lost — Reason” field. It probably says things like “Price” or “Timing” or “Went with Competitor.” These reasons are <strong>almost always wrong</strong>.</p>

<p>They’re wrong because:</p>

<ul>
  <li><strong>The AE filled them in.</strong> Reps have an incentive to blame external factors (price, timing, budget) rather than admit they lost on value, missed signals, or got outsold.</li>
  <li><strong>The buyer gave a polite reason.</strong> “We went a different direction” or “Budget got cut” is the B2B equivalent of “It’s not you, it’s me.” The real reason is usually more specific and more fixable.</li>
  <li><strong>Nobody digs deeper.</strong> The deal is lost. The rep moves on. The real intelligence dies in a Salesforce picklist.</li>
</ul>

<p>Win/loss analysis fixes this by going straight to the source: <strong>the buyer</strong>. Not your AE. Not your champion. The person who made the decision. In a structured, non-sales conversation, conducted within 2 weeks of the decision while the experience is still fresh.</p>

<p>Companies that run formal win/loss programs see a 15–30% improvement in win rate within 2–3 quarters. Not because of any single insight, but because of the cumulative effect of dozens of small improvements that only surface when you ask buyers directly.</p>

<hr />

<h1 id="02-why-losses-are-3x-more-valuable-than-wins">02 Why Losses Are 3x More Valuable Than Wins</h1>

<table>
  <thead>
    <tr>
      <th>Source</th>
      <th>What You Learn</th>
      <th>Impact</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Win Interviews</strong></td>
      <td>What’s working. What buyers value. What differentiates you. Which sales motions convert.</td>
      <td>Reinforcement. Double down on what works. Use in sales training and marketing.</td>
    </tr>
    <tr>
      <td><strong>Loss Interviews</strong></td>
      <td>Where you’re weak. What competitors do better. Where the sales process broke. What buyers wish you’d done differently.</td>
      <td>Discovery. Reveals blind spots. Directly actionable for product, sales, pricing, and positioning.</td>
    </tr>
  </tbody>
</table>

<p>Win interviews tell you what you already know (or suspect). Loss interviews tell you what you <strong>don’t know</strong> and <strong>can’t see</strong> from the inside. That’s why they’re 3x more valuable.</p>

<p><strong>The uncomfortable math:</strong> If you have a 25% win rate, 75% of your market interactions are losses. Those 75% of buyers chose someone else (or chose nothing). They have information you desperately need. Every loss you don’t interview is intelligence you’re throwing away.</p>

<h3 id="what-winloss-reveals-that-nothing-else-can">What Win/Loss Reveals That Nothing Else Can</h3>

<ul>
  <li><strong>Your real competitive positioning:</strong> Not what your marketing says. What buyers actually think when they compare you side-by-side.</li>
  <li><strong>Your sales process gaps:</strong> “Your demo was great but we never talked to a technical person. The competitor brought an SE to every call.” You won’t find this in CRM data.</li>
  <li><strong>Pricing perception:</strong> Not whether your price is too high (it usually isn’t). Whether the buyer <em>understood</em> the value enough to justify the price.</li>
  <li><strong>The decision timeline:</strong> When did they actually make the decision? (Usually 2–3 weeks before they told you.) What happened in that window?</li>
  <li><strong>Stakeholder dynamics:</strong> Who had influence you didn’t know about? “Our VP of Security had veto power and your competitor addressed his concerns directly. You never met him.”</li>
</ul>

<hr />

<p>Part II</p>

<p>The Interview</p>

<p>The interview is the core of win/loss analysis. Get this right and everything else follows. Get it wrong and you’re collecting bad data that leads to bad decisions.</p>

<h1 id="03-when-to-conduct--who-to-interview">03 When to Conduct &amp; Who to Interview</h1>

<h2 id="timing">Timing</h2>

<table>
  <thead>
    <tr>
      <th>Window</th>
      <th>Quality</th>
      <th>Notes</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>1–2 weeks after decision</strong></td>
      <td>Best</td>
      <td>Memory is fresh. Details are vivid. Emotions haven’t faded. This is the sweet spot.</td>
    </tr>
    <tr>
      <td><strong>2–4 weeks after</strong></td>
      <td>Good</td>
      <td>Still usable. Some details start to blur. Better late than never.</td>
    </tr>
    <tr>
      <td><strong>4+ weeks after</strong></td>
      <td>Low value</td>
      <td>Buyer has moved on. Recall is poor. Rationalisation has set in. Don’t bother.</td>
    </tr>
  </tbody>
</table>

<h2 id="who-to-interview">Who to Interview</h2>

<table>
  <thead>
    <tr>
      <th>Person</th>
      <th>Value</th>
      <th>How to Get Them</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>The Economic Buyer</strong> (who made the final decision)</td>
      <td>Highest</td>
      <td>Ask your champion for an introduction. Frame it as “learning, not selling.”</td>
    </tr>
    <tr>
      <td><strong>The Evaluator</strong> (who ran the evaluation)</td>
      <td>High</td>
      <td>Usually your primary contact during the deal. Easiest to reach.</td>
    </tr>
    <tr>
      <td><strong>Hidden Influencer</strong> (IT, Legal, Security)</td>
      <td>Medium-High</td>
      <td>You might not know who this is. Ask: “Who else influenced the decision?”</td>
    </tr>
    <tr>
      <td><strong>Your AE</strong></td>
      <td>Low</td>
      <td>Do NOT rely on the AE’s account of what happened. They have blind spots and biases. Interview the buyer.</td>
    </tr>
  </tbody>
</table>

<p><strong>Who should conduct the interview:</strong> NOT the AE who worked the deal. Ideally, someone from product marketing, sales enablement, or a dedicated win/loss analyst. The buyer will be more honest with someone they don’t have a sales relationship with. If you’re small and the AE is the only option, have a manager or founder conduct the interview instead.</p>

<h2 id="how-to-get-buyers-to-agree">How to Get Buyers to Agree</h2>

<p>The participation rate for win/loss interviews is typically 40–60% when done right. Here’s how to ask:</p>

<p>To: <strong>The Buyer</strong> · 1–3 days after decision</p>

<p>Quick favor — 15 min to help us improve</p>

<p>Hi ,</p>

<p>Congratulations on making your decision — I hope it goes well regardless of outcome.</p>

<p>We’re always trying to improve our process. Would you be open to a 15-minute conversation about your evaluation experience? This isn’t a sales call — we won’t try to change your mind. We genuinely want to learn what we did well and where we fell short.</p>

<p>Your feedback would be incredibly valuable. Happy to work around your schedule.</p>

<p>(Note: this should come from someone other than the AE)</p>

<p><strong>Why this works:</strong> “This isn’t a sales call” removes the fear that you’ll try to re-open the deal. “Regardless of outcome” is gracious. “15 minutes” is a small ask. Most buyers are willing to help if you make it easy and genuine.</p>

<hr />

<h1 id="04-interview-guide--won-deals">04 Interview Guide — Won Deals</h1>

<p>For deals you won, the goal is to understand <strong>why you won</strong> from the buyer’s perspective (not your AE’s) and <strong>what almost went wrong</strong>.</p>

<h3 id="opening-questions-2-min">Opening Questions (2 min)</h3>

<ol>
  <li>“What prompted you to start evaluating solutions in the first place?”</li>
  <li>“What was the business problem or trigger that made this a priority?”</li>
</ol>

<h3 id="evaluation-process-5-min">Evaluation Process (5 min)</h3>

<ol>
  <li>“Walk me through your evaluation process. How did you structure the decision?”</li>
  <li>“Who was involved in the decision? What role did each person play?”</li>
  <li>“What were your top 3 criteria when comparing solutions?”</li>
  <li>“Who else did you consider? How far did each get in the process?”</li>
</ol>

<h3 id="decision-5-min">Decision (5 min)</h3>

<ol>
  <li>“What ultimately tipped the decision in our favour?”</li>
  <li>“Was there a specific moment or interaction where you thought ‘this is the one’?”</li>
  <li>“What almost stopped you from choosing us? What was your biggest hesitation?”</li>
  <li>“How would you rate our sales process? What could we have done better?”</li>
</ol>

<h3 id="forward-looking-3-min">Forward-Looking (3 min)</h3>

<ol>
  <li>“What does success look like for you in 6 months?”</li>
  <li>“Is there anything you wish we’d told you during the process that you had to figure out on your own?”</li>
</ol>

<p><strong>The gold question for wins:</strong> “What almost stopped you from choosing us?” This reveals your vulnerabilities. The things that almost killed the deal <em>this</em> time will actually kill it <em>next</em> time against a stronger competitor. Fix them now.</p>

<hr />

<h1 id="05-interview-guide--lost-deals">05 Interview Guide — Lost Deals</h1>

<p>For deals you lost, the goal is to understand the <strong>real reason</strong> (not the polite reason), what the competitor did better, and where your sales process broke down.</p>

<h3 id="opening-questions-2-min-1">Opening Questions (2 min)</h3>

<ol>
  <li>“What originally prompted you to look at solutions like ours?”</li>
  <li>“How did you first hear about us?”</li>
</ol>

<h3 id="evaluation-process-5-min-1">Evaluation Process (5 min)</h3>

<ol>
  <li>“Walk me through your decision process from start to finish.”</li>
  <li>“What were your top 3 evaluation criteria?”</li>
  <li>“Who was involved in the final decision? Was there anyone who had particularly strong opinions?”</li>
  <li>“How many vendors did you evaluate? How did we compare?”</li>
</ol>

<h3 id="the-decision-5-min">The Decision (5 min)</h3>

<ol>
  <li>“What ultimately tipped the decision away from us?”</li>
  <li>“Was there a specific moment where you thought ‘this isn’t going to work’?”</li>
  <li>“If you could change one thing about our product, what would have made the difference?”</li>
  <li>“How did pricing factor into your decision? Was it about the price itself or the value you saw for the price?”</li>
  <li>“What did  do particularly well in their sales process?”</li>
</ol>

<h3 id="our-sales-process-3-min">Our Sales Process (3 min)</h3>

<ol>
  <li>“How would you rate our sales process overall? What worked? What didn’t?”</li>
  <li>“Was there anything missing from our process that you expected or that the competitor provided?”</li>
  <li>“Did you feel like our team understood your requirements?”</li>
  <li>“If you were coaching our sales team, what would you tell them to do differently?”</li>
</ol>

<h3 id="closing-1-min">Closing (1 min)</h3>

<ol>
  <li>“Is there anything else that influenced the decision that I haven’t asked about?”</li>
  <li>“Would you be open to reconsidering us in the future if things change?”</li>
</ol>

<p>Question 15 — “If you were coaching our sales team, what would you tell them to do differently?” — is the single most valuable question in win/loss analysis. Buyers give incredibly specific, actionable feedback when asked this way. You’ll hear things like: “Your rep should have asked about our compliance requirements in the first call, not the third” or “The competitor brought a customer reference who was in our exact industry. You didn’t.”</p>

<hr />

<h1 id="06-interview-technique">06 Interview Technique</h1>

<p>The quality of your interview depends entirely on technique. Bad technique = polite surface-level answers. Good technique = specific, honest, actionable intelligence.</p>

<table>
  <thead>
    <tr>
      <th>Rule</th>
      <th>Why</th>
      <th>Example</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Start broad, then narrow</strong></td>
      <td>Let them tell the story first. Then drill into specifics.</td>
      <td>“Walk me through the process” → then “You mentioned pricing — tell me more about that.”</td>
    </tr>
    <tr>
      <td><strong>Use their words, not yours</strong></td>
      <td>When they use a specific phrase, repeat it back. Shows you’re listening and encourages depth.</td>
      <td>They: “Your demo felt like a pitch.” You: “Felt like a pitch — can you unpack that?”</td>
    </tr>
    <tr>
      <td><strong>Ask “Why?” at least 3 times</strong></td>
      <td>The first answer is surface level. The third answer is the real reason.</td>
      <td>“Price.” → “What about the price?” → “It wasn’t the cost, it was that we couldn’t see the ROI justifying it.” Now you have the real answer.</td>
    </tr>
    <tr>
      <td><strong>Embrace silence</strong></td>
      <td>After they answer, wait 3–5 seconds. They’ll often add the most valuable detail as a follow-up.</td>
      <td>“We went with the competitor because… [pause]… honestly, their SE made our security team feel heard.”</td>
    </tr>
    <tr>
      <td><strong>Never defend or sell</strong></td>
      <td>The moment you get defensive, the buyer shuts down. This isn’t a sales call.</td>
      <td>If they say “Your product was missing X” — don’t say “Actually, we do have X.” Say “Tell me more about why X was important.”</td>
    </tr>
    <tr>
      <td><strong>Record (with permission)</strong></td>
      <td>You can’t take notes and listen at the same time. Transcripts are 10x more useful than summaries.</td>
      <td>“Do you mind if I record this so I can focus on listening? It’s only for internal learning.”</td>
    </tr>
  </tbody>
</table>

<hr />

<p>Part III</p>

<p>The Tracking System</p>

<p>Individual interviews are useful. A systematic database of 50+ interviews over time is transformational. Here’s how to build the tracking system that turns anecdotes into data.</p>

<h1 id="07-building-the-tracking-system">07 Building the Tracking System</h1>

<p>Your win/loss tracking lives in two places:</p>

<ol>
  <li><strong>CRM (structured data):</strong> Standardised fields on every closed deal. Picklists, not free text. This is what you’ll analyse at scale.</li>
  <li><strong>Spreadsheet or Notion (qualitative data):</strong> Interview notes, quotes, themes. This is where the rich insights live.</li>
</ol>

<h3 id="crm-fields-to-add">CRM Fields to Add</h3>

<table>
  <thead>
    <tr>
      <th>Field</th>
      <th>Type</th>
      <th>Required</th>
      <th>Purpose</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Win/Loss Interview Conducted</strong></td>
      <td>Checkbox</td>
      <td>Yes</td>
      <td>Track completion rate. Goal: 40%+ of closed deals.</td>
    </tr>
    <tr>
      <td><strong>Interview Date</strong></td>
      <td>Date</td>
      <td>If interviewed</td>
      <td>Track time-to-interview. Target: within 14 days.</td>
    </tr>
    <tr>
      <td><strong>Primary Win/Loss Reason</strong></td>
      <td>Picklist</td>
      <td>Yes</td>
      <td>Standardised reason for analysis. See picklist below.</td>
    </tr>
    <tr>
      <td><strong>Secondary Win/Loss Reason</strong></td>
      <td>Picklist</td>
      <td>Optional</td>
      <td>Deals often have multiple factors.</td>
    </tr>
    <tr>
      <td><strong>Competitor</strong></td>
      <td>Picklist</td>
      <td>Yes</td>
      <td>Who else was in the evaluation. Multi-select.</td>
    </tr>
    <tr>
      <td><strong>Champion Strength</strong></td>
      <td>1–5 scale</td>
      <td>Yes</td>
      <td>How strong was our internal champion?</td>
    </tr>
    <tr>
      <td><strong>Decision Maker Met</strong></td>
      <td>Yes/No</td>
      <td>Yes</td>
      <td>Did we meet the economic buyer?</td>
    </tr>
    <tr>
      <td><strong>Number of Stakeholders</strong></td>
      <td>Number</td>
      <td>Yes</td>
      <td>How many people influenced the decision?</td>
    </tr>
    <tr>
      <td><strong>Sales Cycle (Days)</strong></td>
      <td>Auto-calculated</td>
      <td>Yes</td>
      <td>Created-to-close duration.</td>
    </tr>
  </tbody>
</table>

<hr />

<h1 id="08-standardised-winloss-reasons">08 Standardised Win/Loss Reasons</h1>

<p>The picklist is critical. Free-text loss reasons are useless for analysis (“it was complicated” doesn’t help anyone). Use these standardised categories:</p>

<h3 id="win-reasons">Win Reasons</h3>

<table>
  <thead>
    <tr>
      <th>Reason</th>
      <th>Definition</th>
      <th>Example</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Product Fit</strong></td>
      <td>Our product best met their technical/functional requirements</td>
      <td>“Your API flexibility was the differentiator. No one else could handle our workflow.”</td>
    </tr>
    <tr>
      <td><strong>Sales Experience</strong></td>
      <td>Our sales process was better than competitors (demo, SE, responsiveness)</td>
      <td>“Your team understood our business faster than anyone else.”</td>
    </tr>
    <tr>
      <td><strong>Price / Value</strong></td>
      <td>We offered the best value for the price (not necessarily the cheapest)</td>
      <td>“You weren’t the cheapest, but the ROI case was the clearest.”</td>
    </tr>
    <tr>
      <td><strong>Brand / Trust</strong></td>
      <td>Reputation, references, market position, or existing relationship</td>
      <td>“Three of our peers recommended you. That was hard to ignore.”</td>
    </tr>
    <tr>
      <td><strong>Existing Relationship</strong></td>
      <td>We had an existing footprint or prior engagement</td>
      <td>“We already used your free tier. Switching costs were zero.”</td>
    </tr>
    <tr>
      <td><strong>Integration / Ecosystem</strong></td>
      <td>Fit with their existing tech stack</td>
      <td>“You were the only option that integrated natively with Snowflake.”</td>
    </tr>
  </tbody>
</table>

<h3 id="loss-reasons">Loss Reasons</h3>

<table>
  <thead>
    <tr>
      <th>Reason</th>
      <th>Definition</th>
      <th>Example</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Product Gap</strong></td>
      <td>Missing a feature or capability they needed</td>
      <td>“We needed SSO and you didn’t have it. Non-negotiable for our security team.”</td>
    </tr>
    <tr>
      <td><strong>Competitor Strength</strong></td>
      <td>Competitor had a superior product, process, or relationship</td>
      <td>“The competitor’s SE spent 2 hours with our security team. Your team didn’t.”</td>
    </tr>
    <tr>
      <td><strong>Price Perception</strong></td>
      <td>Buyer couldn’t see the value justifying the price</td>
      <td>“Your price was 40% higher and we couldn’t build the ROI case internally.”</td>
    </tr>
    <tr>
      <td><strong>No Decision</strong></td>
      <td>Buyer chose to do nothing or defer the purchase</td>
      <td>“Budget got reallocated. We’ll revisit in Q3.”</td>
    </tr>
    <tr>
      <td><strong>Sales Process</strong></td>
      <td>Our sales execution was poor (slow, unresponsive, wrong approach)</td>
      <td>“It took you 5 days to respond to our security questionnaire. They responded in 24 hours.”</td>
    </tr>
    <tr>
      <td><strong>Timing / Budget</strong></td>
      <td>Genuine timing or budget issue (not a polite excuse)</td>
      <td>“We had a hiring freeze. Literally couldn’t sign anything.”</td>
    </tr>
    <tr>
      <td><strong>Champion Lost</strong></td>
      <td>Our internal champion left, was reassigned, or lost influence</td>
      <td>“The VP who was pushing for this left in the middle of the eval.”</td>
    </tr>
    <tr>
      <td><strong>Stakeholder Misalignment</strong></td>
      <td>Key stakeholder we didn’t engage vetoed or slowed the deal</td>
      <td>“The CISO was never brought in. He killed it at the last minute.”</td>
    </tr>
  </tbody>
</table>

<p><strong>The “price” trap:</strong> When an AE says they lost on price, it’s almost never actually about price. In win/loss interviews, “price” usually translates to: (a) they didn’t see enough value, (b) we didn’t help them build the internal business case, or (c) the competitor positioned value better at a similar price. If more than 25% of your losses show “Price” as the reason, your real problem is value communication, not pricing.</p>

<hr />

<p>Part IV</p>

<p>Analysis</p>

<p>Interviews are the raw material. Analysis is where you turn raw material into decisions. Run this quarterly with at least 15–20 data points.</p>

<h1 id="09-quarterly-analysis-framework">09 Quarterly Analysis Framework</h1>

<p>Every quarter, slice the data across 5 dimensions:</p>

<table>
  <thead>
    <tr>
      <th>Dimension</th>
      <th>What to Calculate</th>
      <th>What It Tells You</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Win rate by competitor</strong></td>
      <td>Win rate when Competitor A was in the deal vs Competitor B vs no competitor</td>
      <td>Who you’re losing to most. Where to invest in battle cards and competitive training.</td>
    </tr>
    <tr>
      <td><strong>Win rate by segment</strong></td>
      <td>Win rate for SMB vs Mid-Market vs Enterprise</td>
      <td>Where your product/sales motion is strongest. Where to focus GTM investment.</td>
    </tr>
    <tr>
      <td><strong>Win rate by ACV range</strong></td>
      <td>Win rate for deals $0–25K vs $25–75K vs $75K+</td>
      <td>Whether you win more at certain price points. Pricing strategy implications.</td>
    </tr>
    <tr>
      <td><strong>Win rate by loss reason</strong></td>
      <td>Frequency and % of each loss reason</td>
      <td>The biggest fixable problems. If “Product Gap” is #1, product team needs this data.</td>
    </tr>
    <tr>
      <td><strong>Win rate by sales process factors</strong></td>
      <td>Win rate when decision maker was met vs not. When champion was strong vs weak. When SE was involved vs not.</td>
      <td>Which sales process elements actually move the needle. Build these into the methodology.</td>
    </tr>
  </tbody>
</table>

<h3 id="example-quarterly-win-rate-analysis-hypothetical">Example: Quarterly Win Rate Analysis (Hypothetical)</h3>

<table>
  <thead>
    <tr>
      <th>Dimension</th>
      <th>Slice</th>
      <th>Deals</th>
      <th>Win Rate</th>
      <th>Insight</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>By Competitor</strong></td>
      <td>vs. CompetitorA</td>
      <td>18</td>
      <td>17%</td>
      <td>Getting outsold. Need battle card + SE pairing.</td>
    </tr>
    <tr>
      <td>vs. CompetitorB</td>
      <td>12</td>
      <td>42%</td>
      <td>Strong position. Maintain approach.</td>
      <td> </td>
    </tr>
    <tr>
      <td>No competitor</td>
      <td>22</td>
      <td>55%</td>
      <td>Win most when we’re the only option. Invest in being found first.</td>
      <td> </td>
    </tr>
    <tr>
      <td><strong>By Segment</strong></td>
      <td>SMB ($5–15K)</td>
      <td>20</td>
      <td>40%</td>
      <td>Solid. Self-serve motion is working.</td>
    </tr>
    <tr>
      <td>Mid-Market ($25–75K)</td>
      <td>24</td>
      <td>28%</td>
      <td>Below target. Discovery and multi-threading issues.</td>
      <td> </td>
    </tr>
    <tr>
      <td>Enterprise ($100K+)</td>
      <td>8</td>
      <td>12%</td>
      <td>Struggling. Not enough executive engagement. SE coverage gap.</td>
      <td> </td>
    </tr>
    <tr>
      <td><strong>By Decision Maker Met</strong></td>
      <td>Met the decision maker</td>
      <td>30</td>
      <td>40%</td>
      <td>2x win rate when we meet the economic buyer. Make it mandatory.</td>
    </tr>
    <tr>
      <td>Did not meet</td>
      <td>22</td>
      <td>18%</td>
      <td> </td>
      <td> </td>
    </tr>
  </tbody>
</table>

<p><strong>The insight that pays for the program:</strong> In this hypothetical data, the single biggest lever is meeting the economic buyer (40% vs 18% win rate). If you could increase the “met decision maker” rate from 58% to 80% of deals, overall win rate would jump approximately 5 points. That’s worth millions in pipeline conversion.</p>

<hr />

<h1 id="10-pattern-identification">10 Pattern Identification</h1>

<p>Beyond the numbers, look for qualitative patterns across interviews. Group interview notes into themes:</p>

<h3 id="common-patterns-to-look-for">Common Patterns to Look For</h3>

<table>
  <thead>
    <tr>
      <th>Pattern</th>
      <th>What It Looks Like</th>
      <th>Action</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>“We never met the right person”</strong></td>
      <td>Multiple losses mention a stakeholder you didn’t engage: CISO, CFO, VP Ops</td>
      <td>Update sales methodology: require multi-threading. Map the buying committee in discovery.</td>
    </tr>
    <tr>
      <td><strong>“The competitor’s demo was better”</strong></td>
      <td>Buyers describe competitor demos as more relevant, more technical, more tailored</td>
      <td>Invest in SE program. Build industry-specific demo environments. Require pre-demo discovery.</td>
    </tr>
    <tr>
      <td><strong>“We couldn’t build the business case”</strong></td>
      <td>Buyer liked the product but couldn’t justify the spend internally</td>
      <td>Build ROI calculators. Provide business case templates. Arm the champion with internal selling tools.</td>
    </tr>
    <tr>
      <td><strong>“Your rep didn’t understand our industry”</strong></td>
      <td>Generic pitches. Wrong use cases. Irrelevant references.</td>
      <td>Industry-specific training. Vertical sales plays. Hire industry experts.</td>
    </tr>
    <tr>
      <td><strong>“It took too long to get answers”</strong></td>
      <td>Slow responses to security questionnaires, pricing requests, technical questions</td>
      <td>SLA for response times. Pre-built security/compliance docs. Empower reps to give ballpark pricing.</td>
    </tr>
    <tr>
      <td><strong>“We went with the cheaper option”</strong></td>
      <td>Price was the tiebreaker because differentiation wasn’t clear enough</td>
      <td>Sharpen positioning. Better competitive differentiation. Arm reps with “why pay more” narratives.</td>
    </tr>
  </tbody>
</table>

<p><strong>Pattern identification rule:</strong> One interview is an anecdote. Three interviews with the same theme is a pattern. Five interviews is a systemic problem that needs to be fixed. Don’t over-react to individual interviews. Wait for patterns to emerge across 15–20+ data points.</p>

<hr />

<h1 id="11-executive-report-format">11 Executive Report Format</h1>

<p>Your quarterly win/loss report to leadership should be exactly 4 sections on a single page (plus appendix):</p>

<h3 id="section-1-summary-metrics">Section 1: Summary Metrics</h3>

<p><strong>Q2 2026 Win/Loss Summary</strong></p>

<p>• Deals closed: 52 (28 won, 24 lost)<br />
• Win rate: 24% (target: 28%)<br />
• Interviews conducted: 22 of 52 (42%)<br />
• Average deal size (won): $48K<br />
• Average deal size (lost): $62K — losing larger deals</p>

<h3 id="section-2-top-3-loss-reasons-with-frequency">Section 2: Top 3 Loss Reasons (with frequency)</h3>

<ol>
  <li><strong>Competitor Strength</strong> (35% of losses) — Primarily CompetitorA in enterprise segment</li>
  <li><strong>Product Gap</strong> (25% of losses) — SSO and advanced permissions most cited</li>
  <li><strong>Sales Process</strong> (20% of losses) — Not meeting decision maker, slow response times</li>
</ol>

<h3 id="section-3-top-3-recommendations">Section 3: Top 3 Recommendations</h3>

<ol>
  <li><strong>Build CompetitorA battle card</strong> — Win rate vs CompetitorA is 17%. Need competitive training and SE pairing for every CompetitorA deal.</li>
  <li><strong>Accelerate SSO roadmap</strong> — SSO was cited in 6 of 24 losses. Enterprise buyers treat this as non-negotiable.</li>
  <li><strong>Require decision-maker meeting</strong> — Win rate jumps from 18% to 40% when we meet the economic buyer. Make it a required stage gate.</li>
</ol>

<h3 id="section-4-key-buyer-quotes">Section 4: Key Buyer Quotes</h3>

<p>Include 3–5 direct quotes from interviews. Quotes are more persuasive than data because they put leadership in the buyer’s shoes.</p>

<p><strong>The one-page rule:</strong> Executives don’t read long reports. One page of findings + one page appendix with supporting data. If you can’t fit it in one page, you haven’t synthesised enough. The appendix is for people who want to go deeper.</p>

<hr />

<p>Part V</p>

<p>Templates</p>

<p>Copy-paste templates for the interview script, the tracking spreadsheet, and the quarterly report.</p>

<h1 id="12-interview-script-template">12 Interview Script Template</h1>

<p><strong>Win/Loss Interview Script</strong> · 15–20 minutes</p>

<p><strong>Opening (1 min):</strong><br />
“Thank you for taking the time. This is purely a learning conversation — I’m not going to try to sell you anything or change your mind. I’m [Name] from [Company]. We want to understand your experience so we can improve. Everything you share is confidential and used only internally. May I record this for accurate note-taking?”</p>

<p><strong>Context (2 min):</strong></p>
<ol>
  <li>“What prompted you to start looking at solutions like ours?”</li>
  <li>“What was the business problem you were trying to solve?”</li>
</ol>

<p><strong>Process (4 min):</strong></p>
<ol>
  <li>“Walk me through your evaluation process from beginning to end.”</li>
  <li>“What were your top 3 criteria?”</li>
  <li>“Who was involved in the decision?”</li>
  <li>“Who else did you evaluate?”</li>
</ol>

<p><strong>Decision (5 min):</strong></p>
<ol>
  <li>“What ultimately drove the decision?”</li>
  <li>“Was there a specific moment that was decisive?”</li>
  <li>[For wins] “What almost stopped you from choosing us?”</li>
  <li>[For losses] “What could we have done differently to change the outcome?”</li>
  <li>“How did pricing factor in?”</li>
  <li>“What did [competitor] do well?”</li>
</ol>

<p><strong>Our Process (3 min):</strong></p>
<ol>
  <li>“How would you rate our sales process?”</li>
  <li>“Was anything missing from our approach?”</li>
  <li>“If you were coaching our team, what would you tell them?”</li>
</ol>

<p><strong>Close (1 min):</strong></p>
<ol>
  <li>“Anything else I should know that I haven’t asked about?”</li>
  <li>“Thank you — this is incredibly valuable.”</li>
</ol>

<hr />

<h1 id="13-tracking-sheet-template">13 Tracking Sheet Template</h1>

<p>Build this in Google Sheets or your CRM. One row per closed deal. These are the columns:</p>

<table>
  <thead>
    <tr>
      <th>Column</th>
      <th>Type</th>
      <th>Example</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Deal Name</td>
      <td>Text</td>
      <td>Acme Corp — Enterprise Platform</td>
    </tr>
    <tr>
      <td>Close Date</td>
      <td>Date</td>
      <td>2026-04-15</td>
    </tr>
    <tr>
      <td>Outcome</td>
      <td>Won / Lost</td>
      <td>Lost</td>
    </tr>
    <tr>
      <td>ACV</td>
      <td>Currency</td>
      <td>$65,000</td>
    </tr>
    <tr>
      <td>Segment</td>
      <td>SMB / MM / ENT</td>
      <td>Enterprise</td>
    </tr>
    <tr>
      <td>AE</td>
      <td>Text</td>
      <td>Sarah Kim</td>
    </tr>
    <tr>
      <td>Competitor(s)</td>
      <td>Multi-select</td>
      <td>CompetitorA, CompetitorC</td>
    </tr>
    <tr>
      <td>Primary Loss/Win Reason</td>
      <td>Picklist</td>
      <td>Competitor Strength</td>
    </tr>
    <tr>
      <td>Secondary Reason</td>
      <td>Picklist</td>
      <td>Product Gap</td>
    </tr>
    <tr>
      <td>Decision Maker Met</td>
      <td>Yes / No</td>
      <td>No</td>
    </tr>
    <tr>
      <td>Champion Strength</td>
      <td>1–5</td>
      <td>2</td>
    </tr>
    <tr>
      <td>Stakeholders</td>
      <td>Number</td>
      <td>6</td>
    </tr>
    <tr>
      <td>Sales Cycle (days)</td>
      <td>Number</td>
      <td>78</td>
    </tr>
    <tr>
      <td>Interview Conducted</td>
      <td>Yes / No</td>
      <td>Yes</td>
    </tr>
    <tr>
      <td>Interview Date</td>
      <td>Date</td>
      <td>2026-04-22</td>
    </tr>
    <tr>
      <td>Interviewee Role</td>
      <td>Text</td>
      <td>VP Engineering (Economic Buyer)</td>
    </tr>
    <tr>
      <td>Key Quote</td>
      <td>Text</td>
      <td>“Your team never met our CISO. The competitor did.”</td>
    </tr>
    <tr>
      <td>Key Insight</td>
      <td>Text</td>
      <td>Security stakeholder was not engaged. Competitor ran security workshop.</td>
    </tr>
    <tr>
      <td>Action Item</td>
      <td>Text</td>
      <td>Add CISO mapping to discovery checklist.</td>
    </tr>
  </tbody>
</table>

<hr />

<h1 id="14-quarterly-report-template">14 Quarterly Report Template</h1>

<p><strong>Win/Loss Quarterly Report</strong> · Q2 2026</p>

<p><strong>Executive Summary</strong><br />
Win rate this quarter:  (vs  last quarter). Interviews conducted: . Three patterns emerged: , , .</p>

<p><strong>Win Rate by Dimension</strong><br />
• By competitor: [table]<br />
• By segment: [table]<br />
• By ACV range: [table]<br />
• By sales factor: [table]</p>

<p><strong>Top Loss Reasons (ranked by frequency)</strong></p>
<ol>
  <li>—  of losses —</li>
  <li>—  of losses —</li>
  <li>—  of losses —</li>
</ol>

<p><strong>Top Win Reasons (ranked by frequency)</strong></p>
<ol>
  <li>—  of wins</li>
  <li>—  of wins</li>
</ol>

<p><strong>Key Buyer Quotes</strong><br />
• “” — VP Engineering, $65K deal<br />
• “” — Director of Ops, $45K deal<br />
• “” — CTO, $120K deal</p>

<p><strong>Recommendations</strong></p>
<ol>
  <li>— Owner:  — Impact:</li>
  <li>— Owner:  — Impact:</li>
  <li>— Owner:  — Impact:</li>
</ol>

<p><strong>Progress on Last Quarter’s Recommendations</strong><br />
• : <br />
• :</p>

<hr />

<p>Part VI</p>

<p>The Action Loop</p>

<p>Win/loss analysis that doesn’t change behaviour is an expensive journaling exercise. The insights must feed back into 6 specific areas, with owners and timelines.</p>

<h1 id="15-closing-the-loop">15 Closing the Loop</h1>

<p>Every win/loss insight should feed back into one of these six areas. If an insight doesn’t map to one of these, it’s interesting but not actionable — deprioritise it.</p>

<table>
  <thead>
    <tr>
      <th>#</th>
      <th>Feedback Area</th>
      <th>Owner</th>
      <th>What Win/Loss Feeds In</th>
      <th>Example Output</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>1</strong></td>
      <td><strong>Battle Cards</strong></td>
      <td>Product Marketing</td>
      <td>Competitive intelligence: what competitors say, how they position, where they win/lose</td>
      <td>“CompetitorA is leading with a free security workshop. Add counter: offer our security review in week 1 of every enterprise deal.”</td>
    </tr>
    <tr>
      <td><strong>2</strong></td>
      <td><strong>Sales Training</strong></td>
      <td>Sales Enablement</td>
      <td>Sales process gaps: where reps lose deals due to execution, not product</td>
      <td>“Require multi-threading training. Deals with 3+ contacts have 2x the win rate. Teach the MEDDIC framework.”</td>
    </tr>
    <tr>
      <td><strong>3</strong></td>
      <td><strong>Product Roadmap</strong></td>
      <td>Product Management</td>
      <td>Feature gaps that caused losses. Quantified by deal value and frequency.</td>
      <td>“SSO was cited in 6 losses totaling $420K in Q2. Accelerate from Q4 to Q3.”</td>
    </tr>
    <tr>
      <td><strong>4</strong></td>
      <td><strong>Pricing</strong></td>
      <td>Finance / Rev Ops</td>
      <td>Pricing perception data. Where price is a real blocker vs where it’s a value communication problem.</td>
      <td>“Enterprise buyers are comparing us to CompetitorA at 60% our price. Need a lighter enterprise tier or better ROI tools.”</td>
    </tr>
    <tr>
      <td><strong>5</strong></td>
      <td><strong>ICP Refinement</strong></td>
      <td>Marketing / Rev Ops</td>
      <td>Where you win vs lose by segment, size, industry, use case</td>
      <td>“Win rate in fintech (42%) is 2x our win rate in healthcare (19%). Shift SDR targeting toward fintech.”</td>
    </tr>
    <tr>
      <td><strong>6</strong></td>
      <td><strong>Messaging / Positioning</strong></td>
      <td>Product Marketing</td>
      <td>How buyers describe you vs how you describe yourself. Language gaps.</td>
      <td>“Buyers call us ‘the analytics tool.’ We call ourselves ‘the data intelligence platform.’ Use their language.”</td>
    </tr>
  </tbody>
</table>

<p>The win/loss program pays for itself when one loss pattern gets fixed. If “product gap: SSO” was causing $420K in quarterly losses and you ship SSO, you’ve potentially recovered $1.6M/year in pipeline. That’s the ROI of win/loss analysis: not the interviews themselves, but the decisions they inform.</p>

<h2 id="the-quarterly-action-review">The Quarterly Action Review</h2>

<p>At the end of each quarter, review two things:</p>

<ol>
  <li><strong>What did we recommend last quarter?</strong> Track status. Hold owners accountable. If a recommendation from Q1 still hasn’t been acted on by Q3, either escalate it or accept it won’t happen and stop recommending it.</li>
  <li><strong>Did the changes work?</strong> If you implemented a CompetitorA battle card in Q2, did the win rate vs CompetitorA improve in Q3? Measure the impact. Report it. This builds credibility for the program and ensures it keeps getting funded.</li>
</ol>

<p><strong>The program lifecycle:</strong> Quarter 1: build the system, conduct first interviews, establish baseline. Quarter 2: first analysis, first recommendations. Quarter 3: first impact measurements. By Quarter 4, you should have clear evidence that win/loss analysis is improving win rates. If you don’t, the program design needs fixing — not the concept.</p>

<h2 id="getting-started--the-first-30-days">Getting Started — The First 30 Days</h2>

<table>
  <thead>
    <tr>
      <th>Week</th>
      <th>Action</th>
      <th>Output</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Week 1</strong></td>
      <td>Add CRM fields. Define picklists. Get AE buy-in.</td>
      <td>CRM configured. Team knows the program exists.</td>
    </tr>
    <tr>
      <td><strong>Week 2</strong></td>
      <td>Identify last 10 closed deals (5 won, 5 lost). Send interview requests.</td>
      <td>4–6 interviews scheduled.</td>
    </tr>
    <tr>
      <td><strong>Week 3</strong></td>
      <td>Conduct first interviews. Use the script. Record and transcribe.</td>
      <td>First qualitative data. First “aha” moments.</td>
    </tr>
    <tr>
      <td><strong>Week 4</strong></td>
      <td>Log data. Identify first 2–3 themes. Share findings with sales + product.</td>
      <td>First mini-report. First actions assigned.</td>
    </tr>
  </tbody>
</table>

<hr />

<p><strong>The Win/Loss Checklist</strong></p>

<p>Interview within 2 weeks       memory fades fast<br />
Talk to the buyer, not your AE   AEs have blind spots and biases<br />
Ask “why?” three times          the first answer is never the real one<br />
Standardise the reasons         picklists, not free text<br />
Look for patterns, not anecdotes 3+ interviews = a pattern<br />
Feed insights back             battle cards, training, product, pricing, ICP<br />
Measure the impact            did the changes actually improve win rate?</p>

<p>Every lost deal has a lesson. The question is whether you’re listening.</p>]]></content><author><name>Sourav Padhi</name></author><category term="playbooks" /><summary type="html"><![CDATA[Win/Loss Analysis Template]]></summary></entry><entry><title type="html">QBR (Quarterly Business Review) Template</title><link href="https://sourav.sh/qbr-template.html" rel="alternate" type="text/html" title="QBR (Quarterly Business Review) Template" /><published>2026-04-09T00:00:00+00:00</published><updated>2026-04-09T00:00:00+00:00</updated><id>https://sourav.sh/qbr-template</id><content type="html" xml:base="https://sourav.sh/qbr-template.html"><![CDATA[<p>QBR Template</p>

<p>quarterly business review · structure · deck · templates</p>

<p>Customer Success
Account Management
QBR
Retention
Expansion</p>

<p>The quarterly business review is the single most important customer meeting that most companies do badly. They turn it into a product roadmap presentation. Or a feature request session. Or a status update that could have been an email. All of those are wastes of your customer’s executive time.</p>

<p>A great QBR is a <strong>business conversation about value</strong>. You show the customer what they’ve achieved with your product, tie it to their business outcomes, surface risks before they become churn, and plant seeds for expansion — all in 50 minutes. It’s the meeting that prevents surprise churn and creates organic upsell.</p>

<p><strong>Who this is for:</strong> CSMs running their first QBRs, AMs looking for a repeatable template, and CS leaders building a QBR program from scratch.</p>

<hr />

<p>Part I</p>

<p>Why QBRs Matter</p>

<p>The QBR is not a nice-to-have. It is the structural mechanism that prevents churn, identifies expansion, and keeps your executive sponsor engaged. Skip it, and you’re flying blind on your most important accounts.</p>

<h1 id="01-the-meeting-that-prevents-churn">01 The Meeting That Prevents Churn</h1>

<p>Most churn doesn’t happen because the product is bad. It happens because the customer <strong>forgot why they bought</strong>. The day-to-day users know the product works. But the VP who signed the contract? She hasn’t logged in since the kickoff call. She sees a line item on the budget and thinks: “What are we getting from this?”</p>

<p>The QBR answers that question before she asks it.</p>

<ul>
  <li><strong>Churn prevention:</strong> You show the executive sponsor concrete ROI. She sees the value. She approves the renewal without a second thought.</li>
  <li><strong>Expansion seeds:</strong> When you show how similar customers expanded usage, you plant the idea. “If Acme’s west coast team is getting these results, why aren’t we doing this for our APAC team?”</li>
  <li><strong>Risk detection:</strong> A QBR surfaces problems that support tickets don’t. “Actually, the team in London stopped using the product two months ago.” You’d never know this from usage data alone.</li>
  <li><strong>Relationship depth:</strong> Quarterly face-time (or video) with the exec sponsor keeps the relationship alive. When a competitor comes knocking, they think of you as a partner, not a vendor.</li>
</ul>

<p>Companies that run structured QBRs with their top-tier accounts see 15–20% higher net revenue retention than companies that don’t. The QBR is not overhead. It is the highest-ROI hour in customer success.</p>

<hr />

<h1 id="02-qbr-vs-product-update--know-the-difference">02 QBR vs Product Update — Know the Difference</h1>

<table>
  <thead>
    <tr>
      <th>Dimension</th>
      <th>Bad QBR (Product Update)</th>
      <th>Good QBR (Business Review)</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Focus</strong></td>
      <td>Your product. What you shipped. What’s coming.</td>
      <td>Their business. What they achieved. Where they’re going.</td>
    </tr>
    <tr>
      <td><strong>Slides</strong></td>
      <td>Feature screenshots. Product roadmap. Your logo everywhere.</td>
      <td>Their metrics. Their ROI. Their usage data. Their logo on slide 1.</td>
    </tr>
    <tr>
      <td><strong>Tone</strong></td>
      <td>“Let me show you what we built.”</td>
      <td>“Let me show you what you achieved.”</td>
    </tr>
    <tr>
      <td><strong>Who talks</strong></td>
      <td>You: 80%. Them: 20%.</td>
      <td>You: 40%. Them: 60%.</td>
    </tr>
    <tr>
      <td><strong>Exec sponsor</strong></td>
      <td>Checks phone. Leaves at minute 15.</td>
      <td>Engaged. Asks follow-up questions. Stays for the full meeting.</td>
    </tr>
    <tr>
      <td><strong>Outcome</strong></td>
      <td>“Thanks for the update.” (Then ignores you until renewal.)</td>
      <td>“This is great. Let’s talk about rolling this out to the London team.”</td>
    </tr>
    <tr>
      <td><strong>Talk ratio</strong></td>
      <td>One-way presentation</td>
      <td>Dialogue. Questions. Discovery.</td>
    </tr>
  </tbody>
</table>

<p><strong>The litmus test:</strong> If you could give this exact same presentation to every customer by just changing the logo, it’s a product update, not a QBR. A real QBR is so specific to <em>this</em> customer that it would make no sense to anyone else.</p>

<hr />

<p>Part II</p>

<p>The QBR Structure</p>

<p>Six sections, 50 minutes, tightly timed. Every section has a purpose and a transition to the next. The structure ensures you cover value, growth, and risk without running over or going off-track.</p>

<h1 id="03-the-50-minute-structure">03 The 50-Minute Structure</h1>

<table>
  <thead>
    <tr>
      <th>#</th>
      <th>Section</th>
      <th>Time</th>
      <th>Purpose</th>
      <th>Who Leads</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>1</strong></td>
      <td>Relationship Check</td>
      <td>5 min</td>
      <td>Warm up. Surface org changes. Set the tone.</td>
      <td>You (CSM/AM)</td>
    </tr>
    <tr>
      <td><strong>2</strong></td>
      <td>Value Delivered</td>
      <td>15 min</td>
      <td>Show their metrics. Prove ROI. Make the exec sponsor nod.</td>
      <td>You, then them</td>
    </tr>
    <tr>
      <td><strong>3</strong></td>
      <td>Roadmap Alignment</td>
      <td>10 min</td>
      <td>Show upcoming features that address their specific needs.</td>
      <td>You (with PM if available)</td>
    </tr>
    <tr>
      <td><strong>4</strong></td>
      <td>Growth Conversation</td>
      <td>10 min</td>
      <td>Plant expansion seeds. Show peer comparisons.</td>
      <td>You, then them</td>
    </tr>
    <tr>
      <td><strong>5</strong></td>
      <td>Risk &amp; Feedback</td>
      <td>5 min</td>
      <td>Surface concerns. Get honest feedback.</td>
      <td>Them (you listen)</td>
    </tr>
    <tr>
      <td><strong>6</strong></td>
      <td>Next Steps</td>
      <td>5 min</td>
      <td>Lock in actions with owners and dates.</td>
      <td>You</td>
    </tr>
  </tbody>
</table>

<p><strong>The 50-minute rule:</strong> Book 60 minutes but plan for 50. The extra 10 minutes is buffer for when the exec asks a follow-up question you didn’t expect (which is a good sign). Never go over 60. Respect their time and they’ll show up next quarter.</p>

<hr />

<h1 id="04-section-1-relationship-check-5-min">04 Section 1: Relationship Check (5 min)</h1>

<p><strong>Goal:</strong> Warm up the room and surface any organisational changes that affect the account.</p>

<p>This is not small talk. It’s strategic relationship intelligence gathering disguised as small talk.</p>

<h3 id="questions-to-ask">Questions to Ask</h3>

<ul>
  <li>“How’s the team doing? Any changes since last quarter?”</li>
  <li>“I saw you hired a new [VP of Ops / Head of Data]. How’s the transition going?”</li>
  <li>“Any shifts in company priorities we should know about?”</li>
  <li>“How’s [specific initiative they mentioned last quarter] progressing?”</li>
</ul>

<p><strong>Why this matters:</strong> If your champion left and you don’t know about it, the account is already at risk. If the company pivoted strategy, your use case might not be a priority anymore. Five minutes of relationship check can reveal existential risks that no dashboard will show you.</p>

<h3 id="transition-to-section-2">Transition to Section 2</h3>

<p>“Great, thanks for the context. Let me show you what the team has accomplished this quarter — the numbers are really strong.”</p>

<hr />

<h1 id="05-section-2-value-delivered-15-min">05 Section 2: Value Delivered (15 min)</h1>

<p><strong>Goal:</strong> Show the executive sponsor concrete, quantified value. This is the most important section. If you nail this, the rest of the QBR is easy.</p>

<p>The key word is <strong>their</strong>. Not your product metrics. Their business metrics.</p>

<h3 id="what-to-show">What to Show</h3>

<table>
  <thead>
    <tr>
      <th>Category</th>
      <th>Metrics</th>
      <th>Example</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Usage</strong></td>
      <td>DAU/MAU, sessions, features used, adoption by team</td>
      <td>“Your team ran 2,340 analyses this quarter, up 28% from Q1.”</td>
    </tr>
    <tr>
      <td><strong>Outcomes</strong></td>
      <td>Time saved, cost reduced, revenue influenced, errors avoided</td>
      <td>“Based on your usage, that’s approximately 380 hours saved, or $57K in analyst time.”</td>
    </tr>
    <tr>
      <td><strong>ROI</strong></td>
      <td>Value delivered vs contract cost</td>
      <td>“Your contract is $48K/year. The time savings alone represent a 1.2x ROI — before counting the error reduction.”</td>
    </tr>
    <tr>
      <td><strong>Adoption</strong></td>
      <td>% of licensed users active, team-level adoption, new users onboarded</td>
      <td>“34 of your 40 seats are active monthly. The London team came fully online in February.”</td>
    </tr>
    <tr>
      <td><strong>Benchmark</strong></td>
      <td>How they compare to similar customers</td>
      <td>“Your adoption rate is in the top quartile of companies your size.”</td>
    </tr>
  </tbody>
</table>

<p>The sentence “Based on your usage, that’s approximately $57K in analyst time saved” is the sentence that gets the renewal signed. The exec sponsor doesn’t care about DAU. She cares about ROI. Always translate usage into dollars.</p>

<p><strong>The ROI formula:</strong> (Hours saved per week × Average hourly cost × 13 weeks) + (Errors avoided × Average cost per error) + (Revenue influenced) = <strong>Quarterly value delivered</strong>. Work with the customer to agree on the inputs during onboarding so the QBR numbers aren’t a surprise.</p>

<h3 id="transition-to-section-3">Transition to Section 3</h3>

<p>“These results are strong. Now let me show you what’s coming that’ll make this even better for your team.”</p>

<hr />

<h1 id="06-section-3-roadmap-alignment-10-min">06 Section 3: Roadmap Alignment (10 min)</h1>

<p><strong>Goal:</strong> Show 3–5 upcoming features that directly address needs this specific customer has expressed. This is NOT a product demo. It’s a targeted preview.</p>

<h3 id="how-to-present-roadmap">How to Present Roadmap</h3>

<table>
  <thead>
    <tr>
      <th>Do</th>
      <th>Don’t</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Show 3–5 features relevant to THIS customer</td>
      <td>Show your entire 50-item roadmap</td>
    </tr>
    <tr>
      <td>Connect each feature to a problem they’ve mentioned</td>
      <td>Present features in a vacuum</td>
    </tr>
    <tr>
      <td>“You mentioned X was a pain point. Here’s what we’re building.”</td>
      <td>“Here’s everything we shipped this quarter.”</td>
    </tr>
    <tr>
      <td>Give timeframes: “Q3 beta” or “launching in August”</td>
      <td>Be vague: “sometime this year” or “on the roadmap”</td>
    </tr>
    <tr>
      <td>Ask: “Does this address what your team needs?”</td>
      <td>Assume you know what they need without asking</td>
    </tr>
  </tbody>
</table>

<p><strong>The commitment trap:</strong> Never promise a specific feature or date that hasn’t been committed by your product team. “We’re exploring this” or “This is in design” is fine. “I guarantee this will ship in June” will come back to haunt you. Be honest about what’s confirmed vs what’s planned.</p>

<h3 id="transition-to-section-4">Transition to Section 4</h3>

<p>“With these improvements coming, I want to share how some of your peers are getting even more value — and see if any of it resonates.”</p>

<hr />

<h1 id="07-section-4-growth-conversation-10-min">07 Section 4: Growth Conversation (10 min)</h1>

<p><strong>Goal:</strong> Plant expansion seeds by showing how similar customers have grown their usage. This is not a sales pitch. It’s peer benchmarking that naturally leads to “we should do that too.”</p>

<h3 id="the-framework">The Framework</h3>

<p>Use the <strong>“customers like you” framework</strong>:</p>

<ol>
  <li><strong>Benchmark:</strong> “Companies at your stage and size typically use [X, Y, Z] features.”</li>
  <li><strong>Gap:</strong> “Your team is doing great with X, but hasn’t explored Y yet.”</li>
  <li><strong>Peer story:</strong> “Acme Corp started exactly where you are. When they rolled out Y to their APAC team, they saw a 40% improvement in [metric].”</li>
  <li><strong>Question:</strong> “Is that something your team has thought about?”</li>
</ol>

<p>Don’t say</p>

<p>“We have an enterprise tier that includes API access and SSO. The pricing is $80K/year. Would you like to upgrade?”</p>

<p>Say this instead</p>

<p>“Companies your size that added the API integration saw their team’s output increase by 35%. Stripe did this last quarter and it cut their manual reporting from 10 hours/week to 1. Based on your trajectory, this could save your team a significant amount of time. Worth exploring?”</p>

<p><strong>Why this works:</strong> You’re not selling. You’re showing them what’s possible based on what their peers have done. The customer arrives at the expansion idea themselves. That’s a much stronger buying signal than responding to a pitch.</p>

<hr />

<h1 id="08-section-5-risk--feedback-5-min">08 Section 5: Risk &amp; Feedback (5 min)</h1>

<p><strong>Goal:</strong> Get honest feedback. Surface problems before they become churn risks. This section only works if you ask the right questions and then <strong>actually listen</strong>.</p>

<h3 id="questions-to-ask-1">Questions to Ask</h3>

<ul>
  <li>“What could we be doing better?”</li>
  <li>“Is there anything that’s been frustrating your team?”</li>
  <li>“On a scale of 1–10, how likely are you to recommend us to a peer? Why that number?”</li>
  <li>“If you could change one thing about working with us, what would it be?”</li>
  <li>“Are there any blockers to your team getting full value?”</li>
</ul>

<p><strong>The uncomfortable truth:</strong> If the customer says “everything’s great” and has no feedback, that’s a red flag, not a green flag. It means they’re not engaged enough to have opinions. Probe deeper: “I appreciate that. Most customers have at least one thing they’d change. Even small things — what comes to mind?” Silence after this question is the real danger signal.</p>

<h3 id="transition-to-section-6">Transition to Section 6</h3>

<p>“Thank you for that feedback — it’s genuinely helpful. Let me capture our next steps so nothing falls through the cracks.”</p>

<hr />

<h1 id="09-section-6-next-steps-5-min">09 Section 6: Next Steps (5 min)</h1>

<p><strong>Goal:</strong> Lock in specific actions with specific owners and specific dates. “We’ll follow up” is not a next step.</p>

<h3 id="next-steps-format">Next Steps Format</h3>

<table>
  <thead>
    <tr>
      <th>Action</th>
      <th>Owner</th>
      <th>Date</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Send QBR summary and deck to attendees + exec sponsor</td>
      <td>You (CSM)</td>
      <td>Within 24 hours</td>
    </tr>
    <tr>
      <td>Schedule training session for London team on [feature]</td>
      <td>You (CSM)</td>
      <td>By [date]</td>
    </tr>
    <tr>
      <td>Provide feedback to product team re: [specific request]</td>
      <td>You (CSM)</td>
      <td>End of week</td>
    </tr>
    <tr>
      <td>Connect us with APAC team lead to discuss rollout</td>
      <td>Customer (champion)</td>
      <td>By [date]</td>
    </tr>
    <tr>
      <td>Internal review of API integration proposal</td>
      <td>Customer (VP)</td>
      <td>By [date]</td>
    </tr>
  </tbody>
</table>

<p><strong>The follow-through test:</strong> The #1 thing that kills QBR credibility is not following through on next steps. If you say “I’ll get back to you on the API question by Friday” and you don’t, the customer’s trust erodes. Track every action item. Close every loop. No exceptions.</p>

<hr />

<p>Part III</p>

<p>Preparation</p>

<p>A QBR is only as good as the preparation behind it. The meeting itself is 50 minutes. The preparation should be 2–3 hours. Here’s exactly what to pull and who to invite.</p>

<h1 id="10-data-to-pull-12-hours-before">10 Data to Pull (1–2 Hours Before)</h1>

<table>
  <thead>
    <tr>
      <th>Data Source</th>
      <th>What to Pull</th>
      <th>Why</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Product Analytics</strong></td>
      <td>DAU/MAU, feature adoption %, usage trends (QoQ), new users onboarded, top features used</td>
      <td>Tells the usage story. Shows adoption trajectory.</td>
    </tr>
    <tr>
      <td><strong>Support / Tickets</strong></td>
      <td>Total tickets, avg resolution time, recurring issues, escalations, CSAT scores</td>
      <td>Surface pain points before the customer brings them up.</td>
    </tr>
    <tr>
      <td><strong>Health Score</strong></td>
      <td>Overall health score, components (usage, engagement, support, payment), trend</td>
      <td>Your internal view of account risk. Use to guide which sections to emphasise.</td>
    </tr>
    <tr>
      <td><strong>Billing / Finance</strong></td>
      <td>Current contract value, renewal date, payment history, any overdue invoices</td>
      <td>Know the commercial context. Is renewal coming up? Any billing friction?</td>
    </tr>
    <tr>
      <td><strong>Feature Requests</strong></td>
      <td>Open requests from this account, status of each, any that shipped recently</td>
      <td>Show that their feedback led to product changes. Powerful credibility builder.</td>
    </tr>
    <tr>
      <td><strong>CRM / Notes</strong></td>
      <td>Last QBR notes, recent calls/emails, champion changes, competitive mentions</td>
      <td>Don’t ask questions you should already know the answer to.</td>
    </tr>
    <tr>
      <td><strong>Roadmap</strong></td>
      <td>3–5 upcoming features relevant to this account’s use cases</td>
      <td>Coordinate with PM before the QBR. Don’t wing the roadmap section.</td>
    </tr>
  </tbody>
</table>

<p><strong>The preparation signal:</strong> When a customer sees you’ve pulled their specific data, referenced their specific requests, and connected everything to their specific goals — they know you take the relationship seriously. That’s worth more than any feature you could demo.</p>

<hr />

<h1 id="11-who-to-invite">11 Who to Invite</h1>

<h3 id="from-the-customer-side">From the Customer Side</h3>

<table>
  <thead>
    <tr>
      <th>Role</th>
      <th>Why They Should Be There</th>
      <th>If They Can’t Attend</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Executive Sponsor</strong></td>
      <td>This is the person who approved the budget. She needs to see ROI.</td>
      <td>Reschedule. A QBR without the exec sponsor is a status call.</td>
    </tr>
    <tr>
      <td><strong>Day-to-Day Champion</strong></td>
      <td>Validates the data. Provides context on usage and adoption.</td>
      <td>Can do without, but the value narrative will be weaker.</td>
    </tr>
    <tr>
      <td><strong>Power Users (1–2)</strong></td>
      <td>Optional. Good for specific feature feedback and adoption stories.</td>
      <td>Not critical. Invite if they’re vocal advocates.</td>
    </tr>
  </tbody>
</table>

<h3 id="from-your-side">From Your Side</h3>

<table>
  <thead>
    <tr>
      <th>Role</th>
      <th>Why They Should Be There</th>
      <th>When to Include</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>CSM / AM</strong></td>
      <td>Leads the meeting. Owns the relationship.</td>
      <td>Always</td>
    </tr>
    <tr>
      <td><strong>AE / Sales</strong></td>
      <td>Expansion conversations. Knows the commercial history.</td>
      <td>If expansion is likely this quarter</td>
    </tr>
    <tr>
      <td><strong>Product Manager</strong></td>
      <td>Answers roadmap questions with authority.</td>
      <td>If the customer has significant feature requests</td>
    </tr>
    <tr>
      <td><strong>Your VP / Director</strong></td>
      <td>Matches seniority with their exec sponsor. Shows investment.</td>
      <td>For top-tier accounts or at-risk accounts</td>
    </tr>
  </tbody>
</table>

<p><strong>The exec sponsor problem:</strong> If you can’t get the exec sponsor to attend, something is already wrong. Either: (a) they don’t see value in the relationship, (b) your champion can’t influence them, or (c) you’re not positioned at the right level. All three are churn risks. If the exec won’t attend, your pre-QBR work should focus on figuring out why and fixing it before you try again.</p>

<hr />

<p>Part IV</p>

<p>The QBR Deck</p>

<p>8 slides. No more. Each slide has a specific purpose and specific content. The deck is a conversation guide, not a script to read from.</p>

<h1 id="12-slide-by-slide-guide">12 Slide-by-Slide Guide</h1>

<p>SLIDE 1</p>

<p>Cover Slide</p>

<p><strong>Their logo</strong> (not yours) + “Quarterly Business Review” + Q2 2026 + Date<br />
Subtle: “Prepared by [Your Company]” in small text at the bottom. Their brand is the hero.</p>

<p>SLIDE 2</p>

<p>Agenda</p>

<p>The 6-section agenda with timings. Simple bullet list. Sets expectations. Shows you’re organised and won’t waste their time.</p>

<ol>
  <li>Relationship Check (5 min)</li>
  <li>Value Delivered (15 min)</li>
  <li>Roadmap Alignment (10 min)</li>
  <li>Growth Opportunities (10 min)</li>
  <li>Risk &amp; Feedback (5 min)</li>
  <li>Next Steps (5 min)</li>
</ol>

<p>SLIDE 3</p>

<p>Partnership Summary</p>

<p>One-page snapshot of the relationship:</p>

<p>• Customer since: [date]<br />
• Current plan: [tier / seats / modules]<br />
• Key contacts: [names and roles]<br />
• Goals established at kickoff: [1–3 goals]<br />
• Renewal date: [date]</p>

<p>This slide is your memory check. If anything is wrong, the customer will correct you — which is useful intelligence.</p>

<p>SLIDE 4</p>

<p>Value Delivered — The Metrics</p>

<p>The centrepiece of the deck. Show 3–5 metrics with QoQ trends:</p>

<p>• <strong>Usage:</strong> 2,340 analyses (+28% QoQ)<br />
• <strong>Time saved:</strong> ~380 hours ($57K in analyst time)<br />
• <strong>Adoption:</strong> 34/40 seats active (85%)<br />
• <strong>ROI:</strong> 1.2x on contract value (time savings alone)<br />
• <strong>Benchmark:</strong> Top quartile adoption vs peers</p>

<p>Use their colours if possible. Make it feel like their internal report, not a vendor slide.</p>

<p>SLIDE 5</p>

<p>Value Delivered — The Story</p>

<p>A visual: adoption curve over time, showing key milestones.</p>

<p>“In January, your London team came online. Adoption jumped from 60% to 85%. The team now runs 3x more analyses than they did in Q1.”</p>

<p>Tell the story behind the numbers. Executives remember stories, not data points.</p>

<p>SLIDE 6</p>

<p>Roadmap Alignment</p>

<p>3–5 upcoming features, each tied to a need this customer expressed:</p>

<p>• <strong>Advanced API (Q3):</strong> Addresses your request for automated data pulls<br />
• <strong>Custom dashboards (Q3):</strong> Lets your APAC team build their own views<br />
• <strong>SSO improvements (Q4):</strong> Simplifies onboarding for new team members</p>

<p>Only show features relevant to them. Not your entire roadmap.</p>

<p>SLIDE 7</p>

<p>Growth Opportunities</p>

<p>Peer comparison + expansion suggestion:</p>

<p>“Companies at your stage typically expand to [X]. Based on your trajectory, here’s what that could look like:”</p>

<p>• <strong>Scenario A:</strong> Add APAC team (20 seats) → estimated $24K/yr additional value in time saved<br />
• <strong>Scenario B:</strong> Upgrade to API tier → automate 10 hrs/week of manual reporting</p>

<p>Frame as “here’s what similar companies did” not “here’s what you should buy.” Let them draw the conclusion.</p>

<p>SLIDE 8</p>

<p>Next Steps</p>

<p>Action items table: Action / Owner / Date</p>

<p>• Send QBR summary — CSM — Tomorrow<br />
• Schedule APAC team training — CSM — By Apr 30<br />
• Share API integration proposal — AE — By May 5<br />
• Connect us with APAC lead — Customer — By May 2<br />
• Next QBR — Both — Week of Jul 14</p>

<p>Book the next QBR before ending this one. It’s 10x easier to schedule when everyone’s in the room.</p>

<hr />

<p>Part V</p>

<p>Templates</p>

<p>Copy-paste templates for the pre-QBR invite, the post-QBR follow-up, and the internal debrief. Adapt them to your voice.</p>

<h1 id="13-qbr-emails">13 QBR Emails</h1>

<h2 id="pre-qbr-invite-send-2-weeks-before">Pre-QBR Invite (Send 2 Weeks Before)</h2>

<p>To: <strong>Executive Sponsor + Champion</strong> · 2 weeks before QBR</p>

<p>Q2 Business Review —</p>

<p>Hi ,</p>

<p>I’d like to schedule our Q2 business review. This is a 50-minute session where we’ll:</p>

<p>• Share your team’s results and ROI from this quarter<br />
• Preview upcoming product improvements relevant to your goals<br />
• Discuss opportunities to get even more value<br />
• Get your feedback on how we can improve</p>

<p>I’d love to include  — we’ve prepared some data I think she’d find valuable, especially around the time savings the team is seeing.</p>

<p>Could you suggest 2–3 times that work in the next two weeks?</p>

<p>Best,</p>

<p><strong>Why this template works:</strong> It leads with what <em>they’ll</em> get (results, ROI), not what you need (renewal discussion). It specifically requests the exec sponsor and gives a reason (“data she’d find valuable”). It’s short and asks for a simple action (suggest times).</p>

<h2 id="post-qbr-follow-up-send-within-24-hours">Post-QBR Follow-Up (Send Within 24 Hours)</h2>

<p>To: <strong>All QBR Attendees + Exec Sponsor (CC)</strong> · Within 24 hours</p>

<p>Q2 Business Review Summary —</p>

<p>Hi team,</p>

<p>Thank you for a great conversation today. Here’s a summary of what we covered and next steps:</p>

<p><strong>Key Results This Quarter:</strong><br />
• 2,340 analyses run (+28% QoQ)<br />
• ~380 hours saved ($57K in analyst time)<br />
• 85% seat adoption (34/40 active)<br />
• ROI: 1.2x on contract value</p>

<p><strong>Next Steps:</strong><br />
•  —  by <br />
•  —  by <br />
•  —  by</p>

<p>Deck attached for reference. Our next QBR is scheduled for .</p>

<p>Let me know if I missed anything or if any of the action items need adjusting.</p>

<p>Best,</p>

<p><strong>CC the exec sponsor</strong> on the follow-up even if she wasn’t in the meeting. This email is your value proof to the person who controls the budget. If the exec sponsor only sees one email from you all quarter, make it this one.</p>

<hr />

<h1 id="14-internal-debrief-template">14 Internal Debrief Template</h1>

<p>After every QBR, fill out this internal debrief and share with your team. It takes 5 minutes and creates a record that’s invaluable at renewal time.</p>

<p><strong>Internal QBR Debrief</strong> · Share with CS + Sales + Product</p>

<p><strong>Account:</strong> <br />
<strong>Date:</strong> <br />
<strong>Attendees:</strong> <br />
<strong>Health Score (before / after):</strong></p>

<p><strong>Key Takeaways:</strong></p>
<ol>
  <li></li>
  <li></li>
  <li></li>
</ol>

<p><strong>Risks Identified:</strong><br />
•</p>

<p><strong>Expansion Signals:</strong><br />
• <br />
•</p>

<p><strong>Product Feedback:</strong><br />
•</p>

<p><strong>Renewal Outlook:</strong> <br />
<strong>Renewal Date:</strong> <br />
<strong>Expansion Potential:</strong></p>

<p><strong>Action Items:</strong><br />
•  —  by</p>

<hr />

<p>Part VI</p>

<p>Common Mistakes</p>

<p>These are the mistakes that turn a high-value business conversation into a forgettable vendor meeting. Avoid all of them.</p>

<h1 id="15-the-10-qbr-mistakes">15 The 10 QBR Mistakes</h1>

<table>
  <thead>
    <tr>
      <th>#</th>
      <th>Mistake</th>
      <th>Why It Fails</th>
      <th>Fix</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>1</strong></td>
      <td>Running a product demo</td>
      <td>The exec sponsor came for business outcomes, not screenshots. She’ll disengage in 3 minutes.</td>
      <td>Lead with their metrics. Save product for the roadmap section (10 min max).</td>
    </tr>
    <tr>
      <td><strong>2</strong></td>
      <td>No exec sponsor</td>
      <td>Without the decision-maker, you’re preaching to the choir. The champion already knows the value.</td>
      <td>Reschedule until the exec can attend. No exceptions for top-tier accounts.</td>
    </tr>
    <tr>
      <td><strong>3</strong></td>
      <td>No preparation</td>
      <td>Asking “So, how are things going?” when you should already know. Signals you don’t care enough to prepare.</td>
      <td>2–3 hours of prep. Pull every data point. Know their story before you walk in.</td>
    </tr>
    <tr>
      <td><strong>4</strong></td>
      <td>No follow-up</td>
      <td>The meeting generates action items that nobody tracks. Customer’s trust erodes. Next QBR invite gets declined.</td>
      <td>Follow-up email within 24 hours. Track every action item. Close every loop.</td>
    </tr>
    <tr>
      <td><strong>5</strong></td>
      <td>Talking too much</td>
      <td>If you’re talking 80% of the time, you’re presenting, not having a business conversation.</td>
      <td>Target 40/60 talk ratio (you/them). Ask questions. Pause after presenting data.</td>
    </tr>
    <tr>
      <td><strong>6</strong></td>
      <td>Generic slides</td>
      <td>Same deck for every customer with the logo swapped. Customers can tell immediately.</td>
      <td>Custom data, custom metrics, custom roadmap items. Every slide should be account-specific.</td>
    </tr>
    <tr>
      <td><strong>7</strong></td>
      <td>Skipping the growth conversation</td>
      <td>You leave money on the table. Expansion doesn’t happen by accident — it happens because you plant seeds.</td>
      <td>Always include section 4. Use the “customers like you” framework even if expansion isn’t imminent.</td>
    </tr>
    <tr>
      <td><strong>8</strong></td>
      <td>Going over time</td>
      <td>Executives have packed calendars. Going over signals disorganisation and disrespect for their time.</td>
      <td>Plan for 50 min. Buffer 10. Hard stop at 60. Practice the timing.</td>
    </tr>
    <tr>
      <td><strong>9</strong></td>
      <td>No metrics / no ROI</td>
      <td>Saying “things are going great” without numbers is meaningless. The exec needs data to justify the spend.</td>
      <td>Always translate usage into dollars. Time saved, errors avoided, revenue influenced.</td>
    </tr>
    <tr>
      <td><strong>10</strong></td>
      <td>Not booking the next QBR</td>
      <td>It’s 10x harder to schedule via email than in person. Momentum dies. You skip a quarter. Churn risk increases.</td>
      <td>End every QBR by pulling up the calendar and booking the next one.</td>
    </tr>
  </tbody>
</table>

<hr />

<p><strong>The QBR Checklist</strong></p>

<p>Exec sponsor in the room       no exec = reschedule<br />
Their metrics, not yours        lead with ROI and business outcomes<br />
Custom deck                   every slide is account-specific<br />
40/60 talk ratio              they talk more than you<br />
Plant expansion seeds         “customers like you” framework<br />
Surface risk                  “everything’s great” is a red flag<br />
Follow up within 24 hours     summary email + action items<br />
Book the next QBR            before ending this one</p>

<p>The QBR is not a presentation. It’s a business conversation that proves value and builds trust.</p>]]></content><author><name>Sourav Padhi</name></author><category term="playbooks" /><summary type="html"><![CDATA[QBR Template]]></summary></entry><entry><title type="html">SaaS Pricing Strategy Workshop</title><link href="https://sourav.sh/pricing-strategy-workshop.html" rel="alternate" type="text/html" title="SaaS Pricing Strategy Workshop" /><published>2026-04-08T00:00:00+00:00</published><updated>2026-04-08T00:00:00+00:00</updated><id>https://sourav.sh/pricing-strategy-workshop</id><content type="html" xml:base="https://sourav.sh/pricing-strategy-workshop.html"><![CDATA[<p>SaaS Pricing Strategy Workshop</p>

<p>frameworks · models · teardowns · implementation</p>

<p><code class="language-plaintext highlighter-rouge">SaaS</code> 
<code class="language-plaintext highlighter-rouge">Pricing</code> 
<code class="language-plaintext highlighter-rouge">MBA Workshop</code> 
<code class="language-plaintext highlighter-rouge">Revenue Growth</code> 
<code class="language-plaintext highlighter-rouge">Monetisation</code></p>

<p>Pricing is the most underleveraged growth lever in SaaS. Most companies spend hundreds of hours on acquisition, dozens on retention, and approximately zero on pricing. This is a mistake. A 10% improvement in pricing yields a 12.7% improvement in profit — more than a 10% improvement in volume (3.3%) or a 10% reduction in variable costs (7.8%).</p>

<p>This workshop is designed to give you the frameworks, models, and practical tools to audit, design, and implement pricing for any SaaS product. Every section includes worked examples, real company teardowns, and templates you can apply immediately.</p>

<p><strong>Who this is for:</strong> MBA interns working on growth strategy, product managers owning monetisation, founders setting pricing for the first time, and anyone who has ever said “we should probably raise our prices” but didn’t know where to start.</p>

<hr />

<p>Part I</p>

<p>Pricing Foundations</p>

<p>Before you touch a pricing page, you need to understand why pricing matters more than you think, what a value metric is, and how to measure what customers are actually willing to pay.</p>

<h1 id="01-why-pricing-is-the-1-lever">01 Why Pricing Is the #1 Lever</h1>

<p>Here is a simple truth that most SaaS operators ignore: <strong>a 10% price increase is a 10% ARR increase at zero incremental CAC</strong>. No new leads. No new pipeline. No new reps. Just more revenue from the same customers.</p>

<p>Compare the three growth levers side by side:</p>

<table>
  <thead>
    <tr>
      <th>Lever</th>
      <th>Action</th>
      <th>Effort</th>
      <th>Impact on Profit</th>
      <th>Timeline</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Pricing</strong></td>
      <td>Raise prices 10%</td>
      <td><strong>Low</strong></td>
      <td><strong>+12.7%</strong></td>
      <td>Immediate</td>
    </tr>
    <tr>
      <td><strong>Churn Reduction</strong></td>
      <td>Reduce churn by 10%</td>
      <td><strong>Medium</strong></td>
      <td>+6.7%</td>
      <td>6–12 months</td>
    </tr>
    <tr>
      <td><strong>Acquisition</strong></td>
      <td>Increase volume 10%</td>
      <td><strong>High</strong></td>
      <td>+3.3%</td>
      <td>3–6 months</td>
    </tr>
    <tr>
      <td><strong>Cost Reduction</strong></td>
      <td>Cut variable costs 10%</td>
      <td><strong>Medium</strong></td>
      <td>+7.8%</td>
      <td>1–3 months</td>
    </tr>
  </tbody>
</table>

<p>Source: McKinsey &amp; Company pricing study across 2,400+ companies. The profit impact numbers assume typical SaaS cost structures.</p>

<p>Despite this, most SaaS companies underprice by <strong>20–40%</strong>. Why?</p>

<ul>
  <li><strong>Fear of churn.</strong> Founders are terrified that raising prices will cause customers to leave. In practice, a 10% price increase rarely causes more than 1–2% incremental churn — the math overwhelmingly favours the increase.</li>
  <li><strong>Anchoring to competitors.</strong> “Our competitor charges $49/mo, so we charge $39/mo.” This ignores that your product may deliver different (or more) value. Competing on price is a race to the bottom.</li>
  <li><strong>Set and forget.</strong> The founding team set pricing in 2019 based on vibes. It’s 2026. The product has 10x more features. The price hasn’t changed.</li>
  <li><strong>No ownership.</strong> Nobody owns pricing. It falls between Product, Sales, Marketing, and Finance. Everyone assumes someone else is handling it.</li>
</ul>

<blockquote>
  <p><strong>Insight:</strong> Pricing is the highest-leverage, lowest-effort growth lever in SaaS. If you haven’t touched your pricing in the last 12 months, you are almost certainly leaving money on the table.</p>
</blockquote>

<h2 id="the-pricing-impact-calculator">The Pricing Impact Calculator</h2>

<p>Here’s a worked example. Assume a SaaS company with these metrics:</p>

<table>
  <thead>
    <tr>
      <th>Metric</th>
      <th>Current</th>
      <th>After 10% Price Increase</th>
      <th>Delta</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>ARR</td>
      <td>$5,000,000</td>
      <td>$5,500,000</td>
      <td><strong>+$500,000</strong></td>
    </tr>
    <tr>
      <td>Customers</td>
      <td>1,000</td>
      <td>985 (1.5% churn from increase)</td>
      <td>-15</td>
    </tr>
    <tr>
      <td>ARPU</td>
      <td>$5,000</td>
      <td>$5,584</td>
      <td><strong>+$584</strong></td>
    </tr>
    <tr>
      <td>Net Revenue Impact</td>
      <td>—</td>
      <td>—</td>
      <td><strong>+$425,000</strong></td>
    </tr>
    <tr>
      <td>CAC to acquire $425K via new logos</td>
      <td>—</td>
      <td>—</td>
      <td><strong>~$340,000</strong> (at 5:1 LTV:CAC)</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p><strong>The math:</strong> A 10% price increase on a $5M ARR business nets ~$425K after accounting for 1.5% incremental churn. To get that same $425K through new customer acquisition, you’d need to spend ~$340K in sales and marketing. <strong>Pricing is free. Acquisition is not.</strong></p>
</blockquote>

<hr />

<h1 id="02-the-value-metric">02 The Value Metric</h1>

<p>The <strong>value metric</strong> is what customers pay for that scales with the value they receive. It is the single most important decision in your pricing architecture. Get it right and revenue grows naturally as customers succeed. Get it wrong and you either leave money on the table or create perverse incentives.</p>

<h2 id="what-makes-a-good-value-metric">What Makes a Good Value Metric</h2>

<table>
  <thead>
    <tr>
      <th>Criteria</th>
      <th>What it means</th>
      <th>Example</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Aligned with value</strong></td>
      <td>As the customer gets more value, the metric increases</td>
      <td>Stripe charges % of revenue processed — as you sell more, they earn more</td>
    </tr>
    <tr>
      <td><strong>Easy to understand</strong></td>
      <td>The customer can predict their bill</td>
      <td>“$10/seat/month” is clear. “0.03 credits per API compute unit” is not.</td>
    </tr>
    <tr>
      <td><strong>Scales with the customer</strong></td>
      <td>Revenue grows as the customer grows, without renegotiation</td>
      <td>Seats scale as a team grows. Flat rate does not.</td>
    </tr>
    <tr>
      <td><strong>Hard to game</strong></td>
      <td>Customers can’t manipulate the metric to reduce their bill</td>
      <td>Seats can be shared (gameable). Revenue processed cannot (not gameable).</td>
    </tr>
  </tbody>
</table>

<h2 id="common-saas-value-metrics">Common SaaS Value Metrics</h2>

<table>
  <thead>
    <tr>
      <th>Value Metric</th>
      <th>Companies Using It</th>
      <th>Pros</th>
      <th>Cons</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Seats / Users</strong></td>
      <td>Slack, Salesforce, Figma, Notion</td>
      <td>Easy to understand, predictable</td>
      <td>Seat-sharing, resistance to adding users</td>
    </tr>
    <tr>
      <td><strong>Usage / Volume</strong></td>
      <td>Twilio (messages), Stripe (transactions), Snowflake (compute)</td>
      <td>Perfect value alignment, natural expansion</td>
      <td>Unpredictable bills, harder to forecast</td>
    </tr>
    <tr>
      <td><strong>Contacts / Records</strong></td>
      <td>HubSpot, Mailchimp, Intercom</td>
      <td>Grows with business size, easy to track</td>
      <td>Penalises data hygiene (keeping old contacts)</td>
    </tr>
    <tr>
      <td><strong>Revenue Processed</strong></td>
      <td>Stripe, Shopify Payments, Paddle</td>
      <td>Direct value capture, scales perfectly</td>
      <td>Only works for payment/financial products</td>
    </tr>
    <tr>
      <td><strong>Projects / Workspaces</strong></td>
      <td>Vercel, Linear, Notion</td>
      <td>Scales with organisational complexity</td>
      <td>Can be gamed by consolidating projects</td>
    </tr>
    <tr>
      <td><strong>Features / Tier</strong></td>
      <td>Most SaaS (Starter/Pro/Enterprise)</td>
      <td>Simple, encourages upgrades</td>
      <td>No natural expansion within a tier</td>
    </tr>
  </tbody>
</table>

<h2 id="how-to-find-your-value-metric">How to Find Your Value Metric</h2>

<p>Interview 20 customers. Ask these three questions:</p>

<hr />

<p><strong>Value Metric Discovery Interview</strong> · 3 core questions</p>

<p><strong>Q1:</strong> “If you had to measure whether our product is worth what you pay, what number would you look at?”</p>

<p><strong>Q2:</strong> “What does success look like for you when using our product? How would you measure it?”</p>

<p><strong>Q3:</strong> “If our price doubled tomorrow, what would you need to see more of to justify it?”</p>

<p>Listen for patterns. If 12 of 20 customers say “the number of reports generated” or “the number of team members using it” — that’s your value metric.</p>

<hr />

<blockquote>
  <p><strong>The test:</strong> A good value metric passes this sentence: “The more _____ the customer uses, the more value they get, and the more they should pay.” If you can fill in the blank and it feels fair to both sides, you’ve found it.</p>
</blockquote>

<hr />

<h1 id="03-willingness-to-pay-research">03 Willingness to Pay Research</h1>

<p>You cannot set prices by guessing. You need data on what customers will actually pay. Two proven methods:</p>

<h2 id="method-1-van-westendorp-price-sensitivity-meter">Method 1: Van Westendorp Price Sensitivity Meter</h2>

<p>The Van Westendorp method uses four questions to map the boundaries of acceptable pricing. Survey at least 100 prospects or customers.</p>

<hr />

<p><strong>The Four Van Westendorp Questions</strong></p>

<p><strong>Q1 — Too Cheap:</strong> “At what price would you consider this product to be so cheap that you’d question its quality?”</p>

<p><strong>Q2 — Cheap / Good Deal:</strong> “At what price would you consider this product a bargain — a great deal for the money?”</p>

<p><strong>Q3 — Expensive / Getting Pricey:</strong> “At what price would you consider this product to be getting expensive — not out of reach, but you’d have to think about it?”</p>

<p><strong>Q4 — Too Expensive:</strong> “At what price would you consider this product too expensive to consider purchasing?”</p>

<hr />

<h3 id="how-to-interpret-the-results">How to Interpret the Results</h3>

<p>Plot cumulative distributions of all four answers. The intersections give you:</p>

<table>
  <thead>
    <tr>
      <th>Intersection</th>
      <th>What it means</th>
      <th>How to use it</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Point of Marginal Cheapness (PMC)</strong></td>
      <td>“Too Cheap” crosses “Expensive”</td>
      <td>Your price floor — below this, customers won’t trust you</td>
    </tr>
    <tr>
      <td><strong>Point of Marginal Expensiveness (PME)</strong></td>
      <td>“Too Expensive” crosses “Cheap”</td>
      <td>Your price ceiling — above this, too many say no</td>
    </tr>
    <tr>
      <td><strong>Indifference Price Point (IDP)</strong></td>
      <td>“Cheap” crosses “Expensive”</td>
      <td>The “expected” price — where equal numbers say cheap vs expensive</td>
    </tr>
    <tr>
      <td><strong>Optimal Price Point (OPP)</strong></td>
      <td>“Too Cheap” crosses “Too Expensive”</td>
      <td>Where the fewest people reject the price on either extreme</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p><strong>Example result:</strong> You survey 150 mid-market SaaS buyers about a project management tool. PMC = $12/seat/mo, OPP = $18/seat/mo, IDP = $22/seat/mo, PME = $35/seat/mo. <strong>Your acceptable range is $18–$35/seat/mo.</strong> Most companies would have guessed $10–$15 and left 40%+ on the table.</p>
</blockquote>

<h2 id="method-2-gabor-granger-simpler">Method 2: Gabor-Granger (Simpler)</h2>

<p>When you don’t have 100+ survey respondents, Gabor-Granger works with smaller samples. It’s simpler but less nuanced.</p>

<hr />

<p><strong>Gabor-Granger Method</strong></p>

<p><strong>Step 1:</strong> Show a price. Ask: “Would you buy this product at $X/month?”</p>

<p><strong>Step 2:</strong> If YES → increase price by 20%. Ask again.</p>

<p><strong>Step 3:</strong> If NO → decrease price by 20%. Ask again.</p>

<p><strong>Step 4:</strong> Continue until you find the threshold. Repeat across 30+ respondents.</p>

<p><strong>Output:</strong> A demand curve showing % of people who would buy at each price point. Multiply price × demand to find the revenue-maximising price.</p>

<hr />

<blockquote>
  <p><strong>When to use which:</strong> Use Van Westendorp when you have access to 100+ respondents and want the full picture (acceptable range, optimal point). Use Gabor-Granger when you have fewer respondents (30–50) and just need a revenue-maximising price quickly.</p>
</blockquote>

<hr />

<p>Part II</p>

<p>The Six Pricing Models</p>

<p>Every SaaS product uses one (or a combination) of these six models. Understanding the tradeoffs of each is essential before you design or redesign your pricing.</p>

<h1 id="04-flat-rate-pricing">04 Flat Rate Pricing</h1>

<p>One product, one price, every customer pays the same thing. The simplest possible model.</p>

<table>
  <thead>
    <tr>
      <th>Attribute</th>
      <th>Detail</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>How it works</strong></td>
      <td>Single price for all features, all users, unlimited usage. $99/mo and you get everything.</td>
    </tr>
    <tr>
      <td><strong>When it works</strong></td>
      <td>Simple product, single persona, narrow use case. No meaningful difference between a small and large customer.</td>
    </tr>
    <tr>
      <td><strong>When it fails</strong></td>
      <td>No expansion revenue. A 10-person team and a 500-person team pay the same. You leave enormous value on the table with larger customers.</td>
    </tr>
  </tbody>
</table>

<h2 id="case-study-basecamp">Case Study: Basecamp</h2>

<hr />

<p><strong>Basecamp Pricing Teardown</strong></p>

<p><strong>Model:</strong> Flat rate — $349/month for unlimited users, unlimited projects</p>

<p><strong>Why they chose it:</strong> Basecamp’s philosophy is simplicity. They don’t want customers thinking about per-seat costs when adding team members. They believe “pricing shouldn’t be a spreadsheet exercise.”</p>

<p><strong>The tradeoff:</strong> A 5-person startup pays $349/mo ($69.80/user). A 500-person company pays $349/mo ($0.70/user). Basecamp is effectively giving away 99% of the value to large customers.</p>

<p><strong>Why it works for them:</strong> Their brand is built on being the anti-enterprise tool. Their TAM is SMBs who value simplicity. The flat rate <em>is</em> the product positioning.</p>

<p><strong>Why it wouldn’t work for you:</strong> If you have customers ranging from 5 to 5,000 users, flat rate means your largest customers get an incredible deal and your smallest customers subsidise them. You also have zero expansion revenue — no net revenue retention above 100%.</p>

<hr />

<blockquote>
  <p><strong>The flat rate trap:</strong> Flat rate pricing caps your NRR (Net Revenue Retention) at 100%. You can never earn more from an existing customer. In SaaS, the best companies have NRR of 120–140%+. Flat rate makes that mathematically impossible.</p>
</blockquote>

<hr />

<h1 id="05-per-seat-pricing">05 Per Seat Pricing</h1>

<p>The most common B2B SaaS model. Each user (seat) costs a fixed amount per month.</p>

<h2 id="mechanics">Mechanics</h2>

<table>
  <thead>
    <tr>
      <th>Element</th>
      <th>How it works</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Price structure</strong></td>
      <td>$X per user per month. Typically $8–$30 for team tools, $50–$200 for enterprise platforms.</td>
    </tr>
    <tr>
      <td><strong>Billing</strong></td>
      <td>Usually monthly or annual. Annual gets a 15–20% discount.</td>
    </tr>
    <tr>
      <td><strong>Expansion</strong></td>
      <td>Revenue grows naturally as companies add team members. This is the primary expansion vector.</td>
    </tr>
    <tr>
      <td><strong>Minimums</strong></td>
      <td>Enterprise deals often include seat minimums (e.g., 50-seat minimum at $150/seat/mo = $90K ARR floor).</td>
    </tr>
  </tbody>
</table>

<h2 id="per-seat-pricing-pros-and-cons">Per Seat Pricing: Pros and Cons</h2>

<table>
  <thead>
    <tr>
      <th>Pros</th>
      <th>Cons</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Predictable revenue</strong> — easy for both you and the customer to forecast</td>
      <td><strong>Seat-sharing</strong> — teams share logins to avoid paying for more seats</td>
    </tr>
    <tr>
      <td><strong>Scales with adoption</strong> — as more people use it, revenue grows</td>
      <td><strong>Resistance to expansion</strong> — managers hesitate to add seats because of direct cost</td>
    </tr>
    <tr>
      <td><strong>Simple to explain</strong> — “$15/user/month” requires zero explanation</td>
      <td><strong>Doesn’t capture usage value</strong> — a power user and a light user pay the same</td>
    </tr>
    <tr>
      <td><strong>Aligns with org growth</strong> — as the company hires, your revenue increases</td>
      <td><strong>Discourages adoption</strong> — champions may not roll out to full team to keep costs down</td>
    </tr>
  </tbody>
</table>

<h2 id="real-company-teardowns">Real Company Teardowns</h2>

<table>
  <thead>
    <tr>
      <th>Company</th>
      <th>Per Seat Price</th>
      <th>Annual Discount</th>
      <th>Free Tier</th>
      <th>Enterprise</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Slack</strong></td>
      <td>Pro: $8.75/user/mo   Business+: $12.50/user/mo</td>
      <td>~15% (billed annually)</td>
      <td>Yes (limited history)</td>
      <td>Custom pricing</td>
    </tr>
    <tr>
      <td><strong>Salesforce</strong></td>
      <td>Starter: $25/user/mo   Professional: $80/user/mo   Enterprise: $165/user/mo</td>
      <td>Annual only (no monthly option)</td>
      <td>No</td>
      <td>$330/user/mo</td>
    </tr>
    <tr>
      <td><strong>Figma</strong></td>
      <td>Professional: $15/editor/mo   Organisation: $45/editor/mo</td>
      <td>~20% (billed annually)</td>
      <td>Yes (3 projects)</td>
      <td>$75/editor/mo</td>
    </tr>
  </tbody>
</table>

<h3 id="how-to-set-your-per-seat-price">How to Set Your Per-Seat Price</h3>

<ol>
  <li><strong>Calculate value delivered per user.</strong> If your tool saves each user 5 hours/week and their loaded cost is $75/hr, you deliver ~$1,500/mo in value per user.</li>
  <li><strong>Apply the 10:1 value ratio.</strong> Customers should get 10x the value they pay. $1,500 value / 10 = $150/user/mo maximum. This is the ceiling.</li>
  <li><strong>Run willingness-to-pay research.</strong> Van Westendorp or Gabor-Granger to find the acceptable range.</li>
  <li><strong>Set price at 70–80% of the WTP ceiling.</strong> Leave room for annual discounts and enterprise negotiation.</li>
</ol>

<blockquote>
  <p><strong>Insight:</strong> Slack’s genius move: they only charge for active users. If someone on your team hasn’t used Slack in 14 days, they’re automatically deactivated and you don’t pay. This removes the biggest objection to per-seat pricing (“I’m paying for people who don’t use it”) and dramatically increases willingness to roll out company-wide.</p>
</blockquote>

<hr />

<h1 id="06-usage-based-pricing">06 Usage-Based Pricing</h1>

<p>The customer pays per unit consumed. No fixed fee, no seats — you pay for what you use. This is the fastest-growing pricing model in SaaS.</p>

<h2 id="how-it-works">How It Works</h2>

<table>
  <thead>
    <tr>
      <th>Component</th>
      <th>Detail</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Unit</strong></td>
      <td>API calls, messages sent, compute hours, GBs stored, transactions processed</td>
    </tr>
    <tr>
      <td><strong>Pricing</strong></td>
      <td>Per-unit rate, often with volume tiers (first 10K at $0.01, next 100K at $0.008, etc.)</td>
    </tr>
    <tr>
      <td><strong>Billing</strong></td>
      <td>Monthly in arrears. Customer is billed for actual usage after the fact.</td>
    </tr>
    <tr>
      <td><strong>Minimums</strong></td>
      <td>Often includes a monthly minimum commit (e.g., $500/mo minimum, usage above that billed per unit)</td>
    </tr>
  </tbody>
</table>

<h2 id="usage-based-pricing-pros-and-cons">Usage-Based Pricing: Pros and Cons</h2>

<table>
  <thead>
    <tr>
      <th>Pros</th>
      <th>Cons</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Perfect value alignment</strong> — customers only pay for what they use</td>
      <td><strong>Revenue unpredictability</strong> — hard to forecast next quarter’s revenue</td>
    </tr>
    <tr>
      <td><strong>Natural expansion</strong> — as usage grows, revenue grows automatically</td>
      <td><strong>Customer anxiety</strong> — “how much will I owe this month?”</td>
    </tr>
    <tr>
      <td><strong>Low barrier to entry</strong> — start small, scale up. No upfront commitment.</td>
      <td><strong>Hard to budget</strong> — procurement teams hate unpredictable costs</td>
    </tr>
    <tr>
      <td><strong>NRR can exceed 150%+</strong> — the best usage-based companies see massive expansion</td>
      <td><strong>Churn sensitivity to macro</strong> — in downturns, usage drops and so does revenue</td>
    </tr>
  </tbody>
</table>

<h2 id="real-company-teardowns-1">Real Company Teardowns</h2>

<table>
  <thead>
    <tr>
      <th>Company</th>
      <th>Value Metric</th>
      <th>Pricing</th>
      <th>NRR</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Stripe</strong></td>
      <td>Revenue processed</td>
      <td>2.9% + $0.30 per transaction</td>
      <td><strong>&gt;100%</strong></td>
    </tr>
    <tr>
      <td><strong>Twilio</strong></td>
      <td>Messages / calls</td>
      <td>$0.0079/SMS, $0.015/min voice</td>
      <td><strong>~131%</strong></td>
    </tr>
    <tr>
      <td><strong>Snowflake</strong></td>
      <td>Compute credits + storage</td>
      <td>$2–$4/credit (varies by tier), $23/TB/mo storage</td>
      <td><strong>~158%</strong></td>
    </tr>
    <tr>
      <td><strong>Datadog</strong></td>
      <td>Hosts monitored + logs ingested</td>
      <td>$15/host/mo + $0.10/GB logs</td>
      <td><strong>~130%</strong></td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p><strong>Why usage-based NRR is insane:</strong> Snowflake’s NRR of 158% means the average customer spends 58% more each year without any upselling effort. That’s because as their data grows, compute usage grows. Revenue is a function of customer success. This is the holy grail of SaaS monetisation.</p>
</blockquote>

<h3 id="how-to-set-usage-based-rates">How to Set Usage-Based Rates</h3>

<ol>
  <li><strong>Calculate your cost per unit.</strong> Infrastructure cost (compute, bandwidth, storage) per unit of consumption. Add a healthy margin (70–85% gross margin target).</li>
  <li><strong>Benchmark against competitors.</strong> If Twilio charges $0.0079/SMS and you charge $0.05/SMS, you need to justify 6x with differentiated value.</li>
  <li><strong>Design volume tiers.</strong> Reward growth: higher volume = lower per-unit price. This encourages consolidation onto your platform.</li>
  <li><strong>Consider committed-use discounts.</strong> “Commit to $10K/mo and get 30% off per-unit rates.” This gives you revenue predictability while giving them savings.</li>
</ol>

<hr />

<h1 id="07-tiered-packages">07 Tiered Packages</h1>

<p>The Starter / Pro / Enterprise model. The most common pricing page design in SaaS. Three (sometimes four) packages at escalating price points with increasing features, limits, and support levels.</p>

<h2 id="how-to-design-tiers">How to Design Tiers</h2>

<table>
  <thead>
    <tr>
      <th>Tier</th>
      <th>Target Buyer</th>
      <th>Key Characteristics</th>
      <th>Typical Price Range</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>**Starter</strong>**</td>
      <td>Solo users, small teams, evaluators</td>
      <td>Core features. Low limits. Self-serve. No support SLA.</td>
      <td>$0–$49/mo</td>
    </tr>
    <tr>
      <td><strong>**Pro / Growth</strong>**</td>
      <td>Growing teams, mid-market companies</td>
      <td>Advanced features. Higher limits. Priority support. Integrations.</td>
      <td>$49–$299/mo</td>
    </tr>
    <tr>
      <td><strong>**Enterprise</strong>**</td>
      <td>Large organisations, regulated industries</td>
      <td>Full feature set. Unlimited or custom limits. SLA. SSO/SAML. Dedicated support. Custom contracts.</td>
      <td>“Contact Sales”</td>
    </tr>
  </tbody>
</table>

<h2 id="the-decoy-effect-asymmetric-dominance">The Decoy Effect (Asymmetric Dominance)</h2>

<p>The middle tier should be designed to look like the obvious best deal compared to the other two. This is called the <strong>decoy effect</strong> — the lower and upper tiers make the middle tier look like incredible value.</p>

<hr />

<p><strong>Worked Example: Project Management SaaS</strong></p>

<p><strong>Starter — $12/user/mo</strong><br />
5 projects, 10GB storage, email support</p>

<p><strong>Pro — $24/user/mo</strong> <strong>MOST POPULAR</strong><br />
Unlimited projects, 100GB storage, priority support, integrations, reporting</p>

<p><strong>Enterprise — $45/user/mo</strong><br />
Everything in Pro + SSO/SAML, audit logs, 99.9% SLA, dedicated CSM, custom integrations</p>

<p>The jump from Starter ($12) to Pro ($24) doubles the price but adds 10x the value (unlimited projects, 10x storage, integrations). The jump from Pro ($24) to Enterprise ($45) nearly doubles the price but mainly adds compliance features most mid-market companies don’t need. Result: 60–70% of customers choose Pro.</p>

<hr />

<blockquote>
  <p><strong>The psychology:</strong> Good/Better/Best works because humans avoid extremes. Given three options, most people pick the middle one. If you design your tiers so the middle option has the best value-to-price ratio, you can predict that 60–70% of customers will land there — and you can set that tier’s price accordingly.</p>
</blockquote>

<h2 id="real-company-teardown-hubspot">Real Company Teardown: HubSpot</h2>

<table>
  <thead>
    <tr>
      <th>Tier</th>
      <th>Price</th>
      <th>Key Limits</th>
      <th>Target</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Free</strong></td>
      <td>$0</td>
      <td>1,000 contacts, basic CRM, email marketing</td>
      <td>Solo founders, evaluators</td>
    </tr>
    <tr>
      <td><strong>Starter</strong></td>
      <td>$20/mo</td>
      <td>1,000 contacts, remove HubSpot branding, basic automations</td>
      <td>Small teams getting started</td>
    </tr>
    <tr>
      <td><strong>Professional</strong></td>
      <td>$890/mo</td>
      <td>2,000 contacts, full automation, reporting, ABM, custom properties</td>
      <td>Growing mid-market teams</td>
    </tr>
    <tr>
      <td><strong>Enterprise</strong></td>
      <td>$3,600/mo</td>
      <td>10,000 contacts, advanced reporting, custom objects, predictive lead scoring</td>
      <td>Large marketing organisations</td>
    </tr>
  </tbody>
</table>

<p>Notice the massive price jump from Starter ($20) to Professional ($890). HubSpot’s value metric is contacts, but the real gate is features. The Professional tier is where the product becomes genuinely useful for a real marketing team. This is intentional — the free and Starter tiers exist to get you hooked.</p>

<h2 id="tier-design-what-goes-where">Tier Design: What Goes Where</h2>

<table>
  <thead>
    <tr>
      <th>What to Gate</th>
      <th>Where to Put It</th>
      <th>Why</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Core functionality</td>
      <td><strong>Starter / Free</strong></td>
      <td>If the base product isn’t useful, nobody upgrades</td>
    </tr>
    <tr>
      <td>Collaboration features (sharing, teams, permissions)</td>
      <td><strong>Pro</strong></td>
      <td>Collaboration = more users = more seats = natural expansion trigger</td>
    </tr>
    <tr>
      <td>Automation / workflows</td>
      <td><strong>Pro</strong></td>
      <td>Automation delivers measurable ROI that justifies the upgrade</td>
    </tr>
    <tr>
      <td>Integrations</td>
      <td><strong>Pro</strong></td>
      <td>Once embedded in their stack, switching costs skyrocket</td>
    </tr>
    <tr>
      <td>Reporting / analytics</td>
      <td><strong>Pro</strong> or <strong>Enterprise</strong></td>
      <td>Managers and execs need reporting — they authorise budgets</td>
    </tr>
    <tr>
      <td>SSO / SAML / audit logs</td>
      <td><strong>Enterprise</strong></td>
      <td>Compliance requirements. Only large companies need this. High willingness to pay.</td>
    </tr>
    <tr>
      <td>SLA / uptime guarantee</td>
      <td><strong>Enterprise</strong></td>
      <td>Only enterprise procurement requires contractual SLAs</td>
    </tr>
    <tr>
      <td>Dedicated support / CSM</td>
      <td><strong>Enterprise</strong></td>
      <td>High cost to deliver. Only viable at enterprise price points.</td>
    </tr>
  </tbody>
</table>

<hr />

<h1 id="08-hybrid-pricing">08 Hybrid Pricing</h1>

<p>Most modern SaaS companies don’t use a single model — they combine two or more. This is <strong>hybrid pricing</strong>, and it’s increasingly the default for companies at scale.</p>

<h2 id="common-hybrid-structures">Common Hybrid Structures</h2>

<table>
  <thead>
    <tr>
      <th>Structure</th>
      <th>How it works</th>
      <th>Example</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Platform Fee + Usage</strong></td>
      <td>Fixed monthly fee for access. Usage billed on top.</td>
      <td>Datadog: $15/host/mo (platform) + $0.10/GB logs (usage)</td>
    </tr>
    <tr>
      <td><strong>Per Seat + Usage Overage</strong></td>
      <td>Per-seat price includes a usage allowance. Overage billed per unit.</td>
      <td>Intercom: per-seat price includes 1,000 conversations/mo. Above that, $0.99/conversation.</td>
    </tr>
    <tr>
      <td><strong>Tiered Package + Seat-Based</strong></td>
      <td>Choose a tier (features), then pay per seat within that tier.</td>
      <td>Salesforce: choose Starter/Professional/Enterprise tier, then pay per seat.</td>
    </tr>
    <tr>
      <td><strong>Free Tier + Usage</strong></td>
      <td>Generous free tier. Pay only when you exceed free limits.</td>
      <td>Vercel: free for hobby projects. Pro plan at $20/mo + usage for bandwidth/builds/functions beyond included limits.</td>
    </tr>
    <tr>
      <td><strong>Base + Modules</strong></td>
      <td>Core platform at a fixed price. Add-on modules at incremental cost.</td>
      <td>HubSpot: buy Marketing Hub, then add Sales Hub, Service Hub as separate line items.</td>
    </tr>
  </tbody>
</table>

<h2 id="how-to-structure-a-hybrid-model">How to Structure a Hybrid Model</h2>

<hr />

<p><strong>Hybrid Pricing Design Framework</strong></p>

<p><strong>Step 1: Identify your base value.</strong><br />
What does every customer need? This becomes the platform fee or base tier. It should cover your cost to serve + margin.</p>

<p><strong>Step 2: Identify your expansion vector.</strong><br />
What grows as the customer gets more value? Seats? Usage? Contacts? This becomes the variable component.</p>

<p><strong>Step 3: Set the ratio.</strong><br />
Aim for 60–70% of revenue from the predictable component (platform fee + seats) and 30–40% from the variable component (usage). This balances predictability with expansion.</p>

<p><strong>Step 4: Include a buffer.</strong><br />
Give each tier a usage allowance so customers don’t get surprised by overage charges. The allowance should cover the 50th percentile of usage. Only the top 25–30% of customers should trigger overage billing.</p>

<hr />

<blockquote>
  <p><strong>The hybrid advantage:</strong> Platform fee gives you revenue predictability (CFO loves it). Usage component gives you natural expansion (CRO loves it). Tiered features give you an upgrade path (Product loves it). Hybrid is harder to design but dramatically better for the business.</p>
</blockquote>

<hr />

<h1 id="09-freemium">09 Freemium</h1>

<p>Freemium is not a pricing model — it’s a <strong>customer acquisition strategy</strong>. You give away a limited version of your product for free, and convert a small percentage to paid. It works spectacularly well for some companies and is a slow death sentence for others.</p>

<h2 id="when-freemium-works">When Freemium Works</h2>

<table>
  <thead>
    <tr>
      <th>Condition</th>
      <th>Why it matters</th>
      <th>Example</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Product-led growth (PLG)</strong></td>
      <td>Users discover, adopt, and expand without talking to sales</td>
      <td>Slack, Notion, Figma</td>
    </tr>
    <tr>
      <td><strong>Viral / network effects</strong></td>
      <td>Free users invite other users, creating organic growth</td>
      <td>Dropbox (shared folders), Calendly (scheduling links)</td>
    </tr>
    <tr>
      <td><strong>Large TAM</strong></td>
      <td>You need millions of free users to get enough paid conversions at 2–5%</td>
      <td>Canva (1B+ potential users globally)</td>
    </tr>
    <tr>
      <td><strong>Low marginal cost (COGS)</strong></td>
      <td>It costs you nearly nothing to serve a free user</td>
      <td>Software with no compute-heavy features</td>
    </tr>
    <tr>
      <td><strong>Self-serve onboarding</strong></td>
      <td>Users can get value without human help — otherwise free users just create support tickets</td>
      <td>Notion (templates), Figma (tutorials)</td>
    </tr>
  </tbody>
</table>

<h2 id="when-freemium-does-not-work">When Freemium Does NOT Work</h2>

<table>
  <thead>
    <tr>
      <th>Condition</th>
      <th>Why it fails</th>
      <th>What to do instead</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>**High COGS</strong>**</td>
      <td>If each free user costs you $5–10/mo in compute, you bleed money</td>
      <td>Free trial (14–30 days) instead of freemium</td>
    </tr>
    <tr>
      <td><strong>**Complex onboarding</strong>**</td>
      <td>If users need hand-holding to get value, free users create support costs with zero revenue</td>
      <td>Guided demo / POC instead of free tier</td>
    </tr>
    <tr>
      <td><strong>**Small TAM</strong>**</td>
      <td>If your TAM is 5,000 companies, 2–5% conversion gives you 100–250 paying customers. Not enough.</td>
      <td>Free trial + sales-assisted conversion</td>
    </tr>
    <tr>
      <td><strong>**Enterprise-only product</strong>**</td>
      <td>Enterprise buyers don’t “try” products for free. They run POCs and evaluations through procurement.</td>
      <td>POC / pilot program with sales involvement</td>
    </tr>
  </tbody>
</table>

<h2 id="freemium-benchmarks">Freemium Benchmarks</h2>

<table>
  <thead>
    <tr>
      <th>Metric</th>
      <th>Good</th>
      <th>Great</th>
      <th>Best in Class</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Free-to-Paid Conversion Rate</strong></td>
      <td>2–3%</td>
      <td>4–5%</td>
      <td><strong>7%+ (Slack, Zoom)</strong></td>
    </tr>
    <tr>
      <td><strong>Time to Convert</strong></td>
      <td>30–90 days</td>
      <td>14–30 days</td>
      <td><strong>&lt;14 days</strong></td>
    </tr>
    <tr>
      <td><strong>Free User Activation Rate</strong></td>
      <td>20–30%</td>
      <td>40–50%</td>
      <td><strong>60%+</strong></td>
    </tr>
    <tr>
      <td><strong>Free User Cost (COGS/user)</strong></td>
      <td>&lt;$1/mo</td>
      <td>&lt;$0.25/mo</td>
      <td><strong>&lt;$0.05/mo</strong></td>
    </tr>
  </tbody>
</table>

<h3 id="designing-the-free-tier">Designing the Free Tier</h3>

<p>The free tier should be <strong>valuable enough to be useful, limited enough to create upgrade pressure</strong>. Two approaches:</p>

<p>FEATURE-LIMITED</p>

<hr />

<p>Give full access to core features but limit advanced functionality.</p>

<p><strong>Example (Notion):</strong><br />
Free: Unlimited pages, basic blocks, 5MB file uploads, 7-day page history<br />
Paid: Unlimited file uploads, 30-day history, databases, API access, bulk export</p>

<hr />

<p>USAGE-LIMITED</p>

<hr />

<p>Give full features but cap usage volume.</p>

<p><strong>Example (Mailchimp):</strong><br />
Free: All email features, up to 500 contacts, 1,000 sends/mo<br />
Paid: Unlimited contacts, unlimited sends, automation, A/B testing</p>

<hr />

<blockquote>
  <p><strong>The free tier mistake:</strong> If your free tier is too generous, nobody upgrades. If it’s too restrictive, nobody gets enough value to care. The sweet spot: 80% of free users should hit a limit within 30 days that makes them <em>want</em> to upgrade, not <em>need</em> to. The trigger should feel like growth, not frustration.</p>
</blockquote>

<hr />

<p>Part III</p>

<p>The Pricing Audit</p>

<p>You’ve learned the models. Now apply them. This section gives you an 8-step framework to audit any SaaS company’s pricing and a guide to designing the pricing page.</p>

<h1 id="10-how-to-audit-your-current-pricing">10 How to Audit Your Current Pricing</h1>

<p>Use this 8-step framework to evaluate any SaaS product’s pricing — whether it’s your own company or a case study target.</p>

<h2 id="step-1-map-current-pricing-structure">Step 1: Map Current Pricing Structure</h2>

<p>Document exactly what you charge, how you charge it, and what’s included at each level.</p>

<hr />

<p><strong>Pricing Structure Map Template</strong></p>

<p><strong>Model type:</strong> [Flat / Per Seat / Usage / Tiered / Hybrid / Freemium]<br />
<strong>Value metric:</strong> [What do customers pay per unit of?]<br />
<strong>Tiers:</strong> [List each tier, price, and key inclusions]<br />
<strong>Add-ons:</strong> [Any optional modules or overages]<br />
<strong>Discounts:</strong> [Annual, volume, enterprise negotiated]<br />
<strong>Free tier:</strong> [Yes/No, what’s included]<br />
<strong>Last price change:</strong> [Date and nature of change]</p>

<hr />

<h2 id="step-2-revenue-per-customer-distribution">Step 2: Revenue Per Customer Distribution</h2>

<p>Pull a histogram of revenue per customer. You’re looking for the shape of the distribution.</p>

<table>
  <thead>
    <tr>
      <th>Distribution Shape</th>
      <th>What it means</th>
      <th>Action</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Tight cluster</strong> (most customers pay similar amounts)</td>
      <td>Your pricing may be too flat. No expansion happening.</td>
      <td>Introduce usage-based or tiered components</td>
    </tr>
    <tr>
      <td><strong>Long right tail</strong> (a few customers pay much more)</td>
      <td>Healthy. Your large customers are expanding.</td>
      <td>Protect these accounts. Consider dedicated enterprise tier.</td>
    </tr>
    <tr>
      <td><strong>Bimodal</strong> (two clusters)</td>
      <td>You likely have two distinct segments with different needs.</td>
      <td>Design tiers explicitly for each segment.</td>
    </tr>
    <tr>
      <td><strong>Lots of very low-paying customers</strong></td>
      <td>Your entry price may be too low, or free-to-paid conversion is happening but upgrade isn’t.</td>
      <td>Raise entry price or redesign upgrade triggers.</td>
    </tr>
  </tbody>
</table>

<h2 id="step-3-value-metric-alignment">Step 3: Value Metric Alignment</h2>

<p>Ask: <strong>Are customers paying in proportion to the value they receive?</strong></p>

<ul>
  <li>Identify your top 10 happiest customers (highest NPS or CSAT). What do they pay? What value do they get?</li>
  <li>Identify your top 10 churned customers. What did they pay? Did they feel they were paying too much for too little?</li>
  <li>If happy customers are paying very little (value » price), you’re underpricing.</li>
  <li>If churned customers felt the price was too high relative to value, your value metric is misaligned.</li>
</ul>

<h2 id="step-4-churn-analysis-by-price-tier">Step 4: Churn Analysis by Price Tier</h2>

<table>
  <thead>
    <tr>
      <th>Tier</th>
      <th>Monthly Churn Rate</th>
      <th>Signal</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Free</td>
      <td>N/A (they never paid)</td>
      <td>Track activation and conversion instead</td>
    </tr>
    <tr>
      <td>Starter</td>
      <td><strong>5–8%</strong> (high for Starter is normal)</td>
      <td>SMBs churn more. If above 8%, your product isn’t delivering enough value at this tier.</td>
    </tr>
    <tr>
      <td>Pro</td>
      <td><strong>2–4%</strong></td>
      <td>If above 4%, investigate. These customers are invested enough to pay more — what’s failing?</td>
    </tr>
    <tr>
      <td>Enterprise</td>
      <td><strong>&lt;1%</strong></td>
      <td>Enterprise rarely churns. If above 2%, it’s a product-market fit or implementation issue.</td>
    </tr>
  </tbody>
</table>

<h2 id="step-5-competitive-comparison">Step 5: Competitive Comparison</h2>

<p>Map your pricing against the top 3–5 competitors on these dimensions:</p>

<ul>
  <li>Price per unit (seat, API call, etc.) at equivalent tiers</li>
  <li>What’s included at each tier vs what’s gated</li>
  <li>Value metric used (are they charging for the same thing?)</li>
  <li>Free tier / trial structure</li>
  <li>Enterprise pricing model (per-seat, custom, consumption)</li>
</ul>

<blockquote>
  <p><strong>Important:</strong> Competitive analysis informs — it doesn’t dictate. If you deliver 2x the value of a competitor, you should charge more, not match their price. The goal is to understand the market context, not to race to the bottom.</p>
</blockquote>

<h2 id="step-6-willingness-to-pay-survey">Step 6: Willingness to Pay Survey</h2>

<p>Run a Van Westendorp or Gabor-Granger study (see Section 03). Segment by company size, use case, and buyer persona. Different segments will have very different WTP.</p>

<h2 id="step-7-identify-expansion-gaps">Step 7: Identify Expansion Gaps</h2>

<p>Look for moments where customers hit a limit but have no way to upgrade incrementally.</p>

<hr />

<p><strong>Common Expansion Gaps</strong></p>

<p><strong>Gap 1: Cliff between tiers.</strong> Pro is $49/mo and Enterprise is $499/mo. Customers at $49 who need <em>one</em> enterprise feature (like SSO) can’t justify 10x the price. <strong>Fix:</strong> add SSO as a $50/mo add-on to Pro.</p>

<p><strong>Gap 2: No usage overage.</strong> Pro includes 10,000 API calls. Customer hits 12,000. They either upgrade to Enterprise (overkill) or stay on Pro and lose data. <strong>Fix:</strong> add per-unit overage at $0.01/call above the limit.</p>

<p><strong>Gap 3: Seat bundles too large.</strong> You sell in packs of 10 seats. A team of 12 has to buy 20 seats and pay for 8 empty ones. <strong>Fix:</strong> allow individual seat purchases or smaller bundles.</p>

<p><strong>Gap 4: Annual-only Enterprise.</strong> A growing startup wants Enterprise features but can’t commit to annual. <strong>Fix:</strong> offer monthly Enterprise at a premium (20–30% more than monthly equivalent of annual price).</p>

<hr />

<h2 id="step-8-model-three-pricing-scenarios">Step 8: Model Three Pricing Scenarios</h2>

<p>Build a financial model with three scenarios and project the impact over 12 months:</p>

<table>
  <thead>
    <tr>
      <th>Scenario</th>
      <th>Change</th>
      <th>Model These Metrics</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>**A: Raise 10%</strong>**</td>
      <td>Increase all prices by 10% for new customers</td>
      <td>New ARR, churn impact (assume 1–3% incremental), net revenue change</td>
    </tr>
    <tr>
      <td><strong>**B: Restructure Tiers</strong>**</td>
      <td>Redesign tiers based on WTP data and expansion gaps</td>
      <td>Conversion rates by tier, ARPU change, upgrade rate change</td>
    </tr>
    <tr>
      <td><strong>**C: Add Usage Component</strong>**</td>
      <td>Introduce usage-based billing on top of existing structure</td>
      <td>NRR impact, expansion revenue, bill shock risk, forecast accuracy</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p><strong>Insight:</strong> The most underrated step is #7 (expansion gaps). Most SaaS companies lose 15–25% of potential expansion revenue because customers hit ceilings with no incremental way to pay more. Finding and fixing these gaps is often the single highest-ROI pricing change you can make.</p>
</blockquote>

<hr />

<h1 id="11-pricing-page-design">11 Pricing Page Design</h1>

<p>Your pricing page is the most visited page on your site after the homepage. It’s where buyers decide if they can afford you, if you’re serious, and which plan to choose. Here’s what the best pricing pages get right.</p>

<h2 id="the-anatomy-of-a-great-pricing-page">The Anatomy of a Great Pricing Page</h2>

<table>
  <thead>
    <tr>
      <th>Element</th>
      <th>Best Practice</th>
      <th>Why</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Number of tiers</strong></td>
      <td>3 tiers visible. 4 max (if you include Free).</td>
      <td>More than 4 = choice paralysis. Conversion drops.</td>
    </tr>
    <tr>
      <td><strong>Highlighted tier</strong></td>
      <td>Visually emphasise the “recommended” tier (usually middle). Larger card, different colour, “Most Popular” badge.</td>
      <td>Anchoring + social proof. 60–70% of customers pick the highlighted one.</td>
    </tr>
    <tr>
      <td><strong>Comparison table</strong></td>
      <td>Full feature comparison below the pricing cards. Checkmarks and X marks.</td>
      <td>Enterprise buyers need to justify the purchase. They send this table to procurement.</td>
    </tr>
    <tr>
      <td><strong>Annual/Monthly toggle</strong></td>
      <td>Default to annual. Show monthly price with annual savings badge (“Save 20%”).</td>
      <td>Annual billing improves cash flow and reduces churn. The toggle makes the discount visible.</td>
    </tr>
    <tr>
      <td><strong>Enterprise tier</strong></td>
      <td>“Contact Sales” with a short list of enterprise-specific features (SSO, SLA, custom contracts).</td>
      <td>Signals you serve enterprise. Prevents sticker shock. Lets sales customise.</td>
    </tr>
    <tr>
      <td><strong>Social proof</strong></td>
      <td>Logos of customers, testimonials, or “X,000 companies trust us” below the pricing cards.</td>
      <td>Reduces perceived risk. “If Stripe uses it, it must be good enough for us.”</td>
    </tr>
    <tr>
      <td><strong>FAQ section</strong></td>
      <td>Answer the 5–8 most common pricing questions (billing cycle, cancellation, overages, team plans).</td>
      <td>Removes friction. Every unanswered question is a reason to delay the purchase.</td>
    </tr>
  </tbody>
</table>

<h2 id="pricing-page-teardown-notion">Pricing Page Teardown: Notion</h2>

<hr />

<p><strong>What Notion Gets Right</strong></p>

<p><strong>1. Four clear tiers:</strong> Free, Plus ($10/user/mo), Business ($18/user/mo), Enterprise (Contact Sales)</p>

<p><strong>2. Annual default:</strong> Toggle defaults to annual pricing. Monthly shows a higher price, making annual feel like a deal.</p>

<p><strong>3. “Most Popular” on Business:</strong> The Business tier is highlighted. This is their target tier for growing teams.</p>

<p><strong>4. Feature comparison below:</strong> A detailed table with every feature and which tier includes it. This is the page enterprise buyers screenshot and send to their manager.</p>

<p><strong>5. Free tier is generous:</strong> Unlimited pages for individuals. This is the PLG hook — get individuals addicted, then the team plan sells itself.</p>

<p><strong>6. Simple value metric:</strong> “Per member per month.” Everyone understands it. No compute units, credits, or confusing metrics.</p>

<hr />

<blockquote>
  <p><strong>The pricing page test:</strong> Show your pricing page to someone who has never seen your product for 10 seconds, then take it away. Ask: (1) How many plans are there? (2) Which one would you pick? (3) What does the product do? If they can answer all three, your pricing page works. If they can’t, simplify.</p>
</blockquote>

<hr />

<p>Part IV</p>

<p>Experiments &amp; Implementation</p>

<p>You’ve audited your pricing. You know the models. Now it’s time to make changes — and that means raising prices, running experiments, managing discounts, and building a process for ongoing review.</p>

<h1 id="12-how-to-raise-prices">12 How to Raise Prices</h1>

<p>Raising prices is the scariest thing most SaaS teams do. It doesn’t have to be. Here’s the playbook that minimises risk and maximises revenue impact.</p>

<h2 id="the-price-increase-playbook">The Price Increase Playbook</h2>

<table>
  <thead>
    <tr>
      <th>Step</th>
      <th>Action</th>
      <th>Detail</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>1</strong></td>
      <td><strong>Test on new cohorts first</strong></td>
      <td>Raise prices only for new customers. Existing customers keep their current price. Measure conversion rate, ACV, and churn at 30/60/90 days.</td>
    </tr>
    <tr>
      <td><strong>2</strong></td>
      <td><strong>Grandfather existing customers</strong></td>
      <td>Give existing customers 6–12 months at their current price. Communicate early and clearly: “Your price stays the same until [date].”</td>
    </tr>
    <tr>
      <td><strong>3</strong></td>
      <td><strong>Communicate value, not price</strong></td>
      <td>The announcement should lead with what’s improved (new features, better performance, expanded support), not the price change. Frame it as “we’ve invested significantly in the product.”</td>
    </tr>
    <tr>
      <td><strong>4</strong></td>
      <td><strong>Offer an early lock-in</strong></td>
      <td>“Lock in your current rate for 2 years by switching to annual billing before [date].” This converts monthly customers to annual AND reduces churn from the price change.</td>
    </tr>
    <tr>
      <td><strong>5</strong></td>
      <td><strong>Measure at 30/60/90 days</strong></td>
      <td>Track: conversion rate (new customers), churn rate (existing customers at new price), support ticket volume, NPS change.</td>
    </tr>
    <tr>
      <td><strong>6</strong></td>
      <td><strong>Roll back if needed</strong></td>
      <td>If churn exceeds 5% incremental or conversion drops by more than 20%, roll back and try a smaller increase.</td>
    </tr>
  </tbody>
</table>

<h2 id="price-increase-communication-template">Price Increase Communication Template</h2>

<hr />

<p>To: <strong>All Customers</strong> · Email</p>

<p><strong>Updates to [Product] plans</strong></p>

<p>Hi [Name],</p>

<p>Over the past 12 months, we’ve shipped [specific improvements — 3–4 bullet points]. These investments have made [Product] significantly more powerful, and our customers are seeing real results: [1–2 customer proof points].</p>

<p>To continue investing at this pace, we’re updating our pricing effective [date — 60+ days out]. Your current plan of [current plan] at [current price] will move to [new price].</p>

<p><strong>What this means for you:</strong><br />
• Your price stays the same through [grandfather date].<br />
• If you’d like to lock in your current rate for the next 2 years, switch to annual billing before [date].<br />
• All features you currently have will remain — nothing is being removed.</p>

<p>If you have any questions, reply to this email or book time with your account manager: [link].</p>

<p>[CEO Name]<br />
Founder &amp; CEO, [Company]</p>

<hr />

<blockquote>
  <p><strong>Why this template works:</strong> (1) Leads with value delivered, not cost increase. (2) Gives 60+ days notice. (3) Offers a lock-in option that converts monthly-to-annual. (4) Comes from the CEO (signals importance and respect). (5) Grandfather period reduces churn shock.</p>
</blockquote>

<blockquote>
  <p><strong>Expected impact of a well-executed 15–20% price increase:</strong> Incremental churn of 1–3%. Net ARR increase of 12–17%. 20–30% of monthly customers convert to annual (lock-in offer). Support ticket volume spikes for 2 weeks, then normalises. NPS dips 2–5 points for 1 quarter, then recovers.</p>
</blockquote>

<hr />

<h1 id="13-pricing-experiments">13 Pricing Experiments</h1>

<p>How to test pricing changes without betting the company on a guess.</p>

<h2 id="ab-testing-pricing-the-rules">A/B Testing Pricing: The Rules</h2>

<table>
  <thead>
    <tr>
      <th>Rule</th>
      <th>Why</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Never show different prices to the same segment simultaneously</strong></td>
      <td>If Customer A tells Customer B they pay different prices for the same product, you destroy trust. Regulators in some jurisdictions consider this discriminatory pricing.</td>
    </tr>
    <tr>
      <td><strong>Use cohort-based tests, not user-level A/B tests</strong></td>
      <td>Test new pricing on a new cohort (all signups in April get Price B). Compare to the previous cohort (all signups in March had Price A).</td>
    </tr>
    <tr>
      <td><strong>Test for 60–90 days minimum</strong></td>
      <td>Pricing impacts show up in churn at 30–60 days, not at conversion. A 7-day test tells you nothing useful.</td>
    </tr>
    <tr>
      <td><strong>Measure LTV, not just conversion</strong></td>
      <td>Price A may convert better but churn faster. Price B may convert worse but retain longer. You need the full picture.</td>
    </tr>
  </tbody>
</table>

<h2 id="what-to-measure-in-a-pricing-experiment">What to Measure in a Pricing Experiment</h2>

<table>
  <thead>
    <tr>
      <th>Metric</th>
      <th>Timeframe</th>
      <th>What it tells you</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Conversion Rate</strong></td>
      <td>Immediate</td>
      <td>Is the price deterring signups?</td>
    </tr>
    <tr>
      <td><strong>Average Contract Value (ACV)</strong></td>
      <td>At close</td>
      <td>Are customers choosing higher or lower tiers?</td>
    </tr>
    <tr>
      <td><strong>Time to Close</strong></td>
      <td>First 30 days</td>
      <td>Is the price creating more friction in the sales cycle?</td>
    </tr>
    <tr>
      <td><strong>30-Day Churn</strong></td>
      <td>30 days post-conversion</td>
      <td>Early signal of price-value mismatch</td>
    </tr>
    <tr>
      <td><strong>90-Day Churn</strong></td>
      <td>90 days post-conversion</td>
      <td>True retention signal. The most important metric.</td>
    </tr>
    <tr>
      <td><strong>NRR (Net Revenue Retention)</strong></td>
      <td>6–12 months</td>
      <td>The ultimate test. Does the new pricing generate more or less revenue from each cohort over time?</td>
    </tr>
    <tr>
      <td><strong>LTV</strong></td>
      <td>12+ months</td>
      <td>Lifetime revenue per customer. The north star.</td>
    </tr>
  </tbody>
</table>

<h2 id="experiment-design-worked-example">Experiment Design: Worked Example</h2>

<hr />

<p><strong>Experiment: Testing a 20% price increase on Pro tier</strong></p>

<p><strong>Hypothesis:</strong> Increasing Pro tier from $49/mo to $59/mo will reduce conversion by &lt;10% but increase ACV by 20%, resulting in net positive revenue impact.</p>

<p><strong>Control (Cohort A):</strong> All signups in March — see $49/mo Pro pricing.<br />
<strong>Test (Cohort B):</strong> All signups in April — see $59/mo Pro pricing.</p>

<p><strong>Sample size:</strong> Need 200+ signups per cohort for statistical significance on conversion.</p>

<p><strong>Measurement window:</strong> 90 days from start of each cohort.</p>

<p><strong>Success criteria:</strong><br />
• Conversion drop &lt; 10% (from 5.0% to no less than 4.5%)<br />
• 90-day churn no more than 1.5% higher<br />
• Revenue per cohort (ACV × conversions × retention) is higher for Cohort B</p>

<p><strong>Decision:</strong> If all criteria met, roll $59 pricing to all new customers. If conversion drops &gt;10% but retention is identical, try $54 as a middle ground.</p>

<hr />

<hr />

<h1 id="14-discount-strategy">14 Discount Strategy</h1>

<p>Discounts are the most abused tool in SaaS sales. Used well, they accelerate deals and lock in long-term revenue. Used poorly, they destroy pricing integrity and train buyers to always ask for less.</p>

<h2 id="when-to-discount">When to Discount</h2>

<table>
  <thead>
    <tr>
      <th>Scenario</th>
      <th>Discount Type</th>
      <th>Typical Range</th>
      <th>Why It’s Okay</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Annual prepay</strong></td>
      <td>Monthly → Annual</td>
      <td><strong>15–20% off</strong></td>
      <td>You get cash upfront + lower churn. The discount pays for itself.</td>
    </tr>
    <tr>
      <td><strong>Multi-year commit</strong></td>
      <td>1-year → 2-year or 3-year</td>
      <td><strong>20–30% off</strong></td>
      <td>Locked-in revenue. Reduces churn risk to near zero for that period.</td>
    </tr>
    <tr>
      <td><strong>Strategic logo</strong></td>
      <td>Below-standard pricing for a marquee customer</td>
      <td><strong>Up to 40% off</strong></td>
      <td>The logo is worth it for marketing, case studies, and social proof. But only for genuinely strategic accounts.</td>
    </tr>
    <tr>
      <td><strong>Volume commitment</strong></td>
      <td>Higher seat count or usage volume</td>
      <td><strong>10–25% off</strong></td>
      <td>Higher volume = lower cost to serve per unit. Pass some savings through.</td>
    </tr>
  </tbody>
</table>

<h2 id="when-to-never-discount">When to NEVER Discount</h2>

<table>
  <thead>
    <tr>
      <th>Scenario</th>
      <th>Why It’s Destructive</th>
      <th>What to Do Instead</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>**To close a deal faster</strong>**</td>
      <td>Trains the buyer that “if I wait, I get a discount.” Every future deal starts with “what discount can I get?”</td>
      <td>Add value instead. Include extra onboarding, a premium support tier, or an extended pilot — same price, more value.</td>
    </tr>
    <tr>
      <td><strong>**To match a competitor</strong>**</td>
      <td>You’ve now established that your product is worth no more than the competitor’s. You’ve erased your differentiation.</td>
      <td>Compete on value, not price. Show the ROI delta. If your product saves them $200K/yr and theirs saves $100K, your higher price is justified.</td>
    </tr>
    <tr>
      <td><strong>**End-of-quarter panic</strong>**</td>
      <td>The buyer knows your quarter ends. They wait until the last week. You cave. Now every deal closes in the last week of the quarter at a discount.</td>
      <td>Build pipeline discipline. If a deal needs a discount to close this quarter, it probably shouldn’t close this quarter.</td>
    </tr>
    <tr>
      <td><strong>**To retain a churning customer</strong>**</td>
      <td>If the customer is leaving because of price, discounting only delays the inevitable. They’ll churn anyway. You’ve just reduced revenue in the meantime.</td>
      <td>Understand the real reason for churn. If it’s product fit, no discount helps. If it’s genuine budget, offer a downgrade path instead.</td>
    </tr>
  </tbody>
</table>

<h2 id="discount-authority-matrix">Discount Authority Matrix</h2>

<table>
  <thead>
    <tr>
      <th>Discount Level</th>
      <th>Who Can Approve</th>
      <th>Required Justification</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>**0–10%</strong>**</td>
      <td>AE (Account Executive)</td>
      <td>Annual commitment or 50+ seat deal</td>
    </tr>
    <tr>
      <td><strong>**11–20%</strong>**</td>
      <td>Sales Manager</td>
      <td>Multi-year commitment or 200+ seat deal</td>
    </tr>
    <tr>
      <td><strong>**21–30%</strong>**</td>
      <td>VP Sales</td>
      <td>Strategic logo with case study commitment</td>
    </tr>
    <tr>
      <td><strong>**31–40%</strong>**</td>
      <td>CEO</td>
      <td>Exceptional strategic value (top-10 logo, platform partnership)</td>
    </tr>
    <tr>
      <td><strong>**40%+</strong>**</td>
      <td>Never</td>
      <td>At this level you’re paying the customer to use your product. Walk away.</td>
    </tr>
  </tbody>
</table>

<h2 id="the-trade-for-trade-framework">The Trade-for-Trade Framework</h2>

<p>Never give a discount without getting something in return. Every concession should be a trade.</p>

<hr />

<p><strong>Trade-for-Trade Examples</strong></p>

<p>“I can do <strong>15% off</strong> if you sign a <strong>2-year term</strong> instead of 1-year.”</p>

<p>“I can do <strong>10% off</strong> if you commit to <strong>100 seats</strong> instead of 50.”</p>

<p>“I can do <strong>20% off</strong> if you agree to a <strong>published case study</strong> within 6 months.”</p>

<p>“I can waive the <strong>onboarding fee</strong> if you pay <strong>annually upfront</strong>.”</p>

<p>“I can match that price if you <strong>sign by Friday</strong> and remove the <strong>legal redlines</strong>.”</p>

<p>The psychology: when you give something, ask for something. It signals that your pricing has integrity. The buyer respects you more, not less.</p>

<hr />

<blockquote>
  <p><strong>Insight:</strong> The best sales teams have a discount rate under 8% of list price on average. The worst have 25%+. The difference is not generosity — it’s discipline, value selling, and a clear discount policy that everyone follows.</p>
</blockquote>

<hr />

<h1 id="15-the-pricing-committee">15 The Pricing Committee</h1>

<p>Pricing is too important to be owned by one person and too cross-functional to be owned by one team. You need a Pricing Committee.</p>

<h2 id="who-sits-on-the-pricing-committee">Who Sits on the Pricing Committee</h2>

<table>
  <thead>
    <tr>
      <th>Role</th>
      <th>Why They’re There</th>
      <th>What They Bring</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>CEO / Founder</strong></td>
      <td>Pricing is a strategic decision that affects positioning, brand, and investor narrative</td>
      <td>Long-term vision. Willingness to make bold moves.</td>
    </tr>
    <tr>
      <td><strong>VP Sales / CRO</strong></td>
      <td>Sales deals with pricing objections daily. They know what customers say and what competitors charge.</td>
      <td>Win/loss data. Discount patterns. Competitive intelligence.</td>
    </tr>
    <tr>
      <td><strong>VP Product</strong></td>
      <td>Product owns the features that define tiers and the value metric.</td>
      <td>Feature roadmap. Usage data. Product-market fit signals.</td>
    </tr>
    <tr>
      <td><strong>VP Finance / CFO</strong></td>
      <td>Finance models the revenue impact of pricing changes and owns the P&amp;L.</td>
      <td>Financial models. Scenario analysis. Margin requirements.</td>
    </tr>
    <tr>
      <td><strong>VP Marketing</strong> (optional)</td>
      <td>Marketing owns the pricing page, positioning, and competitive messaging.</td>
      <td>Competitive landscape. Messaging. Conversion data from pricing page.</td>
    </tr>
  </tbody>
</table>

<h2 id="how-often-to-review-pricing">How Often to Review Pricing</h2>

<table>
  <thead>
    <tr>
      <th>Frequency</th>
      <th>What to Review</th>
      <th>Typical Outcome</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Quarterly</strong></td>
      <td>Discount trends, win/loss by price, churn by tier, competitive moves, expansion revenue trends</td>
      <td>Minor adjustments: discount policy tweaks, tier limit changes, add-on pricing</td>
    </tr>
    <tr>
      <td><strong>Bi-annually</strong></td>
      <td>Full pricing audit (8-step framework from Section 10). WTP research if available.</td>
      <td>Moderate changes: price increases, tier restructuring, new add-ons</td>
    </tr>
    <tr>
      <td><strong>Annually</strong></td>
      <td>Strategic pricing review. Does our model still fit our market? Are we in the right model (per-seat vs usage vs hybrid)?</td>
      <td>Major changes: model shift, new value metric, pricing page redesign</td>
    </tr>
  </tbody>
</table>

<h2 id="the-quarterly-pricing-review-what-to-bring">The Quarterly Pricing Review: What to Bring</h2>

<hr />

<p><strong>Pricing Committee Quarterly Agenda</strong></p>

<p><strong>1. Revenue Dashboard</strong> (Finance)<br />
• ARR, ARPU, NRR by tier<br />
• Revenue per customer histogram<br />
• Expansion and contraction revenue trends</p>

<p><strong>2. Win/Loss Analysis</strong> (Sales)<br />
• Win rate by tier<br />
• Average discount given (by tier, by AE, by deal size)<br />
• Top 5 losses where price was the stated reason<br />
• Competitive pricing intelligence updates</p>

<p><strong>3. Product Usage Data</strong> (Product)<br />
• Feature usage by tier (are Pro features being used? Are Enterprise features worth the price?)<br />
• Usage patterns near tier limits (are customers hitting ceilings?)<br />
• Upcoming features that could justify price changes</p>

<p><strong>4. Churn &amp; Retention</strong> (Finance / CS)<br />
• Churn by tier and by price point<br />
• Downgrade patterns (who’s moving to lower tiers and why)<br />
• NPS by price tier</p>

<p><strong>5. Recommendations</strong> (All)<br />
• Proposed changes with financial models<br />
• Experiment designs for testing changes<br />
• Timeline for implementation</p>

<hr />

<blockquote>
  <p><strong>The discipline:</strong> Companies that review pricing quarterly grow revenue 30% faster than companies that set-and-forget. The review doesn’t have to result in changes every quarter — often the data confirms your current pricing is right. But when it’s wrong, you catch it 3 months earlier than everyone else.</p>
</blockquote>

<hr />

<p><strong>The Pricing Strategy Checklist</strong></p>

<p>Know your value metric       what scales with value received<br />
Measure willingness to pay    Van Westendorp or Gabor-Granger, not guessing<br />
Pick the right model         flat, seat, usage, tiered, hybrid, or freemium<br />
Design tiers for upgrade     middle tier = best value, clear path up<br />
Audit quarterly            revenue distribution, churn by tier, expansion gaps<br />
Test before you ship        cohort-based experiments, 90-day measurement window<br />
Raise prices annually       grandfather existing, test on new, communicate value<br />
Never discount without a trade   every concession earns something back</p>

<p>Pricing is not a launch decision. It is a continuous process. Revisit it every quarter.</p>]]></content><author><name>Sourav Padhi</name></author><category term="playbooks" /><summary type="html"><![CDATA[SaaS Pricing Strategy Workshop]]></summary></entry><entry><title type="html">Competitive Battle Cards</title><link href="https://sourav.sh/competitive-battle-cards.html" rel="alternate" type="text/html" title="Competitive Battle Cards" /><published>2026-04-07T00:00:00+00:00</published><updated>2026-04-07T00:00:00+00:00</updated><id>https://sourav.sh/competitive-battle-cards</id><content type="html" xml:base="https://sourav.sh/competitive-battle-cards.html"><![CDATA[<p>Competitive Battle Cards</p>

<p>the playbook · framework · templates · worked examples</p>

<p><code class="language-plaintext highlighter-rouge">Competitive Intel</code> 
<code class="language-plaintext highlighter-rouge">Sales Enablement</code> 
<code class="language-plaintext highlighter-rouge">Account Executives</code> 
<code class="language-plaintext highlighter-rouge">Product Marketing</code> 
<code class="language-plaintext highlighter-rouge">Deal Strategy</code></p>

<p>Every deal you lose to a competitor is a deal where the AE didn’t have the right information at the right moment. The buyer asked “why not go with [Competitor X]?” and your rep fumbled. Or worse — the buyer never mentioned the competitor, and your rep never asked, and the deal died silently to an alternative you didn’t even know was in play.</p>

<p>Battle cards fix this. They’re one-page tactical cheat sheets that give AEs exactly what they need during a live deal: what the competitor does well, where they’re weak, what questions to plant with the buyer, and how to respond when the buyer pushes back with competitor claims. Not a strategy deck. Not a market analysis. A weapon.</p>

<p><strong>Who this is for:</strong> MBA interns building competitive intelligence for the first time, product marketing teams creating enablement materials, AEs who want to win more competitive deals, and founders who need to arm their sales team against specific competitors.</p>

<hr />

<p>Part I</p>

<p>Why Battle Cards</p>

<p>Before building anything, you need to understand what battle cards are, what they’re not, and where the intelligence comes from. Most competitive analysis is useless because it’s written for the wrong audience. Battle cards are written for one person: the AE in the middle of a deal.</p>

<h1 id="01-what-battle-cards-are">01 What Battle Cards Are</h1>

<p>A battle card is a <strong>one-page competitive intelligence sheet</strong> designed to be used during live sales conversations. It answers a single question: “How do I win against this specific competitor?”</p>

<p>Battle cards are not:</p>

<ul>
  <li><strong>Market landscape documents.</strong> Those are for executives and board decks. AEs don’t need a 2x2 matrix — they need a comeback for “but Competitor X has a free tier.”</li>
  <li><strong>Feature comparison spreadsheets.</strong> A 200-row feature checklist helps nobody in a live conversation. The buyer doesn’t care about 190 of those features.</li>
  <li><strong>Strategy memos.</strong> Your competitive strategy might be “move upmarket and ignore them.” The battle card is what the AE says when the buyer brings them up anyway.</li>
</ul>

<h2 id="when-to-use-battle-cards">When to Use Battle Cards</h2>

<table>
  <thead>
    <tr>
      <th>Sales Stage</th>
      <th>How the Card Helps</th>
      <th>What You Pull From It</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>**Discovery</strong>**</td>
      <td>Surface which competitors are in play without asking directly</td>
      <td>Landmine questions, indirect probing techniques</td>
    </tr>
    <tr>
      <td><strong>**Demo</strong>**</td>
      <td>Position differentiation before the buyer brings up competitors</td>
      <td>“Where They Lose” section, unique capabilities</td>
    </tr>
    <tr>
      <td><strong>**Negotiation</strong>**</td>
      <td>Respond to competitor pricing leverage and last-minute objections</td>
      <td>Objection responses, trap avoidance, win stories</td>
    </tr>
    <tr>
      <td><strong>**Proposal</strong>**</td>
      <td>Frame your solution against alternatives in written materials</td>
      <td>Positioning language, proof points, case studies</td>
    </tr>
    <tr>
      <td><strong>**At Risk</strong>**</td>
      <td>When a deal is slipping to a competitor, pull out the big guns</td>
      <td>Win stories from similar situations, executive talking points</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p><strong>Insight:</strong> The best battle cards are brutally honest. If your competitor is better at something, say so. AEs who get caught lying about competitor capabilities lose all credibility. The card should say: “They’re better at X. Here’s why it doesn’t matter for this buyer.”</p>
</blockquote>

<hr />

<h1 id="02-how-to-build-one--research-sources">02 How to Build One — Research Sources</h1>

<p>Great battle cards are built on intelligence, not opinion. The best competitive researchers use a systematic set of sources. Here’s where to look, in order of value:</p>

<table>
  <thead>
    <tr>
      <th>Source</th>
      <th>What You’ll Find</th>
      <th>How to Access</th>
      <th>Reliability</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>G2 / Capterra Reviews</strong></td>
      <td>Real customer complaints and praise. What users actually like and hate about the competitor.</td>
      <td>Free to browse. Filter by 1-3 star reviews for weaknesses, 4-5 star for strengths.</td>
      <td><strong>High</strong></td>
    </tr>
    <tr>
      <td><strong>Their Customers on Reddit / Twitter</strong></td>
      <td>Unfiltered complaints. “We switched from X because…” is gold.</td>
      <td>Search <code class="language-plaintext highlighter-rouge">reddit.com "[competitor] sucks"</code> or <code class="language-plaintext highlighter-rouge">"switched from [competitor]"</code></td>
      <td><strong>High</strong></td>
    </tr>
    <tr>
      <td><strong>Competitor Website &amp; Pricing</strong></td>
      <td>How they position themselves. Who their ICP is. Pricing model and tiers.</td>
      <td>Their website, pricing page, and “about” section. Archive.org for historical changes.</td>
      <td><strong>High</strong></td>
    </tr>
    <tr>
      <td><strong>Job Postings</strong></td>
      <td>Reveals their roadmap. Hiring a “Head of Enterprise” means they’re moving upmarket. Hiring ML engineers means an AI feature is coming.</td>
      <td>Their careers page. LinkedIn job posts. Greenhouse/Lever boards.</td>
      <td><strong>Medium-High</strong></td>
    </tr>
    <tr>
      <td><strong>Glassdoor / Blind</strong></td>
      <td>Internal culture, churn, management problems, product issues employees complain about.</td>
      <td>Glassdoor reviews. Filter for engineering and sales roles. Look for patterns, not outliers.</td>
      <td><strong>Medium</strong></td>
    </tr>
    <tr>
      <td><strong>Your Own Lost Deals</strong></td>
      <td>Why real buyers chose the competitor over you. The most valuable intelligence you have.</td>
      <td>CRM closed-lost notes. Win/loss interview recordings. AE debrief sessions.</td>
      <td><strong>Very High</strong></td>
    </tr>
    <tr>
      <td><strong>Analyst Reports</strong></td>
      <td>Market positioning, vendor rankings, capability assessments.</td>
      <td>Gartner, Forrester, IDC. Expensive but often available through your company’s subscriptions.</td>
      <td><strong>Medium</strong> (often lagging)</td>
    </tr>
    <tr>
      <td><strong>Patent Filings</strong></td>
      <td>Future product direction. What they’re investing R&amp;D in.</td>
      <td>Google Patents. Search by company name.</td>
      <td><strong>Speculative</strong></td>
    </tr>
    <tr>
      <td><strong>Conference Talks &amp; Podcasts</strong></td>
      <td>How their executives think about the market. Strategic direction. Admissions of weakness.</td>
      <td>YouTube, podcast apps. Search for their CEO/CTO name.</td>
      <td><strong>Medium-High</strong></td>
    </tr>
    <tr>
      <td><strong>Their Sales Team</strong></td>
      <td>What they say about you. How they position against you. Their objection handles.</td>
      <td>Run a “mystery shop” — have someone evaluate them as a prospect. Or debrief buyers who saw both demos.</td>
      <td><strong>High</strong></td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p><strong>The 80/20 rule for research:</strong> G2 reviews + your own lost deals + their website = 80% of what you need. Don’t spend two weeks building the perfect dossier. Spend 4-6 hours per competitor, then iterate based on what AEs actually ask about in live deals.</p>
</blockquote>

<h2 id="research-process-step-by-step">Research Process: Step by Step</h2>

<ol>
  <li><strong>Start with your CRM.</strong> Pull every closed-lost deal where this competitor was mentioned. Read the notes. Talk to the AEs who lost. This is the highest-signal data you have.</li>
  <li><strong>Read 30-50 G2 reviews.</strong> Categorize complaints into themes. “Slow support” mentioned 12 times is a real weakness. “Ugly UI” mentioned twice is an outlier.</li>
  <li><strong>Screenshot their pricing page.</strong> Most competitors change pricing quarterly. You want a timestamped record.</li>
  <li><strong>Sign up for their product.</strong> Use a personal email. Go through their onboarding. Note what’s good and what’s painful. Take screenshots.</li>
  <li><strong>Read their case studies.</strong> Who are their best customers? What outcomes do they highlight? These are their strongest talking points — you need to be prepared for them.</li>
  <li><strong>Check job postings.</strong> What are they hiring for? 10 new enterprise AE roles = they’re going upmarket. 5 data scientist roles = AI product incoming.</li>
  <li><strong>Draft the card.</strong> Use the template in Section 3. Get feedback from 2-3 AEs who’ve competed against them.</li>
</ol>

<hr />

<p>Part II</p>

<p>The Framework</p>

<p>The exact template every battle card should follow, plus three complete worked examples you can adapt to your competitors. The template is opinionated by design — every section exists because AEs asked for it in live deals.</p>

<h1 id="03-the-battle-card-template">03 The Battle Card Template</h1>

<p>Every battle card follows this exact structure. Ten sections. One page (front and back if printed, single scroll if digital). Nothing extra, nothing missing.</p>

<table>
  <thead>
    <tr>
      <th>#</th>
      <th>Section</th>
      <th>Purpose</th>
      <th>Length</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>1</strong></td>
      <td><strong>Competitor Overview</strong></td>
      <td>One sentence. What they do. Founded when, HQ where, funding, employee count.</td>
      <td>1-2 sentences</td>
    </tr>
    <tr>
      <td><strong>2</strong></td>
      <td><strong>Their Positioning</strong></td>
      <td>How they describe themselves. Pull directly from their website/pitch.</td>
      <td>1-2 sentences</td>
    </tr>
    <tr>
      <td><strong>3</strong></td>
      <td><strong>Their ICP</strong></td>
      <td>Who they sell to. Company size, industry, buyer persona, typical deal size.</td>
      <td>3-4 bullets</td>
    </tr>
    <tr>
      <td><strong>4</strong></td>
      <td><strong>Their Pricing Model</strong></td>
      <td>How they charge. Per seat, usage-based, flat fee. Known price points if available.</td>
      <td>3-5 bullets</td>
    </tr>
    <tr>
      <td><strong>5</strong></td>
      <td><strong>Where They Win</strong></td>
      <td>Be honest. 3-5 genuine strengths. What they’re actually good at.</td>
      <td>3-5 bullets with detail</td>
    </tr>
    <tr>
      <td><strong>6</strong></td>
      <td><strong>Where They Lose</strong></td>
      <td>3-5 genuine weaknesses with proof (G2 quotes, customer complaints, product gaps).</td>
      <td>3-5 bullets with evidence</td>
    </tr>
    <tr>
      <td><strong>7</strong></td>
      <td><strong>Landmine Questions</strong></td>
      <td>Questions to plant with the buyer that expose competitor weaknesses naturally.</td>
      <td>4-6 questions</td>
    </tr>
    <tr>
      <td><strong>8</strong></td>
      <td><strong>Objection Responses</strong></td>
      <td>When the buyer says “but Competitor X does Y” — your response.</td>
      <td>3-5 objection/response pairs</td>
    </tr>
    <tr>
      <td><strong>9</strong></td>
      <td><strong>Win Stories</strong></td>
      <td>2-3 specific deals won against this competitor. Company name, situation, why we won.</td>
      <td>2-3 short stories</td>
    </tr>
    <tr>
      <td><strong>10</strong></td>
      <td><strong>Trap Avoidance</strong></td>
      <td>What the competitor will say about YOU, and how to preempt or respond.</td>
      <td>3-4 attack/response pairs</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p><strong>The honesty rule:</strong> Section 5 (Where They Win) is the most important section on the card. If your AEs don’t trust the card, they won’t use it. Being honest about competitor strengths builds credibility for everything else on the page. A card that says “they have no strengths” is a card that gets ignored.</p>
</blockquote>

<h2 id="section-by-section-guidance">Section-by-Section Guidance</h2>

<h3 id="section-1-competitor-overview">Section 1: Competitor Overview</h3>

<p>One sentence maximum. The AE needs context, not a Wikipedia article.</p>

<hr />

<p>GOOD “DataCorp is a legacy on-prem data warehouse vendor (founded 2003, ~2,400 employees, $180M ARR) that’s been bolting on a cloud offering since 2021.”</p>

<p>BAD “DataCorp is a leading provider of enterprise data management solutions headquartered in Dallas, TX. They serve over 500 enterprise customers across industries including financial services, healthcare, and manufacturing…”</p>

<hr />

<h3 id="section-5-where-they-win">Section 5: Where They Win</h3>

<p>This section must be honest. If you lie here, AEs will find out in live deals and stop trusting the card.</p>

<hr />

<p>GOOD<br />
• <strong>Deep regulatory compliance.</strong> They have FedRAMP High, SOC 2 Type II, and HIPAA BAA out of the box. We only have SOC 2 Type II today.<br />
• <strong>Established enterprise relationships.</strong> Their sales team has existing MSAs with most F500 procurement departments. Buying from them is easier politically.<br />
• <strong>On-prem deployment option.</strong> For air-gapped environments (defense, some financial), they’re the only option. We’re cloud-only.</p>

<p>BAD<br />
• “They have good marketing but not a great product” (vague, dismissive)<br />
• “Some customers like their UI” (damning with faint praise — AEs see through this)</p>

<hr />

<h3 id="section-7-landmine-questions">Section 7: Landmine Questions</h3>

<p>Landmine questions are questions you coach the buyer to ask <em>every vendor</em> in the evaluation — questions that your product answers well and the competitor answers poorly. The buyer doesn’t know they’re landmines. They just think they’re doing thorough due diligence.</p>

<blockquote>
  <p><strong>The psychology:</strong> Buyers trust their own conclusions more than anything a sales rep tells them. If YOU say “Competitor X has bad support,” the buyer is skeptical. If the buyer asks Competitor X about support response times and gets a vague answer, the buyer concludes on their own that support is weak. Same conclusion, 10x more persuasive.</p>
</blockquote>

<h3 id="section-10-trap-avoidance">Section 10: Trap Avoidance</h3>

<p>Your competitor has their own battle card about <em>you</em>. They’re planting their own landmines. This section prepares AEs for the attacks that are coming.</p>

<hr />

<h1 id="04-three-worked-examples">04 Three Worked Examples</h1>

<p>Below are three complete, realistic battle cards. They’re fictional companies, but the patterns are real. Every B2B SaaS company faces these three archetypes: the legacy incumbent, the direct competitor, and the “build it ourselves” option.</p>

<h2 id="battle-card-a-us-vs-legacy-incumbent">Battle Card A: Us vs Legacy Incumbent</h2>

<p>Scenario: You sell a modern cloud-native data platform. The incumbent is a 20-year-old on-prem vendor trying to add a cloud layer.</p>

<table>
  <thead>
    <tr>
      <th>BATTLE CARD: Acme Data Cloud vs DataCorp Legacy</th>
      <th> </th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>1. Overview</strong></td>
      <td>DataCorp is a legacy on-prem data warehouse vendor (est. 2003, ~2,400 employees, acquired by PE in 2019) bolting a cloud offering onto their existing architecture since 2021.</td>
    </tr>
    <tr>
      <td><strong>2. Their Positioning</strong></td>
      <td>“The enterprise data platform trusted by Fortune 500 companies for over 20 years.” They lean heavily on longevity, compliance certifications, and existing customer relationships.</td>
    </tr>
    <tr>
      <td><strong>3. Their ICP</strong></td>
      <td>• Fortune 500 and large enterprises (5,000+ employees)   • Regulated industries: financial services, healthcare, government   • IT-led buying (CIO/VP Infra), not data team-led   • Typical deal: $200K-$2M ACV, 2-3 year contracts</td>
    </tr>
    <tr>
      <td><strong>4. Pricing</strong></td>
      <td>• Named-user licensing: $800-$1,500/user/month   • Infrastructure fees on top (compute + storage separate)   • 3-year contracts with annual upfront payment   • Professional services: $250-$400/hr, typically $100K+ for implementation   • “Cloud add-on” priced at 40% premium over on-prem license</td>
    </tr>
    <tr>
      <td><strong>5. Where They Win</strong></td>
      <td><strong>Be honest about these:</strong>   • <strong>Regulatory compliance.</strong> FedRAMP High, ITAR, SOC 2 Type II, HIPAA BAA, GxP validated. We have SOC 2 only today.   • <strong>Existing procurement relationships.</strong> Most F500 companies have active MSAs with DataCorp. Buying from them is politically easy. Buying from us requires a new vendor approval process (4-12 weeks).   • <strong>On-prem / air-gapped deployment.</strong> For defense contractors and some financial institutions that require on-prem, they’re the only real option.   • <strong>20 years of connectors.</strong> They have 400+ pre-built data connectors. We have 85. For obscure legacy systems (AS/400, Teradata, mainframes), they have coverage we don’t.   • <strong>Enterprise support.</strong> Dedicated TAMs, 24/7 phone support, on-site engineers. Their support is slow but deep.</td>
    </tr>
    <tr>
      <td><strong>6. Where They Lose</strong></td>
      <td><strong>With evidence:</strong>   • <strong>Performance.</strong> Their “cloud” product is a VM-hosted version of the on-prem software. Same architecture, same bottlenecks. G2 review: <em>“Queries that take 2 seconds in Snowflake take 45 seconds in DataCorp Cloud.”</em> (March 2026)   • <strong>Total cost of ownership.</strong> License + infra + pro services + ongoing maintenance = 3-5x our fully-loaded cost. They look cheap per-seat but the hidden costs are enormous.   • <strong>Time to value.</strong> Average implementation: 4-6 months with consultants. Our average: 2 weeks self-serve. G2 review: <em>“We spent $400K on implementation before running our first query.”</em>   • <strong>Modern data stack integration.</strong> No native dbt support. No Fivetran partnership. No reverse ETL. Their “integrations” are JDBC connectors from 2015.   • <strong>Talent.</strong> Nobody under 35 knows how to use DataCorp. New hires from top programs know SQL, Python, dbt, Snowflake. You’ll need to train people on proprietary tooling.</td>
    </tr>
    <tr>
      <td><strong>7. Landmine Questions</strong></td>
      <td>Plant these with the buyer to ask every vendor:      • <em>“Can you show me a query running on 1TB of data in your cloud product — live, not pre-cached?”</em> (Their cloud product is slow and they’ll try to demo pre-computed results.)   • <em>“What’s the typical implementation timeline for a team our size, including all professional services?”</em> (Forces them to reveal the 4-6 month reality.)   • <em>“Do you support dbt natively? Can our analytics engineers use the tools they already know?”</em> (Answer is no.)   • <em>“What does the total cost look like in Year 2 and Year 3, including infrastructure, maintenance, and support renewals?”</em> (The sticker shock happens in Year 2 when infrastructure fees reset.)   • <em>“Can your junior analysts self-serve, or do they need to go through the data engineering team for every query?”</em> (DataCorp requires SQL expertise + proprietary tooling knowledge.)</td>
    </tr>
    <tr>
      <td><strong>8. Objection Responses</strong></td>
      <td><strong>Buyer:</strong> <em>“DataCorp has been around 20 years. You’re a 4-year-old startup. How do I know you’ll be around?”</em>   <strong>Response:</strong> “Fair question. Two things: first, we have [X] customers, $[Y]M in ARR, and just raised our Series [Z] — we’re well-capitalized. Second, DataCorp was acquired by PE in 2019 and has had 30% engineering turnover since. The question isn’t whether we’ll be around — it’s whether DataCorp’s cloud product will still be getting investment in 3 years, or if the PE firm will decide the ROI isn’t there.”      <strong>Buyer:</strong> <em>“DataCorp is already in our stack. Switching costs are huge.”</em>   <strong>Response:</strong> “Totally understand. That’s actually why most of our enterprise customers run us in parallel first. We don’t ask you to rip out DataCorp. We plug in alongside, you migrate workloads one at a time, and you only decommission DataCorp when you’re ready. Most teams migrate 80% of workloads in 6-8 weeks because it’s genuinely faster.”      <strong>Buyer:</strong> <em>“They have FedRAMP. You don’t.”</em>   <strong>Response:</strong> “You’re right. If FedRAMP High is a hard requirement today, DataCorp is the better choice. We’re in the FedRAMP process now (expected [date]). If your timeline allows, we’re happy to share our compliance roadmap. If not, I’d rather be honest than waste your time.”</td>
    </tr>
    <tr>
      <td><strong>9. Win Stories</strong></td>
      <td><strong>Win: FinanceHub (Series D fintech, 200 employees)</strong>   Evaluated DataCorp because their compliance team insisted on a “proven enterprise vendor.” After a 3-month POC with both platforms, FinanceHub chose us. Deciding factor: DataCorp quoted $1.2M Year 1 total cost (license + infra + implementation). We were $180K. And our POC was live in 5 days vs. DataCorp’s 8-week implementation timeline. The CFO killed the DataCorp deal.      <strong>Win: RetailMax (public company, 4,000 employees)</strong>   DataCorp incumbent for 8 years. Switched because their data team was spending 60% of time on DataCorp maintenance and the new CDO wanted analysts writing SQL, not filing tickets. Migration took 10 weeks. Annual savings: $800K.</td>
    </tr>
    <tr>
      <td><strong>10. Trap Avoidance</strong></td>
      <td><strong>They’ll say:</strong> <em>“Acme is a startup. They could go under or get acquired. You’ll be stuck migrating again.”</em>   <strong>Preempt:</strong> In your pitch, proactively share funding, customer count, ARR trajectory, and your data portability story. “Your data is in open formats — Parquet, Iceberg. You’re never locked in.”      <strong>They’ll say:</strong> <em>“Acme doesn’t have compliance certifications you need.”</em>   <strong>Preempt:</strong> Know exactly which certs you have and which you don’t. Share your compliance roadmap with dates. Never bluff on compliance.      <strong>They’ll say:</strong> <em>“Acme is fine for small datasets but can’t handle enterprise scale.”</em>   <strong>Preempt:</strong> Have a reference customer at similar scale ready. Offer a POC on their actual data. Let the performance speak for itself.</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="battle-card-b-us-vs-direct-competitor">Battle Card B: Us vs Direct Competitor</h2>

<p>Scenario: You both sell cloud-native analytics platforms. Similar product, similar stage, different positioning. They emphasize self-serve BI; you emphasize the data platform layer.</p>

<table>
  <thead>
    <tr>
      <th>BATTLE CARD: Acme Data Cloud vs CloudMetrics</th>
      <th> </th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>1. Overview</strong></td>
      <td>CloudMetrics is a VC-backed cloud analytics platform (est. 2020, Series C, ~350 employees, ~$45M ARR) focused on self-serve BI for product and growth teams.</td>
    </tr>
    <tr>
      <td><strong>2. Their Positioning</strong></td>
      <td>“Self-serve analytics for modern product teams. From question to insight in seconds, no SQL required.” They position as the “easy” option — designed for non-technical users.</td>
    </tr>
    <tr>
      <td><strong>3. Their ICP</strong></td>
      <td>• Mid-market SaaS companies (200-2,000 employees)   • Product-led growth companies   • Buyer: VP Product or Head of Growth (not data team)   • Typical deal: $30K-$120K ACV</td>
    </tr>
    <tr>
      <td><strong>4. Pricing</strong></td>
      <td>• Per-seat: $45/user/month (Viewer), $120/user/month (Explorer), $250/user/month (Admin)   • Free tier: 3 users, limited data   • Volume discounts at 50+ seats   • No infrastructure costs (included in seat price)   • Annual contracts with 15% discount over monthly</td>
    </tr>
    <tr>
      <td><strong>5. Where They Win</strong></td>
      <td><strong>Be honest:</strong>   • <strong>Time to first dashboard.</strong> Their onboarding is genuinely excellent. Non-technical users can build a dashboard in 20 minutes. Our onboarding assumes SQL literacy.   • <strong>Product analytics features.</strong> Funnels, cohorts, retention charts, event tracking built natively. We can do all of this but it requires more setup.   • <strong>Design and UX.</strong> Their UI is beautiful. Clean, modern, intuitive. G2 NPS for “ease of use” is 72 vs our 58.   • <strong>Free tier.</strong> Excellent PLG motion. Small teams can start for free and expand. Our cheapest plan is $200/month.   • <strong>Product team adoption.</strong> PMs love them. The tool is designed for how product teams think, not how data teams think.</td>
    </tr>
    <tr>
      <td><strong>6. Where They Lose</strong></td>
      <td><strong>With evidence:</strong>   • <strong>Data modeling layer.</strong> No semantic layer, no dbt integration, no data governance. When you have 50+ dashboards, they contradict each other because there’s no single source of truth. G2 review: <em>“We had 6 different definitions of ‘active user’ across dashboards. Nobody trusted the numbers.”</em>   • <strong>Scale.</strong> Performance degrades significantly above 10M rows. Their “unlimited data” plan still chokes on real enterprise datasets. Reddit thread (Jan 2026): <em>“CloudMetrics became unusable once we passed 50M events/month.”</em>   • <strong>SQL power users.</strong> Their no-code interface is great for PMs, terrible for analysts. No custom SQL, no Python notebooks, no advanced statistical functions. The data team hates it.   • <strong>Data engineering.</strong> No ETL, no data pipelines, no reverse ETL. It’s a visualization layer only. You still need a separate data stack underneath, which means paying for two tools.   • <strong>Enterprise readiness.</strong> No SSO on plans under $100K ACV. No audit logs. No role-based access granularity. GDPR compliance is self-certified, not externally audited.</td>
    </tr>
    <tr>
      <td><strong>7. Landmine Questions</strong></td>
      <td>• <em>“How do you ensure metric consistency across 50+ dashboards? Is there a semantic layer or central metric definitions?”</em> (There isn’t.)   • <em>“Can our data engineers write custom SQL and build data models in your platform?”</em> (They can’t.)   • <em>“What happens to query performance when we’re at 100M+ rows?”</em> (It breaks down.)   • <em>“Do you support SSO on our plan size, or is that only on Enterprise?”</em> (It’s gated behind a $100K+ commitment.)   • <em>“Can you handle both our product analytics AND our financial reporting, or would we need a second BI tool for the finance team?”</em> (Finance teams need SQL; CloudMetrics is no-code only.)</td>
    </tr>
    <tr>
      <td><strong>8. Objection Responses</strong></td>
      <td><strong>Buyer:</strong> <em>“CloudMetrics is so much easier to use. Our PMs can build their own dashboards.”</em>   <strong>Response:</strong> “You’re right — their self-serve UX for simple dashboards is great. The question is what happens in month 6. You’ll have 50 dashboards with conflicting metrics, no data governance, and your data team spending all their time answering ‘which number is right?’ We’ve seen this pattern at [customer]. They switched to us after 8 months because the ‘easy’ tool created more work, not less.”      <strong>Buyer:</strong> <em>“CloudMetrics is half the price.”</em>   <strong>Response:</strong> “On seat price, yes. But CloudMetrics is a visualization layer only. You’ll still need a data warehouse, an ETL tool, and probably dbt for modeling. Add those up and the total stack cost is comparable or higher. We’re a platform — warehouse, pipelines, modeling, and visualization in one. One vendor, one bill.”      <strong>Buyer:</strong> <em>“We don’t need all that data engineering stuff. We just want dashboards.”</em>   <strong>Response:</strong> “Totally fair. If your needs are truly just product dashboards for a small team, CloudMetrics might be the right fit today. Where it gets risky is when the CFO asks for revenue reporting, or the VP Sales wants pipeline analytics. Those teams need SQL and data models. If you start with CloudMetrics and outgrow it in 6 months, you’re migrating. If you start with us, you grow into the platform.”</td>
    </tr>
    <tr>
      <td><strong>9. Win Stories</strong></td>
      <td><strong>Win: GrowthApp (Series B, 180 employees)</strong>   Was a CloudMetrics customer for 9 months. Switched because they had 80+ dashboards with inconsistent metrics. The VP Data spent 30% of her time reconciling numbers. Migrated to us in 3 weeks. Now has a governed semantic layer and the “which number is right?” problem is solved.      <strong>Win: SaaSFlow (Series C, 600 employees)</strong>   Evaluated both. Chose us because their data team (12 analysts + 4 engineers) needed SQL access, dbt integration, and the ability to build pipelines. CloudMetrics was a great fit for the product team but couldn’t serve the data team, finance, or ops. They didn’t want two tools.</td>
    </tr>
    <tr>
      <td><strong>10. Trap Avoidance</strong></td>
      <td><strong>They’ll say:</strong> <em>“Acme is a data engineering tool pretending to be BI. Your PMs won’t be able to use it.”</em>   <strong>Preempt:</strong> Always demo the self-serve dashboard builder early. Show a non-technical use case first. Prove PMs can use it before diving into data engineering features.      <strong>They’ll say:</strong> <em>“Acme is overkill for what you need. You’ll pay for features you won’t use.”</em>   <strong>Preempt:</strong> Acknowledge this head-on: “You might not need the data engineering layer today. But you’ll need it in 12 months. The question is whether you want to migrate then or build on a platform you’ll grow into.”      <strong>They’ll say:</strong> <em>“Look at our G2 ease-of-use score vs theirs.”</em>   <strong>Preempt:</strong> Don’t fight the UX battle. Redirect to outcomes: “Ease of use matters in week 1. Metric accuracy and governance matter in month 6. Ask their customers what happened after they had 50+ dashboards.”</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="battle-card-c-us-vs-diy--internal-build">Battle Card C: Us vs DIY / Internal Build</h2>

<p>Scenario: The most common “competitor” isn’t a company — it’s the prospect’s own engineering team saying “we can build this ourselves.” Or worse: doing nothing at all.</p>

<table>
  <thead>
    <tr>
      <th>BATTLE CARD: Acme Data Cloud vs “Build It Ourselves”</th>
      <th> </th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>1. Overview</strong></td>
      <td>Not a company. This is the prospect’s internal engineering team proposing to build a custom solution using open-source tools (Airflow, dbt, Spark, Superset, Metabase). Usually championed by a senior engineer or VP Eng who believes their team can do it better, cheaper, and without vendor lock-in.</td>
    </tr>
    <tr>
      <td><strong>2. Their Positioning</strong></td>
      <td>“We have smart engineers. The open-source tools are free. We’ll build exactly what we need, nothing more. No vendor lock-in, no seat licenses, total control.”</td>
    </tr>
    <tr>
      <td><strong>3. Their ICP</strong></td>
      <td>• Engineering-led orgs where the CTO has strong opinions   • Companies with 10+ data engineers who believe they have capacity   • Orgs burned by a previous vendor (bad experience = “never again”)   • Cost-conscious teams that see $200K/yr SaaS spend as avoidable</td>
    </tr>
    <tr>
      <td><strong>4. Pricing</strong></td>
      <td>• “Free” (open-source tools have no license fee)   • Actual cost: 2-4 FTE data engineers at $150-$250K/yr fully loaded = $300K-$1M/yr in people costs   • Infrastructure: AWS/GCP compute, storage, networking = $50K-$200K/yr   • Maintenance: 30-50% of ongoing engineering time spent on maintenance, not features   • Opportunity cost: those engineers aren’t building product features</td>
    </tr>
    <tr>
      <td><strong>5. Where They Win</strong></td>
      <td><strong>Be honest:</strong>   • <strong>Total customization.</strong> A custom build can be designed exactly for your use case. No features you don’t need, no compromises.   • <strong>No vendor dependency.</strong> No risk of a vendor raising prices, changing APIs, or going out of business. Everything is under your control.   • <strong>Deep integration with internal systems.</strong> Custom builds can integrate tightly with proprietary internal tools in ways no vendor product can.   • <strong>Engineering team morale.</strong> Some engineers genuinely enjoy building infrastructure. A custom build keeps them engaged and learning.</td>
    </tr>
    <tr>
      <td><strong>6. Where They Lose</strong></td>
      <td><strong>With evidence:</strong>   • <strong>It always takes 3x longer than estimated.</strong> The VP Eng says “3 months.” Reality is 9-14 months. Every internal infrastructure project in history has been underestimated. Ask them to name one that shipped on time.   • <strong>Maintenance is the killer.</strong> Building V1 is fun. Maintaining it for 3 years while Airflow releases breaking changes, dbt needs upgrading, and Spark clusters need tuning — that’s not fun. That’s 2 engineers full-time doing undifferentiated work.   • <strong>The “bus factor.”</strong> The senior engineer who built it leaves. Nobody else understands the custom orchestration layer. Now you’re recruiting for a role that has zero transferable skills.   • <strong>Opportunity cost.</strong> Every hour a data engineer spends maintaining Airflow DAGs is an hour they’re not building the data products that actually drive revenue. This is the real cost — not the AWS bill.   • <strong>It’s never done.</strong> V1 ships. Then the data team wants a semantic layer. Then the CFO wants real-time dashboards. Then security needs audit logs. Each “small addition” is another quarter of engineering time.</td>
    </tr>
    <tr>
      <td><strong>7. Landmine Questions</strong></td>
      <td>• <em>“Can you share the technical spec and timeline for the internal build? What’s the estimated engineering investment in FTE-months?”</em> (Forces them to quantify the real cost. Most teams haven’t.)   • <em>“Who maintains the system after V1 ships? Is that a dedicated role or shared across the team?”</em> (Reveals the hidden maintenance burden.)   • <em>“What’s your plan if the engineer who builds this leaves?”</em> (The bus factor question. Usually gets an uncomfortable silence.)   • <em>“What’s the opportunity cost? What would those engineers build for the product if they weren’t building infrastructure?”</em> (Reframes cost from “$0 for open source” to “$500K in lost product development.”)   • <em>“Have you built internal infrastructure tools before? How closely did the actual timeline match the estimate?”</em> (Honest answer is always: it took 2-3x longer.)</td>
    </tr>
    <tr>
      <td><strong>8. Objection Responses</strong></td>
      <td><strong>Buyer:</strong> <em>“Our engineers can build this. The open-source tools are free.”</em>   <strong>Response:</strong> “The tools are free. The engineers are not. Let’s do the math together: if it takes 3 engineers 6 months to build and 1.5 engineers full-time to maintain, you’re looking at $600K in Year 1 and $300K/year ongoing — just in people costs. Our platform is $180K/year and it’s live in 2 weeks. The question isn’t whether your team CAN build it. It’s whether they SHOULD.”      <strong>Buyer:</strong> <em>“We don’t want vendor lock-in.”</em>   <strong>Response:</strong> “I respect that. Two things: first, our data is stored in open formats — Parquet and Iceberg. You can walk away any time with all your data. Second, the internal build creates a different kind of lock-in: ‘engineer lock-in.’ You’re locked into the person who built it. When they leave — and they will — you’re locked into a system nobody else understands.”      <strong>Buyer:</strong> <em>“We already started building it.”</em>   <strong>Response:</strong> “Got it. How far along are you, and how does the actual timeline compare to the original estimate? [Pause.] We see this a lot — teams get 40% through a custom build, realize the remaining 60% is the hard part (monitoring, security, governance, scaling), and decide to adopt a platform. We can integrate with what you’ve already built. You don’t lose the work.”      <strong>Buyer:</strong> <em>“Our CTO wants to build it.”</em>   <strong>Response:</strong> “Understood. Is the CTO’s goal to build best-in-class data infrastructure, or to get the data team productive as fast as possible? If it’s the second, building is the slow path. If the CTO’s concern is control and customization, I’d love to show them our API and extensibility layer — most CTOs who were skeptical become champions after they see how much flexibility the platform gives.”</td>
    </tr>
    <tr>
      <td><strong>9. Win Stories</strong></td>
      <td><strong>Win: DevStack (Series B, 300 employees)</strong>   VP Eng championed an internal build. Scoped at 3 months, 2 engineers. After 7 months and 4 engineers, V1 was “mostly working” but had no monitoring, no access controls, and broke every time Airflow updated. CTO pulled the plug, adopted our platform. Live in 11 days. The 4 engineers went back to building product features. CTO said: “We burned $800K learning what you could have told us for free.”      <strong>Win: HealthTech Co (Series C, 500 employees)</strong>   Data team built a custom pipeline on Airflow + dbt + Snowflake + Metabase. Worked great for 18 months. Then the lead engineer left. Nobody could debug the custom orchestration layer. Dashboards went stale for 3 weeks before they called us. Migrated in 4 weeks. Annual savings of $400K in engineering time once fully operational.</td>
    </tr>
    <tr>
      <td><strong>10. Trap Avoidance</strong></td>
      <td><strong>They’ll say:</strong> <em>“Vendors always oversimplify. Our use case is unique and no off-the-shelf tool can handle it.”</em>   <strong>Preempt:</strong> Never dismiss their complexity. Say: “You might be right. Let’s do a proof-of-concept on your hardest use case. If we can’t handle it, I’ll tell you honestly and save you the time.”      <strong>They’ll say:</strong> <em>“We tried a vendor before and it was a disaster.”</em>   <strong>Preempt:</strong> Ask what went wrong. Acknowledge the bad experience. Then differentiate: “That’s a legitimate concern. Here’s what’s different about our approach: [specific architectural difference]. And here are 3 customers who came to us after a bad vendor experience — happy to connect you with any of them.”      <strong>They’ll say:</strong> <em>“The internal build is already working. We don’t need to replace it.”</em>   <strong>Preempt:</strong> Don’t push for rip-and-replace. Offer augmentation: “We’re not asking you to throw away what you’ve built. Start with one use case where the internal tool is struggling. If we deliver, you expand. If we don’t, you’ve only risked one workload.”</td>
    </tr>
  </tbody>
</table>

<hr />

<p>Part III</p>

<p>Using Battle Cards in Deals</p>

<p>Having a battle card and using it well are different skills. This part covers how to deploy competitive intelligence at each stage of the sales cycle — from discovery to negotiation to post-mortem.</p>

<h1 id="05-in-discovery--surfacing-the-competitive-landscape">05 In Discovery — Surfacing the Competitive Landscape</h1>

<p>The first rule of competitive selling: <strong>never ask “who else are you evaluating?”</strong> directly. It puts the buyer on the defensive. They’ll either lie (“just looking around”) or use it as leverage (“oh, we’re talking to everyone”). Instead, surface the competitive landscape indirectly.</p>

<h2 id="indirect-probing-techniques">Indirect Probing Techniques</h2>

<table>
  <thead>
    <tr>
      <th>Technique</th>
      <th>Example Question</th>
      <th>What You Learn</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>The “process” question</strong></td>
      <td>“What does your evaluation process look like? How many solutions are you planning to review?”</td>
      <td>Number of competitors in play. Timeline. Decision process.</td>
    </tr>
    <tr>
      <td><strong>The “criteria” question</strong></td>
      <td>“What are the top 3 things that will determine your decision?”</td>
      <td>If they mention something you’re weak at, a competitor likely planted that criterion.</td>
    </tr>
    <tr>
      <td><strong>The “history” question</strong></td>
      <td>“Have you tried solving this before? What did you look at?”</td>
      <td>Past evaluations. Competitors they’ve already rejected (and why).</td>
    </tr>
    <tr>
      <td><strong>The “internal” question</strong></td>
      <td>“Is there a discussion about building this internally vs buying?”</td>
      <td>Whether DIY is a competitor.</td>
    </tr>
    <tr>
      <td><strong>The “reference” question</strong></td>
      <td>“Is there a product your team is already familiar with in this space?”</td>
      <td>Which competitor has mindshare. Often the one they’ll default to.</td>
    </tr>
    <tr>
      <td><strong>The “concern” question</strong></td>
      <td>“What would make you nervous about going with a vendor like us?”</td>
      <td>If they say “we’re worried about scale,” a legacy vendor is in the mix. If they say “ease of use,” a direct competitor is in the mix.</td>
    </tr>
  </tbody>
</table>

<h2 id="example-discovery-dialogue">Example Discovery Dialogue</h2>

<p>AE (You):</p>

<p>“Walk me through what’s driven this evaluation. What’s happening internally that made this a priority now?”</p>

<p>Buyer:</p>

<p>“Our data team is drowning. We have 40+ dashboards and nobody trusts the numbers. The CFO asked for a revenue report last week and got three different answers from three different tools.”</p>

<p>AE:</p>

<p>“That’s painful. What are those three tools, out of curiosity?”</p>

<p>Buyer:</p>

<p>“We’ve got a mix of Metabase, some Google Sheets, and a couple of analysts writing raw SQL against the warehouse.”</p>

<p>AE:</p>

<p>“Got it. So you’re looking to consolidate onto one platform. What does the evaluation process look like on your side? Are you looking at a couple of options, or is this wider than that?”</p>

<p>Buyer:</p>

<p>“We’re looking at a few things. Our VP Product really likes CloudMetrics — she used it at her last company. And our VP Eng thinks we should just build something on top of dbt and Superset.”</p>

<blockquote>
  <p><strong>What just happened:</strong> Without asking “who are your competitors?” directly, you now know: (1) CloudMetrics is in play, championed by the VP Product, (2) DIY is in play, championed by the VP Eng, (3) the buying committee has at least 3 voices (CFO triggered the eval, VP Product has a preference, VP Eng has a different preference). You can now pull the CloudMetrics and DIY battle cards.</p>
</blockquote>

<h2 id="reading-the-tea-leaves">Reading the Tea Leaves</h2>

<p>Sometimes the buyer won’t name competitors directly. Watch for these signals:</p>

<table>
  <thead>
    <tr>
      <th>What the Buyer Says</th>
      <th>What It Means</th>
      <th>Which Battle Card to Pull</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>“We need something enterprise-grade”</td>
      <td>A legacy vendor is in the mix, setting the “enterprise” bar</td>
      <td>Legacy Incumbent card</td>
    </tr>
    <tr>
      <td>“Ease of use is our #1 criterion”</td>
      <td>A PLG-first competitor (like CloudMetrics) has impressed someone</td>
      <td>Direct Competitor card</td>
    </tr>
    <tr>
      <td>“We’re not sure we need a vendor for this”</td>
      <td>DIY is being discussed internally</td>
      <td>DIY/Internal Build card</td>
    </tr>
    <tr>
      <td>“Your pricing is higher than what we’ve seen”</td>
      <td>A cheaper competitor has already quoted them</td>
      <td>Relevant competitor card + pricing objection handles</td>
    </tr>
    <tr>
      <td>“How long is your implementation?”</td>
      <td>Someone else quoted a faster timeline (or the DIY camp said “we can do it in 2 weeks”)</td>
      <td>Check all cards for time-to-value positioning</td>
    </tr>
  </tbody>
</table>

<hr />

<h1 id="06-in-demo--positioning-without-naming-competitors">06 In Demo — Positioning Without Naming Competitors</h1>

<p>During the demo, you have 30-45 minutes to differentiate. The goal is to position your strengths in ways that expose competitor weaknesses — without ever naming the competitor. Here’s why: if you trash-talk a competitor by name, the buyer mentally defends them. If you describe a capability gap without naming anyone, the buyer connects the dots themselves.</p>

<h2 id="the-two-approaches">The Two Approaches</h2>

<p>BAD: Naming Competitors</p>

<hr />

<p>“Unlike CloudMetrics, we have a full semantic layer that ensures metric consistency across all your dashboards. CloudMetrics doesn’t have this, which is why their customers end up with conflicting numbers.”</p>

<hr />

<p>GOOD: Positioning by Capability</p>

<hr />

<p>“One of the things that makes us different is our semantic layer. Every metric is defined once, centrally, and every dashboard pulls from that definition. Teams that don’t have this — regardless of which tool they use — typically end up with 50+ dashboards showing conflicting numbers. Our customers don’t have that problem.”</p>

<hr />

<blockquote>
  <p><strong>Why the second approach wins:</strong> (1) You never look petty or threatened. (2) The buyer who’s evaluating CloudMetrics immediately thinks “wait, CloudMetrics doesn’t have a semantic layer…” (3) You’ve planted a buying criterion (semantic layer) that favors you without making it feel like an attack.</p>
</blockquote>

<h2 id="differentiation-talking-points-by-competitor-type">Differentiation Talking Points by Competitor Type</h2>

<h3 id="when-the-legacy-incumbent-is-in-play">When the Legacy Incumbent is in Play</h3>

<p>Emphasize during the demo:</p>

<ul>
  <li><strong>“Let me show you how fast this is.”</strong> Run a live query on a large dataset. Let the speed speak for itself. The buyer will compare it mentally to the 45-second query on the legacy platform.</li>
  <li><strong>“We’ll be live in 2 weeks.”</strong> Mention time-to-value early and often. The legacy vendor is quoting 4-6 months. You don’t need to say that — the buyer knows.</li>
  <li><strong>“Your team already knows the tools.”</strong> Show dbt integration, SQL editor, Python notebooks. The message: your team can start productive on Day 1 with no training. The legacy tool requires proprietary training.</li>
  <li><strong>“Here’s the total cost: one line item.”</strong> Show transparent pricing. No hidden infra fees, no professional services surcharge, no Year 2 surprises.</li>
</ul>

<h3 id="when-the-direct-competitor-is-in-play">When the Direct Competitor is in Play</h3>

<p>Emphasize during the demo:</p>

<ul>
  <li><strong>Start with the self-serve dashboard builder.</strong> Don’t lead with the data engineering features. Prove that PMs can use it first. Then go deeper. This defuses the “your tool is for engineers” attack.</li>
  <li><strong>“Let me show you the semantic layer.”</strong> Build a metric definition live. Then show how that definition flows to every dashboard. Plant the “metric consistency” criterion.</li>
  <li><strong>“Now let me show you what happens at scale.”</strong> Run a query on 100M+ rows. Fast. The direct competitor chokes at this scale, and the buyer will test them on it next.</li>
  <li><strong>“Your data team and your product team use the same platform.”</strong> Show SQL alongside no-code. The message: you don’t need two tools.</li>
</ul>

<h3 id="when-diy-is-in-play">When DIY is in Play</h3>

<p>Emphasize during the demo:</p>

<ul>
  <li><strong>“This took us 4 years and 80 engineers to build.”</strong> Casually mention the engineering investment. Let the buyer do the math on what it would cost them internally.</li>
  <li><strong>“Monitoring, alerting, access controls, audit logs — all built in.”</strong> Show the things that custom builds always skip in V1 and regret in V2.</li>
  <li><strong>“Live in 2 weeks.”</strong> The internal build timeline is 6-12 months. You don’t need to say that. Just show the speed.</li>
  <li><strong>“And your engineers can go back to building [their product].”</strong> Name what the company actually does. “Your engineers can go back to building the recommendation engine instead of maintaining Airflow DAGs.”</li>
</ul>

<hr />

<h1 id="07-in-negotiation--when-buyers-use-competitors-as-leverage">07 In Negotiation — When Buyers Use Competitors as Leverage</h1>

<p>This is where deals are won and lost. The buyer has chosen you (probably) but is using competitor pricing to extract a discount. This is normal, expected, and manageable — if you don’t panic.</p>

<h2 id="the-most-common-scenario">The Most Common Scenario</h2>

<p>Buyer:</p>

<p>“Look, we like your platform, but CloudMetrics quoted us 40% less. I need you to come down on price or I can’t get this through procurement.”</p>

<h3 id="what-not-to-do">What NOT to Do</h3>

<ul>
  <li><strong>Don’t immediately offer a discount.</strong> The moment you drop price without resistance, the buyer knows there’s more room. They’ll ask again.</li>
  <li><strong>Don’t trash the competitor’s pricing.</strong> “Well, you get what you pay for” is condescending and unhelpful.</li>
  <li><strong>Don’t bluff.</strong> “Our pricing is firm” when it isn’t. The buyer will call your bluff and you’ll fold, losing credibility.</li>
</ul>

<h3 id="the-response-framework-acknowledge-reframe-offer">The Response Framework: Acknowledge, Reframe, Offer</h3>

<p>AE:</p>

<p>“I appreciate you sharing that, and I want to be transparent about our pricing. CloudMetrics is a great product for self-serve dashboards. Our platform includes the data warehouse, pipelines, modeling layer, and BI — so it’s not an apples-to-apples comparison.”</p>

<p><em>[Acknowledge the competitor. Don’t dismiss them. Reframe the comparison.]</em></p>

<p>AE:</p>

<p>“If you go with CloudMetrics, you’ll still need a separate warehouse ($X), an ETL tool ($Y), and dbt ($Z). When you add those up, the total stack cost is actually comparable or higher than us — and you’re managing four vendors instead of one.”</p>

<p><em>[Show the math. Make it about total cost, not unit price.]</em></p>

<p>AE:</p>

<p>“That said, I want to make this work. If annual commitment is on the table, I can offer [specific concession — e.g., 15% discount on a 2-year deal, or free onboarding]. Does that help get this through procurement?”</p>

<p><em>[Offer value, not just discount. Tie the concession to a commitment.]</em></p>

<h2 id="price-negotiation-tactics">Price Negotiation Tactics</h2>

<table>
  <thead>
    <tr>
      <th>Buyer Tactic</th>
      <th>What They’re Doing</th>
      <th>Your Response</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>“Competitor is 40% cheaper”</strong></td>
      <td>Using a lower-tier competitor as a price anchor</td>
      <td>Reframe to total cost of ownership. Show the full stack cost comparison.</td>
    </tr>
    <tr>
      <td><strong>“We have budget for $X, not $Y”</strong></td>
      <td>Setting an artificial ceiling</td>
      <td>“What if we start with a smaller scope — 20 seats instead of 50 — and expand as you see ROI?”</td>
    </tr>
    <tr>
      <td><strong>“Match their price or we walk”</strong></td>
      <td>Hard negotiation. Testing your floor.</td>
      <td>“I can’t match that price because we’re not the same product. But here’s what I can do: [specific offer]. If that doesn’t work, I understand — and I’d rather be honest about pricing than win a deal and underdeliver.”</td>
    </tr>
    <tr>
      <td><strong>“Your competitor offered a free POC”</strong></td>
      <td>Wants free work</td>
      <td>“We offer a 14-day free trial with full support. If you need longer, we can discuss. But a 6-month free POC typically means a product that takes 6 months to show value. Ours shows value in 2 weeks.”</td>
    </tr>
    <tr>
      <td><strong>“My boss wants a bigger discount”</strong></td>
      <td>Using hierarchy to create pressure</td>
      <td>“I understand. Can I talk to your boss directly? Sometimes it helps to have a conversation about the ROI model so we’re both speaking the same language with procurement.”</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p><strong>The golden rule of negotiation:</strong> Never give a concession without getting something back. Discount for a longer commitment. Free onboarding for a case study. Extra seats for a reference call. Every “give” should have a “get.”</p>
</blockquote>

<hr />

<h1 id="08-winloss-analysis">08 Win/Loss Analysis</h1>

<p>The best battle cards are built on win/loss data, not opinions. After every competitive deal — win or lose — you should run a structured debrief. Wins tell you what’s working. Losses tell you where to improve. Both feed back into the battle card.</p>

<h2 id="the-interview-template-lost-deals">The Interview Template (Lost Deals)</h2>

<p>This should be conducted by someone other than the AE who lost the deal (product marketing or sales enablement). The AE is too close to the deal to get honest answers from the buyer.</p>

<table>
  <thead>
    <tr>
      <th>#</th>
      <th>Question</th>
      <th>What You’re Looking For</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>1</strong></td>
      <td>“Walk me through how you made the final decision. What was the process?”</td>
      <td>Decision dynamics. Who had influence. What mattered most.</td>
    </tr>
    <tr>
      <td><strong>2</strong></td>
      <td>“What were the top 3 factors in your decision?”</td>
      <td>The actual buying criteria (not the stated criteria from the RFP).</td>
    </tr>
    <tr>
      <td><strong>3</strong></td>
      <td>“Was there a moment in the process where [competitor] pulled ahead, or where we fell behind?”</td>
      <td>The turning point. Often a specific demo moment, reference call, or pricing conversation.</td>
    </tr>
    <tr>
      <td><strong>4</strong></td>
      <td>“What did [competitor] do well that impressed you?”</td>
      <td>Their strengths from the buyer’s perspective. Update the “Where They Win” section.</td>
    </tr>
    <tr>
      <td><strong>5</strong></td>
      <td>“Was there anything about our solution or our team that gave you pause?”</td>
      <td>Weaknesses the buyer saw in us. Critical for trap avoidance.</td>
    </tr>
    <tr>
      <td><strong>6</strong></td>
      <td>“How did pricing factor into the decision? Was our pricing competitive?”</td>
      <td>Whether price was the real reason or a convenient excuse.</td>
    </tr>
    <tr>
      <td><strong>7</strong></td>
      <td>“If you could change one thing about our product or process, what would it be?”</td>
      <td>Actionable feedback for product and sales process improvement.</td>
    </tr>
    <tr>
      <td><strong>8</strong></td>
      <td>“Would you be open to re-evaluating in 6-12 months if our product evolves?”</td>
      <td>Keep the door open. Many lost deals come back.</td>
    </tr>
  </tbody>
</table>

<h2 id="winloss-tracking-system">Win/Loss Tracking System</h2>

<table>
  <thead>
    <tr>
      <th>Field</th>
      <th>What to Record</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Deal name</strong></td>
      <td>Company, deal size, sales stage when lost/won</td>
    </tr>
    <tr>
      <td><strong>Competitor</strong></td>
      <td>Who they chose (or who else was in the evaluation)</td>
    </tr>
    <tr>
      <td><strong>Primary loss reason</strong></td>
      <td>Price, product gap, relationship, timing, status quo</td>
    </tr>
    <tr>
      <td><strong>Buyer quotes</strong></td>
      <td>Direct quotes from the debrief interview</td>
    </tr>
    <tr>
      <td><strong>AE assessment</strong></td>
      <td>What the AE thinks happened (often different from the buyer’s view)</td>
    </tr>
    <tr>
      <td><strong>Action items</strong></td>
      <td>What needs to change: product, pricing, positioning, process</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p><strong>The pattern to watch for:</strong> If you lose 3+ deals to the same competitor for the same reason, that’s not a sales problem — it’s a product or positioning problem. Escalate to product leadership with the data. “We lost 4 deals to CloudMetrics in Q3. In all 4, the buyer said our self-serve UX wasn’t good enough for non-technical users. Here are the quotes.”</p>
</blockquote>

<hr />

<p>Part IV</p>

<p>Operations</p>

<p>A battle card that’s 6 months old is worse than no battle card at all. This section covers how to keep cards accurate, where to store them, and how to train AEs to actually use them in live deals.</p>

<h1 id="09-keeping-cards-updated">09 Keeping Cards Updated</h1>

<h2 id="ownership">Ownership</h2>

<table>
  <thead>
    <tr>
      <th>Role</th>
      <th>Responsibility</th>
      <th>Frequency</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Product Marketing</strong></td>
      <td>Owns the battle card program. Researches competitors. Writes and updates cards. Trains sales.</td>
      <td>Ongoing</td>
    </tr>
    <tr>
      <td><strong>AEs</strong></td>
      <td>Report competitive intel from live deals. Flag when cards are outdated. Share what’s working and what isn’t.</td>
      <td>After every competitive deal</td>
    </tr>
    <tr>
      <td><strong>Product Team</strong></td>
      <td>Provide input on technical differentiation. Update feature comparison when we ship or they ship.</td>
      <td>Quarterly or on major releases</td>
    </tr>
    <tr>
      <td><strong>Sales Leadership</strong></td>
      <td>Enforce usage. Review win/loss data. Ensure cards are part of deal reviews.</td>
      <td>Monthly</td>
    </tr>
  </tbody>
</table>

<h2 id="update-cadence">Update Cadence</h2>

<table>
  <thead>
    <tr>
      <th>Update Type</th>
      <th>Trigger</th>
      <th>Timeline</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>**Scheduled Review</strong>**</td>
      <td>Quarterly — every card gets a full refresh</td>
      <td>First week of each quarter. 2-3 hours per card.</td>
    </tr>
    <tr>
      <td><strong>**Trigger Event</strong>**</td>
      <td>Competitor launches a new product, changes pricing, raises funding, gets acquired, has a major outage, or makes a big hire</td>
      <td>Within 48 hours of the event. Quick update to the relevant section.</td>
    </tr>
    <tr>
      <td><strong>**Emergency Update</strong>**</td>
      <td>An AE gets blindsided in a deal by competitive intelligence that’s not on the card</td>
      <td>Same day. Fix the card, notify the team.</td>
    </tr>
    <tr>
      <td><strong>**Win/Loss Feedback</strong>**</td>
      <td>After every competitive deal (win or loss), update the relevant sections</td>
      <td>Within 1 week of deal close. Add win stories, update objection responses.</td>
    </tr>
  </tbody>
</table>

<h2 id="what-to-monitor">What to Monitor</h2>

<p>Set up alerts for these competitive signals:</p>

<ul>
  <li><strong>Their blog and changelog.</strong> RSS feed or Google Alert. New features and product updates.</li>
  <li><strong>Their pricing page.</strong> Screenshot monthly. Use Visualping or similar to detect changes.</li>
  <li><strong>Their job postings.</strong> New roles reveal strategic direction. A “Head of Enterprise” hire means they’re moving upmarket. 20 new SDR postings means they’re scaling outbound.</li>
  <li><strong>G2 reviews.</strong> Set up a monthly review of new reviews. Track sentiment changes over time.</li>
  <li><strong>Crunchbase / PitchBook.</strong> Funding rounds, acquisitions, key hires.</li>
  <li><strong>Social media.</strong> Follow their executives on LinkedIn and Twitter. They’ll announce things before the press release.</li>
  <li><strong>Their customers.</strong> Track when their logos change. If a big customer leaves, find out why.</li>
</ul>

<blockquote>
  <p><strong>Insight:</strong> A battle card that was accurate 6 months ago and hasn’t been updated is actively harmful. Your AE quotes a competitor’s old pricing, the buyer corrects them, and now your AE has lost credibility. Outdated cards are worse than no cards. If you can’t commit to keeping them updated, don’t build them.</p>
</blockquote>

<hr />

<h1 id="10-distribution--training">10 Distribution &amp; Training</h1>

<p>The most common failure mode for battle cards: product marketing spends 40 hours building beautiful cards, uploads them to a shared drive, sends a Slack message saying “new battle cards are live!”, and nobody uses them. Distribution and training are just as important as the content.</p>

<h2 id="where-to-store-battle-cards">Where to Store Battle Cards</h2>

<table>
  <thead>
    <tr>
      <th>Platform</th>
      <th>Pros</th>
      <th>Cons</th>
      <th>Best For</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Highspot / Seismic / Showpad</strong></td>
      <td>Built for sales enablement. Analytics on usage. CRM integration. Surfaces content in context.</td>
      <td>Expensive ($30-$80/seat). Overkill for small teams.</td>
      <td>Teams with 20+ AEs and a dedicated enablement function</td>
    </tr>
    <tr>
      <td><strong>Notion</strong></td>
      <td>Easy to update. Searchable. Embeddable. Free or low cost.</td>
      <td>No analytics on who viewed what. Easy to ignore.</td>
      <td>Startups and mid-market teams. Our recommendation for most.</td>
    </tr>
    <tr>
      <td><strong>Confluence</strong></td>
      <td>Already in the stack for most enterprises. Decent search.</td>
      <td>Ugly. Hard to navigate. Nobody enjoys using Confluence.</td>
      <td>Enterprise teams already standardized on Atlassian</td>
    </tr>
    <tr>
      <td><strong>Google Docs</strong></td>
      <td>Everyone knows how to use it. Easy to share. Real-time collaboration.</td>
      <td>No structure. Gets lost in Drive. No analytics.</td>
      <td>Very early-stage teams. Not recommended long-term.</td>
    </tr>
    <tr>
      <td><strong>Guru / Tettra</strong></td>
      <td>Knowledge management tools. Browser extensions that surface cards in context (e.g., when viewing a CRM record).</td>
      <td>Another tool to adopt. Moderate cost.</td>
      <td>Teams that want battle cards accessible inside the CRM or email</td>
    </tr>
  </tbody>
</table>

<h2 id="training-aes-to-actually-use-them">Training AEs to Actually Use Them</h2>

<p>Uploading cards to a wiki is not enablement. Here’s how to make AEs actually use battle cards in live deals:</p>

<h3 id="1-launch-with-a-live-session-not-a-slack-message">1. Launch with a Live Session (Not a Slack Message)</h3>

<p>For each new or updated card, run a 30-minute session with the sales team:</p>

<ul>
  <li>10 min: Walk through the card. Highlight what’s new.</li>
  <li>10 min: Role-play the 2-3 most common objections from that competitor.</li>
  <li>10 min: Q&amp;A. “What are you hearing in deals that’s not on this card?”</li>
</ul>

<h3 id="2-role-play-exercises">2. Role-Play Exercises</h3>

<p>The most effective way to train competitive selling. Run these monthly.</p>

<hr />

<p><strong>Role-Play Scenario 1:</strong> Legacy Incumbent in Play</p>

<p><strong>Setup:</strong> You’re demoing to a VP Data at a 2,000-person company. They’ve been using DataCorp for 5 years. The CIO is comfortable with DataCorp but the VP Data is frustrated with performance and cost. Halfway through the demo, the VP Data says:</p>

<p><em>“This is impressive, but honestly, our CIO is going to push back hard. DataCorp has been here forever and the switching costs scare him. How do I make the case internally?”</em></p>

<p><strong>What you practice:</strong> Arming the champion. Giving the VP Data the talking points to sell internally. The parallel deployment story. The ROI model. The risk mitigation plan.</p>

<hr />

<hr />

<p><strong>Role-Play Scenario 2:</strong> Price Pressure from Direct Competitor</p>

<p><strong>Setup:</strong> You’re in negotiation with a Head of Analytics at a Series C startup. They love your product but the CFO is pushing back on price. The buyer says:</p>

<p><em>“CloudMetrics is offering us 50 seats at $45/user/month. You’re asking $120/user/month. I personally prefer your platform, but I need to justify that 3x price difference to my CFO. Help me out.”</em></p>

<p><strong>What you practice:</strong> The total cost of ownership argument. Building the ROI model together. Offering creative deal structures (fewer seats to start, annual commitment for a discount, free onboarding).</p>

<hr />

<hr />

<p><strong>Role-Play Scenario 3:</strong> The DIY Objection</p>

<p><strong>Setup:</strong> You’re in discovery with a CTO. The conversation is going well, but then:</p>

<p><em>“Look, I’ve been thinking about this. We have 8 data engineers. Airflow, dbt, and Superset are free. My VP Eng thinks we can build what we need in 3 months. Why would I pay you $200K a year?”</em></p>

<p><strong>What you practice:</strong> The cost math (engineers are not free). The timeline reality (it’s always 3x). The opportunity cost (what those engineers could build instead). The risk (what happens when the builder leaves).</p>

<hr />

<h3 id="3-integrate-into-deal-reviews">3. Integrate Into Deal Reviews</h3>

<p>In every deal review or pipeline meeting, ask:</p>

<ul>
  <li>“Which competitors are in this deal?”</li>
  <li>“Have you reviewed the battle card?”</li>
  <li>“Which landmine questions have you planted?”</li>
  <li>“What’s the competitor’s likely attack against us in this deal?”</li>
</ul>

<p>When battle cards are part of the deal review process, AEs use them because they’ll be asked about them.</p>

<h3 id="4-celebrate-competitive-wins">4. Celebrate Competitive Wins</h3>

<p>When an AE wins a deal against a named competitor, share the story in Slack with specifics:</p>

<hr />

<p><strong>#wins channel:</strong></p>

<p>Closed HealthTech Co ($140K ACV) against DataCorp.</p>

<p>What worked: Planted the “run a live query on 1TB” landmine question. DataCorp’s demo took 90 seconds per query. Ours took 3 seconds. The VP Data said that was the moment the decision was made.</p>

<p>Battle card in action. Update: added this as a win story on the DataCorp card.</p>

<hr />

<blockquote>
  <p><strong>The metric that matters:</strong> Track “battle card influenced win rate.” Compare win rates in competitive deals where the AE used the battle card vs. deals where they didn’t. In our experience, battle card usage improves competitive win rates by <strong>15-25 percentage points</strong>. That’s the number that justifies the investment in building and maintaining them.</p>
</blockquote>

<hr />

<p><strong>The Battle Card Checklist</strong></p>

<p>Be honest about competitor strengths     AEs who get caught lying lose all credibility<br />
Back weaknesses with evidence          G2 quotes, customer complaints, specific data<br />
Landmine questions, not feature lists    let the buyer discover weaknesses themselves<br />
Never name competitors in demos        position by capability, not by attack<br />
Never discount without getting something   longer commitment, case study, reference<br />
Update quarterly or don’t bother         outdated cards are worse than no cards<br />
Role-play monthly                     reading a card is not the same as using it<br />
Track competitive win rate              the metric that justifies everything</p>

<p>The goal is not to trash competitors. The goal is to help the buyer make the best decision — and make sure they have the information to see why that decision is you.</p>]]></content><author><name>Sourav Padhi</name></author><category term="playbooks" /><summary type="html"><![CDATA[Competitive Battle Cards]]></summary></entry><entry><title type="html">Enterprise Demo Playbook</title><link href="https://sourav.sh/demo-playbook.html" rel="alternate" type="text/html" title="Enterprise Demo Playbook" /><published>2026-04-06T00:00:00+00:00</published><updated>2026-04-06T00:00:00+00:00</updated><id>https://sourav.sh/demo-playbook</id><content type="html" xml:base="https://sourav.sh/demo-playbook.html"><![CDATA[<p>Enterprise Demo Playbook</p>

<p>the 5-act framework · scripts · objection handling · templates</p>

<p><code class="language-plaintext highlighter-rouge">Enterprise Sales</code> 
<code class="language-plaintext highlighter-rouge">Product Demos</code> 
<code class="language-plaintext highlighter-rouge">AE Playbook</code> 
<code class="language-plaintext highlighter-rouge">SaaS</code> 
<code class="language-plaintext highlighter-rouge">MBA Interns</code></p>

<p>Most demos fail. Not because the product is bad, but because the demo is a feature tour disguised as a conversation. The rep opens the product, starts clicking through screens, and narrates what they see: “And here you can see the dashboard… and over here is the reporting module… and this is where you’d configure your integrations.” The prospect nods politely, says “this looks great, let me loop in my team,” and then goes silent forever.</p>

<p>This playbook teaches a different approach. A demo is not a product tour. It is a <strong>performance</strong> — a carefully structured 25-minute act where every click, every sentence, and every pause is designed to make the prospect say: “Yes, this solves my problem. What do we do next?”</p>

<p><strong>Who this is for:</strong> AEs running enterprise demos, MBA interns learning SaaS sales, SEs who want to understand what happens before they take over, and sales leaders designing demo playbooks for their team.</p>

<hr />

<p>Part I</p>

<p>Foundations</p>

<p>Before you open the product, you need to understand why most demos lose deals, the 5-act structure that wins them, and how to prepare so thoroughly that the demo feels effortless.</p>

<h1 id="01-why-most-demos-fail">01 Why Most Demos Fail</h1>

<p>The data is brutal: <strong>60% of enterprise deals are lost because of bad demos, not bad products.</strong> Gartner’s 2024 B2B Buying survey found that the single largest predictor of a stalled deal is the prospect’s experience during the demo — not price, not features, not competitors. A bad demo kills deals that were otherwise winnable.</p>

<p>Why? Because most demos commit the same sin: they show the product instead of solving the problem.</p>

<h2 id="the-show-up-and-throw-up-anti-pattern">The “Show Up and Throw Up” Anti-Pattern</h2>

<p>This is what 80% of demos look like:</p>

<hr />

<p><strong>The typical demo</strong> · What the prospect actually hears</p>

<p>“Let me start by giving you a quick overview of our platform…”<br />
[Prospect thinks: I didn’t ask for an overview.]</p>

<p>“So here’s the main dashboard. You can see all your data in real-time…”<br />
[Prospect thinks: I don’t care about your dashboard. I care about my problem.]</p>

<p>“And over here is our AI-powered analytics engine, which is really exciting…”<br />
[Prospect thinks: Exciting to whom? What does this do for me?]</p>

<p>“Let me show you the integrations page — we integrate with over 200 tools…”<br />
[Prospect thinks: Do you integrate with the ONE tool I care about?]</p>

<p>“Any questions?”<br />
[Prospect thinks: I have no idea what I just watched. “Looks great, let me get back to you.”]</p>

<hr />

<blockquote>
  <p><strong>What went wrong:</strong> The rep showed every feature without connecting any of them to the prospect’s actual problems. The prospect sat through 25 minutes of someone else’s agenda. They were polite. They said “looks great.” And then they ghosted — because nothing in that demo gave them a reason to change how they work today.</p>
</blockquote>

<h2 id="feature-tour-vs-pain-based-demo">Feature Tour vs Pain-Based Demo</h2>

<table>
  <thead>
    <tr>
      <th>Dimension</th>
      <th>Feature Tour (Loses Deals)</th>
      <th>Pain-Based Demo (Wins Deals)</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Opens with</strong></td>
      <td>“Let me give you an overview”</td>
      <td><strong>“Last time we spoke, you mentioned three problems…“</strong></td>
    </tr>
    <tr>
      <td><strong>Organized by</strong></td>
      <td>Product menus and navigation</td>
      <td><strong>The prospect’s top 3 pains</strong></td>
    </tr>
    <tr>
      <td><strong>Every click</strong></td>
      <td>Shows a feature</td>
      <td><strong>Solves a specific problem they described</strong></td>
    </tr>
    <tr>
      <td><strong>Talking ratio</strong></td>
      <td>AE talks 90%, prospect 10%</td>
      <td><strong>AE talks 65%, prospect 35%</strong></td>
    </tr>
    <tr>
      <td><strong>Prospect feels</strong></td>
      <td>“That’s a nice product”</td>
      <td><strong>“That solves my problem”</strong></td>
    </tr>
    <tr>
      <td><strong>What happens next</strong></td>
      <td>“Let me loop in my team” (ghosted)</td>
      <td><strong>“What are the next steps?”</strong></td>
    </tr>
    <tr>
      <td><strong>Win rate</strong></td>
      <td>15–25%</td>
      <td><strong>35–50%</strong></td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p><strong>Insight:</strong> A demo is not a product tour. It is a conversation where the product appears as evidence. The prospect’s problems are the agenda. The product is the proof.</p>
</blockquote>

<h2 id="the-three-reasons-demos-fail">The Three Reasons Demos Fail</h2>

<ol>
  <li><strong>No discovery recap.</strong> The AE jumps straight into the product without confirming they understand the problem. The prospect sits there wondering: “Did they even listen to me last time?”</li>
  <li><strong>Feature-first structure.</strong> The demo follows the product’s navigation instead of the prospect’s priorities. The thing they care about most might be screen #7 in the product, but it should be minute #3 in the demo.</li>
  <li><strong>No trial close.</strong> The demo ends with “any questions?” instead of “does this solve the problem we discussed?” Without a trial close, you leave with no information about where you stand — and the prospect has no psychological commitment to move forward.</li>
</ol>

<hr />

<h1 id="02-the-demo-framework--5-acts-in-25-minutes">02 The Demo Framework — 5 Acts in 25 Minutes</h1>

<p>Every winning demo follows the same structure. It doesn’t matter what you’re selling — dev tools, HR software, financial platforms, security products. The structure is universal because it mirrors how human decision-making works: confirm the problem, set expectations, show the solution, differentiate, and ask for a commitment.</p>

<table>
  <thead>
    <tr>
      <th>Act</th>
      <th>Name</th>
      <th>Duration</th>
      <th>Purpose</th>
      <th>Who Leads</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>**1</strong>**</td>
      <td><strong>Recap Discovery</strong></td>
      <td>2 min</td>
      <td>Reconnect to their pain. Prove you listened.</td>
      <td>AE</td>
    </tr>
    <tr>
      <td><strong>**2</strong>**</td>
      <td><strong>Agenda &amp; Stakes</strong></td>
      <td>1 min</td>
      <td>Set the roadmap. Establish the fairness contract.</td>
      <td>AE</td>
    </tr>
    <tr>
      <td><strong>**3</strong>**</td>
      <td><strong>Pain → Solution</strong></td>
      <td>15 min</td>
      <td>Show how the product solves their top 3 pains.</td>
      <td>AE / SE</td>
    </tr>
    <tr>
      <td><strong>**4</strong>**</td>
      <td><strong>Differentiation</strong></td>
      <td>5 min</td>
      <td>Position against alternatives. Answer “why you?”</td>
      <td>AE</td>
    </tr>
    <tr>
      <td><strong>**5</strong>**</td>
      <td><strong>Next Steps</strong></td>
      <td>2 min</td>
      <td>Trial close. Confirm fit. Lock in the next action.</td>
      <td>AE</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p><strong>Total time: 25 minutes.</strong> Not 45. Not 60. Enterprise buyers have short attention spans and packed calendars. If you can’t make your case in 25 minutes, you don’t understand it well enough. Book a 30-minute slot. Use 25. Give them 5 minutes back. They’ll remember that.</p>
</blockquote>

<h2 id="the-emotional-arc">The Emotional Arc</h2>

<p>A great demo has an emotional arc, not just an information arc:</p>

<table>
  <thead>
    <tr>
      <th>Minute</th>
      <th>Prospect’s Emotional State</th>
      <th>Your Job</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>0–2</td>
      <td>“Do they understand my problem?”</td>
      <td>Prove you listened. Recap their exact words.</td>
    </tr>
    <tr>
      <td>2–3</td>
      <td>“What am I about to see? Is this worth my time?”</td>
      <td>Set a clear agenda. Make a fairness promise.</td>
    </tr>
    <tr>
      <td>3–8</td>
      <td>“Okay, this is actually relevant to my problem…”</td>
      <td>Show the biggest pain solved first. Get them nodding.</td>
    </tr>
    <tr>
      <td>8–15</td>
      <td>“This could actually work. But what about X?”</td>
      <td>Anticipate objections. Address them before they ask.</td>
    </tr>
    <tr>
      <td>15–20</td>
      <td>“How does this compare to what we looked at?”</td>
      <td>Differentiate. Position, don’t trash competitors.</td>
    </tr>
    <tr>
      <td>20–25</td>
      <td>“I think this works. What do we do next?”</td>
      <td>Trial close. Make it easy to say yes.</td>
    </tr>
  </tbody>
</table>

<hr />

<h1 id="03-pre-demo-prep">03 Pre-Demo Prep</h1>

<p>The demo is won or lost before you open Zoom. The best AEs spend <strong>2–3x more time preparing</strong> than they spend presenting. A 25-minute demo should have 45–75 minutes of prep behind it.</p>

<h2 id="the-pre-demo-checklist">The Pre-Demo Checklist</h2>

<table>
  <thead>
    <tr>
      <th>#</th>
      <th>Task</th>
      <th>Time</th>
      <th>Why It Matters</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>1</strong></td>
      <td><strong>Review discovery notes</strong></td>
      <td>10 min</td>
      <td>Re-read every note from discovery. Highlight the exact phrases they used to describe their pain. You’ll repeat these back to them in Act 1.</td>
    </tr>
    <tr>
      <td><strong>2</strong></td>
      <td><strong>Identify their top 3 pains</strong></td>
      <td>5 min</td>
      <td>Rank the problems they mentioned by (a) how much it costs them and (b) how urgently they need it solved. These three pains become your demo agenda.</td>
    </tr>
    <tr>
      <td><strong>3</strong></td>
      <td><strong>Customize the demo environment</strong></td>
      <td>15 min</td>
      <td>Use their company name, their logo, their data (or realistic mock data). Nothing kills a demo faster than showing “Acme Corp” data to a prospect who is clearly not Acme Corp.</td>
    </tr>
    <tr>
      <td><strong>4</strong></td>
      <td><strong>Build the click path</strong></td>
      <td>10 min</td>
      <td>Map the exact sequence of screens you’ll show. Practice the transitions. Know exactly where you’ll click before you click it. Zero fumbling.</td>
    </tr>
    <tr>
      <td><strong>5</strong></td>
      <td><strong>Prepare for objections</strong></td>
      <td>10 min</td>
      <td>List the 3 most likely objections based on their industry, role, and what they said in discovery. Write out your responses word-for-word.</td>
    </tr>
    <tr>
      <td><strong>6</strong></td>
      <td><strong>Research the attendees</strong></td>
      <td>10 min</td>
      <td>LinkedIn every person on the invite. Know their role, how long they’ve been there, and what they care about. The economic buyer cares about ROI. The technical evaluator cares about integrations. The end user cares about UX.</td>
    </tr>
    <tr>
      <td><strong>7</strong></td>
      <td><strong>Test everything</strong></td>
      <td>5 min</td>
      <td>Open the demo environment. Verify the data is loaded. Test screen sharing. Check your audio. Load the demo in a browser tab <em>before</em> the call starts.</td>
    </tr>
    <tr>
      <td><strong>8</strong></td>
      <td><strong>Prepare the backup</strong></td>
      <td>5 min</td>
      <td>Have screenshots/recordings ready in case the live demo breaks. Export a PDF of the key screens. You should never have to say “sorry, let me just get this to load.”</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p><strong>The customization test:</strong> If you could give this exact same demo to a different prospect without changing anything, you haven’t prepared enough. A great demo feels like it was built specifically for the person watching it — because it was.</p>
</blockquote>

<h2 id="know-whos-in-the-room">Know Who’s in the Room</h2>

<table>
  <thead>
    <tr>
      <th>Role</th>
      <th>What They Care About</th>
      <th>What to Show Them</th>
      <th>What to Avoid</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Champion</strong></td>
      <td>Looking good to their boss. Solving the problem they raised internally.</td>
      <td>The exact workflow that solves their pain. Make them the hero.</td>
      <td>Surprising them with features they haven’t seen. Don’t make them look uninformed.</td>
    </tr>
    <tr>
      <td><strong>Economic Buyer</strong></td>
      <td>ROI. Time to value. Risk.</td>
      <td>Cost savings. Speed of implementation. Case studies from similar companies.</td>
      <td>Technical deep-dives. Granular features. They don’t care how it works.</td>
    </tr>
    <tr>
      <td><strong>Technical Evaluator</strong></td>
      <td>Integrations. Security. Architecture. Will this actually work in our stack?</td>
      <td>API docs. Integration points. Security certifications. Architecture diagram.</td>
      <td>Marketing language. Vague claims about “enterprise-grade security.”</td>
    </tr>
    <tr>
      <td><strong>End User</strong></td>
      <td>Will this make my daily work easier or harder?</td>
      <td>The daily workflow. UX. Speed. How many clicks to do the thing they do 50x/day.</td>
      <td>Admin panels. Configuration screens. Anything they’ll never touch.</td>
    </tr>
    <tr>
      <td><strong>Skeptic</strong></td>
      <td>Finding a reason to say no. Protecting the status quo.</td>
      <td>Acknowledge their concern directly. Show proof, not promises.</td>
      <td>Ignoring them. Dismissing their concerns. Getting defensive.</td>
    </tr>
  </tbody>
</table>

<hr />

<p>Part II</p>

<p>The Demo Script</p>

<p>Word-for-word scripts for each act. Adapt the specific content to your product, but keep the structure and psychology intact. These scripts are battle-tested across thousands of enterprise demos.</p>

<h1 id="04-act-1-recap-discovery-2-minutes">04 Act 1: Recap Discovery (2 Minutes)</h1>

<p><strong>Goal:</strong> Reconnect the prospect to the pain they told you about. Prove you listened. Get them nodding before you show a single screen.</p>

<p>This is the most important two minutes of the demo. If you nail the recap, the prospect trusts you for the next 23 minutes. If you skip it, they spend the whole demo wondering whether you actually understand their problem.</p>

<h2 id="the-script">The Script</h2>

<hr />

<p><strong>Act 1 Script</strong> · 2 minutes · No product on screen yet</p>

<p>“Before I show you anything, I want to make sure I’ve got the right context from our last conversation. You mentioned three things that were keeping you up at night:</p>

<p><strong>First</strong> — <code class="language-plaintext highlighter-rouge">. You said this was costing you roughly</code>.</p>

<p><strong>Second</strong> — <code class="language-plaintext highlighter-rouge">. And the downstream effect was</code>.</p>

<p><strong>Third</strong> — ``.</p>

<p>Did I capture that right? Is there anything that’s changed since we last spoke, or anything I’m missing?”</p>

<hr />

<blockquote>
  <p><strong>Why this works:</strong> (1) “Before I show you anything” signals that this demo is about them, not your product. (2) Using their <em>exact words</em> from discovery proves you listened — the most powerful sales move there is. (3) Quantifying the pain ($X/month) keeps the cost of the problem front and center. (4) “Did I capture that right?” invites them to correct you, which gives you even better information for the demo. (5) “Anything changed?” catches new context that could shift your entire demo.</p>
</blockquote>

<h3 id="what-if-they-correct-you">What If They Correct You?</h3>

<hr />

<p><strong>If they add a new pain or re-prioritize</strong></p>

<p>“That’s really helpful — I’m glad you mentioned that. Let me adjust what I was going to show you. I’ll start with `` since that sounds like the most urgent piece, and then we’ll cover the other two. Sound good?”</p>

<hr />

<p>This is a gift, not a problem. When the prospect corrects your recap, they’re giving you a real-time update on what will close the deal. Adapt on the fly. This is where prepared AEs crush unprepared ones.</p>

<h3 id="what-if-multiple-people-are-on-the-call">What If Multiple People Are on the Call?</h3>

<hr />

<p><strong>Multi-stakeholder opener</strong></p>

<p>“I know some of you are joining for the first time, so let me quickly set the context. <code class="language-plaintext highlighter-rouge">and I spoke last week and identified three areas where</code> is losing time and money. I’ll recap those in 30 seconds, and then I want to hear from everyone — especially if I’m missing something your team cares about.</p>

<p>The three problems we identified were…”</p>

<hr />

<hr />

<h1 id="05-act-2-set-the-agenda-1-minute">05 Act 2: Set the Agenda (1 Minute)</h1>

<p><strong>Goal:</strong> Tell them exactly what they’re about to see, how long it’ll take, and what happens at the end. This reduces anxiety, builds trust, and creates the “fairness contract” that makes the trial close feel natural.</p>

<h2 id="the-script-1">The Script</h2>

<hr />

<p><strong>Act 2 Script</strong> · 1 minute · Still no product on screen</p>

<p>“Great. Here’s how I’d like to use the next 20 minutes. I want to show you three things, each one tied directly to the problems we just discussed:</p>

<p><strong>One</strong> — how we solve <code class="language-plaintext highlighter-rouge">.  
**Two** — how we handle</code>.<br />
<strong>Three</strong> — how we address ``.</p>

<p>At the end, I’m going to ask you a straight question: <em>does this solve the problem we discussed?</em> If the answer is yes, we’ll talk about next steps. If the answer is no, or if we’re not the right fit, I’ll tell you that — and I’ll point you to whoever might be a better fit. Fair?”</p>

<hr />

<blockquote>
  <p><strong>Why the “fairness contract” is the most important sentence in the entire demo:</strong></p>

  <p>(1) <strong>“I’ll ask you a straight question”</strong> — This pre-commits the prospect to giving you a real answer at the end. Without this setup, the trial close at the end feels abrupt. With it, it feels expected.</p>

  <p>(2) <strong>“If we’re not the right fit, I’ll tell you that”</strong> — This is disarming. Most salespeople would never say this. By saying it, you position yourself as an advisor, not a closer. The prospect’s guard goes down.</p>

  <p>(3) <strong>“Fair?”</strong> — One word that creates a micro-agreement. When they say “fair” or “sounds good,” they’ve psychologically committed to the framework. This makes the trial close at the end feel like following through on a mutual agreement, not a surprise sales tactic.</p>
</blockquote>

<h3 id="why-you-dont-show-the-product-yet">Why You Don’t Show the Product Yet</h3>

<p>Notice that Acts 1 and 2 are three minutes long and the product hasn’t appeared on screen. This is deliberate. The first three minutes are a <strong>framing exercise</strong>. You’re setting the lens through which they’ll see everything else. Without this framing, the prospect watches the demo through their own random lens — “is this easy to use?” / “does this look modern?” / “I wonder if this integrates with Salesforce.” With the framing, they watch through the lens you set: “does this solve my three problems?”</p>

<blockquote>
  <p><strong>Insight:</strong> The best demo you’ll ever give has 3 minutes of no product and 22 minutes of targeted product. The worst demo you’ll ever give has 25 minutes of product and 0 minutes of context.</p>
</blockquote>

<hr />

<h1 id="06-act-3-pain--solution-mapping-15-minutes">06 Act 3: Pain → Solution Mapping (15 Minutes)</h1>

<p><strong>Goal:</strong> Show exactly how your product solves their top 3 problems. Organized by <em>their</em> problems, not by <em>your</em> product’s navigation. Every click on screen should connect back to something they told you in discovery.</p>

<h2 id="the-structure-for-each-pain">The Structure for Each Pain</h2>

<p>For each of the three pains, follow this micro-structure (5 minutes per pain):</p>

<table>
  <thead>
    <tr>
      <th>Step</th>
      <th>Duration</th>
      <th>What You Say</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>1. Restate the pain</strong></td>
      <td>15 sec</td>
      <td>“You mentioned that <code class="language-plaintext highlighter-rouge">was costing you</code>.”</td>
    </tr>
    <tr>
      <td><strong>2. Show the solution</strong></td>
      <td>3 min</td>
      <td>“Let me show you exactly how that changes.” [Live demo of the specific workflow]</td>
    </tr>
    <tr>
      <td><strong>3. Quantify the impact</strong></td>
      <td>30 sec</td>
      <td>“For a team your size, this typically saves <code class="language-plaintext highlighter-rouge">or</code>.”</td>
    </tr>
    <tr>
      <td><strong>4. Check in</strong></td>
      <td>30 sec</td>
      <td>“Does that match what you’d expect? Is there anything I’m not showing that you’d want to see?”</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p><strong>The check-in is non-negotiable.</strong> After each pain block, pause and ask. This does three things: (1) confirms you’re on the right track, (2) surfaces hidden objections early, and (3) keeps the prospect engaged instead of passively watching. If they say “actually, we’d need it to also do X” — that’s gold. That’s a requirement you can solve for in the next round.</p>
</blockquote>

<h2 id="worked-example-1-selling-a-spend-management-platform-to-a-cfo">Worked Example 1: Selling a Spend Management Platform to a CFO</h2>

<hr />

<p><strong>Pain #1</strong> · “We have no visibility into department-level spending”</p>

<p><strong>Restate:</strong> “You mentioned that right now, if the CEO asks you ‘how much did engineering spend on cloud last quarter,’ it takes your team 2-3 days to pull that number from spreadsheets and expense reports.”</p>

<p><strong>Show:</strong> [Opens the platform, which is pre-configured with the prospect’s department structure and realistic spend data]</p>

<p>“This is what your spend looks like in our platform. I’ve set up your department structure — engineering, product, sales, marketing. Watch what happens when I click into engineering…”</p>

<p>[Clicks. Shows real-time spend broken down by vendor, team, and month.]</p>

<p>“That 2-3 day question? It’s now a 10-second answer. And it updates in real-time as transactions come in.”</p>

<p><strong>Quantify:</strong> “For a finance team your size, our customers typically reclaim 15-20 hours per month that were going into manual spend reconciliation.”</p>

<p><strong>Check-in:</strong> “Does that match the problem you’re seeing? Is there a specific cut of the data you’d want that I’m not showing?”</p>

<hr />

<h2 id="worked-example-2-selling-an-observability-tool-to-a-vp-of-engineering">Worked Example 2: Selling an Observability Tool to a VP of Engineering</h2>

<hr />

<p><strong>Pain #2</strong> · “When something breaks in production, it takes 45 minutes to find the root cause”</p>

<p><strong>Restate:</strong> “You told me that your MTTR is around 45 minutes, and most of that time is engineers jumping between Datadog, CloudWatch, and Slack trying to correlate events.”</p>

<p><strong>Show:</strong> [Opens a pre-configured incident scenario using their actual service names]</p>

<p>“I’ve set up a simulated incident for your checkout-service. Watch what happens when the error rate spikes…”</p>

<p>[Shows the platform automatically correlating logs, traces, and metrics. Root cause highlighted in red.]</p>

<p>“The platform identified the root cause in 90 seconds — it was a config change in the payment gateway that increased latency by 400%. No tab-switching, no manual correlation.”</p>

<p><strong>Quantify:</strong> “Going from 45-minute MTTR to under 5 minutes — for a team shipping to 2M users, that’s the difference between a P1 incident and a blip nobody notices.”</p>

<p><strong>Check-in:</strong> “Is that the kind of incident you’d typically see? Or are your root causes usually somewhere else?”</p>

<hr />

<h2 id="worked-example-3-selling-an-hr-platform-to-a-vp-of-people">Worked Example 3: Selling an HR Platform to a VP of People</h2>

<hr />

<p><strong>Pain #3</strong> · “Our onboarding process is a mess — new hires don’t feel productive for 3-4 weeks”</p>

<p><strong>Restate:</strong> “You said new hires are getting a Google Doc with 47 links on day one and basically left to figure it out. The result is 3-4 weeks before they’re productive, and about 15% of new hires cite onboarding as a reason for leaving within 6 months.”</p>

<p><strong>Show:</strong> [Opens a pre-built onboarding workflow with the prospect’s company branding]</p>

<p>“This is what Day 1 looks like for a new hire at `` in our platform. Instead of a Google Doc, they get a guided experience — tasks show up in sequence, each one has a responsible person, and their manager gets a dashboard showing exactly where they are.”</p>

<p>[Clicks through the new hire’s view, then switches to the manager’s dashboard.]</p>

<p>“No more ‘did you set up your Okta yet?’ Slack messages. The manager can see it all in one place.”</p>

<p><strong>Quantify:</strong> “Our customers at your stage typically see time-to-productivity drop from 3-4 weeks to 8-10 days. For a company hiring 15 people per quarter, that’s roughly 60 productive days per year you’re getting back.”</p>

<p><strong>Check-in:</strong> “Does that workflow match how you’d want onboarding to look? Anything you’d change?”</p>

<hr />

<blockquote>
  <p><strong>The pattern across all three examples:</strong> (1) Restate the pain in their words with their numbers. (2) Show the product solving that exact pain with their data. (3) Quantify the impact in terms that matter to them. (4) Check in to keep them engaged and surface objections. This is not a feature tour. It’s a problem-solving conversation with live evidence.</p>
</blockquote>

<h2 id="transition-between-pains">Transition Between Pains</h2>

<p>Don’t just jump to the next feature. Use a transition that reinforces the emotional arc:</p>

<hr />

<p>“Great — so that’s how we handle <code class="language-plaintext highlighter-rouge">. The second thing you mentioned was</code>, and you said it was actually the one causing the most friction with your team. Let me show you how that changes…”</p>

<hr />

<hr />

<h1 id="07-act-4-differentiation-5-minutes">07 Act 4: Differentiation (5 Minutes)</h1>

<p><strong>Goal:</strong> Position against competitors and alternatives without trashing anyone. The prospect is almost certainly evaluating 2–3 other solutions. They’re thinking “why this over X?” even if they don’t say it. Address it head-on.</p>

<h2 id="the-golden-rule-of-competitive-positioning">The Golden Rule of Competitive Positioning</h2>

<blockquote>
  <p><strong>Insight:</strong> Never trash a competitor. The moment you say “Competitor X is terrible because…” you look insecure, you insult the prospect’s intelligence (they might have liked that product), and you turn the conversation into a debate instead of a decision. Instead: acknowledge the competitor, name the specific difference, and let the prospect decide.</p>
</blockquote>

<h2 id="the-script-framework">The Script Framework</h2>

<hr />

<p><strong>Competitive positioning script</strong> · Adapt to your specific competitors</p>

<p>“You might be wondering how this compares to ``, since I know you’re [evaluating them / using them today]. Totally fair question.</p>

<p><code class="language-plaintext highlighter-rouge">is a good product — they do</code> well. The key difference is ``.</p>

<p>Specifically:</p>

<p><strong>They optimize for</strong> <code class="language-plaintext highlighter-rouge">. **We optimize for**</code>.</p>

<p>For a team like yours, where the priority is <code class="language-plaintext highlighter-rouge">, that difference matters because</code>.”</p>

<hr />

<h3 id="example-positioning-against-an-incumbent">Example: Positioning Against an Incumbent</h3>

<hr />

<p><strong>Example</strong> · Selling a modern data platform against a legacy tool</p>

<p>“I know you’re currently using Informatica for your ETL pipelines. Informatica is a proven tool — they’ve been in the market for 20+ years and they handle complex enterprise transformations well.</p>

<p>The key difference is speed of iteration. Informatica was built for a world where data pipelines change quarterly. Our platform was built for a world where they change daily. When your data team needs to add a new source or modify a transformation, it takes minutes in our tool versus the weeks you described in discovery.</p>

<p>For a team that’s trying to become more data-driven and move faster, that iteration speed is the difference between the data team being a bottleneck and the data team being an accelerator.”</p>

<hr />

<blockquote>
  <p><strong>What this does:</strong> (1) Acknowledges Informatica is good — this builds credibility. (2) Doesn’t list 10 differences — picks the ONE that matters most to this prospect. (3) Connects the differentiation back to their stated priority from discovery. (4) Positions it as a trade-off, not a “we’re better” claim.</p>
</blockquote>

<h2 id="handling-why-not-just-build-it-ourselves">Handling “Why Not Just Build It Ourselves?”</h2>

<hr />

<p>“That’s a fair question, and a lot of engineering-led companies consider it. Here’s what we’ve seen: teams that build in-house spend 3–6 months getting to a V1 that covers maybe 60% of what you’d need. Then the engineer who built it leaves, or priorities shift, and the internal tool becomes legacy code that nobody wants to maintain.</p>

<p>The math usually comes down to this: your engineers cost you $150–$200K/year fully loaded. Two engineers for 6 months is $150–$200K in opportunity cost — and that’s just the build, not the ongoing maintenance. Our platform costs ``/year, it’s maintained by a team of 50 engineers, and it’s production-ready today.</p>

<p>The question isn’t whether you <em>can</em> build it — you absolutely can. The question is whether you <em>should</em> build it, given everything else your engineering team could be working on.”</p>

<hr />

<h2 id="handling-were-also-looking-at-competitor">Handling “We’re Also Looking at [Competitor]”</h2>

<hr />

<p>“Good — you should be. We’d want you to make an informed decision. Can I share what we hear from customers who’ve evaluated both?</p>

<p>The typical feedback is: <code class="language-plaintext highlighter-rouge">is easier to set up for simple use cases, and our platform is stronger when you need</code>. Given what you told me about ``, I think you’ll find that’s where the decision hinges.</p>

<p>Happy to do a side-by-side if that would be helpful.”</p>

<hr />

<hr />

<h1 id="08-act-5-close-the-demo-2-minutes">08 Act 5: Close the Demo (2 Minutes)</h1>

<p><strong>Goal:</strong> Get a clear signal. Don’t leave the demo without knowing where you stand. The trial close is the moment of truth — and it only feels natural because you set it up with the fairness contract in Act 2.</p>

<h2 id="the-trial-close-script">The Trial Close Script</h2>

<hr />

<p><strong>The trial close</strong> · This is where the deal moves forward or stalls</p>

<p>“So we covered the three things we discussed: <code class="language-plaintext highlighter-rouge">,</code>, and ``.</p>

<p>I promised I’d ask you straight: <strong>based on what you’ve seen today, does this solve the problems we discussed?</strong>”</p>

<hr />

<p>Then <strong>stop talking</strong>. Do not fill the silence. Let them answer. The silence is uncomfortable for you, not for them. They’re processing. Give them space.</p>

<h2 id="handling-the-three-responses">Handling the Three Responses</h2>

<h3 id="response-1-yes-this-looks-great">Response 1: “Yes, this looks great.”</h3>

<hr />

<p>“That’s great to hear. Let’s talk about next steps. Typically, after a demo like this, the next move is ``. Does that make sense for your process?</p>

<p>Who else would need to be involved in the decision? And what does your timeline look like — is this something you’re looking to solve this quarter, or is it more of a next-quarter initiative?”</p>

<hr />

<blockquote>
  <p><strong>Why you ask about timeline and decision-makers:</strong> A “yes” without a next step is a polite brush-off. The questions above convert a vague “yes” into a concrete action with a timeline. If they can’t answer these questions, the “yes” might not be as strong as it sounded.</p>
</blockquote>

<h3 id="response-2-mostly-but-i-have-some-concerns-about-x">Response 2: “Mostly, but I have some concerns about X.”</h3>

<hr />

<p>“Tell me more about that. What specifically about `` is giving you pause?”</p>

<p>[Listen. Don’t defend. Understand the concern fully before responding.]</p>

<p>“That makes sense. Here’s how we’ve addressed that for other customers in your situation: ``. Does that address the concern, or is there something deeper I’m missing?”</p>

<hr />

<h3 id="response-3-im-not-sure-i-need-to-think-about-it">Response 3: “I’m not sure. I need to think about it.”</h3>

<hr />

<p>“Totally fair. Can I ask — what specifically would you need to see or know to feel confident one way or the other? Is it a technical question, a business case question, or something else?</p>

<p>I ask because I’d rather address it now than have it linger. And if the answer is ‘this isn’t the right solution,’ I’d genuinely rather hear that so we don’t waste each other’s time.”</p>

<hr />

<blockquote>
  <p><strong>Why this works:</strong> “I’m not sure” usually means one of three things: (a) they liked it but can’t make the decision alone, (b) they have a specific concern they haven’t voiced, or (c) they’re politely saying no. The script above surfaces which one it is. The line “I’d genuinely rather hear that” gives them psychological permission to be honest.</p>
</blockquote>

<h2 id="locking-in-the-next-step">Locking in the Next Step</h2>

<p>Before you hang up, you must have <strong>one of these</strong> confirmed:</p>

<table>
  <thead>
    <tr>
      <th>Outcome</th>
      <th>What You Say</th>
      <th>What Happens Next</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>**Strong yes</strong>**</td>
      <td>“Let’s get a proposal together. I’ll send one by EOD tomorrow. Can we book 30 min on Thursday to walk through it?”</td>
      <td>Send proposal. Book review meeting. Move to negotiation.</td>
    </tr>
    <tr>
      <td><strong>**Technical eval</strong>**</td>
      <td>“Let’s set up a technical deep-dive with your engineering team and our SE. How does next Tuesday look?”</td>
      <td>Book SE call. Send technical docs. Begin POC planning.</td>
    </tr>
    <tr>
      <td><strong>**Broader team</strong>**</td>
      <td>“Can we do a 30-minute session with the broader team? I’ll tailor it to what they care about. Can you help me understand who’d be in the room?”</td>
      <td>Map the buying committee. Prep multi-stakeholder demo.</td>
    </tr>
    <tr>
      <td><strong>**Need to think</strong>**</td>
      <td>“No problem. I’ll send a summary of what we covered with the relevant case study. Can I follow up on Wednesday to see where your head is at?”</td>
      <td>Send recap email within 2 hours. Follow up on the agreed date.</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p><strong>Never leave a demo with “we’ll be in touch.”</strong> If you don’t book the next step on the call, the probability of the deal moving forward drops by 80%. The next meeting should be scheduled before you hang up. Pull up your calendar. Pull up theirs. Book it live.</p>
</blockquote>

<hr />

<p>Part III</p>

<p>Advanced Techniques</p>

<p>When demos get complicated — multiple stakeholders, hostile objections, technical deep-dives, and live bugs. These situations separate good AEs from great ones.</p>

<h1 id="09-multi-stakeholder-demos">09 Multi-Stakeholder Demos</h1>

<p>The hardest demo is the one with 5+ people in the room. Each person has different concerns, different knowledge levels, and different decision-making authority. If you treat it as a single-audience presentation, you’ll satisfy nobody.</p>

<h2 id="the-room-map">The Room Map</h2>

<p>Before the demo, create a map of who’s in the room and what each person needs to hear:</p>

<table>
  <thead>
    <tr>
      <th>Person</th>
      <th>Role</th>
      <th>Their Question</th>
      <th>Your Move</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Sarah (Champion)</strong></td>
      <td>Director of Ops</td>
      <td>“Will this make me look good?”</td>
      <td>Reference her discovery insights. Make her the hero who found the solution.</td>
    </tr>
    <tr>
      <td><strong>Mike (Economic Buyer)</strong></td>
      <td>VP Finance</td>
      <td>“What’s the ROI?”</td>
      <td>Lead with cost savings. Mention the payback period. Show the business case.</td>
    </tr>
    <tr>
      <td><strong>Priya (Technical)</strong></td>
      <td>Sr. Engineer</td>
      <td>“Does this actually work?”</td>
      <td>Show integrations. Mention the API. Offer a technical deep-dive as next step.</td>
    </tr>
    <tr>
      <td><strong>Jason (End User)</strong></td>
      <td>Ops Analyst</td>
      <td>“Will my life get easier?”</td>
      <td>Show the daily workflow. Count the clicks. Show the time saved.</td>
    </tr>
    <tr>
      <td><strong>Karen (Skeptic)</strong></td>
      <td>Director of IT</td>
      <td>“What could go wrong?”</td>
      <td>Address security. Discuss migration risk. Offer references from her peers.</td>
    </tr>
  </tbody>
</table>

<h2 id="the-multi-stakeholder-script">The Multi-Stakeholder Script</h2>

<hr />

<p><strong>Opening with multiple people</strong></p>

<p>“Thanks everyone for making time. I know this is a big group, so I want to use your time well.</p>

<p>Sarah and I have been talking for a few weeks, and we identified three areas where the team is losing time and money. I’ll walk through how we solve each one — and I’ll make sure to cover the technical details for Priya, the business case for Mike, and the daily workflow for Jason.</p>

<p>If at any point I’m not covering what you care about, please interrupt me. I’d rather answer your real question than present something that’s not relevant to you.”</p>

<hr />

<blockquote>
  <p><strong>Why name-check each person:</strong> (1) It shows you know who they are and what they care about. (2) It gives each person a reason to pay attention — they know their moment is coming. (3) “Please interrupt me” is disarming and establishes that this is a conversation, not a presentation.</p>
</blockquote>

<h2 id="managing-the-skeptic">Managing the Skeptic</h2>

<p>Every multi-stakeholder demo has a skeptic. They sit with their arms crossed. They ask pointed questions. They’re trying to protect the status quo. <strong>Do not ignore them.</strong> The skeptic is often the most influential person in the room because their objection becomes everyone else’s excuse not to move forward.</p>

<hr />

<p><strong>When the skeptic challenges you</strong></p>

<p><strong>Skeptic:</strong> “We tried something like this two years ago and it was a disaster.”</p>

<p><strong>You:</strong> “That’s important context — thanks for raising it. Can you tell me what specifically went wrong? I want to make sure we’re not walking into the same problem.”</p>

<p>[Listen carefully. Take notes visibly.]</p>

<p>“So it sounds like the main issue was <code class="language-plaintext highlighter-rouge">. That's actually one of the reasons we built</code> the way we did. Let me show you specifically how it’s different…”</p>

<p>[Show the feature. Then address the room:]</p>

<p>“Karen, does that address the concern, or is there more I should dig into?”</p>

<hr />

<blockquote>
  <p><strong>The skeptic play:</strong> If you convert the skeptic into a supporter during the demo, the deal is essentially closed. Nobody else in the room will have a stronger objection than the skeptic. Win them, win the room.</p>
</blockquote>

<hr />

<h1 id="10-live-objection-handling">10 Live Objection Handling</h1>

<p>Objections during a demo are not problems — they’re buying signals. A prospect who doesn’t object isn’t engaged. A prospect who objects is processing how this would work in their world. That’s exactly where you want them.</p>

<h2 id="the-6-most-common-demo-objections">The 6 Most Common Demo Objections</h2>

<h3 id="objection-1-it-looks-complicated">Objection 1: “It looks complicated.”</h3>

<hr />

<p>“I appreciate you saying that — I’d rather you tell me now than think it silently.</p>

<p>Let me ask: which part specifically felt complicated? Was it the setup/configuration, or the daily workflow?</p>

<p>[If setup:] The setup is something our implementation team handles. Your team doesn’t touch it. What they interact with is the daily workflow, which is this screen right here — [show the simplified daily view]. For ``, their entire workflow is these 3 clicks.</p>

<p>[If daily workflow:] That’s fair — I probably showed too much in one pass. Let me zoom in on the only screen your team would use daily — [show simplified view]. Everything else is admin configuration that gets set up once.”</p>

<hr />

<h3 id="objection-2-we-tried-something-similar-before">Objection 2: “We tried something similar before.”</h3>

<hr />

<p>“What did you try, and what went wrong?</p>

<p>[Listen. Don’t interrupt. Take notes.]</p>

<p>So the issue was <code class="language-plaintext highlighter-rouge">. That's a legitimate concern. Here's what's different about our approach:</code>.</p>

<p>I can also connect you with <code class="language-plaintext highlighter-rouge">who had the same concern — they were burned by</code> before switching to us. They can give you an unfiltered take on whether this is actually different.”</p>

<hr />

<h3 id="objection-3-how-does-this-integrate-with-x">Objection 3: “How does this integrate with X?”</h3>

<hr />

<p>“Great question. We have a native integration with ``.</p>

<p>[If you do:] Let me show you — [live demo of the integration]. Data flows in real-time, and the setup takes about 15 minutes.</p>

<p>[If you don’t, but have an API:] We don’t have a pre-built integration with ``, but our API covers 100% of the platform functionality. Our customers typically build the integration in 1–2 days using our API docs and sample code. I can connect you with our SE to walk through the technical details.</p>

<p>[If you don’t and it’s a real gap:] Honestly, we don’t integrate with `` today. It’s on our roadmap for Q3, but I don’t want to sell you on a promise. If that integration is a hard requirement for day one, I want to be upfront about that. Is it a dealbreaker, or is it something that can come later?”</p>

<hr />

<blockquote>
  <p><strong>Why honesty about gaps wins deals:</strong> When you say “we don’t have that today,” you build more trust than any feature claim ever could. The prospect thinks: “If they’re honest about what they can’t do, I can trust what they say about what they can do.” The reps who lose deals are the ones who say “yes, we can do that” to everything and get caught in the technical evaluation.</p>
</blockquote>

<h3 id="objection-4-what-about-security">Objection 4: “What about security?”</h3>

<hr />

<p>“Important question. Let me give you the quick summary, and then I’ll share our full security documentation.</p>

<p>We’re SOC 2 Type II certified, data is encrypted at rest and in transit, we support SSO through ``, and we offer role-based access control. We can deploy in your VPC if that’s a requirement, and we go through a third-party penetration test every quarter.</p>

<p>I’ll send over our security questionnaire responses — we have a pre-filled version for the standard 300-question enterprise security review. And I can connect you with our security team directly if there are specific concerns.”</p>

<hr />

<h3 id="objection-5-this-seems-expensive">Objection 5: “This seems expensive.”</h3>

<hr />

<p>“I understand. Let me frame it differently.</p>

<p>You mentioned earlier that <code class="language-plaintext highlighter-rouge">is costing you roughly</code>. Our platform costs <code class="language-plaintext highlighter-rouge">/year. So the question isn't whether</code> is a lot of money — it is. The question is whether it’s less than ``.</p>

<p>Our average customer sees ROI within ``. I can build out a detailed business case for your specific situation if that would help the internal conversation.”</p>

<hr />

<h3 id="objection-6-we-need-to-discuss-internally">Objection 6: “We need to discuss internally.”</h3>

<hr />

<p>“Absolutely — that makes total sense. Can I ask: what specifically do you need to discuss? Is it the budget, the technical fit, or the timing?</p>

<p>I ask because I might be able to provide materials that make that conversation easier. If it’s budget, I can send a one-page business case. If it’s technical, I can have our SE join a call with your team. If it’s timing, I can share how other customers have phased the implementation.</p>

<p>When are you planning to have that discussion? I’d like to follow up right after so we don’t lose momentum.”</p>

<hr />

<blockquote>
  <p><strong>The meta-pattern:</strong> Every objection response follows the same structure: (1) Validate the concern. (2) Ask a clarifying question to understand what’s really behind it. (3) Respond to the <em>real</em> concern, not the surface-level one. (4) Offer a concrete next step to resolve it. Never be defensive. Never dismiss. Never argue.</p>
</blockquote>

<hr />

<h1 id="11-the-technical-deep-dive">11 The Technical Deep-Dive</h1>

<p>At some point in an enterprise sale, the technical evaluator needs to go deep. This is where the Solutions Engineer (SE) takes over. The AE’s job during the technical deep-dive is <strong>not</strong> to sit silently and check email. It is to manage the room.</p>

<h2 id="the-handoff-script">The Handoff Script</h2>

<hr />

<p><strong>AE to SE handoff</strong></p>

<p>“We’ve covered the business side — now I know <code class="language-plaintext highlighter-rouge">has some deeper questions about how this works under the hood. I'm going to hand it over to</code>, who’s been building integrations for customers in your space for the last 3 years. <code class="language-plaintext highlighter-rouge">, take it away — and</code>, please don’t hold back.”</p>

<hr />

<blockquote>
  <p><strong>Why “don’t hold back” matters:</strong> Technical evaluators are often hesitant to ask hard questions in front of their boss. Giving them explicit permission to go deep makes them feel respected — and it shows confidence in your product. If your SE can handle the toughest technical questions, the evaluator becomes an internal advocate instead of a blocker.</p>
</blockquote>

<h2 id="what-the-ae-should-do-while-the-se-is-driving">What the AE Should Do While the SE Is Driving</h2>

<table>
  <thead>
    <tr>
      <th>Task</th>
      <th>Why It Matters</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Watch the economic buyer’s face</strong></td>
      <td>Are they engaged or checked out? If they’re on their phone, the technical deep-dive isn’t relevant to them. Plan to circle back with them separately on the business case.</td>
    </tr>
    <tr>
      <td><strong>Watch the champion’s reactions</strong></td>
      <td>Are they nodding? Are they frowning? Your champion’s body language during the tech deep-dive tells you whether they’re gaining or losing confidence.</td>
    </tr>
    <tr>
      <td><strong>Take notes on every question asked</strong></td>
      <td>Every question from the technical evaluator is a requirement. Log them. You’ll use these in the follow-up email and the proposal.</td>
    </tr>
    <tr>
      <td><strong>Note the skeptic’s objections</strong></td>
      <td>The skeptic will use the technical session to probe for weaknesses. Write down every concern they raise. You’ll need to address each one in writing later.</td>
    </tr>
    <tr>
      <td><strong>Watch the clock</strong></td>
      <td>Technical deep-dives can spiral. If you’re running over time and the economic buyer is losing patience, it’s your job to say: “Let’s bookmark the remaining questions and set up a dedicated technical session.”</td>
    </tr>
    <tr>
      <td><strong>Prepare the close</strong></td>
      <td>When the SE wraps up, you need to smoothly take back control and deliver the trial close from Act 5. Have it ready.</td>
    </tr>
  </tbody>
</table>

<h2 id="taking-back-control">Taking Back Control</h2>

<hr />

<p><strong>SE to AE handback</strong></p>

<p>“Thanks <code class="language-plaintext highlighter-rouge">— and</code>, great questions. We’ll send over the API documentation and the architecture diagram you asked about after this call.</p>

<p>I want to zoom back out for a second and ask the bigger question: based on what you’ve seen today — both the business workflow and the technical deep-dive — does this solve the problems we discussed at the start?”</p>

<hr />

<hr />

<h1 id="12-demo-environment-best-practices">12 Demo Environment Best Practices</h1>

<p>Your demo environment is your stage. A messy stage kills the performance even if the actor is brilliant.</p>

<h2 id="custom-vs-generic-data">Custom vs Generic Data</h2>

<table>
  <thead>
    <tr>
      <th>Approach</th>
      <th>When to Use</th>
      <th>Effort</th>
      <th>Impact on Win Rate</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>**Fully custom</strong>**   Their logo, their data, their team names</td>
      <td>Enterprise deals &gt;$50K ACV. Named accounts. Multi-stakeholder demos.</td>
      <td>30–60 min setup</td>
      <td><strong>+25–40%</strong></td>
    </tr>
    <tr>
      <td><strong>**Semi-custom</strong>**   Industry-specific data, their company name</td>
      <td>Mid-market deals. First demo with a single champion.</td>
      <td>10–15 min setup</td>
      <td><strong>+10–20%</strong></td>
    </tr>
    <tr>
      <td><strong>**Generic</strong>**   “Acme Corp” sample data</td>
      <td>Never in enterprise. Only acceptable for high-volume product-led demos.</td>
      <td>0 min</td>
      <td><strong>Baseline</strong></td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p><strong>The rule:</strong> If you can see the prospect’s company name and logo in your demo environment, you’ve done enough customization. If you can see their actual team names, department structure, or realistic data, you’ve done exceptional customization. If they see “Acme Corp” or “John Doe” sample data, you haven’t prepared enough.</p>
</blockquote>

<h2 id="what-to-pre-configure">What to Pre-Configure</h2>

<ul>
  <li><strong>Company name and logo</strong> in the platform header and any reports.</li>
  <li><strong>Department/team structure</strong> that mirrors their org chart.</li>
  <li><strong>Realistic data volumes</strong> — if they have 500 employees, don’t demo with data for 10. If they process 10K transactions/month, load that volume.</li>
  <li><strong>Integration connections</strong> that show their actual tools (Salesforce, Slack, Jira, whatever they use) connected and working.</li>
  <li><strong>A “hero workflow”</strong> pre-built and ready to demonstrate. Don’t configure things live unless the configuration itself is the selling point.</li>
  <li><strong>Pre-load the exact screens</strong> you need in browser tabs. No searching for things during the demo.</li>
</ul>

<h2 id="handling-live-bugs-and-errors">Handling Live Bugs and Errors</h2>

<p>Things will break. The question is not <em>if</em> but <em>when</em>. How you handle it determines whether it kills the deal or builds trust.</p>

<table>
  <thead>
    <tr>
      <th>Scenario</th>
      <th>Bad Response</th>
      <th>Good Response</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Page won’t load</strong></td>
      <td>“Sorry, let me just… um… let me try refreshing… one second…”</td>
      <td><strong>“That’s unusual — let me switch to my backup while this catches up.” [Switch to screenshots or pre-recorded clip.] “I’ll make sure our team looks into this, but here’s exactly what this screen shows…“</strong></td>
    </tr>
    <tr>
      <td><strong>Data looks wrong</strong></td>
      <td>“Hmm, that doesn’t look right. That’s weird. I’m not sure why it’s showing that…”</td>
      <td><strong>“Good eye — this is our sandbox environment, so the data isn’t always perfectly in sync. In production with your real data, this would show [describe correct behavior]. Let me show you a screenshot from a production customer…“</strong></td>
    </tr>
    <tr>
      <td><strong>Feature doesn’t work as expected</strong></td>
      <td>“Oh, that must be a bug. I’ll report it. Anyway, moving on…”</td>
      <td><strong>“That’s not the expected behavior — I want to be transparent about that. Let me show you what this normally looks like [show backup], and I’ll have our engineering team investigate before our next call. I’ll send you a follow-up with the resolution.”</strong></td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p><strong>The principle:</strong> Never panic. Never apologize excessively. Acknowledge, switch to backup, and move on. Prospects expect software to have hiccups. What they’re evaluating is how your team handles problems — because that’s how you’ll handle their problems as a customer.</p>
</blockquote>

<h2 id="the-thats-a-great-question-save">The “That’s a Great Question” Save</h2>

<p>When a prospect asks to see something you didn’t prepare:</p>

<hr />

<p>“That’s a great question, and I actually want to show you that properly rather than fumble through it live. Can I set up a dedicated walkthrough of `` and send you a recording by end of day tomorrow? That way you get to see it with your actual use case configured, not a rushed version.”</p>

<hr />

<p>This works because it (1) validates their request, (2) sets up a follow-up touchpoint, and (3) avoids a fumbled live demo that could undermine everything you’ve shown so far. It’s always better to say “let me show you that properly” than to wing it and fail.</p>

<hr />

<p>Part IV</p>

<p>Templates</p>

<p>Printable checklists, follow-up email templates, and the top demo mistakes ranked by deal impact. Steal these and make them your own.</p>

<h1 id="13-demo-prep-checklist">13 Demo Prep Checklist</h1>

<p>Print this. Use it before every demo. If you can’t check every box, you’re not ready.</p>

<p><strong>DEMO PREP CHECKLIST</strong><br />
Complete before every enterprise demo</p>

<p><strong>RESEARCH</strong><br />
☐ Reviewed all discovery notes (their exact words highlighted)<br />
☐ Identified and ranked their top 3 pains<br />
☐ Quantified each pain in dollars or hours<br />
☐ LinkedIn-reviewed every attendee (role, tenure, concerns)<br />
☐ Identified the champion, economic buyer, technical evaluator, and skeptic<br />
☐ Researched what competitors they’re evaluating</p>

<p><strong>CUSTOMIZATION</strong><br />
☐ Demo environment loaded with their company name and logo<br />
☐ Realistic data matching their scale (employees, transactions, etc.)<br />
☐ Department/team structure mirrors their org<br />
☐ Integration connections show their actual tools<br />
☐ Hero workflow pre-built and ready to demonstrate</p>

<p><strong>PREPARATION</strong><br />
☐ Click path mapped (exact sequence of screens, zero improvisation)<br />
☐ Written out the discovery recap (their words, their numbers)<br />
☐ Prepared the agenda script with the fairness contract<br />
☐ Prepared transitions between each pain block<br />
☐ Written word-for-word responses for 3 most likely objections<br />
☐ Prepared competitive positioning for their likely alternatives<br />
☐ Trial close script ready</p>

<p><strong>TECHNICAL</strong><br />
☐ Demo environment tested — all screens load correctly<br />
☐ Screen sharing tested on the platform they use (Zoom, Teams, Meet)<br />
☐ Audio/video tested<br />
☐ Browser tabs pre-loaded in the right order<br />
☐ Backup screenshots/recording ready in case of live issues<br />
☐ SE briefed and aligned on their role (if technical deep-dive expected)</p>

<p><strong>LOGISTICS</strong><br />
☐ Calendar invite sent with agenda<br />
☐ Joined the call 5 minutes early<br />
☐ Notifications silenced (Slack, email, phone)<br />
☐ Clean desktop (no embarrassing browser tabs or Slack messages visible)</p>

<hr />

<h1 id="14-post-demo-follow-up">14 Post-Demo Follow-Up</h1>

<p>The follow-up email goes out <strong>within 2 hours</strong> of the demo ending. Not tomorrow. Not end of week. Within 2 hours. Speed signals professionalism and keeps the momentum alive while the demo is still fresh in the prospect’s mind.</p>

<h2 id="the-follow-up-template">The Follow-Up Template</h2>

<hr />

<p>To: **<code class="language-plaintext highlighter-rouge">** (CC:</code>) · Sent within 2 hours</p>

<p><strong>Re: `` Demo — Recap &amp; Next Steps</strong></p>

<p>Hi ``,</p>

<p>Thanks for the time today — and thanks to everyone who joined. Great conversation.</p>

<p><strong>Quick recap of what we covered:</strong></p>

<p>**Problem 1: <code class="language-plaintext highlighter-rouge">**  
We showed how</code> handles this by <code class="language-plaintext highlighter-rouge">. For a team your size, customers typically see</code>.</p>

<p>**Problem 2: <code class="language-plaintext highlighter-rouge">**  
We demonstrated</code>. The key metric: ``.</p>

<p>**Problem 3: <code class="language-plaintext highlighter-rouge">**  
We walked through</code>, which typically results in ``.</p>

<p><strong>Open questions from the call:</strong><br />
• <code class="language-plaintext highlighter-rouge">—</code><br />
• <code class="language-plaintext highlighter-rouge">—</code></p>

<p><strong>Agreed next steps:</strong><br />
• <code class="language-plaintext highlighter-rouge"> 
•</code></p>

<p>I also attached a case study from <code class="language-plaintext highlighter-rouge">— they had a nearly identical situation and saw</code> within ``.</p>

<p>Looking forward to Thursday.</p>

<p>``</p>

<hr />

<blockquote>
  <p><strong>Why this template works:</strong> (1) It’s organized around their problems, not your product — reinforcing the pain-based framing. (2) It documents what was shown and the expected impact, giving the champion ammunition for internal conversations. (3) It explicitly lists open questions with timelines, showing you listened and will follow through. (4) It confirms next steps in writing, creating accountability on both sides. (5) The case study gives them a peer reference they can review on their own.</p>
</blockquote>

<h2 id="what-to-attach">What to Attach</h2>

<table>
  <thead>
    <tr>
      <th>Attachment</th>
      <th>When to Include</th>
      <th>Why</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Case study</strong></td>
      <td>Always</td>
      <td>Same industry, similar problem, quantified results. The prospect will forward this internally.</td>
    </tr>
    <tr>
      <td><strong>1-page product overview</strong></td>
      <td>If new stakeholders may join later</td>
      <td>Something the champion can forward to people who weren’t on the call.</td>
    </tr>
    <tr>
      <td><strong>ROI calculator</strong></td>
      <td>If the economic buyer was on the call</td>
      <td>Helps them build the internal business case. Pre-fill it with the numbers discussed.</td>
    </tr>
    <tr>
      <td><strong>Security documentation</strong></td>
      <td>If security was raised</td>
      <td>Gets the IT/security review started in parallel. Don’t wait for them to ask.</td>
    </tr>
    <tr>
      <td><strong>Technical architecture doc</strong></td>
      <td>If a technical deep-dive is scheduled</td>
      <td>Gives the technical evaluator time to review before the SE call.</td>
    </tr>
  </tbody>
</table>

<hr />

<h1 id="15-common-demo-mistakes--the-top-12">15 Common Demo Mistakes — The Top 12</h1>

<p>These are ranked by deal impact. Mistake #1 kills more deals than #12.</p>

<table>
  <thead>
    <tr>
      <th>#</th>
      <th>Mistake</th>
      <th>Deal Impact</th>
      <th>Before (Bad)</th>
      <th>After (Good)</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>1</strong></td>
      <td><strong>**No discovery recap</strong>**</td>
      <td><strong>Fatal</strong></td>
      <td>“Let me start by giving you an overview of our platform.”</td>
      <td><strong>“Last time we spoke, you mentioned three things keeping you up at night…“</strong></td>
    </tr>
    <tr>
      <td><strong>2</strong></td>
      <td><strong>**Feature tour structure</strong>**</td>
      <td><strong>Fatal</strong></td>
      <td>Demo follows the product’s menu navigation: Dashboard → Reports → Settings</td>
      <td><strong>Demo follows their pains: Pain #1 → Pain #2 → Pain #3</strong></td>
    </tr>
    <tr>
      <td><strong>3</strong></td>
      <td><strong>**No trial close</strong>**</td>
      <td><strong>Fatal</strong></td>
      <td>“Any questions? Great, we’ll be in touch!”</td>
      <td><strong>“Based on what you’ve seen, does this solve the problem we discussed?”</strong></td>
    </tr>
    <tr>
      <td><strong>4</strong></td>
      <td><strong>**Generic demo data</strong>**</td>
      <td><strong>Severe</strong></td>
      <td>“Acme Corp” data with “John Doe” users and “Widget A” products</td>
      <td><strong>Their company name, their department structure, realistic data volumes</strong></td>
    </tr>
    <tr>
      <td><strong>5</strong></td>
      <td><strong>**Talking too much</strong>**</td>
      <td><strong>Severe</strong></td>
      <td>AE talks for 25 straight minutes. Prospect says nothing.</td>
      <td><strong>Check in after each pain block. “Does that match what you’d expect?”</strong></td>
    </tr>
    <tr>
      <td><strong>6</strong></td>
      <td><strong>**Showing everything</strong>**</td>
      <td><strong>Severe</strong></td>
      <td>“And we also have this… and this… and let me also show you this cool feature…”</td>
      <td><strong>Show only what solves their 3 pains. Leave them wanting more.</strong></td>
    </tr>
    <tr>
      <td><strong>7</strong></td>
      <td><strong>**Ignoring the skeptic</strong>**</td>
      <td><strong>Severe</strong></td>
      <td>Skeptic asks a tough question. AE gives a vague answer and moves on.</td>
      <td><strong>“That’s important — tell me more. I want to make sure we address it properly.”</strong></td>
    </tr>
    <tr>
      <td><strong>8</strong></td>
      <td><strong>**Panicking at bugs</strong>**</td>
      <td><strong>Moderate</strong></td>
      <td>“Oh no, that’s not working. Sorry. Let me try again. Hmm. One second…”</td>
      <td><strong>“That’s unusual. Let me switch to my backup and show you this properly.”</strong></td>
    </tr>
    <tr>
      <td><strong>9</strong></td>
      <td><strong>**Running over time</strong>**</td>
      <td><strong>Moderate</strong></td>
      <td>Scheduled 30 min. Demo takes 55 min. People start dropping off.</td>
      <td><strong>25 min of demo, 5 min returned. Prospect remembers the discipline.</strong></td>
    </tr>
    <tr>
      <td><strong>10</strong></td>
      <td><strong>**No agenda upfront</strong>**</td>
      <td><strong>Moderate</strong></td>
      <td>Jump straight into the product. Prospect doesn’t know what to expect or when it ends.</td>
      <td><strong>“I’ll show three things, each tied to your problems. At the end, I’ll ask: does this solve it?”</strong></td>
    </tr>
    <tr>
      <td><strong>11</strong></td>
      <td><strong>**Trashing competitors</strong>**</td>
      <td><strong>Moderate</strong></td>
      <td>“Competitor X is terrible — their product is slow, buggy, and overpriced.”</td>
      <td><strong>“They’re good at Y. We’re built for X. Given your priorities, here’s why that matters.”</strong></td>
    </tr>
    <tr>
      <td><strong>12</strong></td>
      <td><strong>**Late follow-up</strong>**</td>
      <td><strong>Minor</strong></td>
      <td>Follow-up email sent 3 days later. Prospect has forgotten half the demo.</td>
      <td><strong>Recap email within 2 hours with case study attached.</strong></td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p><strong>Insight:</strong> The single biggest predictor of demo success is not your product, your slides, or your charisma. It is whether the prospect felt understood. If they walk away thinking “they really get our problem,” you’ll win the deal. If they walk away thinking “nice product, but they don’t understand our world,” you won’t.</p>
</blockquote>

<hr />

<p><strong>The Demo Checklist</strong></p>

<p>Recap discovery first        never open the product cold<br />
Set the fairness contract     “if it doesn’t fit, I’ll tell you”<br />
3 pains, not 30 features     organize by their problems<br />
Check in after each pain     “does that match what you’d expect?”<br />
Use their words              the most powerful sales move<br />
Customize the environment   their logo, their data, their scale<br />
Trial close, not “any questions”  ”does this solve the problem?”<br />
Book next step on the call   never leave with “we’ll be in touch”<br />
Follow up within 2 hours     recap + case study + next steps</p>

<p>A demo is not a product tour. It is a conversation where the product appears as evidence.</p>]]></content><author><name>Sourav Padhi</name></author><category term="playbooks" /><summary type="html"><![CDATA[Enterprise Demo Playbook]]></summary></entry></feed>