Back to all documents
Workstream 09

Business and unit economics

Internal working notes, pulled 1 Sep 2026. Not the client deliverable. Second person and byline treatment happens at the report-writing stage. This task touches no live system: it is arithmetic on data/_snapshots/2026-09-01/orders-aggregate.md (regenerated fresh from the source CSV today, byte-identical to what was already in the repo) plus the verified spend figures already established in docs/audit/20-meta-ads.md and docs/audit/21-google-ads.md. Nothing was created, updated, paused, or deleted.

No revenue projections appear anywhere in this document. At 19 paying orders there is no statistical basis for forecasting, and this document does not attempt one. Every number below is either a HARD fact pulled from a dated snapshot, a DERIVED arithmetic result on HARD facts (shown with working), or explicitly marked INFERRED or UNKNOWN.

What would falsify these findings

The order-aggregate numbers die if the source CSV changes. Regenerated today with npx tsx scripts/analyze-orders.ts /Users/cristoforoperrone/Downloads/orders_export_1.csv against the same 12-month export used throughout this engagement. Output is byte-identical to the aggregate already committed (git diff on the regenerated file returns nothing). If a fresh CSV export ever produces a different aggregate, that regeneration is the finding, not this document.

The blended cost-per-order figure dies if the combined ad-spend total is wrong. It sums two numbers that are each already flagged as disputed in their own tasks: Meta's amount_spent field ($4,801.41-$4,801.42, a one-cent rounding disagreement noted in the task-0 re-pull) and Google's GA4-visible spend floor ($821.77, GADS-01/GADS-02: disputed by $1.13 against a second method, and a floor rather than a lifetime total because the GA4- to-Ads link creation date is unrecoverable). Both disputes are carried forward here explicitly rather than resolved by picking a number, and the conclusions below are checked against the high end of the range, not just the established $5,623.18 figure, to confirm they do not flip.

The break-even-as-a-function-of-margin table dies only if AOV changes. It does not depend on knowing the client's actual margin, which is why it is presented as a table rather than a single number: margin is UNKNOWN, and guessing it would be exactly the kind of unearned precision this audit is built to avoid.

The "zero-value orders are not a giveaway problem" conclusion dies if a buyer outside the two known discount codes turns up with a 100%-off order. Checked directly: all 6 zero-value orders trace to exactly two codes, GusBand1969! (owner identity per docs/status.md, which names Gustavo Bandeira) and Hexx100 (unconfirmed identity, but a single recurring code used 3 times, consistent with sample/reviewer distribution rather than a public leak). No other discount code appears on any zero-value order.

The repeat-purchase cross-check in section 2 dies if the sample were larger than 3 buyers. It is not, and the read there is marked INFERRED and bounded accordingly, not stated as a precise figure.

The inventory "18 years of cover" figure dies if the four product records are not actually independent stock pools. Task 2 confirmed this directly (SHOP-01: inventory items are distinct across all four records, no shared stock pool), which is why this document treats the arithmetic as HARD but treats the interpretation (whether 2,481 is real physical stock or a bookkeeping duplication artifact) as INFERRED, not HARD. See ECON-05.

The cohort/repeat figures die at the level of granularity available. The order aggregate hashes buyer emails before use and never persists a per-buyer timeline (scripts/analyze-orders.ts: emails are hashed immediately and used only to increment distinct/repeat counters). This document reports the aggregate counts (21 distinct, 3 repeat) as HARD and does not attempt a cohort curve (repeat rate by month of first order), which would require regenerating the aggregate script itself to expose more structure and was judged out of scope for a read-only unit-economics pass. Flagged as a scope limit, not a finding.

1. Blended cost per paying order

Working:

