---
title: "The Demand Signal Already Left Your App"
description: "I built an AI that watches TikTok and shops Instacart. What it taught me is a problem for whoever owns the cart."
type: "Blog Post"
published: "2026-02-01"
author: "Kelly Nyland"
url: "https://kellyny.land/thoughts/the-demand-signal-already-left-your-app"
source: "https://app.notion.com/p/AITE-35886637460e80d3a5aefd705024d266"
---

# The Demand Signal Already Left Your App

> I built an AI that watches TikTok and shops Instacart. What it taught me is a problem for whoever owns the cart.

![Overview of the Oddkin system: a recipe video arrives as a direct message and a price-compared, dietary-filtered grocery cart is returned, with receipts, refunds and remembered preferences handled in the same chat thread.](https://kellyny.land/images/notion/3c0461b28e77b332.png)

I built an AI that watches TikTok and shops Instacart. What it taught me is a problem for whoever owns the cart.

Your funnel starts at a search box. Your customer's starts at a video they saved three weeks ago and can no longer find.

## Status Quo

Sunday afternoon. I'm scrolling TikTok. Someone makes a sheet pan chicken with herbs and lemon that looks incredible. I want to make it.

Here is what stands between me and that dinner: find the recipe again, decode measurements nobody wrote down, cross-reference what's already in my kitchen, build a list, pick a store, compare prices, and get it delivered in time to cook. Thirty minutes of friction for something that took the creator sixty seconds to film.

![The current grocery workflow shown as five phone screens: write a list, send it to an app, generate a list, compare stores, add everything to a cart. Four separate apps with a person routing between them.](https://kellyny.land/images/notion/fc36b71a9ce44340.png)

Five steps, four apps, and a person doing the routing. Every handoff is a place the order can die, and the only party holding full context is the human in the middle.

I'd built 35+ personal apps by this point, half of them automating something annoying about my own life. This one was different. This wasn't me being lazy. It was a structural mismatch between how recipes live now — short-form video, aesthetic-first, inspiration-driven — and how grocery shopping works: lists, logistics, inventory.

The part that should concern anyone selling delivery: **the moment of intent doesn't happen in your app anymore.** It happens on a feed you don't own, hours or weeks before anyone opens a cart. By the time a customer reaches your search box, the interesting decision is already made — and made badly, because they're reconstructing it from memory.

![Instagram Likes and TikTok saved videos side by side, both circled in red and labelled NOT SEARCHABLE. Hundreds of saved recipe videos with no way to search or retrieve them.](https://kellyny.land/images/notion/d32755e78a61f380.png)

The real recipe box is the saved folder, and neither platform lets you search it. Thousands of saves, zero retrieval. That is demand which already exists and cannot be acted on.

![The Oddkin direct-message channel and content search, annotated with 180K DMs, 115k likes and 800k users — showing where recipe recommendations actually accumulate.](https://kellyny.land/images/notion/fc9e0d51cc45f165.png)

The intent accumulates in DMs and likes. Sharing a video with a friend is the single most common way a recipe gets recommended, and it is completely disconnected from commerce.

## But wait, can't GPT plan meals?

This is the first question everyone asks, so I tested it properly. It fails, and it fails in a way that's diagnostic.

![Four ChatGPT screens in sequence with increasingly frustrated emoji, showing the model forgetting the quinoa, introducing cream cheese unprompted and dropping the summer squash across one meal-planning thread.](https://kellyny.land/images/notion/b78a3ac0855152c5.png)

Four screens of me re-supplying context the model already had. It forgot the quinoa, pulled cream cheese from nowhere, dropped the summer squash. The escalation is the finding.

**Context broke first.** I asked for a weekly plan for one high-protein adult and one gluten-free teenager. What came back was technically correct and completely useless — quinoa bowls and roasted vegetables no 16-year-old on earth would voluntarily eat. It didn't know that ”gluten-free” in my house means gluten-free pasta with butter. Period. Maybe parmesan if I'm lucky.

**Memory broke second.** Every session started from zero. No recall that Tuesdays are exhaustion nights, that three pounds of chicken thighs are already in the freezer, that I refuse to visit two grocery stores in one week. Each conversation was a stranger trying to feed my family.

**Then the store problem cracked it open.** I shop at a specific Costco. Not ”Costco” as a concept — a specific one, where the organic chicken thighs are in the third aisle on the left and they're out of the good bread every other week. A plan that suggests ingredients I can't buy where I actually shop isn't a meal plan. It's a Pinterest board.

A general model can reason. It cannot remember, and it cannot see your inventory. Those two gaps are exactly where a commerce company already holds assets.

## Ok, how can we make this better?

So I built it. It's called **Oddkin**, and the interaction is deliberately boring: you DM it a video, the same way you'd send it to a friend. No new app to learn, no new habit to build.

![The Oddkin direct-message flow: a recipe video shared from Instagram into a DM thread, with the agent replying that it is pulling the details out of the video.](https://kellyny.land/images/notion/2cf7de906876d3fa.png)

![Architecture diagram titled 'We built an AI Video Watcher'. A seven-model multi-modal ensemble ingests comments, date posted, map locations, video-to-image, voiceover and captions, feeding a social media downloader, media decoding engine, geospatial indexing, POI relevance ranking, and entity, factual and qualitative extraction engines, all writing into a historical and real-time graph datalake.](https://kellyny.land/images/notion/e4811bd3569cabd9.png)

Behind that DM is a seven-model ensemble reading comments, captions, voiceover, on-screen text, map locations, and video-to-image — writing into a graph datalake that holds both history and real time.

That architecture is the actual answer to ”why hasn't someone done this.” Most recipe videos have no text overlay and no written recipe. The information is in the pan. How generous was the olive oil pour — three tablespoons or four? Is that rosemary fresh or dried? How brown is the sear? Extracting a shoppable ingredient list from that requires reading the video, not the caption.

![The Oddkin technical stack shown beside a chat thread: extractor, media ingestor, planning, AI chat and memory, with three TikTok links being turned into a weekly meal plan.](https://kellyny.land/images/notion/46b9e3ea5659702d.png)

The stack underneath is an extractor, a media ingestor, planning, chat, and memory. Memory is the one that compounds. The rest is plumbing.

![A single instruction — watch my last two weeks of TikToks and create a new meal plan for this week — producing a checklist of agent steps and a structured TikTok ingredient list.](https://kellyny.land/images/notion/fda3e6b5e28a04d4.png)

One instruction, a week of dinners: *watch my last two weeks of TikToks and build a plan.* The saved folder finally becomes a queue.

![Five Oddkin chat screens showing three TikTok recipe links being combined with an existing weekly grocery list into a single cart.](https://kellyny.land/images/notion/b40de4f7575d58c7.png)

Three links in, a combined weekly cart out — merged against the existing grocery list rather than replacing it.

![Extracted recipe ingredients mapped to real purchasable products, with organic chicken thighs and chicken breasts shown at specific weights and prices based on store availability.](https://kellyny.land/images/notion/4a3753c07a29c2f8.png)

Then the step nobody wants to build: mapping an extracted ingredient to a real SKU that is actually in stock at a specific store, with substitutions ranked.

![A store picker comparing delivery windows and prices across Sprouts, Pavilions, Albertsons, ALDI and Vons, with a five percent affiliate revenue tag on the order.](https://kellyny.land/images/notion/9faca25c6bf89bb7.png)

Price comparison happens across stores, with the affiliate margin visible. Note who is making the routing decision here. It isn't the shopper.

![An unprompted Oddkin message reading 'Hey Kelly! I noticed you've saved some new recipes this week. Would you like me to go shopping again?', shown next to a saved city guide.](https://kellyny.land/images/notion/c41816d748e8b913.png)

And it's proactive rather than prompted — it noticed new saves and offered to shop again. That's a re-order loop that doesn't depend on the customer remembering you exist.

## I don't use Instacart, now what?

This is the objection that reframed the whole project for me, and it's the one I'd want a delivery company to sit with.

![Research findings on grocery behaviour: 8M monthly active Instacart orders representing only 5% of the US consumer app population, Trader Joe's in-person cult following at 25% of users, digital grocery at 20%, and 50% who don't feel like making dinner at least once a week.](https://kellyny.land/images/notion/6f58d0b6c31cbbad.png)

8M monthly active orders sounds enormous until you read the second half of that line: **only 5% of the US consumer app population.** The other 95% didn't reject grocery delivery. They're spread across curbside pickup, in-person cult loyalty, subscription meal kits, and ”I'll just order DoorDash tonight” — and most run several of those behaviors in the same week.

A quarter of the people I interviewed shop Trader Joe's in person and will not move. From an app's perspective those customers are unreachable. From a context layer's perspective they're completely reachable — you just can't monetize them with a delivery fee. You monetize them by being the thing that knows what they need before they walk in.

The category has been competing on delivery speed and selection. The unsolved problem is upstream of both.

## The goal sits above the app

![A goal-level instruction — 'I want to lose 5 pounds, figure out exactly what I need to do every day for the next 5 weeks' — resolving into ingredients delivered Sunday night, step-by-step instructions and tacos delivered Tuesday at 7pm, above a row of ten fulfilment providers including Instacart, Uber Eats, DoorDash, Erewhon, Trader Joe's, Whole Foods and Amazon.](https://kellyny.land/images/notion/adeea4ebd03ef9ca.png)

This is the slide I'd put in front of a strategy team. Nobody says ”open Instacart.” They say *I want to lose 5 pounds*, or *figure out dinner for the next five weeks*. Everything below that instruction — ingredients Sunday night, step-by-step instructions, tacos on Tuesday at 7pm — is routing.

Once an agent holds the goal, every fulfillment provider underneath becomes interchangeable, chosen on price, availability, and speed, in that order, by software with no brand loyalty whatsoever.

That's the threat and the opportunity in the same picture. If the goal layer belongs to someone else, delivery is a commodity underneath it. If it belongs to you, you've moved from fulfilling stated orders to owning the decision that generates them.

![Verticals expansion diagram showing food at home and out on the town as the wedge, extending into fitness, shopping and beauty, with MyFitnessPal noted at 6M monthly actives and $300M ARR globally.](https://kellyny.land/images/notion/77b7f24b19729614.png)

Food is the wedge, not the category. The same context layer runs into fitness, shopping, and beauty. MyFitnessPal is 6M monthly actives and $300M ARR globally on a fraction of this data.

![A Pareto diagram of user goals showing two overlapping circles, Energy and Aesthetics, with 'lose 5 pounds' sitting in the energy circle and 'PR' in the overlap between them.](https://kellyny.land/images/notion/0404c0fbc8595235.png)

Underneath every vertical are two goals: energy and aesthetics. ”Lose 5 pounds” and ”set a PR” are the same customer, served today by four apps that share nothing.

## Trust is a moat

Here's the part I did not expect to be the hard part.

Getting an agent to build a correct cart is an engineering problem, and it's mostly solved. Getting a person to let an agent *spend their money unsupervised* is a product and permissions problem, and nobody has solved it.

![Apple Screen Time and Apple Card parental control screens used as a model for agentic permissions, showing a $50 transaction limit, ask-to-buy, purchase notifications and the ability to pause spending. Labelled permissions, credentials, payments and identities.](https://kellyny.land/images/notion/efd498d990f2ce79.png)

The closest working model is the one Apple already shipped for teenagers: a transaction limit, an ask-to-buy flow, notifications on every purchase, and the ability to pause the whole thing instantly. Permissions, credentials, payments, identities.

Trust gets granted in increments. First it can look. Then it can build a cart I approve. Then it can spend up to fifty dollars without asking. Then it handles the returns — and once it has processed a refund for bruised avocados correctly, it has earned something no ad impression buys.

Whoever holds that permission grant holds the relationship. It is stickier than a subscription, because it isn't a preference. It's an accumulated record of the agent not screwing up.

![An agent chat running errands autonomously, with a visible checklist: watch saved videos, jot down recipe instructions, make the grocery list.](https://kellyny.land/images/notion/6e47d9363912514d.png)

![An avatar capability configurator where skills are equipped rather than configured, offering meal prep, pet care, fitness routine, personal finance and health slots.](https://kellyny.land/images/notion/f050ee662db35989.png)

Capabilities get equipped rather than configured. Meal prep first, then pet care, fitness, personal finance, health — each one a new permission grant on the same trusted relationship.

![The Oddkin introduction screen — 'Bringing context to human machines' — showing meal prep, pet care and fitness routine as the first real-world do-ers.](https://kellyny.land/images/notion/91dbe59716b238ca.png)

Meal prep is the beachhead because it recurs weekly, it's high-friction, and it's the one errand nobody has ever enjoyed.

## The Taste Graph

Everything above depends on one asset, and it's the one none of these companies are building.

I call it the **Taste Graph**: a structured representation of who you are, culinarily. Not ”Kelly likes spicy food.” It's seasonal — lighter in summer, richer in winter. It's contextual — you cook differently stressed, celebrating, or rushed. It's a preference architecture: you love acidity, avoid bitterness, will eat organ meat but not tripe. It's constraint mapping: flexible on ingredients, strict on technique, and you'll spend $60 on one meal and $6 on another depending on intent.

Every recipe saved, every substitution, every skipped ingredient is training data. After six months it should be able to show you a video and say: *this is 91% aligned with your profile.* Or: *you'll skip the cilantro. You always do.*

Here's what makes it defensible. The raw material is already sitting in your order history — you just haven't structured it as preference. My agent read a Trader Joe's receipt, learned that a specific Greek yogurt brand was unacceptable, and never bought it again. That isn't a recommendation engine. That's a memory, and it compounds every week instead of decaying.

I've started thinking about it in three layers. **Owned data** — my pantry, my freezer, my calendar. **Curated data** — the recipes I've saved, the favorites I reorder, the videos I screenshot and never open again. **Derived data** — what an AI produces reasoning across the first two: a plan, a cart sorted by aisle, a substitution when the one critical thing is out of stock.

Those three layers live in different apps, different formats, and different people's heads. Every system I built was an attempt to stitch them together by hand. **That stitching is the product.**

## The demand is for execution

I didn't set out to validate a thesis. I set out to feed my family without losing my mind on a Tuesday. The thesis emerged from the friction.

I ran 51 calls and 135 surveys. 80% of people said they regularly delay real-world tasks because they feel annoying or stressful. 66% said they'd prefer the AI just handle it entirely — not suggest three options, not ask for feedback, just do it. 93% said they'd need proof it was actually done. And 65% said they'd pay $5 to $25 a month for that reliability.

Read that last number against a delivery-fee model. People will pay a subscription for *reliable execution* — a fundamentally better margin than shaving minutes off a delivery window, and revenue that doesn't evaporate the moment a competitor runs a promo.

The resolution gap is enormous. *”Suggest a healthy dinner”* sits at one end. *”My son ate the leftover rice, there's chicken thawing, it's Tuesday so I'm exhausted, and my Costco is out of the good bread this week”* sits at the other. That distance — generic suggestion to household-aware execution — is where the next generation of consumer food companies gets built.

**The gap between generic and personalized is actually an entire company.** I keep using that line because I keep proving it, accidentally, project after project.

## What it looks like when it works

It's a Tuesday, a few years from now. Nobody in the house has thought about dinner.

George — our robot — opens the fridge and *looks*: the cilantro is wilting on the top shelf, three eggs left, Sunday's rotisserie chicken needs to be used tonight or thrown out tomorrow. He closes it and opens the pantry. Quinoa nearly gone, one can of chickpeas, gluten-free pasta down to half a box. Then the spice rack: cumin's full, smoked paprika almost empty, no fennel — because there's never any fennel. George knows nobody in this house will touch it.

George isn't guessing. Before he arrived, these preferences were loaded in with this household — who lives here, how they eat, what they avoid and why. The sixteen-year-old is gluten-free, non-negotiable. Mom's been on a protein kick for two months, so George has been quietly tilting the week toward it. Dad won't say it out loud, but he leaves anything with fennel on the plate, so George stopped buying it. The little one will only eat food that isn't touching on his plate.

George pulls the Instacart history and sees the rhythm: chicken thighs every Sunday, the Greek yogurt that's been doubling since the protein kick started, the gluten-free bread bought weekly and finished by Thursday. Then he checks Mom's recently bookmarked TikTok recipes. He builds the cart — notices the quinoa is on sale and the chickpeas aren't, swaps accordingly — and places the order in the time it took to read this paragraph.

When the delivery lands on the porch, he brings it in and puts it away. Cold things first, rotating the older yogurt to the front so it gets used, logging expiration dates as he goes. Then George preps for the week using a coBot&trade;-designed vegetable chopper and meat slicer. Assembling high-protein meals in glass containers. Spatchcocking Sunday's chicken dinner. Assembling tomorrow's lunches and setting aside what he'll need in the morning.

Nobody opened an app, built a list, or trained a robot on their family for three months. George simply *knew* — because the knowing was loaded in before he ever crossed the threshold.

That is the entire thesis, in one kitchen. The smart fridge is obsolete. Robot George is a member of the household. The difference between them isn't dexterity or vision — it's that George arrived already knowing this family. That layer — the portable understanding of how you live — is what no robot ships with today. And it is exactly what I'm building: **Mobile Consciousness**, the thing that turns a $30,000 machine into *yours* the moment it walks in the door.

None of that starts with a robot. It starts with a grocery cart, because groceries are the only errand that repeats every single week with enough signal to learn from.

Whoever builds the context layer for food doesn't just win grocery delivery. They end up holding the preference graph that every physical-world agent will need to plug into.

My son still won't eat anything green. The AI still can't remember that. But I'm getting closer to a world where it will — not because I told it, but because it learned from watching how we actually live.

**The curation is the creation.** Every time I photograph my pantry, update my constraints, or say *no, not that, we don't eat that on Tuesdays* — I'm not configuring a tool. I'm building an asset.


---
[View on kellyny.land](https://kellyny.land/thoughts/the-demand-signal-already-left-your-app)