Praveen Senior Product Designer Case study · Yeldam ✕
Yeldam logo

Fixing food waste
by fixing cancellation

Role
UX Designer
Industry
Foodtech
Platform
Mobile app
Duration
3 months
Image placeholderHero: the moment of cancellationUpload 2052 × 1026 · 2:1
TL;DR
The brief
Merge Yeldam's two apps, add store pickup, and reduce food waste. Waste came with no research and no defined solution.
What I found
Waste wasn't a kitchen problem. Cancelling was hard (a one-hour window on the day, buried in the app, no reminder), and leave and WFH reached the admin as a count without names, so he rounded up to be safe.
What I designed
Three ways to skip a meal: cancel the night before, cancel from a morning reminder, or do nothing, because approved leave and WFH in HRMS now cancel the meal by name. To make that work, I got HR and management to make applying for leave or WFH in HRMS mandatory.
The result
Cancelling went from 6 taps to 3, and to none on approved leave or WFH. The admin's headcount became a list of names, and almost nobody pays the no-show fine now.
Background

A growing food platform with a waste problem nobody had defined

Yeldam is a hyperlocal food platform for corporate offices in Hyderabad. Yeldam Kitchen serves nutritionist-backed meals on a monthly prepaid subscription, eaten at the office pantry. Yeldam Snacks sells healthy snacks on demand, including to people without an office pantry, through Yeldam's retail stores.

140+Corporate subscribers
~80Meals wasted a month
2Apps, one brand

The business wanted to expand into more IT parks and bring both apps under one roof. The brief had three asks: merge the apps, add store pickup for snacks, and reduce the kitchen's food waste.

Reduce waste · no specMerge apps · specStore pickup · spec

Merge and pickup came with clear specs. Waste came with nothing: no research and no theory about the cause. I started there, because every new IT park would multiply it. Snack sales were working, so pickup could wait.

Reduce waste

So I followed one meal, from menu to leftovers.

Following the meal

On paper, every meal followed six steps, with a feedback loop to catch waste.

How it was supposed to work

Even with the loop, about 80 meals a month went uneaten. Nobody knew why.

Who actually does what

Yeldam has one kitchen admin, the person who builds the headcount every morning. I started with him. Sitting with Ravi, I mapped how a meal moves between him, the employees and the kitchen, and where it breaks.

Where it breaks

Cross-functional flow, mapped with the kitchen admin. Red markers show where it breaks.

How a meal moved before the redesign Six steps that look linear split into four lanes: employee, HR, admin and kitchen. HR, absent from the six steps, holds two hidden steps. Three red markers show where the flow breaks: same-morning cancelling, HR sending a count without names, and the waste loop adjusting the wrong day. 1. MENU 2. CONFIRMATION 3. HEADCOUNT 4. PREP & SERVICE 5. COLLECTION 6. WASTE LOOP Employee HR Admin Kitchen The waste loop feeds the next day's headcount Publishes menuWeeklyCancel in app8:30–9:30 AM onlyEmail approvalsFor Leave & WFHHR sends a countNo namesFinal headcountApp + HRCook & sendTo the pantryCollect mealNo-shows are finedLog leftoversSent to adminAdjusts prepFor next day 1 2 3
  1. 1
    Cancelling runs on memory. A one-hour window on the day, and no reminder.
  2. 2
    Leave and WFH arrive as a count. HR's count can't be matched to app cancellations.
  3. 3
    The loop corrects the wrong day. Today's absences set tomorrow's prep.
Users
The admin

Every morning at 9:45, the admin locks a number he can't verify.

Photo
Ravi KumarKitchen admin · Reports to the CEO and HR
Morning routine
  • 8:30The window opens; app cancellations start arriving on the portal.
  • 9:30The window closes.
  • 9:30–9:45Waits for HR's leave and WFH count. If HR is busy, he estimates.
  • 9:45Compares two numbers he can't match up, rounds up to be safe, locks the count and sends it to the chef.
