Data points
the numbers we can actually stand behind

A standing log of Trepo's headline user numbers. Every figure below is recomputed straight from production and carries the query that produced it, so it can go into a deck or an investor email without anyone re-deriving it from memory.

Last refreshed Thu 13 Aug 2026, 11:49 AM PT  ·  internal — do not share

102,813
Recipes generated from what is actually in the kitchen
Built against each household's real inventory — not a static recipe feed. Live count across every household with a ready batch.
first reading
Cook it right now, nothing missing51,410
A few items short51,403
Households receiving them5,176
41,974
Recipes saved by users
Pulled in from TikTok, Instagram, recipe sites, cookbook photos and pasted text, then parsed into structured ingredients. 38,993 parsed cleanly.
first reading
TikTok22,741
Recipe sites5,075
Instagram4,796
Trepo Explore4,000
Photo of a recipe2,967
Typed / pasted2,395
255,713
Grocery items logged into kitchens
Every item a household has ever put into Trepo, by receipt scan, photo or voice. This is the raw material of the Kitchen Graph.
first reading
On the shelf today229,402
Used up, tossed or removed26,403
Households with a stocked kitchen4,731
94,589
Recipe-to-kitchen matches computed
One row per household-recipe pair: can this kitchen make this dish today, and if not, what is missing. 4,406 are makeable with zero shopping.
first reading
667,801
AI operations run for users
Item identification, receipt parsing, substitution suggestions and recipe generation, logged end to end.
first reading
3,367
Households saving recipes
Out of 12,464 registered users. 4,731 have a stocked kitchen.
first reading

Read before quoting

"Recipes generated" is a live count, not a lifetime total. shared_recipes keeps one row per household holding its most recent batch, so regenerating replaces the previous set. 102,813 is what exists right now across 5,176 households — the lifetime number is larger and we do not currently store it. Say "over 100,000 live recipes generated against real kitchens", not "we have generated 100,000 recipes to date", until we log the history.
Dietary preferences are still tiny — 145 households. The generator does take stated diets and allergies into account, but the preference screen only just shipped. "Generated from their food with their dietary preferences" is true of the system and true of 145 households, not of all 5,176. Worth a footnote in any deck.
Do not add the legacy per-user tables to these counts. The old <uuid>_saved_recipes tables hold 42,076 rows, which looks like it would double the saved-recipe number. It does not: a 120-table sample found 1,373 of 1,375 rows already present in the shared table. It is a mirror, not additional data. Same trap applies to kitchen items.
Founder households are still in these totals. Matt, Anna, Zach and Caroline are four of the largest pantries in the system. For a topline volume number that is fine. For any per-household average or brand-affinity claim, strip them first.

The queries

Recipes generated

SELECT SUM(JSON_LENGTH(kitchen_only)) + SUM(JSON_LENGTH(need_grocery)) FROM shared_recipes WHERE status = 'ready';

Recipes saved

SELECT COUNT(*) FROM shared_saved_recipes;

Items logged

SELECT (SELECT COUNT(*) FROM shared_kitchen) + (SELECT COUNT(*) FROM shared_archive_kitchen) - (SELECT COUNT(*) FROM shared_archive_kitchen a JOIN shared_kitchen k ON a._id = k._id);

Recipe-to-kitchen matches

SELECT COUNT(*) FROM owner_recipe_availability;

AI operations

DynamoDB TrepoAnalyticsEvents, GSI EventNameIndex, event_name = 'ai_op', Select=COUNT