Jeremy Dudet@jeremyfdudet
Diagnosing customer churn, part 2
In my last post I shared that I want to make onboarding more rewarding.
I concluded the main source of churn is that onboarding feels like a slog: lots of upfront work with almost no reward. Most users don’t see their first useful data (COGS) until 2–3 weeks in.
That’s normal for this type of app.
Competitors usually solve it by selling a paid done-for-you onboarding service on top of the subscription. I’m trying to avoid that. The only way is to make the app sticky during onboarding by making every session feel rewarding from day one.
What does “rewarding” mean here?
The user leaves every session believing their inventory is more under control, and that belief is true.
Every data-entry effort has to be compensated in one of two ways:
1) A payoff. An insight they didn’t have (“your bacon is up 11% since March”) or something immediately useful (a shopping list).
2) Progress. An honest signal that they’re getting closer to a payoff, like a quest-tracking system in a game.
How I'm implementing it:
If we owe the user compensation for every effort, then for every payoff we have to know exactly what it depends on: what data it needs, what’s already filled, and what’s still missing.
That structure is a dependency tree (example screenshot below). The top node of each tree is a payoff; every node below it is a required dependency.
Tracking those trees is the entire mechanism.
When the user commits their first count or processes their first receipt, the dependency-tree engine wakes up and asks: “What just became computable for the first time?” It keeps a table of every payoff it knows how to deliver and the data each one depends on.
There are about seventeen trees: food cost, price watch, plate costs, shopping list, etc. One tree per thing an operator would actually ask for.
The trees aren’t separate data. They’re views over one shared substrate, so the same node appears in multiple trees. The catalog sits under all seventeen. Prices feed about twelve. Counts feed eight. Sales feeds only two.
Example: the operator enters one sentence—“thirty-two pounds of brisket in the walk-in.”
That single count advances every tree that touches counts at the same moment. Food cost gets closer. The ranked count list reorders. The shopping list rechecks brisket against its par.
How this improves onboarding?
We can use the dependency trees to calculate the shortest path to the outcomes that matter most. We know what’s missing and which nodes influence the most important trees, so the AI agent can ask the smartest next questions. The app can also give honest progress indicators so the user leaves feeling like they actually accomplished something.
