← Back to Exits
·10 min read

How Do You Value a Pre-Revenue Startup With a Working Product?

We went through a potential acquisition process with an acquirer recently that we thought would be helpful to document for other founders.

Valuing a business that has real tech but no revenue yet is one of the hardest problems in early-stage investing and M&A.

There's no ARR to slap a multiple on. Cohorts, churn, CAC/LTV… none of that exists yet. And yet, real value has been created: a working product, an engineering team that actually shipped something, early design partners, maybe even a pipeline.

A useful way to get to a defensible number is to triangulate between three anchors:

  1. Replacement Cost New – what it would cost to rebuild this from scratch.
  2. Strategic Revenue Synergies – what a buyer could earn by plugging this product into their existing distribution.
  3. Market Comparables – how similar companies are being valued.
flowchart TD subgraph Triangulation["Triangulated Valuation"] RCN["🔧 Replacement Cost New<br/><i>The rational floor</i>"] SYN["📈 Strategic Revenue Synergies<br/><i>Value in buyer's distribution</i>"] COMP["📊 Market Comparables<br/><i>Reality check</i>"] end RCN --> VAL["💰 Defensible<br/>Valuation Range"] SYN --> VAL COMP --> VAL style RCN fill:#e1f5fe style SYN fill:#e8f5e9 style COMP fill:#fff3e0 style VAL fill:#f3e5f5

Let's walk through that framework, step by step, for a pre-revenue company with a working product.


1. Replacement Cost New: "What Would It Cost Me to Rebuild This?"

The first anchor is Replacement Cost New (RCN) — the all-in cost for a capable team to recreate the product and reach the same level of maturity.

Think of it as the rational floor for any negotiation: why would a buyer pay less than it would cost them to build the same thing themselves?

How to estimate RCN

flowchart LR A["1️⃣ Define Scope"] --> B["2️⃣ Estimate FTEs<br/>& Timeline"] B --> C["3️⃣ Apply Loaded<br/>Cost per FTE"] C --> D["4️⃣ Compute Hard<br/>Build Cost"] D --> E["5️⃣ Apply Risk<br/>Premium"] E --> F["📍 RCN<br/>Baseline"] style F fill:#e1f5fe,stroke:#0288d1
  1. Define the scope of what's been built

    • Is it a basic MVP or a hardened production system?
    • Are there complex components (e.g., ML models, agentic workflows, integrations, security/compliance work)?
    • Are there intangible assets: domain expertise, data pipelines, UX polish, documentation?
  2. Estimate the FTEs and timeline to rebuild

    Work backwards from scope:

    • How many FTEs (full-time equivalents) would a senior, competent team need?
    • How long would it take them to get to feature parity and similar reliability?

    Example (for a complex AI/agentic/RAG-style product):

    • 10–12 senior engineers and technical staff
    • 24–30 months to reach parity
  3. Apply realistic loaded cost per FTE-year

    Take:

    • Market salary for the roles
    • Add benefits, taxes, overhead (often 25–35% of wages)

    Example:

    • Base: $200,000 per FTE-year
    • Loaded factor: 1.3×
    • Loaded cost per FTE-year ≈ $260,000
  4. Compute the hard build cost

    Using the example numbers:

    • FTE-years = 12 FTEs × 2.5 years = 30 FTE-years
    • Hard people-cost = 30 × $260,000 ≈ $7.8M
  5. Apply a time-to-market / execution-risk premium

    A buyer isn't just buying code. They're buying:

    • Time saved (getting to market years earlier)
    • Reduced execution risk
    • Reduced hiring, coordination, and failure risk

    It's common to apply a 1.3×–2.0× premium depending on risk and urgency.

    Continuing the example:

    • Hard cost ≈ $7.8M
    • Premium factor: 1.5×
    • RCN ≈ $11.7M
flowchart TD subgraph calc["RCN Calculation Example"] FTE["12 FTEs × 2.5 years<br/>= 30 FTE-years"] COST["30 × $260K<br/>= $7.8M hard cost"] PREM["$7.8M × 1.5 premium<br/>= <b>$11.7M RCN</b>"] end FTE --> COST --> PREM style PREM fill:#c8e6c9,stroke:#388e3c

