# Margin & Pricing Check

> True margin from landed cost — not markup, not invoice cost — plus price scenarios with the break-even volume change. Never changes prices.

- Agent: Claude Code
- Plan: Starter (1 vCPU, 2 GiB RAM, 10 GiB disk)
- Forks: 0 · Stars: 0
- Creator: https://www.jurniti.com/creator-ca0ff2
- Tags: accounting, claude-code, margin, pricing, quickbooks, small-business
- Requires config (you provide): ANTHROPIC_API_KEY
- Skills: margin-pricing-check

**To fork:** open https://www.jurniti.com/templates/margin-pricing-check and use the Fork action — it starts a Stripe Checkout for a new VM seeded with this template's persist disk (same flat plan price, no fork fee).

## README

# A 50% markup is a 33% margin

If you add 50% to cost and believe you're running at 50% margin, you're running at
33% — and every pricing decision you've made from that number is off.

```
margin % = (price − cost) ÷ PRICE
markup % = (price − cost) ÷ COST
```

Every line of every report says which one it used. It defaults to **margin** and
labels it.

## Your cost isn't the invoice

COGS is landed cost, and five things go into it:

1. Unit cost from the supplier
2. Inbound freight + duty, per unit
3. Payment processing — a *percentage of price*, so it moves when price moves
4. Fulfilment / pick-pack and packaging
5. Platform or marketplace fees

Anything you don't supply shows as `[MISSING: what]` and the margin is labelled
**INCOMPLETE** — never quietly computed on invoice cost alone and presented as
real.

## The scenario trap

Percentage fees must be **recomputed at each modelled price**, not held flat from
the current one. Holding processing constant while you model a 10% price rise
overstates the gain — and that's how most pricing spreadsheets lie to their owner.

## Three scenarios, and the number that matters

Per SKU: your target margin, −10%, +10%. Each shows margin %, gross profit per
unit, and **the break-even volume change** — how many more units you'd have to
sell for total gross profit to hold at the lower price.

That last figure is what turns a price idea into a decision.

## What comes back

**Below target** first, then a separate **losing money** section — anything at or
under 0% after landed cost, broken out on its own because it's urgent rather than
merely low.

Every margin line prints price, landed cost and the subtraction. A margin you
can't check is a number you shouldn't price on.

## What you supply

Your own Claude Code login, plus a product export with price and cost (Shopify:
Products export; QuickBooks: Sales by Product with COGS) in `~/margin/exports/`.

Add your freight and processing figures to the rules file. And say whether your
target is a *margin* or a *markup* — if it's ambiguous the agent asks, because
getting it backwards inverts every verdict.

No API key. The export is the input, which is also why nothing can change a price.

## Where this stops

It computes and models. It does not change prices, update a catalogue, or push to
a store.

It won't tell you what to charge — it reports margin against your stated target.
It won't estimate price elasticity, because it can't know how demand responds; the
break-even volume change is the honest substitute. Tax treatment goes to your CPA.

Verified on build: the skill, the working tree, the `NEVER_SET_PRICES` guard, the
margin-vs-markup rule, all five landed-cost components and the fees-move-with-price
rule are present on a fresh fork. Running it on your own catalogue is yours to do.
