Lead Cost Lab’s results are arithmetic on your inputs. This page publishes every equation the calculators use, the unit of each input, how assumptions are labeled, what happens at zero or with invalid values, where price prefills come from, and the test cases the calculator engine is checked against. Nothing here is a measured close rate or a benchmark.
Conventions
- Currency: US dollars. Calculations run at full precision; only displayed currency is rounded, to two decimals.
- Rates: entered as percentages and used as fractions from 0 to 1. A rate above 100% or below 0% is rejected inline.
- Counts: leads, records and outcomes are whole numbers. A fractional lead count is rejected.
- Outcome definitions: a signed contract and a closed deal are different outcomes with different denominators. Every tool asks which one you mean, and the result is labeled with it.
- Invalid input: shown inline next to the field. Your other inputs are kept.
- Blank is not zero: an empty rate is treated as missing, never as demonstrated zero performance.
Assumption labels
| Label | Meaning |
|---|---|
| Your input | A value you entered |
| Listed price, checked [date] | A provider’s published price, prefilled from our source record and editable |
| Minimum bid | A floor in a bidding model, not the price you will pay |
| Illustrative | A teaching value we chose to show the arithmetic; it describes no provider |
Default funnel rates are blank or labeled illustrative. No provider receives a different default from any other.
1. Cost per contract or closed deal
Inputs: leads purchased N (count), lead price P ($/lead), other variable cost O ($), fixed allocated cost F ($), approved credit value Q ($), and either observed outcomes D (count) or funnel rates.
gross_lead_charges = N × P
net_acquisition_cost = gross_lead_charges + O + F − Q
cost_per_outcome = net_acquisition_cost ÷ D
expected_outcomes = N × contact_rate × qualification_rate × contract_rate × close_rate
Funnel rates are conditional: qualification is a share of contacted leads, contracts a share of qualified leads, closes a share of contracts. For a cost-per-contract view, the close rate is left out. A direct lead-to-outcome rate is offered as an alternative to the funnel; the two methods are never multiplied together.
Rules: Q cannot exceed gross lead charges, and net cost cannot silently go negative. With zero outcomes, the tool shows “No finite cost per outcome with zero outcomes” and the total spend. It never shows $0.
Illustrative: 100 leads × $249 + $2,100 other costs = $27,000; at 3 closed deals, $9,000 per closed deal. Funnel: 100 × 0.6 × 0.5 × 0.2 × 0.5 = 3 closes. These rates are fictional.
2. Lead budget and break-even
Inputs: usable budget B ($), fixed cost F ($), lead price P ($/lead), handling cost H ($/lead), contribution per closed deal G ($/deal), lead-to-close probability r (fraction).
affordable_leads = floor( max(0, B − F) ÷ (P + H) )
expected_closed_deals = affordable_leads × r
expected_contribution_after_acq = expected_closed_deals × G − F − affordable_leads × (P + H)
break_even_lead_to_close_rate = (P + H + F ÷ affordable_leads) ÷ G
maximum_affordable_lead_price = r × G − H − F ÷ affordable_leads
G is contribution available before the modeled acquisition costs, not the property’s sale price. Do not subtract the same cost inside G and again here. When affordable leads is zero, the division-based outputs are omitted and the constraint is explained. A break-even rate above 100% is shown as such: the assumptions cannot break even. It is not clamped.
Illustrative: $3,000 budget, $300 fixed, $249 lead, $21 handling gives 10 leads. At $15,000 contribution and an assumed 2% lead-to-close, expected contribution before acquisition is $3,000 against $3,000 of modeled acquisition cost. Expected deals of 0.2 is an average, not a promise of a fractional transaction.
3. Owner records versus seller inquiries
Inputs: records R (count), record price Pr, enrichment Pe and outreach Po ($/record), fixed cost Fr ($), qualified-conversation rate rq and conversation-to-close rate rc (fractions).
record_program_cost = R × (Pr + Pe + Po) + Fr
record_expected_closes = R × rq × rc
record_cost_per_close = record_program_cost ÷ record_expected_closes
Seller inquiries are modeled with equation 1 and their own rates. Record counts and inquiry counts are never combined. An owner record is not a seller who asked for an offer, and the tool does not imply consent to contact.
4. Wallet and optional membership
Where a paid membership amount is credited to a wallet, it is not charged again on top of the lead spend it funds. Simple month, no opening balance:
top_up_needed = max(0, L − M)
cash_outlay = M + top_up_needed
ending_wallet_balance = max(0, M − L)
Full ledger:
opening_wallet + membership_credits + top_ups + approved_credits − lead_charges − other_wallet_charges = ending_wallet
cash_paid_this_period = membership_cash_paid + top_ups + fees_paid_outside_wallet
Top-ups are sized from the opening balance and membership credit only. An approved credit refunds a lead already paid for, so it arrives after that charge: it cannot fund the same period’s purchases and is added to the ending wallet instead.
Cash outlay, lead charges consumed and ending wallet are shown separately. An opening prepaid balance is not free acquisition, and an approved credit is counted once.
Test cases the engine passes
The calculator engine is checked by an automated test suite (vitest) in the publication’s source repository. On 2026-10-16 the suite ran 29 tests and all passed. The cases include:
| Area | Case | Expected result |
|---|---|---|
| Cost per outcome | 100 × $249 + $2,100, 3 closes | $27,000 net, $9,000 per close |
| Cost per outcome | Funnel 0.6 × 0.5 × 0.2 × 0.5 on 100 leads | 3 closes |
| Cost per outcome | Contract view | Close rate excluded (6 contracts) |
| Cost per outcome | Zero outcomes | No finite cost; total spend still shown |
| Cost per outcome | Credits above gross charges | Rejected |
| Cost per outcome | Negative price, blank leads, 120% rate | Each field rejected |
| Cost per outcome | Fractional leads; outcomes above leads | Rejected |
| Lead budget | Documented illustration | 10 affordable leads |
| Lead budget | Budget below fixed cost | Zero leads, no division |
| Lead budget | Break-even above 100% | Reported, not clamped |
| Owner records | Documented illustration | $1,000 cost, 1 expected close |
| Wallet | No paid plan, 10 leads at $99 | $990 cash |
| Wallet | $99 plan fully used on $990 of leads | $891 top-up, $990 cash, never $1,089 |
| Wallet | No leads bought, $99 plan | $99 cash, $99 ending wallet |
| Wallet | $299 credit, $99 spent | $200 ending wallet, no negative cost |
| Wallet | $100 opening, $99 plan, $150 charges | $99 new cash, $49 ending wallet |
| Wallet | No plan, one $349 lead, $349 approved credit | $349 top-up, $349 cash, $349 ending wallet |
| Wallet | Outside fees | Added to cash only |
| Formatting | Display rounding | Rounded only for display |
The tests check the arithmetic contract. They do not check whether any provider’s leads perform at any rate.
Price sources
Price prefills come from a shared fact record built from the providers’ own public pricing, FAQ and policy pages, rechecked on 2026-10-16 by fetching each page directly. Each prefill states its mode, such as listed price, member price or minimum bid, and the check date. Membership fees are not hidden inside a per-lead price; they are modeled separately. Providers whose terms could not be loaded are marked not verified and are not prefilled. See the provider price snapshot.
What we have not measured
We have no cohort data on contact, contract or close rates for any provider, and no validation of any provider’s lead grades. Research pages that would require that data remain unpublished drafts until mature, documented data exists.
Human review and corrections
The equations and copy were drafted with AI assistance and implemented with automated tests. A responsible human editor, Aaron, must review them before publication; that review has not yet happened. Report a formula or calculator error on the corrections page.