Catch spoiled produce before customers do

Computer vision watches fresh and produce sections continuously, locating bruised, rotting, or otherwise unsellable items so staff can replace them before they hit a shopping basket.

Discuss a pilot →

Quick facts

Business size
Mid-market and enterprise retail chains with fresh / produce sections
Timeline
3-5 weeks test, 2-3 months pilot, 3-6 months network rollout
Budget range
Pilot from €25k. Single-store deployment, growing per location.
Hardware
Existing CCTV often works if angle and resolution allow; targeted produce-section cameras for new installs.
Data needed
30+ photos per produce class, both good and damaged examples. EDA to define quality-class boundaries.
Evolution

No product gives you this. We assemble and train it around you.

What this scale means

Further right means more proven and cheaper. Further left means newer and riskier. Here is the test for each step.

Commodity
You could get the result yourself from a ready service, with almost no work. We rarely take these on.
Product
A vendor already sells this result turnkey, like shelf recognition from Trax or document reading from ABBYY. If one of them fits you, use it. You come to us when it does not: when it has to run on your own servers, cost less, or fit systems the product cannot reach.
Custom-built
Vendors sell only the parts. A tool like Tableau hands you charts, but the dashboards and metrics for your business still have to be built. That build is the work, and that is us.
Genesis
The approach exists but does not work reliably yet. You are betting on it maturing, so it costs more and carries more risk.

Expected outcomes

50-80%
Reduction in customer-facing spoiled-produce incidents varies
85-93%
Detection accuracy on trained produce classes typical
30-60%
Reduction in food-safety complaint volume varies
60-120 frames/minute across 300+ cameras
Processing throughput per system typical

The Problem

Fresh and produce sections are where customer trust gets won or lost. A single bruised apple on a display is a small thing; ten of them is a category-level food-safety problem. The cost shows up in three places: customer complaints, regulatory exposure, and slow attrition of customers who stop shopping the fresh section without ever saying why.

The traditional response is a scheduled walk-through. A staff member checks the produce display every hour or two, picks out spoiled items, and restocks gaps. It works at small scale. At chain scale, with dozens of stores and a dozen produce categories each, this means a staff member dedicated to fresh-section quality. More often it is a staff member who should be dedicated to it but isn’t, because they’re also doing eight other things.

Spoilage in produce isn’t a clean yes/no signal either. Bananas with mild bruising are sellable. Bananas with heavy bruising are not. Where the line falls is a judgement call that varies by associate, by store, by time of day. The result is inconsistency that customers notice.

What the Solution Does

Cameras over the produce section continuously check each item on display for spoilage and damage. The system localizes individual produce units, classifies their quality, and produces an alert when the count of damaged items in a section crosses a threshold.

  1. Capture: produce-section cameras photograph displays on a fast cadence, typically every 2-10 minutes.
  2. Detect: each individual produce item gets located.
  3. Classify quality: sellable / damaged / spoiled, with a confidence score and a damage type when relevant.
  4. Aggregate: count damaged items per category, per display.
  5. Alert: when the count or ratio crosses a threshold, staff get a targeted alert (“3 spoiled apples on display A4, please replace”).
  6. Analyze: historical data feeds analytics on which categories spoil fastest, at which times of day, and which stores have the highest spoilage rate.

Where It Fits

This makes sense if you…

  • Operate retail chains with substantial fresh / produce volume
  • See measurable cost from food-safety complaints, spoiled-product returns, or regulator interactions
  • Have a staff workflow where targeted alerts beat scheduled walk-throughs
  • Can install or have cameras positioned for produce displays specifically (angle and lighting matter more here than for packaged goods)
  • Are ready to accept that “spoiled” is a calibration question along a spectrum

This is probably not the right time if you…

  • Operate at small scale where one dedicated produce staffer suffices
  • Have produce displays so small that cameras can’t get useful coverage
  • Don’t have the staff workflow to act on alerts within minutes, fresh-produce alerts age faster than shelf-monitoring alerts
  • Have a produce assortment that changes faster than data collection can keep up with (rotating seasonal items every week)

Business Value

Customer-facing incident reduction. When cameras catch spoiled produce before a customer does, the complaint never happens. Customer-facing spoilage incidents typically drop by around 50-80% after a tuned deployment. The range varies sharply with your baseline staff cadence.

Food-safety regulatory exposure. In jurisdictions where food safety is regulator-driven, continuous monitoring reduces both the probability of an incident and the documentation burden when one happens. The cameras have already recorded what was on the display, when, and what was flagged.

Quality consistency across stores. What “spoiled” means stops varying by associate. The model has a defined boundary that gets reviewed quarterly and applied uniformly. Customers notice this even if they don’t articulate it: chain-wide produce quality stops being a per-store lottery.

Throughput. The system handles around 60-120 frames per minute across hundreds of cameras, per the top-3 grocery retail chain presale spec. That is enough to cover a multi-store chain with one central processing setup.

How It Works

The pipeline below is what we proposed for top-3 grocery retail chain fresh-produce detection. It adapts the CV stack we use for shelf monitoring, with quality-class boundaries defined per fresh category.

1. Capture

Produce-section cameras photograph displays on a fast cadence. We use either existing produce-section cameras or install dedicated ones during the test phase. Angle matters more than for packaged-goods CV: the camera needs to see the surface of items where damage typically appears.

2. Detection