Goals
  • An accurate headcount by 9:45, without waiting on anyone
  • One list of names, not two numbers
  • Little waste, and never a shortage
Frustrations
  • He's blamed for waste caused by data he doesn't control
  • Leave and WFH reach him only as a count from HR, and only when HR finds time to dig them out of email
  • App cancellations and HR's count overlap, but with no names he can't tell by how much
  • A shortage is worse than waste, so he rounds up
Two numbers, no names When app cancellations are at least HR's count, Ravi can use the app number. When they are fewer, the overlap is unknown, so real absences could be anywhere from 15 to 25 in the example; Ravi deducts only 15, so up to 10 meals are cooked for nobody. App cancels ≥ HR count A H HR's people are likely already in A Ravi deducts A. Safe. App cancels < HR count H = 15 A = 10 ? Overlap unknown: no names Real absences: anywhere from 15 to 25 A: app cancellations H: HR's leave + WFH count Example numbers. The real number of absences sits somewhere in this range: Up to 10 meals cooked for nobody 15 25 Ravi deducts 15 (rounds up) If nobody overlaps

Two numbers, no names. When app cancellations fell short of HR's count, real absences could be anywhere in a range, so Ravi cooked for the top of it.

Insight

Ravi didn't over-cook by mistake. Without names, rounding up was the only safe choice.

Employees

Her WFH was approved. Her lunch was still cooked.

Photo
Priya MehtaSubscriber · Office 3 days, home Tue & Thu
Morning routine · a Tuesday at home
  • 8:30The cancellation window opens. She isn't online yet.
  • 9:00Logs in from home and goes straight to her inbox.
  • 9:30Team stand-up starts, and the window closes. She never opened the meal app.
  • 9:45She's in the headcount. A meal is cooked for an empty seat, and she's fined on top of the subscription she's already paid.
Goals
  • A hot meal without thinking about it
  • Skip WFH and leave days without remembering to
  • Cancel the night before when plans change
  • Do it in seconds
Frustrations
  • Her WFH days are approved, but the meal app doesn't know that
  • Plans made the evening before, like a client visit, can't be cancelled until 8:30 the next morning
  • Cancelling is buried in the app, with no reminder
  • A skipped meal costs her twice: once in the subscription, once in the fine
Workaround

On office days, if she remembers after 9:30, she walks to Ravi's desk to cancel in person.

Insight

Employees didn't skip cancelling because they didn't care. Cancelling was hard.

Problem statements

What each of them needed, and what stood in the way.

The admin

An accurate headcount by 9:45, so the kitchen cooks with little or no waste.

Blocked by
  • Leave and WFH reach him as a count from HR, not names, and only when HR finds time.[2]
  • App cancellations and HR's count overlap, and with no names he can't tell by how much, so he rounds up.[2]
  • The waste loop corrects tomorrow using today's absences.[3]
Employees

Skip a meal in advance, or in seconds, without having to remember.

Blocked by
  • Cancelling opens only at 8:30 on the day, so plans made the evening before can't be recorded.[1]
  • It's buried in the app, with no reminder during a one-hour window.[1]
  • The app doesn't know about leave and WFH that are already approved.[2]

How might we make skipping a meal take less effort, and no effort at all when the system already knows?

3 ways to cancel

Three ways to skip a meal, from cancelling ahead to doing nothing at all

How a meal gets cancelled after the redesign Three paths, cancel the night before, cancel from the morning reminder, and automatic cancellation from HRMS, all feed the admin portal headcount, which locks at 9:45 and goes to the chef. Night beforeCancel tomorrow's meal in the app 8:30–9:30 AMCancel from the morning reminder Leave or WFH in HRMSCancelled by name · restore till 9:45 Admin portal headcount A list of names, not two numbers Lock 9:45 Chef cooksto the real count

Before, there was one narrow way to cancel, and it depended on memory. Now there are three, each needing less effort than the last.

Version 0.5

3 hours, one prototype, and a yes from the team.

