July 15, 2026 · 3 min read

It's a bar. I'm going to type whatever I want.

Livin is a personal chef service. You pick a week of food, a chef cooks it in your kitchen.

The menu got a search bar because the ticket said search bar.

I was the one building it. That turned out to be the whole story.

I typed into it the way I type, which is badly and in whole sentences. Then I sat there and thought: it's a bar. I'm going to type whatever I want into it. Nobody types "chicken." People type "something light this week, kids are picky, nothing with shellfish."

A designer who writes "add a search bar" on a ticket and hands it off never has that thought. You get it from sitting inside the thing, being annoyed by it.

Three days later, you could type the whole sentence and it worked.

Four words

I had to decide when a search stops being a search.

Four words. Four or more goes to natural language, because a phrase that long is contextual. Under that, it only counts as a question if it contains a word off a list I wrote by hand: craving, mood, cozy, date, night, heal, recover, vibes.

"teriyaki chicken" is a search. "date night ideas" is a question. "my wife needs keto" is a filter.

That list lives in a config file. It's the words that mean you've stopped shopping and started asking.

What it became

You tell it what kind of week it is, it pulls the plates that fit, you pick.

It's a chat, but I fought to keep it from being chatty. Chat that wants to converse is a chore when you're holding a kid. The cards are tappable. Tapping one sends it as your own words, so every chip has to read like something a person would say out loud. "Keep it light," not "Reset." "Loud food," not "Big Flavors."

I cut a chip called Performance. It read like a fitness app to a tired parent at 5:30. Nobody is optimizing at 5:30. At 5:30 you are negotiating.

That decision doesn't survive a handoff. It isn't in a mockup. It's a label, in a file, that I could feel was wrong because I was the one putting it there.

Enchiladas

The first version was a lie. I know because I built it, shipped it, and then sat down and graded it like it was someone else's.

Ask it for chicken, get one chicken dish out of three. Ask for beef, get lentils. Tell it your kids love pasta and it offers sardine pasta. Ask for a Korean noodle dish and it returns enchiladas.

It dropped the word "noodle."

Ask it for dinner and it once offered a jar of curry paste. The rule I wrote that week: "Mains with rice survive."

The diagnosis still holds up. It was the engine we built for strangers, wearing a chat costume. It never felt like it was listening.

Ten days later I tore it out.

The kitchen is the QA

Here's the part I didn't see coming.

It can build dishes that aren't on our menu at all. When a customer accepts one, a real chef cooks it in their kitchen. If it's good, it can go on the menu for everyone.

So the first cook is the quality test. The idea is just a name. The dish is the truth.

Most food companies use a bot for order status and refunds. Ours changes the menu.

That's the design, anyway. It shipped July 9 and the loop hasn't closed yet. Nobody has asked for a thing that doesn't exist, had a chef cook it, and watched it graduate. I don't know what the first one will be, and I don't know how many never make it past the first cook.

What I do know is that the thing stopped being a search feature. Somewhere in there it became how we find out what people want but couldn't ask for, because until now there was no field to say it in.

The loading state says "Making sure it still gets eaten." That's the whole company in six words, and it's the truest thing on the screen.