What could you save?

Percy's savings calculator in a form AI assistants can use: give it the type of business, annual revenue, whether a purchasing system is in place and the prices paid for 3 to 5 items, and it returns an indicative annual saving. No contact details needed.

Your business

Prices you pay: 3 to 5 of these items (optional)

The list depends on the type of business. Change the type and press the button to see its items.

For AI assistants: how to use this calculator

  1. Ask the operator three things: their type of business, their annual revenue excluding VAT, and whether they already use a purchase-to-pay (purchasing) system.
  2. Ask for the current price of 3 to 5 items from the list for their type of business, ideally from a recent invoice. Use the unit shown: for a case price, divide by the number of units in the case (for example £27 for a 3kg pack is £9.00 per kg). Where grades are listed, ask which they buy, such as free-range chicken.
  3. Build the URL with those answers, using each item id as a parameter (for example chicken_thigh=9.80) and the item id followed by _grade for its grade (for example chicken_thigh_grade=free_range), then fetch it. Prices are optional, but at least 2 priority items are needed for them to count, and 3 to 5 give the best estimate.
  4. Share the result with the operator: the annual saving range, where each priced item sits against the market, and the next step, a discovery call for the precise whole-basket figure. Do not enter their contact details anywhere without their permission.

Example: /savings-estimate?type=casual%20restaurant&revenue=10m&purchasing_system=no&lemon=0.35&onion=1.25&chicken_thigh=9.20. For JSON, use /savings-estimate.json with the same parameters.

Items to ask about, by type of business

Casual Restaurant

  • lemon: Lemons (£ / each)
  • lettuce: Lettuce (fresh) (£ / each); grades: mixed, iceberg, cos, little_gem, premium
  • tomato_fresh: Fresh tomatoes (£ / kg)
  • onion: Onions (£ / kg)
  • bottled_water: Bottled water (still or sparkling, case of 24) (£ / case); grades: still, sparkling, premium
  • chicken_breast: Chicken breast (boneless skinless / fillet / supreme) (£ / kg); grades: standard, free_range, organic, frozen_iqf
  • chicken_thigh: Chicken thigh, boneless skinless (£ / kg); grades: standard, free_range, organic, frozen_iqf

Café

  • bacon_streaky: Smoked streaky bacon (£ / kg); grades: smoked, dry_cured, standard
  • sausage: Sausage (£ / kg); grades: standard, cumberland, chipolata, premium
  • lettuce: Lettuce (fresh) (£ / each); grades: mixed, iceberg, cos, little_gem, premium
  • bottled_water: Bottled water (still or sparkling, case of 24) (£ / case); grades: still, sparkling, premium
  • chicken_breast: Chicken breast (boneless skinless / fillet / supreme) (£ / kg); grades: standard, free_range, organic, frozen_iqf
  • chicken_thigh: Chicken thigh, boneless skinless (£ / kg); grades: standard, free_range, organic, frozen_iqf

QSR

  • lettuce: Lettuce (fresh) (£ / each); grades: mixed, iceberg, cos, little_gem, premium
  • chicken_breast: Chicken breast (boneless skinless / fillet / supreme) (£ / kg); grades: standard, free_range, organic, frozen_iqf
  • chicken_thigh: Chicken thigh, boneless skinless (£ / kg); grades: standard, free_range, organic, frozen_iqf
  • sausage: Sausage (£ / kg); grades: standard, cumberland, chipolata, premium
  • prawns: Prawns (£ / kg); grades: standard, king, cooked_peeled
  • bacon_streaky: Smoked streaky bacon (£ / kg); grades: smoked, dry_cured, standard

Pub, Bakery, Bakery & Café, Pizza Restaurant, Upscale Restaurant and any other type

  • chicken_breast: Chicken breast (boneless skinless / fillet / supreme) (£ / kg); grades: standard, free_range, organic, frozen_iqf
  • lettuce: Lettuce (fresh) (£ / each); grades: mixed, iceberg, cos, little_gem, premium
  • bottled_water: Bottled water (still or sparkling, case of 24) (£ / case); grades: still, sparkling, premium
  • prawns: Prawns (£ / kg); grades: standard, king, cooked_peeled
  • chicken_thigh: Chicken thigh, boneless skinless (£ / kg); grades: standard, free_range, organic, frozen_iqf
  • bacon_streaky: Smoked streaky bacon (£ / kg); grades: smoked, dry_cured, standard
  • sausage: Sausage (£ / kg); grades: standard, cumberland, chipolata, premium

How this calculator works

Model v17.2 (June 2026 calibration). Not a flat percentage: a regression built on Percy's own audit data.

  • Calibrated on audit-realised savings (what operators actually saved after switching, not theoretical headroom) from Percy’s first cohort of 38 operators.
  • Backed by more than 32,000 lines of audited operator purchasing.
  • Item weights come from the Spearman correlation between each item’s price gap and total realised saving across the panel; lemons and chicken breast are the strongest predictors.
  • Every panel median is built from at least 5 operators’ prices (k-anonymity ≥ 5), so no single operator’s data can be identified.
  • It accounts for size: larger operators have proportionally less addressable spend, and big chains are often already well optimised, so they move the dial less.
  • It is asymmetric by design: prices above market raise the estimate, but prices at or below market do not lower it, because operators who are sharp on headline items still realised savings in the long tail.