Before any production design, I built a clickable Figma Make prototype of all three ways to cancel. Auto-cancel wasn't in the brief and depended on HR, so it needed a working flow to make the case. The team approved, and it shipped.

The 3-hour Figma Make prototype of all three ways to cancel
View the prototype ↗
The fixes

The fixes

Fix 1

Cancel ahead[1]

Plans often change the evening before, but cancelling only opened the next morning. Now tomorrow's meal can be cancelled the moment plans change.

InspirationReference for cancelling aheadUpload fix1-inspiration.webp · ~1200 wide
Inspiration
Our designAdvance cancelUpload fix1-design.webp · 600 × 1066
Plans changed? Cancel tomorrow's meal tonight.
Fix 2

A reminder inside the window[1]

The window opened before most people logged in. Now a notification arrives inside it with one action: Cancel. Coming in? Do nothing.

InspirationReference for the one-action notificationUpload fix2-inspiration.webp · ~1200 wide
Inspiration
Our designMorning notificationUpload fix2-design.webp · 600 × 1066
During the 8:30–9:30 window: not coming in? Cancel in one action. Coming in? Do nothing.
Fix 3

No action when the system already knows[2][3]

Approved leave or WFH in HRMS now cancels that person's meal by name, with Restore until 9:45. It meant making HRMS leave mandatory, which I agreed with HR and management.

InspirationReference for "the system already knows"Upload fix3-inspiration.webp · ~1200 wide
Inspiration
Our designAuto-cancel with RestoreUpload fix3-design.webp · 600 × 1066
Approved leave or WFH in HRMS cancels that day's meal. Coming in anyway? Restore it until 9:45.

The no-show fine stays, as a backstop.

App merge

One app, two rhythms

The two apps shared a brand but not a design language. Some components overlapped, most didn't, and the journeys pulled in different directions.

Meals follow a routine: you know when lunch is, and you only act when plans change. Snacks are on demand: you browse, decide and order whenever.

Snacks became the base of the app, and meals became a layer on top for subscribers. Everyone gets the snacks navigation; subscribers also get a Meals button beside it. In the morning, subscribers open straight onto today's meal and the cancel option, until the window closes at 9:30. After that, the app opens on snacks.

Image placeholderHome: corporate vs individualTwo phones: corporate user with the Meals button, individual user with snacks only
One login, two experiences. Corporate users get a Meals button beside the snacks navigation; individual users get snacks only.
Store pickup

Pickup without searching by name

People without an office pantry order snacks and collect them from a Yeldam store. The simplest approach would have been for the store keeper to look up each order by the customer's name at the counter, which is slow and easy to get wrong when names are common.

Instead I borrowed a pattern people already know from Swiggy and Zomato deliveries. Every order gets a QR code, and the store keeper scans it to find and hand over the right order. Pickup was in the brief; the QR flow and its interactions were mine.

GIF placeholderStore pickup flowOrder → QR code → store keeper scans → handover
The pickup flow: the QR code replaces a name search at the counter
The change
"The old system asked people to remember, dig through the app and act inside a one-hour window. The new one meets them where they are, and when it already knows, it doesn't ask at all."
  • ✓Cancelling works the night before, and from a morning reminder
  • ✓Leave and WFH cancel meals by name, before 9:45
  • ✓Ravi's count is a list of names, not two numbers, so he no longer needs to round up
  • ✓HR no longer compiles a leave count from email every morning
  • ✓The no-show fine still exists, but almost nobody pays it
For the future

Version one made skipping a meal effortless. Version two makes the kitchen smarter.

Record why meals go uneaten

Log the reason each meal was wasted (leave, WFH, no-show), so prep adjusts by cause, not just by count.

Location-based attendance

Attendance can only be marked inside the office, so the no-show count is accurate.

Nutritionist insights

A short daily note on what's in the meal and why: a reason to keep the subscription, not just use it.

Nutrient tracker

Calories, vitamins, fats and carbs for each meal, tracked against your health goals.