Cutting food waste in airline catering
Measuring what comes back uneaten from a flight, on board, with no network and without slowing the crew down. From field data to the procurement decision.
Context
Airline catering loads meals in quantities decided in advance. Whatever is not eaten comes back and goes to waste, with a material cost, a transport cost, and a weight that was carried for nothing.
Reducing that waste starts with measuring it. But the measurement had to happen where it is hardest: in the galley, during service, by a crew with other things to do.
Constraints
No usable network in flight, or only an expensive and intermittent one. Data capture had to work entirely offline and synchronise later, without anyone having to think about it.
No spare time either: a capture that takes thirty seconds per tray would never be done. Observing had to cost less time than noting nothing at all.
And finally, an airline's operational data does not leave for a third-party supplier.
Solution
An iPad app that recognises what it is shown rather than asking the user to describe it. Inference runs on the device, with no connection, and capture comes down to a confirmation.
Observations then feed an analytics dashboard that aggregates by flight, route and period, turning individual readings into a procurement decision.
An Apple Vision Pro demonstration was produced alongside it, to present results spatially in internal reviews.
Architecture
The vision model is converted for CoreML and executed on the iPad. That is what makes the app usable in flight: no latency, no network dependency, and no operational image leaving the device.
Data is stored locally and encrypted, then synchronised to a self-hosted Supabase backend when connectivity returns. The conflict-resolution strategy was decided up front, which avoids unpleasant surprises when two crew members record the same service.
The backend runs on infrastructure the client controls, with documented operating procedures and backups tested by actually restoring them.
Outcome
The whole chain works: galley capture with no network, deferred synchronisation, aggregation, and reading by the teams who decide loaded quantities.
The value of the setup lies in what it makes visible: without field measurement, quantities are estimated, and estimates are always corrected upwards.
SwiftUI · CoreML · Self-hosted Supabase · Analytics · visionOS