Each individual produce item gets located in the frame. This is harder than packaged-goods CV because produce items are organic shapes, often touching, sometimes piled. We use detection models tuned for high object density (similar to the architecture choices in our visual search work for Brickit).

3. Quality classification

Each detected item gets a quality class. The class taxonomy is defined per project, typical categories: sellable / minor damage / major damage / spoiled / non-target (something that ended up in the produce display that shouldn’t be there).

Defining the boundaries is real work. “Minor damage” vs “major damage” on a tomato is a different threshold than on a banana. We do EDA with the client’s category team before training, mark explicit boundary cases, and document the standard.

4. Aggregation and alerting

Per-display counts roll up. Thresholds are configurable: a chain might want an alert when 3+ spoiled items are visible on any single display, or when the spoilage ratio crosses 5%. Alerts ship to whatever channel produce staff already monitor.

5. Continuous improvement

Datapipe handles incremental retraining as new categories arrive (seasonal items), as new stores join (different lighting, different camera angles), and as quality-class boundaries get refined. Adding a new produce category typically takes 2-4 weeks of data collection and one retraining cycle.

Stack

YOLO-family detection tuned for organic-shape, high-density scenes. A ResNet-based quality classifier. Datapipe for ETL and retraining. A FastAPI service deployed in cloud (Yandex Cloud, AWS, GCP) or on-prem. Processing throughput scales with GPU count, and we size based on camera count and refresh cadence.

What You Need to Make This Work

Data. Approximately 30 photos per produce class, covering both good and damaged examples. EDA work to define quality-class boundaries. This is sometimes the longest part of the test phase if no historical data exists.

Integrations. Camera feeds (existing CCTV or new installs). An alert delivery channel (Slack, Teams, store-management app, or your produce-team-specific workflow). Optionally, integration with your inventory system to track spoilage waste per category.

Hardware. Cameras with adequate resolution and angle for the produce surface. Cloud GPU for inference (or on-prem GPU if data residency requires). The top-3 grocery retail chain spec for 300 cameras runs comfortably on a single mid-range GPU instance.

Team. A produce-category lead who’ll define quality boundaries with us during EDA. A store-ops contact for the alert workflow. Staff training to respond to targeted alerts in place of scheduled walk-throughs. (Around 10-15 hours per store for the first week post-deployment.)

Implementation Roadmap

1. Test (3-5 weeks)

Pick 1-2 produce categories (start with the highest-volume or highest-spoilage). Define quality-class boundaries with category leads. Train the first version. Measure detection and classification accuracy on your conditions. Output: a written report with per-category accuracy, recommendations on camera positioning, and the documented quality-class taxonomy.

2. Pilot (2-3 months)

Roll out to one store across full produce assortment. Tune thresholds with produce staff. Wire up the alert workflow. Measure complaint reduction and waste-attribution shifts. Output: working production deployment, dashboards in use by produce category team, go/no-go on multi-store rollout.

3. Scale (3-6 months)

Add stores progressively. Generalization across stores often requires a short retraining sprint per new location (different lighting, different display formats). Quarterly category-boundary review as customer expectations and seasonal mix shift.

Keep in Mind

Where it breaks:

  • Spoilage is a continuous spectrum. The model classifies against the boundaries you defined. Boundary cases will always be borderline. Plan for periodic recalibration.
  • Each new produce category takes work. Adding “kiwi” after the model was trained on apples, bananas and pears means new data collection, fresh EDA on quality boundaries, and new retraining. Expect a 2-4 week cycle per new category. It is never a same-day addition.
  • Lighting and angle matter. Damaged produce often shows as subtle color or texture changes. Poor lighting or steep camera angles destroy that signal. Camera placement during the test phase determines what the system can actually see.
  • Generalization across stores is imperfect. A model tuned on store A may need retraining on store B if lighting fixtures or display style differ meaningfully. This is true of all CV at chain scale. We use Datapipe to handle the per-store retraining efficiently.
  • The system is a layer over staff. A produce display still needs staff to restock, rotate and respond to alerts. The system replaces the scheduled walk-through. The staff stay.

FAQ

How much data do you need per produce category?

About 30 photos per class (good and damaged examples) to start. Accuracy improves over the next 2-3 months as moderators correct edge cases and Datapipe retrains incrementally.

Can the system handle organic / heirloom varieties with irregular natural shapes?

Yes, but boundary calibration takes longer. The model learns what “normal” variation looks like for that specific variety; “spoiled” is the deviation from normal. The longer the time you give it to see normal-variation examples, the better.

What about non-produce fresh items (deli, bakery, prepared foods)?

The architecture carries over. Deli meat, bakery items and prepared foods run as separate models (different damage signatures) on one shared pipeline. We typically extend in phases: produce first, deli second, bakery third.

How fast does the system run?

Around 60-120 frames per minute is the design spec for the multi-store deployment we proposed. End-to-end latency from photo capture to alert is typically under 30 seconds.

Does the system tell staff what to do with spoiled items?

The system flags the item with a damage type and severity. Disposition (discount, donate, dispose) is your operational decision. We can integrate the alert into your waste-management workflow if you have one.

Ready to Discuss?

If you operate retail chains with substantial fresh / produce volume and food-safety incidents are a measurable cost, this is a relevant pilot. We’ll talk through your current produce-quality process, your camera infrastructure and your category mix. Then we’ll tell you what a single-store pilot would cost and what to expect from it.

Discuss your project