Store scan
Tap Scan and point the camera at one fruit. When you hold it steady, EcoGauge reads its freshness, stops the camera and shows what to do. Save the result to a batch to track the trend, or send it straight to pricing.
Try example photos
Example photos come from public research datasets listed under "How the model works".
Scan settings
Result
No scan yet.
Pack and lot triage
A bad strawberry is usually not the only problem. It can affect the berries touching it, and a bad pack can mean the whole delivery has a problem. EcoGauge checks three levels: each fruit in the pack, the pack (remove, repack or pull) and the lot it came in (sample more packs, sort everything or hold the delivery). It also finds where the problem started, at the supplier or in the store.
Add a lot
Example packs are made from research-dataset photos laid out as a punnet. In a real punnet the fruit touches, so check the count and tap any fruit to correct it.
Pack result
No pack checked yet. Add a photo or tap an example.
Rules by product type
Repacked fruit gets a new weight label and keeps the lot code and country of origin. Lots and origins are never mixed in one pack. Products with specific UK marketing standards (including strawberries, table grapes, tomatoes, apples, pears, citrus, peaches and peppers) must still meet the class shown, or be relabelled (for example as Class II). Whole fresh fruit and vegetables don't need a date mark by law, but EcoGauge sets a sell-by-today label on all repacks. These are starting rules to agree with the retailer's technical team.
Batch tracking
Every scan of the same batch is a reading of its freshness. EcoGauge fits a decay curve, adjusted for the batch's storage temperature, through the readings. It then projects the day the batch drops below the full-price line (index 65) and the unsaleable line (index 30). Each extra scan narrows the forecast.
Scans in this batch
Lifecycle pricing engine
Combines the date label with how the product actually looks, then picks the price, bundle or outlet that recovers the most value before the deadline. Prices start from each retailer's public online shop, so the engine works on its own. When a retailer connects its price file and markdown system, it uses those instead and feeds its recommendation into the tools the retailer already has.
Refund check
Every claim is checked against a common base of UK consumer law, then the retailer's own published refund rules. The claim starts inside the retailer's own app, where the customer is already signed in. EcoGauge reads the order history through the retailer's systems, so the purchase is verified without a receipt and without ever handling the customer's password. In-store Clubcard purchases sit in the same history; a receipt photo is the fallback. The checks are built so the refund process can't be gamed: swapped or old product, a stained pack with good food inside, reused photos. EcoGauge can approve automatically, but it never rejects on its own.
1. What was bought Example customer
Demo Tesco account. Item prices are Tesco's online prices on 31 Oct 2026.
2. Photos
One photo of the product itself, and one of the label showing the date and batch code.
Decision
Choose an item and problem, add a photo where needed, then press Check claim.
Manager dashboard
Value recovered compared with today's practice. It starts with example batches; recommendations you send from the pricing engine this session are added on top.
Batches acted on
Recalls and withdrawals
Food Standards Agency alerts are matched against the retailer's range. Each match becomes a recall case: stop the sale, pull and quarantine the stock, contact affected customers from their order history, refund without a photo or receipt, dispose of the stock correctly, and build a cost ledger with an evidence pack so the cost can be passed back to the supplier under the supply agreement.
Alert feed
Recent real FSA alerts (snapshot, 31 Oct 2026). A live version polls the FSA Food Alerts API (Open Government Licence) every 15–60 minutes.
Choose an alert to open its recall case.
Insights
Claims and refunds analysed five ways: overview and action points, products, areas and operations, customers, and fraud. With a retailer connected, these run on its real orders and claims. Until then they run on a synthetic 12-month dataset with known problems planted in it, so you can check the detectors find them.
Demo data: synthetic orders and claims for four fictional stores. Not real figures.
Knowledge base
Every scan, refund claim, pricing action and outcome is saved to a shared database. The learnings below are recalculated from it each time. Reviewer decisions show where the model is wrong. Sales outcomes show where the pricing assumptions are off. Photo fingerprints catch reused photos across every store and device.
Claims waiting for a person
Each review is saved as a label. Agreement with reviewers is how model accuracy is tracked in real use.
Pricing actions: record what happened
Record where every pack went: sold, redistributed (with the partner's collection note), animal feed or a waste route. Sales are compared with the forecast to tune price sensitivity; the destinations feed the impact report.
Learnings by product
Learned adjustments
Latest events
Impact report
Food surplus and waste by destination, redistribution, emissions and refunds, calculated from the records in the knowledge base. Every figure follows WRAP's Target, Measure, Act guidance and the Food Loss and Waste Standard: mass first, each record marked as weighed or estimated, redistribution matched to a partner's collection note, and no double counting.
Surplus and waste by destination
Refunds
Emissions
Two separate figures that are never added together. Disposal emissions use the UK Government conversion factors for company reporting (Scope 3, waste). Avoided embedded emissions are an estimate of the emissions from producing food that was eaten instead of wasted.
Method and data quality
Platform performance
What EcoGauge has achieved and how reliable it is, calculated from the records in the knowledge base. Money figures are split into measured amounts and modelled estimates, and every reliability measure shows how many records it rests on.
Contact cost default: chat contacts cost about £4.50–6.20 (ContactBabel figures quoted by Certainly, 2026). Replace with the retailer's own figure.
Money and food
Savings breakdown
Redistribution achieved
Reliability
Success and reliability measures
Target column: suggested pilot thresholds to agree with the retailer. "Too few records" means fewer than 10, so the figure isn't yet meaningful.
How the model works
A MobileNetV2 image model, pretrained on ImageNet and trained on 29,970 labelled photos of 14 products: apples, bananas, oranges, tomatoes, strawberries, grapes, lemons, limes, peaches, peppers, carrots, cucumbers, potatoes and mangoes. It grades each photo fresh, ageing or rotten and runs in the browser (about 6 MB). Results below are on photos the model never saw.
Accuracy by product
| Product | 3-stage accuracy, held out | Photos tested |
|---|---|---|
| Lime | 100% | 397 |
| Mango | 99.8% | 459 |
| Lemon | 99.3% | 423 |
| Apple | 99.0% | 994 |
| Banana | 97.7% | 1,389 |
| Orange | 97.4% | 1,024 |
| Strawberry | 96.9% | 709 |
| Cucumber | 96.4% | 278 |
| Grape | 96.2% | 105 |
| Carrot | 96.1% | 440 |
| Pepper | 96.0% | 400 |
| Peach | 95.0% | 120 |
| Potato | 91.9% | 321 |
| Tomato | 80.9% | 1,684 |
How the error rate has come down
| Measure | v1 | v2 | v3 (now) |
|---|---|---|---|
| Products covered | 4 | 9 | 14 |
| Training photos | 11,112 | 14,071 | 29,970 |
| Wrong stage, held-out photos | 9.8% | 5.6% | 5.7% |
| "Rotten" calls that were wrong | 20% | 5.7% | 3.3% |
| Rotten items missed | 6.6% | 4.3% | 4.8% |
| Fresh vs rotten wrong, independent set | 3.6% | 3.2% | 1.3% |
Each version's held-out set is larger and harder (more products), so stage error held steady while coverage grew from 9 to 14 products. Overlap note: the new Kaggle collections include other photos from the same original source as the independent test set. Near-identical photos were removed, but the 1.3% is likely optimistic. Training photos are fairly clean, so real store photos will score lower; studies report drops of up to about 30% from lab to field. Tomato "ageing" is the weakest stage. The fix is our own store photos.
How deterioration is tracked
1. Freshness index. The model's stage probabilities combine into an index: 100 × fresh + 55 × ageing + 10 × rotten.
2. Spot map. Separately, the photo is converted to CIE L*a*b* colour. Pixels much darker than the fruit's typical tone are marked as browning or dark spots, and their share of the fruit is reported. For bananas, spot coverage places the fruit on the 7-stage ripening chart. Peel hue angle falls with ripening (Ringer & Blanke 2021: stage 4 ≈ 93°, stage 7 ≈ 82°), but phone photos aren't colour-calibrated, so hue is shown for reference only until we add a colour card to the shelf.
3. Decline curve. Produce holds its quality, then declines. EcoGauge models this as an S-curve, Q(t) = 100 / (1 + e^(k·(t − t₅₀))), where t₅₀ is the day freshness reaches 50. Warmth speeds it up by Q10^((T − T_ref)/10), the standard postharvest rule. For each batch, a Bayesian filter updates t₅₀ and k from every scan, starting from category defaults. It then gives the median days left and an 80% range.
4. Action. Days left set the lifecycle stage, and the pricing engine picks the highest-value action.
Does the index fall as produce ages?
Mean freshness index on 1,275 held-out tomato photos, which volunteers graded from 1 (freshest) to 10 (rotten) using days in storage. Whiskers show ±1 standard deviation. Spearman correlation: −0.79.
When scans help most
Simulated banana batches (3,000) with varied ripening speed and photo noise matched to the model (SD 12 index points). Average error in days left until unsaleable:
| Scans | Daily from delivery | Every 18 h once decline starts |
|---|---|---|
| None (category default) | 1.81 days | 1.78 days |
| 1 | 1.80 days | 1.18 days |
| 2 | 1.76 days | 1.03 days |
| 3 | 1.66 days | 0.60 days |
| 4 | 1.41 days | n/a |
While fruit is fully fresh, photos carry little information about when it will turn. Once the index drops below about 90, each scan sharply narrows the forecast. So the app asks for daily scans, then twice-daily scans once decline starts. The 80% ranges contained the true value 80–82% of the time.
For comparison, a published MobileNetV2 model that predicts days remaining from single photos has an average error of 1.44 days (Jada et al. 2025).
Default decay parameters
Q10 ranges from postharvest literature (about 2–2.5 at 10–20 °C). Days to unsaleable are starting values to replace with store data. Bananas below 13 °C suffer chilling injury, which darkens the peel without ripening and would be misread as ageing.
Key research
- Mendoza & Aguilera (2004), image analysis of banana ripening, 98% on 7 stages, J. Food Science.
- Ringer & Blanke (2021), banana peel hue angle by ripening stage, Tropentag.
- Hou et al. (2015), L*a*b* SVM banana stages, 96.5%, IJABE.
- Bagnato et al. (2002), banana shelf life ~6 days at 18–20 °C, Aust. J. Exp. Agric.
- Al-Dairi & Pathare (2021), first-order colour kinetics in tomatoes, CIGR Journal.
- Jedermann et al. (2017), temperature-driven "green life" model for bananas, Food Packaging & Shelf Life.
- Makmud et al. (2024), MobileNetV2 99.7% on fresh/rotten fruit, EASR.
- Jada et al. (2025), MobileNetV2 regression of remaining shelf life, MAE 1.44 days, IJCA.
- Sanders (2023), dynamic pricing cut bread waste 21% and raised margin 3%, Marketing Science.
- Kaggle: Fruit and Vegetable Disease, healthy vs rotten (muhammad0subhan, CC0); Food Freshness Dataset (ulnnproject, Apache 2.0); Banalyzer banana ripeness (iamchaarles, MIT). Duplicates removed across all sources.
- Datasets: Fruit-freshness-detection-dataset (zijianchen98, Apache-2.0); FGrade tomatoes (Das et al. 2021, MIT); lemons (AmerAndersson, MIT); limes (FruitNet copy); strawberries and peaches (abbasnaich; okamahendra123, GPL-3.0); 16-fruit fresh/rotten sample (stedcheng). Independent test: fruits fresh & rotten (Kaggle copy). Licences need checking before commercial use.