The application contains two distinct classes of values:
The original six visible market values were copied from the frontend into control-plane tables. They were deliberately not inserted into the evidence or canonical calculated-result tables. Consequently, those initial card values should be regarded as prototype or demonstration values. New warehouse-backed runs follow the algorithms described below. FRONTEND_DATABASE_MAPPING
The governed calculation chain is:
Market definition
↓
TAM
↓
SAM and price-response curve
↓
SOM constrained by campaign and capacity
↓
VCT contactable audience
The orchestration layer requires each downstream run to identify its exact parent and immutable input snapshot. A SAM run must identify its TAM parent; SOM must identify its SAM parent; SOM and VCT must share the same frozen SOM/VCT snapshot. MARKET_ANALYSIS_ORCHESTRATION
The system actually supports several meanings of TAM. They should not be conflated.
This answers:
How many people, households, or consumer units satisfy the governed market definition?
There are three warehouse algorithms.
TAM = Σg Estimateg(M)
Where:
g is a non-overlapping governed geography.M is an additive Census metric.This is appropriate when the selected Census measure already represents the desired cohort or denominator.
For ACS estimates:
SEg = MOEg / 1.645
The application assumes independence between non-overlapping geography estimates and combines variance as:
SEtotal = √Σg(SEg²)
The reported approximate 95% interval is:
TAM ± 1.96 × SEtotal
TAM = Σg JointCohortEstimateg
A direct joint-cohort variable must already represent all major market criteria together—for example, a Census table cell representing a particular household type and income category.
The application does not create a joint cohort by multiplying unrelated marginal percentages. That would silently assume independence between demographic characteristics.
Where no direct joint estimate exists:
Adjustedg = Baseg × Πi Ratioi
with:
Ratioi = Σ Numeratorg,i / Σ Denominatorg,i
TAM = Σg Adjustedg
An example might be:
Base households
× share with children
× share above an income threshold
× assumed participation share
Every ratio and assumption is stored. This result is explicitly marked as an approximation. The system does not manufacture a confidence interval because the required covariance information is generally unavailable. WAREHOUSE_BACKED_TAM
The canonical consumer-demand TAM combines local ACS household counts with BLS Consumer Expenditure Survey behavior.
For each component:
Component TAM =
eligible households
× geography weight
× market-segment weight
× segment-bridge weight
× household-to-consumer-unit equivalency factor
× annual CEX expenditure per consumer unit
× product-scope weight
× UCC-to-NAPCS allocation weight
The total is:
Consumer TAM = Σ Component TAM
More formally:
TAMconsumer =
Σg,s,p [
Hg,s
× Wgeo
× Wsegment
× Wbridge
× Fconsumer-unit
× CEXs,p
× Wproduct
× Wcrosswalk
]
Where:
H is an ACS eligible-household estimate.Wgeo handles partial geography inclusion.Wsegment handles market-segment allocation.Wbridge connects the ACS demographic segment to the closest applicable CEX segment.Fconsumer-unit translates households into the CEX consumer-unit basis.CEX is annual category expenditure.Wproduct limits the result to the selected product scope.Wcrosswalk allocates CEX UCC expenditure to the selected NAPCS product.This produces a modeled annual spending opportunity, not observed local sales.
The implementation intentionally caps confidence at C, even with strong input coverage, because local behavior is being inferred by applying national or regional CEX spending patterns to local ACS populations. Lower crosswalk coverage, weak mapping confidence, or a weak household-equivalency assumption can reduce the grade to D or F. 01_consolidate_market_analytics… 01_consolidate_market_analytics…
The supplier-side TAM uses direct Economic Census product receipts.
Each component is:
Industry component =
reported product receipts
× geography allocation weight
× product-scope weight
The result is:
TAMindustry = Σ Industry component
The engine requires:
It deliberately selects one economic layer—such as producer, wholesale, retail, or service provider—to prevent adding multiple stages of the same value chain and double-counting the market.
This result represents supplier-side receipts at a declared economic layer. It is not automatically equivalent to household demand. 04_industry_revenue_tam_and_rec…
The engine can compare consumer-demand TAM and industry-revenue TAM.
The normalized discrepancy is:
gap ratio =
|Consumer TAM − Industry TAM|
/ max(Consumer TAM, Industry TAM)
If both are zero, the gap is defined as zero.
The gap is compared with an approved tolerance:
status =
within_tolerance if gap ratio ≤ tolerance
outside_tolerance otherwise
A reconciliation policy may use one of four modes:
comparison_only:
no reconciled point estimate
consumer_anchor:
reconciled TAM = consumer TAM
industry_anchor:
reconciled TAM = industry TAM
weighted_midpoint:
reconciled TAM =
consumer TAM × consumer weight
+ industry TAM × industry weight
For a weighted midpoint:
consumer weight + industry weight = 1
The resulting confidence cannot be better than the weaker of the two parent estimates.
The default is deliberately comparison_only; the engine does not silently average two measurements merely because they are both available. 04_industry_revenue_tam_and_rec… 04_industry_revenue_tam_and_rec…
Consumer TAM is initially calculated in nominal dollars for the observation period. The price-deflation engine restates every component into a configured real-dollar base period.
For component j:
Real contributionj =
Nominal contributionj
× Base-period indexj / Observation-period indexj
Then:
Real TAM = Σj Real contributionj
The engine first attempts to find a product-specific approved price-index binding. It can then use a market default or a broad fallback, but these fallback choices reduce confidence.
The price-adjustment confidence uses:
The final confidence is:
Final confidence =
worse of nominal-TAM confidence
and price-binding confidence
Every nominal component must have both an exact observation-period index and an exact base-period index. Missing price observations cause the run to fail rather than silently extrapolate. 01_consolidate_market_analytics…
The warehouse SAM engine begins with a frozen, source-backed TAM population and BLS expenditure data.
CPI ratio = target-period CPI / base-period CPI
Adjusted annual CEX =
observed annual CEX × CPI ratio
This differs from TAM deflation above:
Consumer units =
TAM population / people per consumer unit
people per consumer unit is currently a governed assumption.
Product budget =
adjusted annual CEX × category capture rate
The category-capture rate determines what fraction of the broader CEX category applies to the specific product being modeled.
Q0 =
consumer units
× product budget
× participation rate
/ reference price
Where:
Q0 is annual demand units at the reference price.participation rate is the assumed fraction of eligible units that participate.P0 is the reference price.This Q0 becomes the anchor for the price-response algorithms. WAREHOUSE_SAM_PRICE_DISCOVERY
The system evaluates a fixed price grid. Three algorithms can consume exactly the same snapshot.
Q(P) = Q0 × (P / P0)ε
Where:
P is the tested price.P0 is the reference price.ε is the own-price elasticity parameter.Q0 is reference-price annual demand.Likely buyers are:
Buyers(P) =
min(TAM population, Q(P) / visits per buyer)
For a normal product, ε is negative. For example, ε = −1.2 means that a 1% price increase is associated with approximately a 1.2% decrease in quantity around the applicable range.
This is the default SAM scenario algorithm.
Q(P) =
max[
0,
Q0 × {1 + ε × (P − P0) / P0}
]
Likely buyers are again:
Buyers(P) =
min(TAM population, Q(P) / visits per buyer)
This is a local linear approximation. It is easier to interpret near P0, but it can reach zero rapidly and is not generally credible far outside the reference-price neighborhood.
First calculate annual cost to one buyer:
Annual offer cost = P × visits per buyer
Then:
Affordability share =
1 / [
1 + exp(
k ×
(Annual offer cost − product budget)
/ product budget
)
]
Where k controls how sharply participation changes around the budget threshold.
Likely buyers are:
Buyers(P) =
min[
TAM population,
TAM population
× participation rate
× affordability share
]
And:
Q(P) = Buyers(P) × visits per buyer
All three methods enforce:
Q(P) ≤ TAM population × visits per buyer
This prevents the model from implying more buyers or annual visits than the population-and-frequency assumptions permit. WAREHOUSE_SAM_PRICE_DISCOVERY 20260716_warehouse_sam_price_di…
The engine does not currently discover a price from transactions or automatically solve for an optimal price.
Instead, it evaluates each price in a frozen grid and produces a schedule containing:
Price
Demand units
Likely buyers
Modeled supply units
Modeled unit cost
Revenue
Contribution
Supply-demand gap
For each price:
Revenue(P) = Q(P) × P
Contribution(P) =
Revenue(P) − Q(P) × UnitCost(P)
MarketGap(P) =
Supply(P) − Q(P)
The selected price is supplied as an input and must exist in the frozen grid. The executor persists its SAM buyers, demand, supply, revenue, contribution, and market gap, as well as the entire curve.
Thus, the present implementation is more precisely a price-scenario and price-response workbench. It provides the data needed to identify:
But it does not yet automatically select one of these as “the price.” 20260716_warehouse_sam_price_di… 20260716_warehouse_sam_price_di…
The current SAM supply and cost schedules are partly indexed but still assumption-backed.
Supply(P) =
max[
0,
Base supply
+ (P − P0) × supply slope
]
The supply slope represents the assumed increase or decrease in available units as the obtainable price changes.
PPI ratio =
target-period PPI / base-period PPI
UnitCost(P) =
max[
0,
Base unit cost × PPI ratio
+ (P − P0) × cost slope
]
The first term indexes the base cost using PPI. The second term models any price-associated change in unit cost.
This may represent such effects as:
However, the cost slope is not inferred from warehouse transactions. It remains a governed analyst assumption.
Accordingly:
The server explicitly labels the current supply origin as analyst_assumption. WAREHOUSE_SAM_PRICE_DISCOVERY 20260716_warehouse_sam_price_di…
At a selected price, the principal SAM result is:
SAM buyers =
price-specific likely buyers
Supporting results include:
SAM demand units =
SAM buyers × visits per buyer
SAM revenue =
selected-price demand units × selected price
The term “serviceable” therefore means:
The portion of the source-backed population that the selected product, expenditure budget, participation assumptions, visit frequency, and price-response model imply could purchase at that particular price.
It does not yet mean that the business can operationally reach or fulfill all of those buyers. Those constraints enter at SOM.
The warehouse SOM engine combines:
Qualified people =
min(SAM buyers, planned reach)
× qualification rate
Forecast buyers =
qualified people × conversion rate
Forecast units =
forecast buyers × visits per buyer
This prevents planned reach from exceeding SAM and then applies the campaign funnel.
Public data does not report directly bookable capacity, so the engine converts producer evidence into visible proxies.
CBP proxy =
establishments × units per establishment
+ employment × units per employee
ECN proxy =
receipts × receipts-unit multiplier
/ revenue per unit
NES proxy =
receipts × receipts-unit multiplier
/ revenue per unit
The conversion parameters are assumptions. The underlying establishments, employment, and receipts are observed public data.
Public cap =
positive minimum(
CBP proxy,
ECN proxy + NES proxy
)
SOM units =
min(
SAM demand units,
campaign forecast units,
open operational capacity,
public cap
)
SOM buyers =
SOM units / visits per buyer
This method deliberately uses the smallest defensible ceiling.
Weighted public proxy =
weighted mean(CBP proxy, ECN proxy, NES proxy)
Operational cap =
open capacity × utilization rate
Public cap =
weighted public proxy × utilization rate
SOM units =
min(
SAM demand units,
campaign forecast units,
operational cap,
public cap
)
Each run stores all candidate constraints and marks which one bound the result.
That binding constraint is one of the most decision-useful SOM outputs:
It explains why the obtainable market is not larger. WAREHOUSE_SOM_VCT
VCT converts a market result into a contactable campaign-planning universe.
VCT people =
selected-price SAM buyers
× contactable rate
This is the wider delivery universe before operational and conversion constraints.
VCT people =
obtainable SOM buyers
× contactable rate
This is the contactable subset of the operationally obtainable population.
The result creates a vendor campaign object containing:
It is a planning universe, not a promise of impressions, responses, conversions, or purchases. WAREHOUSE_SOM_VCT
The server uses “elasticity” in two materially different ways.
The ε used by the constant- and linear-elasticity SAM algorithms is a frozen model input.
It can come from:
Until it is linked to a reviewed empirical result, it is not an observed property of the selected local market.
The server can construct an elasticity dataset from sales observations containing:
Rows can be excluded for reasons including:
For included observations:
y = ln(units sold)
x = ln(net price)
The in-database estimator runs:
ln(Q) = α + β ln(P) + ε
The slope is:
β = Cov(ln P, ln Q) / Var(ln P)
PostgreSQL calculates it with regr_slope.
Supporting statistics include:
intercept = regr_intercept(ln Q, ln P)
R² = regr_r2(ln Q, ln P)
The standard error is calculated as:
SEβ =
√[
max(
(Syy − βSxy)
/ (n − 2)
/ Sxx,
0
)
]
and:
t = β / SEβ
The dataset must meet minimum requirements for:
This coefficient is deliberately labeled:
uncontrolled log-log price/quantity association
It is not published as causal own-price elasticity, because price and quantity may both be affected by promotions, seasonality, product mix, venue quality, inventory, competitor behavior, and endogenous pricing. 20260701_011_elasticity_evidenc… 01_create_analytics_schema
Controlled or instrumented elasticity estimates are calculated outside PostgreSQL using an approved statistical workflow and then registered in the server.
The model specification can require:
The external result records:
It remains non-publishable until methodology review is approved. Even after review, the server notes that a controlled coefficient is not automatically causal; causality depends on the identification strategy. 01_consolidate_market_analytics… 20260701_011_elasticity_evidenc…
The supplier-footprint engine preserves source measures separately rather than collapsing unlike measures into one supply quantity.
Its general aggregation is:
Supplier measure =
Σ(
source-native observation
× supplier-geography weight
)
Separate results can include:
These measures are not interchangeable.
The market-pressure layer derives several descriptive indicators:
Supplier density =
total supplier establishments
/ effective eligible households
× density denominator
Demand per eligible household =
consumer TAM / effective eligible households
TAM per supplier =
consumer TAM / total supplier establishments
Nonemployer share =
nonemployer establishments
/ total establishments
The selected OEWS or QCEW wage measure is retained in its source-native unit.
The engine explicitly warns that these are structural market-pressure proxies. They are not supply curves, equilibrium models, causal shortage estimates, or proof that an industry is under- or oversupplied. 01_consolidate_market_analytics…
Each source-backed calculation stores:
Inputs are classified as:
observed source measurement
prior_result parent calculation result
assumption analyst or business parameter
derived deterministic transformation
proxy observed data converted into an indirect capacity measure
Algorithm comparisons are considered controlled only when all compared runs reference the same immutable input snapshot. Otherwise, the result difference may reflect both changed inputs and changed algorithms.
The final report preserves the entire TAM → SAM → SOM → VCT dependency chain and is SHA-256 hashed against later mutation. WAREHOUSE_BACKED_TAM MARKET_ANALYSIS_ORCHESTRATION
| Output | Meaning | Unit |
|---|---|---|
| Cohort TAM | People or households satisfying the governed population criteria | People/households |
| Consumer TAM | Modeled annual product-category expenditure by the eligible population | USD/year |
| Industry TAM | Direct product receipts within the selected supplier scope and economic layer | USD/year |
| Real TAM | Nominal consumer TAM restated into a common price base | Real USD/year |
| SAM buyers | People likely to buy at a selected price under the selected demand model | Buyers/year |
| SAM units | Expected annual purchases or visits at that price | Units/year |
| SAM revenue | Price-specific demand multiplied by price | USD/year |
| Contribution | Revenue less modeled variable/unit cost | USD/year |
| SOM buyers | SAM reduced by campaign, conversion, capacity, and producer constraints | Buyers/period |
| VCT | Contactable portion of SAM or SOM | People |
| Elasticity input | Assumed price-response coefficient used in scenario calculations | Coefficient |
| Price association | Uncontrolled observed log-price/log-quantity relationship | Coefficient |
| Controlled elasticity | Reviewed external estimate with specified controls | Coefficient |
The central analytical boundary is therefore:
TAM establishes the possible population or spending universe. SAM applies product budget, participation, frequency, and price response. SOM applies reach, conversion, operational capacity, and producer constraints. VCT applies contactability.
The current system is strongest in provenance, reproducibility, and explicit constraint accounting. Its largest remaining modeling limitations are that local participation, SAM elasticity, supply slope, unit-cost slope, and public-data-to-capacity conversions remain assumptions or proxies until first-party transactions and operational capacity observations become available.