This gives you a baseline value: if the acquisition price is dramatically lower than RCN, a savvy founder is probably under-selling; if it's dramatically higher without a strategic story, a disciplined buyer will struggle to justify it.


2. Strategic Revenue Synergies: "What Is This Worth In My Distribution?"

The second anchor is what a strategic buyer can do with the product that the startup cannot — yet.

If a buyer already has:

  • Thousands of existing customers
  • A sales and customer success organization
  • Strong brand and trust

…then plugging a differentiated product into that machine can be incredibly valuable.

The synergy valuation workflow

Here's a simple, transparent way to estimate revenue synergies:

flowchart TD A["1️⃣ Define Eligible<br/>Customer Base"] --> B["2️⃣ Model Adoption<br/>Ramp"] B --> C["3️⃣ Estimate Unit<br/>Economics"] C --> D["4️⃣ Build 5-Year<br/>GP Forecast"] D --> E["5️⃣ Discount to<br/>Present Value"] E --> F["6️⃣ Apply Seller<br/>Share %"] F --> G["📍 Synergy<br/>Premium"] style G fill:#e8f5e9,stroke:#43a047
  1. Define the eligible customer base

    • Total customers of the buyer
    • Subset where this product is actually relevant

    Example:

    • 10,000 total customers
    • 25% are a good fit → 2,500 eligible customers
  2. Model an adoption ramp

    Adoption never jumps to 100% on day one.

    Example:

    • 15% of eligible customers adopt per year for 5 years
    • Nominally that's 75% by Year 5
    • Apply a 20% haircut for execution risk → net ~60% of eligible customers over 5 years

    So you might end up with something like 300 net new sites per year over a 5-year window.

  3. Estimate unit economics

    For each adopting customer:

    • Price the add-on (e.g., $18K ARR per site)
    • Estimate gross margin (e.g., 70–80% for software/AI products)

    Example:

    • ARR per site: $18,000
    • Gross margin: 75%
    • Gross profit per site per year: ≈ $13,500
  4. Build the 5-year gross profit forecast

    For each year:

    • New sites added × GP per site
    • Sum GP over 5 years

    This will give you a gross profit stream like:

    • Year 1: 300 sites × $13.5K
    • Year 2: 600 sites × $13.5K
    • … and so on, assuming renewals and no churn for simplicity.
xychart-beta title "Cumulative Sites & Gross Profit Over 5 Years" x-axis [Y1, Y2, Y3, Y4, Y5] y-axis "Sites / GP ($M)" 0 --> 20 bar [4.05, 8.1, 12.15, 16.2, 20.25] line [3, 6, 9, 12, 15]
  1. Discount to present value

    Choose a discount rate that reflects the buyer's cost of capital and risk (often 8–12% in these models).

    • Discount each year's gross profit back to today
    • Sum to get NPV of synergy gross profit

    In practice, for assumptions like the above, it's easy to end up with tens of millions of dollars in NPV synergies.

  2. Decide how much of the synergy to share with the seller

    The buyer usually does not hand over 100% of synergies. They need upside for their shareholders too.

    It's common in strategic M&A for the seller to capture 20–40% of the synergies in the purchase price, depending on negotiation leverage, competition, and how unique the asset is.

    Example:

    • 5-year NPV of synergies: $60M+
    • Seller share: 30%
    • Synergy premium in price: ≈ $18M
pie showData title "Synergy Value Split Example" "Buyer Retains (70%)" : 42 "Seller Captures (30%)" : 18

This synergy premium is an add-on to the RCN baseline.


3. Market Comparables: "What Is the Market Paying for Similar Stories?"

The third anchor is market comps: how similar companies are being valued in the current environment.

For a pre-revenue startup with a working product, comps might include:

  • Early-stage deals in the same vertical (e.g., AI tools for a specific industry)
  • Startups with similar architecture or tech complexity (e.g., agentic workflows, RAG systems, specialized ML)
  • Fundraises or acquisitions at:
    • Concept/MVP stage (lower valuation)
    • Working-product/early-customer stage (higher valuation)
flowchart LR subgraph comps["Finding Relevant Comparables"] V["🏢 Same Vertical"] T["⚙️ Similar Tech<br/>Complexity"] S["📍 Same Stage<br/>(MVP vs. Product)"] end V --> M["Market<br/>Valuation Range"] T --> M S --> M style M fill:#fff3e0,stroke:#f57c00