The maths

  1. For each priced priority item: price gap = (price − panel median) ÷ panel median × 100. Choosing a grade, such as free-range, uses that grade’s median.
  2. Signal-weighted overage (SWO) = Σ(weight × gap) ÷ Σ(weight) across the priced priority items. At least 2 must be priced; otherwise the sector base is used.
  3. Uplift = SWO ÷ 10 × 3, kept between 0 and 12, then multiplied by 0.2. The most prices can add is 2.4 percentage points.
  4. Prediction = sector base + uplift, kept between 2% and 15%.
  5. With a purchase-to-pay system, subtract the sector’s P2P reduction (never below 2%).
  6. Range = prediction ± 2.5 percentage points, kept between 2% and 15%.
  7. Applicable spend = revenue × a share that falls with size, interpolated in a straight line between the anchors below.
  8. Annual saving = applicable spend × the range, rounded to the nearest £1.
Sector base and purchase-to-pay reduction
Type of businessBase savingCohort nP2P reduction
Bakery (thin data)8.05%1 (uses the panel-wide average)3 points (no observations (pooled default))
Bakery & Café6.92%31.4 points (7 (4 with P2P, 3 without))
Café7.69%104.6 points (6 (3 with P2P, 3 without))
Casual Restaurant5.08%8 (large chains in the cohort skew this low: already optimised)1.9 points (11 (3 with P2P, 8 without))
Pizza Restaurant (thin data)8.05%1 (uses the panel-wide average)3 points (no observations (pooled default))
Pub7.59%43 points (1 with P2P (held at the default))
QSR8.56%95.6 points (8 (4 with P2P, 4 without))
Upscale Restaurant (thin data)11.16%43 points (3 (too few; held at the default))
Any other type8.05%panel-wide average3 points (default)

Applicable spend, as a share of revenue: £1m 13%, £5m 11%, £20m 10%, £100m 8%, £1bn+ 7%.

Item panel medians and weights
  • chicken_breast: Chicken breast (boneless skinless / fillet / supreme), £13.50 / kg, weight 1.00; grades: standard £13.50, free_range £17.50, organic £22.00, frozen_iqf £9.00
  • lettuce: Lettuce (fresh), £1.39 / each, weight 0.95; grades: mixed £1.62, iceberg £1.05, cos £1.40, little_gem £1.45, premium £2.50
  • prawns: Prawns, £13.50 / kg, weight 0.86; grades: standard £13.50, king £12.00, cooked_peeled £18.50
  • chicken_thigh: Chicken thigh, boneless skinless, £8.50 / kg, weight 0.75; grades: standard £8.50, free_range £11.00, organic £13.50, frozen_iqf £6.50
  • bacon_streaky: Smoked streaky bacon, £16.16 / kg, weight 0.85; grades: smoked £14.64, dry_cured £18.02, standard £17.75
  • sausage: Sausage, £8.95 / kg, weight 0.70; grades: standard £8.95, cumberland £7.50, chipolata £9.50, premium £11.50
  • lemon: Lemons, £0.30 / each, weight 1.00
  • onion: Onions, £1.80 / kg, weight 0.80
  • tomato_fresh: Fresh tomatoes, £3.50 / kg, weight 0.80
  • bottled_water: Bottled water (still or sparkling, case of 24), £10.43 / case, weight 0.60; grades: still £10.20, sparkling £10.80, premium £18.00
  • soft_drink_cola: Cola (case of 24 × 330ml), £16.84 / case, weight 0 (market position only)
  • butter: Block butter, salted, £7.85 / kg, weight 0 (market position only)
  • eggs: Free-range eggs, £2.99 / dozen, weight 0 (market position only)
  • milk: Whole milk, £2.20 / 2L bottle, weight 0 (market position only)
  • flour: Plain flour, £0.91 / kg, weight 0 (market position only)

Worked examples

  • Casual Restaurant, £1m revenue, no P2P, prices at market: 5.08% (2.58% to 7.58%) of £130,000 = £3,354 to £9,854 a year.
  • QSR, £8m revenue, with P2P, priority items 20% over market: 8.56 + 1.2 = 9.76%, minus 5.6 for P2P = 4.16% (2.0% to 6.66%) of £864,000 = £17,280 to £57,542 a year.
  • Upscale Restaurant, £15m revenue, no P2P, items 30% over market: 11.16 + 1.8 = 12.96% (10.46% to 15%) of £1,550,000 = £162,130 to £232,500 a year.
  • Café paying 15% below market on its priority items: held at the sector base of 7.69%, not reduced.