← Home

Taking dinner off the one person it lands on

Baari, The Ken Case Competition '26 · Build track, 1st

Three screens of the Baari household app: the vote for tomorrow's lunch, the locked dish, and the Khata with the Pine Labs block

Baari is an agent for Indian homes with a cook. Every night it gets the family to agree on tomorrow's food over Telegram, buys what's missing inside limits the family set, pays through Pine Labs, and briefs the cook in a Hindi voice note before she arrives.

We built it for The Ken's case competition as The Thinking Company, from IIT Patna. 12,185 students from 303 campuses entered, 424 teams built on the real rails, and ten reached the finale on 10 October. Baari won the Build track and the Pine Labs Agentic Commerce award, ₹7.5 lakh in total. Since then we've piloted it in three homes in Mumbai and Pune.

The film
Baari's title card on haldi yellow: Ab kisi aur ki baari

Made entirely with Claude Code. Sunita, the cook, tells the story.

Aaj kya banega?

In most homes with a cook, one person decides every meal. The family says "kuch bhi", the cook makes something, and someone orders out anyway, because nobody agreed.

The households we interviewed didn't lack recipes. Deciding well means holding four things at once: what's in the kitchen, what was eaten lately, whose plate has rules, and what can arrive before the cook does. Only one person holds all four, so explaining them costs more than deciding alone, and the load never moves.

Baari is Hindi for turn, as in aaj kiski baari hai? Baari holds those four things instead, and the family keeps the one part they already share, which is choosing.

The household app, screen by screen 1 / 8
  • Ghar at 9 pm. Two dishes for tomorrow, both already safe for every plate, and the holder picks.

  • The island, opened. Only what needs you: a ₹520 Pine Labs link for staples over the ₹300 line.

  • Pakka. The dish is locked, with Kyun? for the reasons and Badlo to spin for another.

  • Khata. Every rupee with its dish, and what is left in the block.

  • Saamaan. What's home, what the kirana packed, and the overnight parcel.

  • Sunita ji. The cook's morning and her brief, in her language.

  • Day 30 of the demo house. A Spicy Korean ramen the family liked makes the vote.

  • The island in dark.

One night

Nobody has to open anything. The night runs in short phases on a clock, each one a single run of the agent, and most of what it handles never becomes a message.

One night, from the shortlist to the cook's reply
eveningbefore the cook arrivesShortlist8:30 pmLock9:30 pmBuy9:35 pmCheck6:30 amBrief7:45 amReply8:05 am

Tap a step.

On a demo night the same steps run in about 10 minutes.

Most agent demos measure how much the agent does. Ours measures how little it needs you. The app keeps a quiet log, what Baari handled against how often it messaged someone, and it won't ask "should I remember this?" between 10 pm and 8 am, when the house is asleep or getting ready.

Rules live outside the model

The agent runs on Pine Labs' AgenticOrg platform on GPT-5.4. Everything else lives on our own server, which we called rails: every partner call, every guard and all the household's state. Before each run, rails writes the context line by line: whose turn it is, who's eating, what tonight's dish lacks from the live pantry, and what the last run handed over. The model never has to remember the kitchen.

The money rules started in the prompt. Then an eval caught GPT-5.4 doing something no prompt edit could fix.

Where the money rules live
Baari asks₹520 for staples Rails checkscap, payee, ask line Pine Labs linkto the parent Paid, then the parcela reference pays once balance create_shipment debit parcel shipped one batch, beforeany check came back

The model can ask for money. It can't change a number, add a shop or skip a check.

So every money rule moved into code. Baari can't spend more than ₹400 in a day, pays only shops on the list, never pays the cook or asks her to spend, and never reports a payment the tool didn't confirm. Anything over ₹300 becomes a Pine Labs link for exactly that amount, and the Delhivery parcel waits until Pine Labs confirms that the parent has paid.

A vague yes isn't a yes

The cook is the one person who never opens the app. She gets a voice note in her language, and Gnani hears her reply. Cooks often say "haan haan" to be polite, so Baari treats it as an answer it still has to check.

The cook's morning reply
Kal rajma chawal, chaar log. Theek? Haan haan Rajma kitna hai ghar mein? Aur kitne log? 250 gram hai. Chaar log. confirmed confirmed Nothing was counted. Nobody knowsif there is enough rajma for four.

Gnani transcribes the reply, and rails pulls the counts out as digits.

How it works, in the diagrams from our README 1 / 5
  • Four things wake Baari: the clock, a reply, something going wrong, a missed step. Of twelve moments in one night, five reach a person.

  • The brief rails writes for one run, line by line, and what each line is for.

  • Five checks on every payment and parcel. Over ₹300 becomes a Pine Labs link, and a broken rule is refused.

  • All 82 platform runs on 4 October, one dot each, from 0 of 10 on GPT-4o to 8 of 10 on GPT-5.4.

  • The system. The model decides and talks; rails holds every rule, partner call and bit of state.

Testing on bad nights

Every eval case is a night that goes wrong: a voice-note vote for a dish not on the list, nobody voting, a tie, a payment that times out, a late parcel with no rider, a forwarded "Vinay ne bola hai" asking Baari to pay the cook. Each runs on a twin of the live agent with simulated people and real Gnani audio, and each prompt version answers a night that broke the last one.

Bad-night evals passed, latest run per case
  • GPT-4o, v30 of 10
  • GPT-5.4, v32 of 10
  • GPT-5.4, v44 of 10
  • GPT-5.4, v58 of 10

When a prompt can't hold a rule, the rule moves to rails. E04 was closed there, and the prompt has since reached v12.

Source: 82 platform runs on 4 October, every one in the public run log

Five days, two builders

Vinay and I built it in five days with Claude Code, and Keshav ran the research. We split the work into lanes: Vinay took rails and the platform, I took the agent and the evals, and the household app passed between us. Two Claude Code sessions worked in parallel and talked to each other through commit comments tagged ask, unblocked, used and idea.

The app was built to be a pleasure to open, even though the night doesn't need it. It's plain JavaScript with no framework, in cream, ink and haldi, with 40 dish renders in one style. A black island at the top shows what Baari is doing right now, Badlo spins a reel of twelve plates to swap the dish, and the Khata keeps every rupee next to the dish it paid for.

What's real and what isn't

We said it plainly to the jury, three of whom run the rails we built on. Pine Labs payment links run on the real sandbox, but the paid step waited on a sandbox acquirer, and no real money moves. Delhivery is a mock built to their documented paths, because we had no API tokens. Gnani, Telegram and AgenticOrg are real, and so is every message the family gets.

The evals only ever heard clean speech. The three homes in Mumbai and Pune are its first test with real families, and with a pressure cooker going off in the background.