ComponentValueExact date rangeSource
Meta lifetime spend (amount_spent)$4,801.41-$4,801.422025-12-03 (Meta account/pixel creation) to 2026-08-3120-meta-ads.md META-01; one-cent rounding disagreement, both figures HARD
Google Ads spend (GA4-visible floor)$821.772026-05-01 to 2026-08-31 only (GA4 shows $0 in every month Aug 2025-Apr 2026 and in Sep 2026); a floor, not confirmed to be a full lifetime window21-google-ads.md GADS-01/02
Combined, established figure$5,623.18Not a single window (see below)Brief's established fact ($4,801.41 + $821.77)
Combined, high end$5,642.82Not a single window (see below)Using Meta's cross-checked $4,821.05 lifetime figure instead of amount_spent ($4,821.05 + $821.77)
Paying orders (denominator)192025-11-06 (first order) to 2026-08-28 (last order)orders-aggregate.md

The two sides of this comparison do not share one window. The numerator (combined ad spend) is stitched from two different, narrower windows -- Meta's from 2025-12-03 and Google's GA4-visible floor from 2026-05-01 -- while the denominator (19 paying orders) spans the full 2025-11-06 to 2026-08-28 store history, roughly a month wider than Meta's window and more than four months wider than Google's. This mismatch is disclosed here explicitly, not resolved by forcing a shared window that the underlying data does not support (Google's true start date is unrecoverable per GADS-02).

Blended cost per paying order = combined spend / 19 paying orders:

Blended cost per paying order is approximately $296, regardless of which disputed spend figure is used. Against an AOV of $94.12, that is 3.1x the average order value, before any product, shipping, or payment- processing cost is subtracted.

Which direction does the window mismatch bias this number? The denominator credits ad spend with orders from a period when at least part of that spend could not yet have existed. The 2 paying orders in November 2025 (orders-aggregate.md's by-month table) predate Meta's ad account by construction -- Meta did not exist yet on 2025-12-03 -- so no ad spend, from either platform, could have driven them. Removing only those two orders, the minimum, cleanly defensible correction: $5,623.18 / 17 = $330.78, about 12% higher than the $295.96 headline. A fuller correction that also excluded the 9 paying orders between December 2025 and April 2026 (before Google's GA4-visible spend begins in May 2026) would push the figure higher still, though that correction cannot be quantified precisely here because Meta's spend is not broken out cleanly to a matching sub-window in this task's snapshots. The mismatch flatters the $296 figure; it does not overstate it. The published $296 headline is, if anything, a floor on the true blended cost per order attributable to the period when paid acquisition was actually running, not a ceiling.

This is a blended figure: it divides combined ad spend by all 19 paying orders, including any that came from organic search, direct traffic, referral, or email, not only orders a platform can attribute to an ad. It is the most generous reading available to paid acquisition, because it credits ad spend with every paying order in the store's history, whether or not an ad caused it.

2. Break-even cost per order, as a function of gross margin

Unit cost on the product is UNKNOWN (open question 3 in 00-open-questions.md, unanswered as of this pull). Gross margin is therefore UNKNOWN, and a single break-even number would misstate the picture in whichever direction is wrong. Instead:

Break-even cost per order = AOV x gross margin %

This is the maximum a business can spend to acquire one paying order and still clear its variable product cost on that order alone (it ignores shipping cost, payment-processing fees, and all fixed costs -- software, labour, rent -- which are separate and also unaddressed here; see the UNKNOWN section).

Gross marginBreak-even cost per orderActual blended CPA ($296) as a multiple
40%$37.657.9x over
50%$47.066.3x over
60%$56.475.2x over
70%$65.884.5x over
80%$75.303.9x over
90%$84.713.5x over
100% (theoretical; zero product cost)$94.123.1x over

Even at a 100% gross margin, which is not a real state for a physical product with a manufactured case and a printed sticker, break-even cost per order tops out at $94.12 -- the full AOV. The observed blended CPA of ~$296 clears that ceiling by more than 3x. Put the other way: the margin required to make the current blended CPA break even is

295.96 / 94.12 = 314.4%, or 296.99 / 94.12 = 315.5%, depending which combined-spend figure is used

neither of which is a margin any product can carry. This is not a "find a better margin" problem. At this AOV and this spend efficiency, no plausible or even implausible margin makes paid acquisition break even on a blended basis. The lever that would need to move is spend efficiency (fewer wasted dollars, see 20-meta-ads.md and 21-google-ads.md) or AOV (bundling, upsell), not margin.

None of this requires knowing the actual margin to be true. It is a statement about the shape of the problem, not a guess at the number the client will eventually supply.

Does repeat purchase close the gap? Cross-checked against section 5

A sophisticated reader's next question is whether repeat buyers change this picture: an order acquired at a loss can still be worthwhile if that buyer comes back. Section 5 below reports the only repeat-purchase data this aggregate can produce: 21 distinct buyers, 3 of whom (14.3%) placed more than one order, over the live-order history to date (25 orders, paid and zero-value together).

Two backward-looking reads of what a buyer is worth to date, not a projection of what any buyer will spend going forward (consistent with this document's no-projections rule):

$85.16 per buyer, observed to date. This already blends single- and repeat-purchase buyers and correctly reflects that some buyers (the zero-value-order buyers) contributed $0.

distinct buyers) x $94.12 = 1.19 x $94.12 = $112.05 per buyer, observed to date. This upper-bound read treats every live order, including zero-value ones, as if it carried full AOV, which it does not -- it is deliberately generous, not a best estimate.

Both reads sit under $112, against a gap between the ~$296 blended CPA and the $94.12 AOV of $201.88 per order. Even the generous read adds only $112.05 - $94.12 = $17.93 of incremental value per buyer from repeat purchase, covering under 9% of that gap. Repeat purchase does not close the gap between CPA and AOV at this order volume, and the 14.3% repeat rate raises the per-buyer read only modestly.

This is marked INFERRED, not HARD, and deliberately not sharpened further: it rests on 3 repeat buyers out of 21 total, a sample too small to support a precise per-buyer value, a repeat-rate trend, or any statement about what a future buyer is worth. The conclusion that repeat purchase does not rescue the blended-CPA break-even picture is directionally solid at this sample size; the exact dollar figures above are illustrative bounds, not estimates to build a forecast on.

3. Ad-attributed cost per order (where attribution allows)

The blended figure above is generous to paid acquisition because it credits ad spend with orders it may not have caused. A stricter, ad-attributed figure divides a platform's own spend by that same platform's own claimed purchases, over the same window.

Meta, full account-era window, 2025-12-03 (account creation) to 2026-08-31 (the same window as 30-tracking.md Reconciliation 3):

Spend figurePurchase count usedAd-attributed CPA
$4,801.42 (amount_spent)11 (purchase / pixel field)$436.49
$4,801.42 (amount_spent)13 (omni_purchase, broader)$369.34
$4,821.05 (cross-checked)11 (purchase)$438.28
$4,821.05 (cross-checked)13 (omni_purchase)$370.85

Meta-attributed cost per order sits in a $369-$438 range, meaningfully higher than the $296 blended figure, not lower. This looks counter-intuitive until the mechanism is clear: the blended figure spreads the same spend over 19 paying orders (Shopify's full count, including whatever is organic or unattributed), while the ad-attributed figure spreads it over Meta's own narrower count of purchases it can claim credit for (11 or 13, depending which field). A narrower denominator on nearly the same spend produces a higher per-order cost. This also means the blended $296 figure is not a worst case -- it is closer to a best case, and the honest per-order cost of the spend Meta itself claims responsibility for is worse.

Google Ads-attributed CPA cannot be computed with confidence. GA4's transactions metric is GA4's own e-commerce event, not confirmed to be the same event Google Ads bids toward (21-google-ads.md, conversion-action configuration is a Google Ads API field this task's credentials cannot read). The one campaign-level data point available (GADS-03): the [Pmax] [String protech] campaign drove 867 clicks and 1 transaction at $481.61 of that campaign's cost -- consistent with the same order of magnitude as Meta's ad-attributed range, but this is a single campaign, a single transaction, and not a lifetime Google-attributed CPA. Marked UNKNOWN, not computed as a headline figure.

Why blended flatters and ad-attributed does not: blended answers "how much did total ad spend cost per paying order, generously crediting spend with every sale in the store's history." Ad-attributed answers "how much did Meta's own claimed conversions actually cost." Neither answers "how many of these orders would not have happened without the ad" -- that is an incrementality question, and no incrementality test (holdout, geo-lift, or otherwise) exists in this account. Both figures are real, dated, and internally consistent; neither should be read as the one true CAC.

4. Inventory position

Units held, across all four product records (10-shopify.md, pulled 1 Sep 2026):

RecordStatusUnitsNote
String Protech Guitar String Protection CaseUNLISTED942The sellable $59.99 case, SP-GPC-BLK-001, reachable only by direct link
Custom Vinyl Sticker - String ProtechACTIVE2968 artist variants, $9.99 each
Guitar String Protection Case with Custom Vinyl StickerACTIVE296Bundle, 8 artist variants, $59.99 each
[Nuuk] String Protech Guitar String Protection CaseDRAFT947Same SKU as the UNLISTED case (SP-GPC-BLK-001), unsellable while DRAFT (SHOP-02)
Total, all four records2,481
Total, currently sellable (excludes DRAFT)1,534

Sell-through since first order (2025-11-06, used as the launch proxy -- the earliest evidence of any sale in the export):

Cumulative units shipped, lifetime, all orders (paid and zero-value alike, since both deplete physical stock the same way) = 110 (orders-aggregate.md).

This is a proxy, not a textbook sell-through rate (units received is not available; this uses current on-hand inventory plus units already shipped as the denominator, which understates true sell-through only to the extent some current stock was received after some of the 110 units already shipped -- a second-order effect given the size of the gap below).

Months of cover at the observed run rate. Run rate stated here: 110 units shipped over the 295-day window from first order (2025-11-06) to last order (2026-08-28) = 9.7 months = 11.3 units/month, lifetime average. This is the only run rate window available; monthly order volume is uneven (see orders-aggregate.md's by-month table, ranging from 0 to 7 orders/month), so a single average necessarily smooths that.

Neither number describes a real, well-run inventory position. A store selling roughly 11 units a month does not carry 18 years of cover by design. The far more likely explanation, consistent with SHOP-01's direct finding that these four inventory items are genuinely distinct records (not one stock pool counted four times), is that the 2,481 figure reflects duplicate, unreconciled product records rather than 2,481 physical units on a shelf -- but this task cannot distinguish "duplicated bookkeeping" from "genuinely over-ordered stock" without asking the client. The arithmetic above is DERIVED and HARD; the interpretation that the total is inflated by record duplication rather than real overstock is INFERRED, not HARD.

5. Cohort and repeat purchase behaviour

From the hashed-buyer aggregate only, never from PII (orders-aggregate.md):

MeasureValue
Distinct buyers (hashed)21
Repeat buyers (>1 order)3
Repeat rate3 / 21 = 14.3%
Window covered2025-11-06 to 2026-08-28 (~9.7 months)

That is the full extent of what the PII-free aggregate exposes. The aggregation script hashes each buyer's email on first read and uses the hash only to increment a distinct-buyer set and a per-hash order counter -- it never retains order dates against a buyer hash, so a cohort curve (for example, repeat rate broken out by the buyer's month of first purchase) cannot be produced from the current script output without adding that capability to the script itself, which was judged out of scope for this task. 14.3% repeat rate at 21 buyers and under 10 months of trading is not enough volume to read a trend into; it is reported as a single HARD snapshot statistic, not a trajectory.

6. Zero-value orders: assessed, not a distortion

An earlier draft of this audit framed the 6 zero-value orders as a giveaway or discount-abuse problem. That framing was wrong and is corrected here.

GusBand1969! (owner identity per docs/status.md, which names Gustavo Bandeira; not independently re-derived from buyer-level records in this task, which holds no PII to check it against) and Hexx100 (identity not established, but used on all 3 of its orders consistently, consistent with sample or reviewer distribution rather than a leaked or publicly-guessable code).

revenue, and they were already excluded from the headline figures that matter for unit economics: net revenue ($1,788.30) and AOV ($94.12) are both computed from the 19 paying orders only, per scripts/analyze-orders.ts, which filters total > 0 before computing AOV.

because both use the 19-paying-order denominator, not 25 (19 + 6). Had the zero-value orders been included in the denominator, blended CPA would read $5,623.18 / 25 = $224.93 -- a materially rosier number that would overstate viability. That was not done here.

figures** in section 4, which correctly count all 110 shipped units, including the 44 free ones, because free units still leave the warehouse and still deplete stock.

Conclusion: the zero-value orders are legitimate owner and sample activity, correctly excluded from revenue and CPA math already, and are not a source of headline distortion. The earlier "giveaway problem" framing should not be repeated.

Findings

ID format ECON-nn. Class: BLOCKS / CORRUPTS / WASTES / SUPPRESSES. Tier: HARD (pulled from a system, dated) / DERIVED (arithmetic on HARD) / INFERRED (reasoned from HARD facts) / UNKNOWN. Remit: unowned / media / client.

IDFindingEvidenceClassTierRemit
ECON-01Blended cost per paying order is approximately $296 (combined ad spend $5,623.18-$5,642.82, divided by 19 paying orders), against an AOV of $94.12 -- 3.1x AOV before any product cost is subtracted. This is the most generous reading available: it credits combined spend with every paying order in the store's history, attributed or not.orders-aggregate.md, 20-meta-ads.md, 21-google-ads.md, arithmetic aboveWASTESDERIVEDunowned
ECON-02Break-even cost per order, as a function of gross margin, tops out at $94.12 (the full AOV) even at a theoretical 100% margin. The observed blended CPA of ~$296 clears that ceiling by more than 3x. The margin required to make the current blended CPA break even is 314.4%-315.5%, which no product can carry. Cross-checked against repeat purchase (section 5): even a generous per-buyer revenue read ($112.05 to date) closes under 9% of the $201.88 gap between CPA and AOV. This conclusion does not depend on knowing the actual margin, which remains UNKNOWN (open question 3).Arithmetic above; 00-open-questions.mdBLOCKSDERIVEDclient
ECON-03Meta's own ad-attributed cost per order ($369-$438, depending which spend and purchase-count figure is used) is higher than the blended figure ($296), not lower, because it divides nearly the same spend by Meta's own narrower claimed-purchase count (11-13) rather than Shopify's full 19 paying orders. The blended figure is closer to a best case for paid acquisition, not a worst case.20-meta-ads.md META-01, 30-tracking.md Reconciliation 3, arithmetic aboveWASTESDERIVEDmedia
ECON-04Google Ads-attributed cost per order cannot be computed with confidence: GA4's transactions metric is not confirmed to be the same event Google Ads bids toward, and the conversion-action mapping is not readable from this task's credentials. The one available campaign-level data point ([Pmax] [String protech], 867 clicks, 1 transaction, $481.61 of that campaign's cost) is directionally consistent with Meta's ad-attributed range but is a single transaction, not a lifetime figure.21-google-ads.md GADS-03UNKNOWNUNKNOWNunowned
ECON-05Inventory recorded across all four product records totals 2,481 units (942 UNLISTED case + 296 ACTIVE sticker + 296 ACTIVE bundle + 947 DRAFT duplicate case), against a lifetime run rate of ~11.3 units/month -- 219 months (~18.2 years) of cover at face value, or 135 months (~11.3 years) using only the 1,534 units in currently-sellable (non-DRAFT) records. Sell-through since the first order is 4.2% (all records) to 6.7% (sellable only). These figures are far outside what a normal small store carries by design, and the far more likely explanation is duplicate, unreconciled product records (consistent with SHOP-01's confirmed-distinct-inventory-items finding) rather than genuine 2,481-unit overstock, but this task cannot distinguish the two without client input.10-shopify.md SHOP-01/SHOP-02, orders-aggregate.md, arithmetic aboveCORRUPTSDERIVED (arithmetic) / INFERRED (interpretation)client
ECON-06The 6 zero-value orders (44 of 110 lifetime units shipped, $0 revenue) are legitimate owner (GusBand1969!, owner identity per docs/status.md) and sample (Hexx100) activity, already correctly excluded from net revenue, AOV, and both CPA denominators used in this document. An earlier draft's framing of these as a giveaway or waste problem is withdrawn.orders-aggregate.md, docs/status.md, scripts/analyze-orders.ts (filters total > 0 before AOV), arithmetic aboveCORRUPTSHARD (code-to-order mapping, this task) / relies on docs/status.md, not independently re-verified here (owner identity)unowned
ECON-07Cohort behaviour beyond the aggregate's headline repeat rate (14.3%, 3 of 21 hashed buyers) cannot be computed from the current PII-free aggregate: buyer hashes are used only to increment distinct/repeat counters and are never retained against an order date, so no cohort curve (repeat rate by month of first purchase) exists. This is a scope and tooling limit, not a finding of a problem.scripts/analyze-orders.ts, orders-aggregate.mdUNKNOWNUNKNOWNunowned
ECON-08The blended CPA comparison's two sides span different windows: combined ad spend is stitched from Meta's 2025-12-03-to-2026-08-31 window and Google's GA4-visible 2026-05-01-to-2026-08-31 floor, while the 19-paying-order denominator spans the full 2025-11-06-to-2026-08-28 store history. The mismatch flatters the $296 headline rather than overstating it: excluding just the 2 paying orders that predate Meta's ad account entirely (no ad spend of any kind could have driven them) raises blended CPA to $330.78, about 12% higher.orders-aggregate.md, 20-meta-ads.md, 21-google-ads.md GADS-02, arithmetic aboveCORRUPTSDERIVEDunowned

UNKNOWN section: everything gated on the client's unit cost

Nothing below is guessed. Each line states exactly what becomes computable once the client supplies the missing figure, and nothing is computed in its place.

Missing inputWhat it unlocksCurrent state
Unit cost / COGS on the $59.99 case (and, ideally, the $9.99 sticker and the $59.99 bundle separately)Real gross margin, and therefore where on the break-even table (section 2) the business actually sitsUNKNOWN, open question 3 in 00-open-questions.md, unanswered
Shipping cost per order (outbound to customer)A second variable cost that reduces contribution margin below the gross-margin-only break-even table above; not included anywhere in this documentUNKNOWN, not asked
Payment-processing fees (Shopify Payments or equivalent)A third variable cost, typically a small percentage plus a fixed fee per transaction, that further reduces contribution marginUNKNOWN, not asked
Whether "net revenue" in the order aggregate ($1,788.30) is net of transaction-level discounts and refunds only, or also nets anything else (e.g., partial refunds, chargebacks)Confirms whether AOV ($94.12) is a clean top-line figure or already has some adjustment baked inScript computes total - refund per order (analyze-orders.ts); refunds ARE netted. No other adjustment is applied. This line item is answered, listed here for completeness against the other UNKNOWNs it sits beside
True units-received history (vs. current on-hand inventory)A textbook sell-through rate rather than the current-stock-plus-shipped proxy used in section 4UNKNOWN, not available from any credential this task holds
Whether the 2,481-unit inventory total (section 4 / ECON-05) reflects duplicate records or genuine overstockWhether the "18 years of cover" figure is a bookkeeping artifact or a real capital-tied-up problemINFERRED toward "duplicate records," not confirmed either way

Once unit cost is supplied, the correct next step is not to re-guess this document's numbers but to re-run section 2's table with the real margin substituted in, and to add shipping and payment-processing costs as separate line items before calling any break-even number final.

Conclusion

Blended cost per paying order is approximately $296 against an AOV of $94.12. No plausible or even theoretical gross margin makes that combination break even: the ceiling, at 100% margin, is the AOV itself, and current spend efficiency clears it by more than 3x. Ad-attributed cost per order (Meta's own claimed purchases against its own spend) is higher still, $369-$438, which means the blended figure is the generous case, not the conservative one. This is not a margin problem waiting on one input -- it is a spend-efficiency and AOV problem that a margin answer will locate precisely but will not, by itself, fix.

The zero-value orders are not the problem. They are accounted-for owner and sample activity, already excluded from every revenue and CPA figure in this document.

The inventory position, taken at face value, describes a business that would take 11 to 18 years to sell through what it currently has on record. That is itself the finding: either the store is dramatically overstocked, or -- more likely, given Task 2's confirmation that these are genuinely distinct, unreconciled records rather than one stock pool -- the inventory data cannot currently be trusted as a picture of real physical stock. Either answer is a client conversation, not something this task can resolve from the outside.