Profitability — SKU-Level Reconstructed P&L (26 Months)
label
12-month net margin is -21.1% (May 2025 – Apr 2026). Revenue KES 10.6M, COGS KES 7.9M, ad spend KES 4.0M. The business is structurally loss-making at current COGS + ad spend ratios. Only 9 of 26 months were net-profitable. Overhead proxy used = 8% of revenue (actual daily_pl rates: fees 3.0% + courier 8.62% + packaging 0.69% = 12.31% — the 8% proxy is conservative; true net is worse).
Reconstructed P&L — 26 Months (2024-03 → 2026-04)
Computation chain: Shopify line_items.parquet × variants.inventoryItem.unitCost → per-order COGS → joined to orders.parquet for revenue → joined to Meta placement_insights.parquet for ad spend → 8% overhead proxy (fees + courier + packaging blended from Feb daily_pl).
false is not a column in the dataset. sort should contain one column name and optionally a direction (asc or desc). E.g., sort=my_column or sort="my_column desc"
Regime interpretation: Early months (2024-03 – 2024-12) had no Meta ad spend on record — gross margin maps directly to net margin, distorting the picture. From 2025-01 onward with Meta data, only 3 months were net-positive: Jun-2025 (+8.6%), Oct-2025 (+5.3%), and Mar-2026 (+1.7%). The rest bled — with Nov-2025 the worst at -59.4% net margin (KES -455K). Q4 2024 (Aug-Nov) looked profitable on gross margin but lacked ad spend data; true net for that period is unknown. The Jan-Mar 2026 revenue ramp to 1.4M KES/month could not overcome a spend surge to 570-605K KES/month.
Gross Margin vs Net Margin — Spread
The gap between gross margin and net margin shows how ad spend erodes contribution. Months where gross margin is healthy but net is negative indicate the ad engine is the structural leak.
The spread consistently runs 40-55 percentage points in ad-active months. A gross margin of 31-52% is consumed by ad spend alone (35-50% of revenue in 2026). The structural requirement: either grow gross margin above 50% or reduce ad spend below 25% of revenue to be net-positive.
Three-Way Variance (March 2026 Hero)
Three sources give different profitability readings for the same months. The owner's tracker is the most optimistic; SKU-level reconstruction is the most complete; Taleb-adjusted is the most conservative.
March 2026 overstatement mechanics: The owner's daily tracker reports KES 187,174 net (7.3% margin) vs SKU-reconstructed KES 20,399 (1.7%). The Taleb-adjusted figure of KES 104,215 (3.8%) uses a KES 73,600/month fixed overhead allocation. The SKU-reconstruction uses actual Shopify COGS from variants.inventoryItem.unitCost + Meta ad spend — no overhead adjustment. Three approaches, three answers. The owner's 7.3% is the weakest: it excludes both overhead and the full COGS-to-revenue reconciliation.
Sources: Taleb Critique docs/sprint1/03b_critique_taleb.md line 183; Socrates Critique docs/sprint1/03a_critique_socrates.md line 142. Attribution context: G3 CPM root cause.
Cost Stack — What Eats Revenue
Stacked cost share per month shows the structural composition. Overhead allocation uses Feb daily_pl actuals: fees 3.0% + courier 8.62% + packaging 0.69% = 12.31% combined (vs 8% proxy used above — the 8% understates true overhead by ~4.3 percentage points).
Feb daily_pl actual rates (2 days with data): payment fees 3.0% of net sales, courier 8.62%, packaging 0.69%. Total variable overhead 12.31%. The 8% overhead proxy in the reconstruction understates true overhead by ~4.3 percentage points — meaning all net margin figures above are ~4.3 points more optimistic than reality.
Profit by Month — Positive vs Negative
9 of 26 months were net-profitable (34.6%). The profitable months cluster in the no-ad-spend early period (2024-03, 2024-05, 2024-08, 2024-09, 2024-11, 2024-12 — all with zero recorded ad spend) plus Jun-2025, Oct-2025, and Mar-2026 in the ad-active period. In the 15 months with Meta ad data, only 3 were profitable. The business has not demonstrated sustained profitability under active ad spend conditions.
Data Gaps + Caveats
What Would Fix It
The structural fix is not a single lever. COGS coverage above 72.8% must reach 95%+ before the reconstruction is trustworthy for month-by-month decisions. Until then: treat the negative months as confirmed (net_profit = 0 understates COGS) and the positive months as provisional (some COGS is missing). Attribution via CAPI and OOS exclusion are the fastest cash-positive moves. See G3 CPM root cause for ad spend attribution context.
Lineage
- run_id:
profitability-v2-2026-04-24 - computation:
line_items.parquet×variants.parquet→ per-order COGS →orders.parquetrevenue →placement_insights.parquetad spend → 8% overhead proxy - data sources:
data/agent_runs/2026-04-23_2219_human_shopify_orders_bulk/output/line_items.parquetdata/agent_runs/2026-04-23_2219_human_shopify_orders_bulk/output/orders.parquetdata/agent_runs/2026-04-23_2217_human_shopify_products_bulk/output/variants.parquetdata/agent_runs/2026-04-24_0829_w3_placement_insights_meta_metadata/output/placement_insights.parquetdata/processed/xlsx/daily_pl.parquet(Feb 2026, 2 of 28 days non-null — overhead rates)
- claims: March net 104,215 KES / 3.8% (Taleb line 183), overhead 73,600 KES/mo (Taleb line 130), abroad backlog 420-512K KES (Socrates line 126)
- overhead actuals from Feb daily_pl: fees 3.0%, courier 8.62%, packaging 0.69% = 12.31% combined
- COGS match rate: 72.8% of orders have a cost match (6,615 of 9,086 order-lines with non-zero COGS)
- verified: 2026-04-24
- sprint: 2
- supersedes: profitability-v1-2026-04-24 (Taleb-critique-only version, 249 lines)
