How we build it
"No Mushrooms" and "I Can't Eat Mushrooms" Are Different Sentences
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:
- A named condition. "I'm allergic to peanuts," "I'm celiac," "lactose intolerant." The easy case, and the only one most systems handle well.
- A described reaction. "Strawberries give me a rash." "Wheat wrecks my stomach." "My throat swells." No diagnosis, no medical vocabulary, and every bit as permanent.
- Medical authority. "My doctor told me to cut it out." "I have to avoid grapefruit because of my medication." Conditions that imply a food follow the same path: diabetes, high uric acid, IBS.
- Someone else's allergy. "My daughter has a severe nut allergy." It isn't the cook's body, but it's the kitchen's rule, and that's what dinner has to respect.
- An identity or a standing household rule. "We eat halal at home." "I'm vegan." "I stopped eating red meat for good."
- Aversion strong enough to be permanent. "I can't stand cilantro." "Liver disgusts me." Not medical, still not changing next week.
- An explicit instruction. "Add shellfish to my avoid list." "Remember: no peanuts." When someone tells you to remember something, that settles it.
- A command plus a permanence word. "Take mushrooms out for good." The command alone is tonight. The two extra words make it forever.
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:
- Dutch runs three lookalikes. Mag geen is medical and permanent. Lust geen is a preference. Heb geen meer means the jar is empty. All three are short, all three deny a food, and only one is a rule.
- Swedish hides an effort phrase in there. Jag tål inte is an intolerance. Jag orkar inte means you can't face the effort tonight, and names no food at all.
- Coconut milk isn't dairy. Any system reaching for the word "milk" will store the wrong rule, and someone avoiding dairy loses a perfectly safe ingredient.
- Qualifiers survive. "I can't stand raw onion" is about raw onion. Flattening that to onion takes away every soup they'd have been happy to eat.
- People type fast and imperfectly. Accents get dropped, medical words get spelled how they sound. A misspelling should never be the reason an allergy gets missed.
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.
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:
- Name the condition once, early. "I'm allergic to shellfish" carries more than "no shrimp" ever will, and it generalizes to crab, mussels, and the fish sauce hiding in a dressing.
- Use a permanence word when you mean permanence. "From now on," "always," "for good." They're doing real work.
- Leave tonight's requests bare. "Make it without mushrooms" is exactly right for a one-off, and it won't follow you around.
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