Back to work

Case study

Reffi: Choosing what to cook with what’s in my fridge

Design Engineer · Home interactions and recipe recommendations · June–August 2026

Reffi is an iOS app that suggests three recipes based on the ingredients in your fridge. As the Design Engineer, I worked on the main screen where people handle ingredients and on the recipe recommendation engine.

Open the interactive version in the console한국어로 읽기

The experience I wanted to build was straightforward: see what is in the fridge, choose an ingredient to use today, then get recipes that use it. I designed both the interaction on the screen and the rules that decide which recipes appear first.

Reffi home screen with ingredient illustrations and the Start cooking button.
Home with registered ingredients. Reffi 1.2 (35), iOS simulator, captured September 26, 2026. A later build than the work covered here.
Recipe deck showing Bibimbap, four available ingredients, three missing ingredients, and Cook this.
A recommendation can still need additional ingredients. Reffi 1.2 (35), iOS simulator, captured September 26, 2026. A later build than the work covered here.

An empty deck

Ingredients were available, but no recipes appeared

The recommendation engine gave more weight to recipes using ingredients closer to their use-by date. The aim was to help people use the food they already had.

A recipe was not useful just because it matched one item in the fridge. If it required buying several more ingredients, using up leftovers could turn into another shopping trip. A colleague added a rule that excluded recipes missing three or more ingredients.

That rule caused trouble for a small fridge. In a development sample with only two or three kinds of ingredients, matching recipes existed, but every one was filtered out and the recommendation deck was empty.

From the development records

When every recipe was filtered out

Sample fridge: only two or three kinds of ingredients.

Original cutoff

Missing 3+ ingredients

Exclude the recipe

Every matching candidate could disappear.

Revised selection

Prefer less shopping

Allow useful exceptions

If places remain, fill from other candidates by score.

More options to consider. Some still need a shopping trip.

Rule comparison, not a reproduction of the app. Initial cutoff: PR #14 · Deck selection changes

I kept the preference for recipes that required less shopping, while changing the rule so it would not hide every candidate. Recipes that made good use of stocked ingredients and picked up at-risk food missed by earlier tickets could pass as exceptions. If the deck still had room, I filled it with the remaining candidates in score order.

Some of those recipes still require additional shopping. I chose to leave people with options they could consider, rather than promise that every suggestion could be cooked immediately.

Choosing an ingredient

People needed to choose what to use today

A use-by date matters to the recommendation, but it cannot tell us what someone wants to eat today. I connected ingredient pinning to the home screen so people could name that intention themselves.

Ingredients could already be dragged across the home screen. I changed the right-hand area from recording an ingredient as eaten to pinning it for today’s cooking. Dropping an ingredient there pins it, but does not reduce its quantity in the fridge because nothing has been cooked yet.

Adding a pin to the screen was not enough. Even with a score bonus, a recipe using several at-risk ingredients could still rank higher. In a development sample, the recipe using the pinned salmon appeared after another recipe.

I made the pin a priority for assigning places in the deck, rather than relying on a score bonus alone. When an eligible recipe used an ingredient the person had pinned, it could receive a slot first.

From the development records

A pin needs priority

Salmon

“I want to use this today.”

A score bonus

Other at-risk recipe8
Pinned salmon recipe6

The chosen ingredient could lose its place.

Priority for a place

An eligible recipe using the pin gets a place first.

Pinning leaves the fridge quantity unchanged.

Reconstructed from the recorded 8-point versus 6-point sample. Priority applies when an eligible recipe exists. Pinning change

Choosing salmon on the home screen now carried the same meaning into the recommendation engine: “I want to use salmon today.”

Three recipes together

Three suggestions should not focus on the same ingredient

After deciding which recipes could qualify, I looked at how the three suggestions worked together.

In one development sample, bibimbap, burger patties, and tacos had the highest scores. All three used the same beef.

They were valid alternatives for cooking beef. But Reffi also needed to show opportunities to use other at-risk food in the fridge. Scoring each recipe on its own did not account for which ingredients the three suggestions covered as a set.

After choosing the first recipe, I recalculated the value of the next candidate. I stopped giving repeated credit for ingredients the first recipe already used and gave more value to ingredients a new recipe would bring in.

In that same development sample, recipes using salmon or mushrooms entered the recommendations, and the three suggestions covered five kinds of at-risk ingredients instead of four. This compares recommendation results under the same sample-fridge conditions. It does not show that real people cooked differently or wasted less food.

From the development records

What the three recipes cover

Rank each recipe alone

The same beef
  • Bibimbap
  • Burger patties
  • Tacos

Valid alternatives, concentrated on one ingredient.

Reassess after each choice

Give more value to newly covered ingredients.

SalmonMushrooms

Recipes using other at-risk food enter the deck.

Kinds of at-risk ingredients covered by three suggestions

4 5 kinds

Same development sample. Not a measure of cooking or food-waste reduction.

The final recipe names and order are not reconstructed here. Recorded sample and change

After choosing a recipe

Stock needed to carry through after a recipe was chosen

A recommendation is not the end of the decision. The next recommendation also needs to reflect what remains in the fridge, so I worked on what happens to stock after a recipe is selected.

Tapping Cook this reserves the ingredients for a cooking session instead of deleting them. Canceling makes them available again. Finishing asks what was used and what remains before updating the fridge. Choosing a recipe and consuming its ingredients are separate events.

From the development records

Selection and consumption

  1. In the fridge

    Available for recommendations

  2. Cook thisReserved for cooking

    Still in stock. Not consumed yet.

Cancel

Release the reservation

Available again

Finish

Confirm usage and what remains

Update the fridge

The next recommendation starts with the remaining stock.

State diagram of the cooking and inventory connection. Quantity confirmation reflects the later implementation. Initial reservation model

That connected ingredient selection, recipe suggestions, and the remaining stock for the next decision.

Verification and collaboration

Verification and collaboration

I could verify changes to the recommendation rules and screen behavior. The records from that work include a simulator check of pinning, passing tests at the time, and a comparison using the same development sample. I have not measured actual cooking completion or a reduction in food waste. A VoiceOver alternative for pinning also remains to be built.

I designed the home interaction and recommendation priorities, then implemented and checked them with AI-agent assistance. I also worked on the connection between cooking and inventory state. I reviewed and integrated the recipe cutoff and some interactions proposed by a colleague in a PO and PD role.

From the development records

Evidence and open questions

Recorded checks
Pinning checked in the simulator. Related tests passed. Recommendation results compared with the same sample fridge.
Still unmeasured
Actual cooking completion and food-waste reduction.
Remaining work
A VoiceOver alternative for ingredient pinning.
Historical development checks, not tests rerun for this case study. Pin verification record

About

About the designer

I'm Jongmin, a product designer exploring design engineering. I care about how things work, and how they feel.

I think through the whole experience: what someone needs, how they get there, and the details that make it feel right.

Product design is my starting point. I'm exploring design engineering to bring more of those ideas into working interactions.

More about Jongmin in the console

Contact

Something on your mind?

A role, a project, or just a hello. I'd like to hear it.