What you're really looking for:

  • Valuation ranges for:
    • Comparable team quality
    • Comparable product maturity
    • Comparable strategic relevance
  • How investors are thinking:
    • Pre-revenue but strong team → often team-quality driven
    • Early pilots or LOIs → some "pipeline-weighted" expectation

You don't want comps to drive the valuation alone, but they're excellent sanity checks:

  • If RCN + synergy calculations suggest $30M and comps say similar companies sold for $5–10M, you need to ask why.
  • If comps are at $40–50M and your RCN + synergies suggest $25–30M, maybe you're being too conservative — or maybe the market is overheated.

4. Pulling It All Together: A Triangulated Valuation Range

Once you've done the work, you'll usually end up with three numbers:

  1. RCN – an economically rational floor (e.g., $10–12M).
  2. RCN + a share of synergies – a strategic "justifiable" price for a motivated buyer (e.g., $25–35M).
  3. Market comps – a reality check (e.g., deals at $15–30M).
flowchart TD subgraph inputs["Three Valuation Anchors"] RCN["🔧 RCN Baseline<br/><b>$10–12M</b><br/><i>Rational floor</i>"] SYN["📈 RCN + Synergies<br/><b>$25–35M</b><br/><i>Strategic value</i>"] COMP["📊 Market Comps<br/><b>$15–30M</b><br/><i>Reality check</i>"] end RCN --> RANGE SYN --> RANGE COMP --> RANGE RANGE["💰 <b>Final Range: $20–30M</b><br/>Strong strategic case at upper end"] style RCN fill:#e1f5fe style SYN fill:#e8f5e9 style COMP fill:#fff3e0 style RANGE fill:#f3e5f5,stroke:#7b1fa2

You can then articulate a valuation range such as:

"Given the cost to rebuild, the revenue synergies in our distribution, and where comparable companies are trading, a fair value range is $X–Y, with a strong strategic case at the upper end for the right buyer."

For founders, this helps justify the ask.
For buyers, it helps build an investment memo and answer: "Why this price, and why now?"


5. Practical Tips for Founders and Buyers

For founders

mindmap root((Founder<br/>Checklist)) Document Build Cost FTE count Timeline Architecture complexity Regulatory hurdles Highlight Strategic Fit Cross-sell potential ARPU expansion Competitive defense Show Traction Pilots LOIs POC results Design partners
  • Document your build cost story
    Have a clear narrative around:

    • How many FTEs
    • How long it took
    • The complexity of the architecture
    • Technical and regulatory hurdles overcome
  • Highlight strategic fit
    Spell out how a buyer could:

    • Cross-sell to their base
    • Expand ARPU
    • Defend against competitors
  • Show traction, even if it's not revenue
    Pilots, letters of intent, proof-of-concept results, testimonials, and engaged design partners all reduce perceived risk.

For buyers

mindmap root((Buyer<br/>Discipline)) Conservative Modeling Haircut adoption rates Question eligibility Delay synergy timing Respect RCN Floor Below RCN needs justification Technical debt Team misalignment Use Ranges Show low/mid/high Explain assumptions Build IC confidence
  • Be conservative in synergy modeling
    Use haircuts on:

    • Adoption rates
    • Eligibility assumptions
    • Timing (synergies often show up slower than expected)
  • Respect the RCN floor
    If you try to price below what it would cost you to build, you should have a very clear reason (e.g., major technical debt, misaligned team, or strategic misfit).

  • Use ranges, not single numbers
    Your IC will be more comfortable with:

    "We estimate fair value between $A and $B, and are proposing $C given [specific assumptions]."


Closing Thoughts

Pre-revenue doesn't mean "pre-value."

A startup with a working product has already cleared big hurdles: shipping, iterating, proving technical feasibility, and often demonstrating real user love. The challenge is to translate that into a number that both buyer and seller can defend.

Using a triangulated framework — Replacement Cost New, strategic revenue synergies, and market comparables — gives you a structured, transparent way to do exactly that.

flowchart LR A["🚀 Working<br/>Product"] --> B["📐 Triangulated<br/>Framework"] B --> C["💰 Defensible<br/>Valuation"] style A fill:#e3f2fd style B fill:#fff8e1 style C fill:#e8f5e9