How we build it

"No Mushrooms" and "I Can't Eat Mushrooms" Are Different Sentences

By the RecipePT teamAugust 12, 20267 min read

A small notepad on a kitchen counter beside raw mushrooms and a whole onion, pencil resting on the pad

Quick answer: One describes tonight, the other describes you. "No mushrooms" is an instruction for one meal and should expire by morning. "I can't eat mushrooms" is a fact about your body, so it should outlast tonight. To make a rule stick in any app, say the reason or use a permanence word like always.

Every app that claims to remember your food preferences has to answer one question thousands of times a day: was that a rule, or was that just tonight? Get it wrong in one direction and you re-type your allergy every evening. Get it wrong in the other and a Tuesday craving becomes a permanent ban on garlic. We've spent a long time on this line, in eleven languages, and it's narrower than it looks.

What's the difference between a food rule to remember and one to forget?

A rule describes you. A request describes tonight. "I'm allergic to shellfish" is a fact about your body that outlives this dinner. "No shrimp tonight" is an instruction for one meal. Apps that store both end up wrong, and apps that store neither make you repeat yourself forever.

The trouble is that the two categories share almost all their vocabulary. Both mention a food. Both are usually phrased as a negative. Plenty of real sentences carry the permanence in a single small word that a system can miss: "always," "from now on," "for good," "anymore." Take that word out of "always cook without shrimp" and you get an instruction that should expire by morning.

So we stopped treating this as a keyword problem and started treating it as a classification problem with named categories. Here's the taxonomy we landed on, and it came out of reading thousands of real phrasings rather than out of a whiteboard.

What makes a sentence a permanent rule?

Eight things, and only two of them involve the word allergy. A named allergy or intolerance. A physical reaction. A doctor or medication. A household member's allergy. An identity or religious rule. Disgust strong enough to last. An explicit instruction to remember. Or a command carrying a permanence word.

Spelled out, with the kind of sentence each one actually arrives as:

What should an app forget by morning?

Bare commands, empty cupboards, mild dislikes, and cravings. "Make it without chicken" is a note about this recipe. "I'm out of milk" is about your fridge this week. "I'm not big on olives" is a preference, not a rule. None of them should follow you into next month.

The pantry category is the one people rarely think about and it causes real damage. "I don't have cilantro" and "I can't have cilantro" are one letter apart in English and mean completely different things. Store the first as a rule and you've quietly deleted an ingredient from the rest of someone's cooking life because they ran out once.

Mild dislikes are the other trap, in the opposite direction. We deliberately don't promote "I'm not crazy about mushrooms" into a permanent ban, because taste moves. That's a job for the softer signals we learn from what you cook and rate, which nudge what we suggest without hard-blocking anything. Hard rules should be things you actually said were hard.

Where does this get genuinely hard?

At the minimal pairs. Every language has phrasings that look nearly identical and decide oppositely, and they're usually the most common way people speak. Getting these wrong is how an app ends up either forgetting allergies or memorizing your grocery list.

Some of our favorites, collected from testing:

When these calls are close, we lean one way on purpose. Storing a rule you didn't quite mean is a conversation you can fix in a sentence. Dropping one you did mean can put an allergen on your plate. The bias goes toward keeping it, and toward showing you what we kept so you can correct us. We wrote up the full test that hardened all of this in how we test allergy memory, including the ninety-three cases we were failing before we started.

Refining a RecipePT dinner idea by typing a plain-language request
The same box takes tonight's request and a permanent rule. What separates them is how you say it.

How should you phrase it so an app gets it right?

Say the reason, or say the word "always." "No shrimp" reads as tonight. "I'm allergic to shrimp" and "always cook without shrimp" both read as forever. You don't need special syntax or a settings screen, just the half-sentence you'd say to a friend cooking for you.

Three habits that make any app of this kind work better, ours included:

In RecipePT, the rules we're holding are visible in your taste profile, so you can see what we think and change it. Foods you can't eat stay out of the ideas we suggest, and when you import a recipe that contains one, we swap it out through the ingredients and steps rather than handing you something you can't cook. It's a judgment about meaning, not a word filter, which is why "satay" registers as peanuts. Read the finished recipe anyway.

None of this is glamorous work. It's also the difference between an app you have to re-teach every night and one that starts closer to right, which is the whole reason we built RecipePT around the deciding rather than the cooking. If you cook for someone with a long list of rules, the related read is our piece on dinner apps that take a no.

Let RecipePT decide tonight

Say what you can't eat once, the way you'd say it out loud. We'll hold onto it, and tomorrow starts closer to right.

Get RecipePT on iPhone