Ti Cok: turning price PDFs into an anti-cost-of-living app
I’m building Ti Cok: a mobile app for Réunion Island fighting the high cost of living on fruit and vegetables. The promise, in Creole: “Sak i lé bon marché, kan, é ousa” — what’s cheap, when, and where.
Ti Cok is also the character: the local boug who heads to the market at dawn and never misses a good deal. 🐓

I’m sharing the build as it goes. And this project doesn’t start from an app idea — it starts from a dataset I stumbled on, and one simple question: why is nobody using this?
The source: public data nobody reads
Every week, DAAF Réunion publishes mercuriales: the official price readings for fruit and vegetables across the island’s markets. Wholesale, open-air markets, organic, meats. Public data, etalab 2.0 licence, free to reuse.
Read that again: the real market price is already measured and published. Not an estimate. An official reading, week after week. And yet not a single islander checks it before heading to the market.
Why? The format:
- It’s in PDFs. One web page per week, a file to download, a table inside. Useless for actual shopping.
- It’s irregular. The cadence shifts, sometimes weeks behind.
- It’s inconsistent. File names change format, and so do product labels (“PIMENT VERT GROS” → “GROS PIMENT VERT”). You can’t guess a URL or naively match names.
That’s where the real work is. A cron job fetches new publications, follows the PDF links, has an LLM read them and emit strict JSON (Zod-validated), flags outlier prices, normalises labels onto a canonical product, and archives every quotation append-only — the history is never overwritten. From that history I derive seasonality: for each product, which month it bottoms out, and by how much.
The goal: put this data in people’s pockets
The high cost of living here is a long-running issue: on food, the price gap with mainland France is real and weighs on purchasing power. DAAF data is a wasted resource. My goal fits in one line: get it out of the PDF and into an app my mother could open before heading to the market.
Ti Cok answers three questions:
- What’s cheap today? The “Bazar du jour”: open-air market quotations, readable at a glance, price change and real reading date always shown.
- When to buy? Seasonality. Lychee in December, not March. A 12-month curve, a “peak season” badge when the price collapses.
- How to build a smart basket? An AI assistant: budget + number of people → a basket from the real prices of the day and the season, with the estimated saving.

All in a deliberate visual direction — Modern Tropical Data: the energy of a Réunion open-air market crossed with the rigour of a financial terminal. A Bloomberg of the bazaar, figures in mono, with inverted semantics: here a falling price shows in green, because we’re on the buyer’s side, not the trader’s.
Now, let me challenge my own project
This is the part I most enjoy sharing. An idea that can’t survive its own objections is just a good pitch. Here are the questions I ask out loud — the ones that move the product.
”Real-time cost of living”? No. And I own it.
DAAF data lags by several weeks, and it’s an official quotation, not the exact price at your checkout tonight. Selling “real time” would be lying.
So Ti Cok isn’t a live cart comparator. It’s a trend and seasonality tool: it tells you which product is structurally well-priced right now. Less sexy, but true — and enough to buy better.
Is the open-air market “everyone’s shopping”?
No, and many people mostly shop at supermarkets. But it’s a deliberate, useful bias: open-air means fresh, local, short-circuit produce — where the season swings prices by a factor of 3 or 4, so where the info is worth the most. Community reporting (price-tag photo → OCR) will widen coverage. But I won’t claim to cover supermarkets until the data allows it.
The paradox: a paywall on an anti-cost-of-living app?
The hardest objection. Charging for an app that helps people spend less is a real tension. If the people most hit by the cost of living can’t drop €2.99/month, am I betraying the promise?
Is that enough to make the model viable? Not sure, and I’d rather say so. The market will settle it. But I’d take an uncertain-but-aligned model over the reverse.
Why an app, not just a website or a bot?
If the data is public, wouldn’t a site or a weekly notification do? And in Réunion, Android dominates while I’m starting iOS-first. Real risk. iOS-first is a build-speed choice, not a market conviction — the architecture won’t block Android later. The app bet rests on usage: shopping is recurring, mobile, a habit. Price alerts only make sense pushed at the right moment, in your pocket. A PDF never will. But I keep the objection: if retention doesn’t follow, the format moves.
The community cold start
Photo reports enrich the data — but they’re worth nothing without users, and moderating crowdsourced data is a problem in itself. So I do not rest day-one value on the community: the app is fully useful with DAAF data alone. The rest is a bonus that grows with the community.
What this build teaches me
My starting conviction: well-exploited public data beats a brilliant app idea built on nothing. The value isn’t in the AI or the design — it’s in the unglamorous chain that turns an unreadable official PDF into “lychee is 4× cheaper in December.”
And a healthy project is one that survives its own objections. Mine — freshness, representativeness, paywall, platform — don’t kill the idea. They frame it: a tool honest about its data, free on the essentials, useful from day one.
The rest is just build. I’m keeping going, and I’ll share what’s next here.
Building in public. Data source: DAAF Réunion price bulletins — etalab 2.0 licence.