I built a scraper to sell coffee, not to predict which roasters will die.
It's a Python pipeline that pulls product data from 87 Indian specialty-coffee roasters — Shopify stores, WooCommerce, Wix, GoDaddy — and normalizes the mess into a Supabase table: product name, price, roast level, origin, estate. I built it to answer one question, the only question I thought mattered: which of these coffees is a light roast, and where can I actually buy it?
A catalog, not an oracle.
Then the market went thermonuclear, and my catalog started noticing things I never asked it to.
In the last few weeks alone: Subko raised $10 million from Nikhil Kamath at a $34 million valuation. Third Wave is closing an $80–100 million insider round at a $400–500 million valuation — and the bluntest sentence in Indian food media this year came from The Ken: "Third Wave is losing money on coffee. Its fix is 200 dessert items." Blue Tokai has Temasek and ChrysCapital bidding each other past ₹1,000 crore to fund a jump from 240 stores to 800.
Five different theses — experience, expansion, desserts, convenience, fast-format. All funded. All generating more stores, more SKUs, more sub-brands.
And buried one paragraph down in every honest account: no coffee chain in the country is profitable. RedSeer's number is the sharpest — the new-age format runs the lowest repeat rate of any benchmark (18–20% vs 28–30% for legacy) and a 12–15 month payback vs 6–7.
The money is buying storefronts, not loyalty.
Then there's KC Roasters. A real roaster, one of the 87 my scraper tracks. Last week a thread on r/IndiaCoffee noticed what no press release ever would: "these guys were my go-to… now there are just 2 options… NO coffee beans being sold, it's all pre-order only… the lady says they quit."
No funding round. No bankruptcy filing. No article. Just a customer, weeks late, watching a roaster quietly fade — dwindling SKUs, everything flipping to pre-order, a silent pivot to wholesale.
And here's the part that landed on me.
My scraper already had that data.
Every crawl, for months, it's been recording the exact signature of that fade. SKU count over time. Pre-order status. New-product velocity. Price changes. A healthy roaster drops new-harvest coffees on schedule and re-prices to track the market. A fading one stops listing anything new, stops re-pricing, and everything flips to pre-order.
KC did all of it. My database recorded all of it. And I never once computed the trend — because I built the scraper to sell coffee, not to watch roasters.
Then the same week, the AI industry finally measured the exact same gap and got a number for it.
Coding agents write 180% more code and ship 30% more software. Anthropic's own study — 1,260 researchers — found agent users produce about 75% more working papers, but "not yet a surge in journal submissions." The input is abundant. The output is unproven. The gap between them is the layer nobody measures.
Coffee is running that same experiment with money instead of code. More capital, more stores, more SKUs, more dessert sub-brands — and still not one profitable chain, and a real roaster quietly dying in a Reddit thread, weeks before anyone noticed.
The funding headlines tell you who raised. The catalog tells you who's actually selling.
I built the catalog to sell coffee. It turned into the only honest instrument in a market that's about to consolidate — the thing that can tell you which roaster is healthy and which one is quietly dying, months before a Reddit thread does. And it's honest for a reason nobody planned: nobody paid me to generate more of anything. The scraper just records what's true.
So I'm building the thing I should have built the first time I ran a crawl: a Roaster Health Index. A per-roaster score — active, watch, fading — computed from data I already have.
The falsifiable test is embarrassing in its simplicity. Run it, and it has to flag KC Roasters from the data alone, without being told about the thread. If it can't, the signal definition is wrong, not the roaster.
Three of the four signals are already sitting in the table. The fourth — whether a product is sold out or pre-order-only — might be getting thrown away every crawl, because I never told the scraper to keep it. Which is the whole project, really: stop throwing away the part of the data that matters.
I'm not claiming I predicted anything. A Reddit thread just showed me my own database already knew. That's not a flex. It's the most useful failure I've had all year.
So, a genuine question: which roaster do you think is quietly fading right now? I have a feeling my scraper already knows — I just have to finally point the query at it.