Prices with costs behind them, and five columns that promised more than they held #13

Merged
austin merged 1 commits from catering-pricing-v8 into main 2026-07-27 14:05:13 -05:00
Owner

Draft — the numbers are settled with the bakery but nothing here has been seen on a live page yet.

Why

The catering tables were priced before anyone put a cost against them. Working back from the bakery's own goods-plus-labour figures gives a model that reproduces every one of them to the cent — $15.00/hr labour, mini pastry $0.4167, cupcake $0.6667, a 12×17 pan $18.00, cakes $7.00 / $10.50 / $12.50. The check that made it trustworthy: the 8-inch cake solves to $10.50 from the parties table and independently to $10.50 as the weddings' bride & groom cake.

Two facts from the bakery did most of the damage:

  1. A pan cuts 48. Portions had been judged on the cupcakes alone — barely a third of the food.
  2. The bride & groom cake is ceremonial, so it feeds nobody.

Against a planning rate of 1.25 servings a guest, five of the nine live columns promised more than they held — all three weddings (the 200-person one by 37 servings) and the two smaller parties.

What changes

table change
Office boxes No price or serving change — at 1.25 a head they feed 9.6/14.4/19.2 and are already conservative. Adds the note that the ladder is $24 for a dozen, then $8 per extra six.
Parties 15–20 gains half a dozen (was labelled for 20, held 18) and goes $54 → $57. 20–30 relabelled "20–27 people", price unchanged. 30–40 untouched.
Gatherings New table at $110 / $170 for about 55 and about 95 people.
Weddings 2 pans+5dz / 4pans+5dz / 5pans+6dz, and $236/$310/$386 → $298/$372/$463. Head counts unchanged. Adds a $50 deposit.
Page Delivery stated for the first time: $10 Princeville, $30 elsewhere in Peoria County, $40 minimum, none outside the county.

The fix is deliberately asymmetric. Weddings get more food so the familiar 125/200/250 can stand — that is the number a customer says out loud. Parties get a corrected label, because feeding the middle one properly would have taken its cupcakes to two dozen, the same as the tier above, leaving the two $2 apart in cost with only cake size between them.

On the prices

Weddings assumed four hours of labour; six is honest, and reconciles with the three a Gatherings order takes. At six hours the old prices returned $11.92/labour-hour on the 125 — less than a Large office box. A flat 20% restores 40.8 / 42.9 / 48.5% margin and still asks only $1.48–$1.91 a serving.

The entry party at $57 is not an attempt to make it pay — it holds it at $4.00/labour-hour, the same deliberate floor as the Small office box (40% would have been $81.67). The middle party stays at $76: at $88 it was a column nobody could rationally buy, since the $98 beside it feeds fourteen more people.

Verification

  • Applied to a copy of the live database: every statement matched exactly one row — no guard silently missing.
  • Re-run is a complete no-op (13 inserts, 11 updates, all zero), so an admin edit made before this lands always wins, same as V5–V7.
  • Full suite green: 64 tests, 0 failures. Flyway runs V1→V8 on a fresh Testcontainers Postgres, so it applies to an empty database too.

Still open

  • The shop's overhead per production hour is unknown, so these figures are contribution, not profit. Four lines (both small office boxes, both smaller parties) sit under $12/labour-hour and would be underwater at a realistic overhead.
  • Office Medium at $9.50/labour-hour is the one nobody has actually decided on.
  • No competitor prices have ever been checked — the "we're cheap" read is inference, not research.

🤖 Generated with Claude Code

Draft — the numbers are settled with the bakery but nothing here has been seen on a live page yet. ## Why The catering tables were priced before anyone put a cost against them. Working back from the bakery's own goods-plus-labour figures gives a model that reproduces every one of them **to the cent** — $15.00/hr labour, mini pastry $0.4167, cupcake $0.6667, a 12×17 pan $18.00, cakes $7.00 / $10.50 / $12.50. The check that made it trustworthy: the 8-inch cake solves to $10.50 from the *parties* table and independently to $10.50 as the *weddings'* bride & groom cake. Two facts from the bakery did most of the damage: 1. **A pan cuts 48.** Portions had been judged on the cupcakes alone — barely a third of the food. 2. **The bride & groom cake is ceremonial**, so it feeds nobody. Against a planning rate of 1.25 servings a guest, **five of the nine live columns promised more than they held** — all three weddings (the 200-person one by 37 servings) and the two smaller parties. ## What changes | table | change | |---|---| | **Office boxes** | No price or serving change — at 1.25 a head they feed 9.6/14.4/19.2 and are already conservative. Adds the note that the ladder is $24 for a dozen, then $8 per extra six. | | **Parties** | 15–20 gains half a dozen (was labelled for 20, held 18) and goes **$54 → $57**. 20–30 relabelled **"20–27 people"**, price unchanged. 30–40 untouched. | | **Gatherings** | **New table** at $110 / $170 for about 55 and about 95 people. | | **Weddings** | 2 pans+**5**dz / **4**pans+5dz / **5**pans+6dz, and **$236/$310/$386 → $298/$372/$463**. Head counts unchanged. Adds a $50 deposit. | | **Page** | Delivery stated for the first time: $10 Princeville, $30 elsewhere in Peoria County, $40 minimum, none outside the county. | The fix is deliberately asymmetric. Weddings get **more food** so the familiar 125/200/250 can stand — that is the number a customer says out loud. Parties get a **corrected label**, because feeding the middle one properly would have taken its cupcakes to two dozen, the same as the tier above, leaving the two $2 apart in cost with only cake size between them. ## On the prices Weddings assumed four hours of labour; **six** is honest, and reconciles with the three a Gatherings order takes. At six hours the old prices returned **$11.92/labour-hour** on the 125 — less than a Large office box. A flat 20% restores 40.8 / 42.9 / 48.5% margin and still asks only **$1.48–$1.91 a serving**. The entry party at $57 is *not* an attempt to make it pay — it holds it at **$4.00/labour-hour**, the same deliberate floor as the Small office box (40% would have been $81.67). The middle party stays at **$76**: at $88 it was a column nobody could rationally buy, since the $98 beside it feeds fourteen more people. ## Verification - Applied to a **copy of the live database**: every statement matched exactly one row — no guard silently missing. - **Re-run is a complete no-op** (13 inserts, 11 updates, all zero), so an admin edit made before this lands always wins, same as V5–V7. - Full suite green: **64 tests, 0 failures**. Flyway runs V1→V8 on a fresh Testcontainers Postgres, so it applies to an empty database too. ## Still open - The shop's **overhead per production hour** is unknown, so these figures are contribution, not profit. Four lines (both small office boxes, both smaller parties) sit under $12/labour-hour and would be underwater at a realistic overhead. - **Office Medium at $9.50/labour-hour** is the one nobody has actually decided on. - No competitor prices have ever been checked — the "we're cheap" read is inference, not research. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
austin added 1 commit 2026-07-27 12:58:53 -05:00
Prices with costs behind them, and five columns that promised more than they held
build-and-publish / build (pull_request) Successful in 2m4s
1d07272aea
The catering tables were priced before anyone put a cost against them. Working back from the
bakery's own goods-plus-labour figures gives a model that reproduces every one of them to the
cent -- $15.00/hr, mini $0.4167, cupcake $0.6667, a 12x17 pan $18.00, cakes $7.00/$10.50/$12.50 --
and the 8-inch solves to $10.50 from the parties table and independently to $10.50 as the wedding
cake, which is the check that made the rest trustworthy.

Two facts from the bakery did most of the damage. A pan cuts 48, so portions had been judged on
the cupcakes alone -- barely a third of the food. And the bride & groom cake is ceremonial, so it
feeds nobody. Against 1.25 servings a guest, five of the nine live columns promised more than they
held: all three weddings (the 200 by 37 servings) and the two smaller parties.

The fix is deliberately asymmetric. The weddings get more food so the familiar 125/200/250 can
stand, because that is the number a customer says out loud. The parties get a corrected label,
because feeding the middle one properly would have taken its cupcakes to two dozen -- the same as
the tier above -- leaving the two $2 apart in cost with only cake size between them.

Prices follow the costs. Weddings were assuming four hours of labour; six is honest, and it
reconciles with the three a Gatherings order takes. At six the old prices returned $11.92 an hour
on the 125 -- less than a Large office box -- so all three go up 20%, which still asks only
$1.48-$1.91 a serving. The entry party goes to $57, not to make it pay but to hold it at $4.00 an
hour, the same deliberate floor as the Small office box. The middle party stays at $76: at $88 it
was a column nobody could rationally buy, since the $98 beside it feeds fourteen more people.
Office prices do not move at all -- at 1.25 a head those boxes are already conservative.

New Gatherings table, because the page went from "30-40 people" to "125" with nothing between, and
the bakery confirmed those enquiries come in. Sized from the pan rather than guessed, labels
rounded down.

Delivery and a wedding deposit were never stated anywhere; both are now.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
austin marked the pull request as work in progress 2026-07-27 12:59:01 -05:00
austin marked the pull request as ready for review 2026-07-27 14:04:37 -05:00
austin merged commit 9026b96629 into main 2026-07-27 14:05:13 -05:00
austin deleted branch catering-pricing-v8 2026-07-27 14:05:13 -05:00
This repo is archived. You cannot comment on pull requests.
No Reviewers
No labels
1 Participants
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: TheVine/itsthevine#13