Retailer Trend Digest + Nudge Engine

AI Project · product + build

Kirana retailers sell blind — they see their own shop, not the 40 around them. This MVP proves one loop: extract market signal from retailer chatter, match it to each retailer's own profile and sales, and return a personalised weekly nudge — stock X this week, because Y.

The loop

retailer chatter / posts
      ->  LLM extracts trends & demand signals   (Layer 1)
      ->  matched against a retailer's profile
          (area, category mix, last 4 weeks of sales)
      ->  personalised nudge: "Stock X this week, because Y"   (Layer 2)

Data here is synthetic — ~45 Hinglish retailer posts and 12 retailer profiles for one vertical (snacks & namkeen, Bengaluru) — with a handful of trends deliberately planted so each layer is testable by inspection.

How it works

Layer 1 — Trend Extraction

One LLM call clusters a week of posts into 4–7 distinct, decision-grade trends. Each carries a type (rising_demand, supply_issue, new_launch, price_change, complaint), sentiment, geo scope, the retailer posts cited as evidence, and a confidence score driven by how many independent posts back it. Supply problems and demand spikes look alike in the text but need opposite retailer actions, so the schema forces that distinction.

Layer 2 — Nudge Matching

Deterministic rules do the cheap, checkable narrowing — which trends are even geographically relevant to a shop, and what that shop's own 4-week sales say about the SKUs in play (collapsed / rising / flat …). The LLM only sees that pre-filtered, annotated payload and writes up to 3 ranked nudges, each grounded in both the trend and the retailer's numbers. “Nothing warrants action” is a valid output — the engine is built not to manufacture signal.

Interactive demo

The exact output of both layers on the synthetic corpus. Toggle between the week's digest and per-retailer nudges; open the evidence on any card to see the retailer posts behind it. Retailer Whitefield Family Mart is the deliberate negative case — flat everywhere, off every trend cluster, so it gets only low-priority “watch and wait” nudges.

6 trends extracted from 45 retailer posts · week of 2026-09-01

Lay's Magic Masala 52g stuck out of stock in South Bengaluru

conf 0.92
supply issuefrustrated_demandlocalised:south

Retailers across Jayanagar, JP Nagar, BTM Layout and Banashankari report the Lay's Magic Masala 52g pack unavailable for 1-3 weeks, with PepsiCo/distributor lead times of 3-4 days and partial fills that sell out within a day. Underlying customer demand is intact and strong — shoppers are switching to Bingo or leaving — so this is a distribution gap, not a demand drop. Some grey-market stock is being sold above MRP.

Brands
Lay's, PepsiCo, Bingo
SKUs
Lay's Magic Masala 52g
Areas
Jayanagar, JP Nagar, BTM Layout, Banashankari

Balaji Wafers entering Bengaluru with aggressive retailer margins

conf 0.86
new launchopportunisticcity_wide

Balaji Wafers has started direct distribution across Bengaluru (east, south-east, north observed) offering ~14% margin and an intro scheme (1 free carton on 10) — noticeably better economics than Lay's. Early adopters report fast rotation, and the sub-Lay's price point is landing with customers. Distributor contact discovery is still a friction point for some retailers.

Brands
Balaji Wafers, Lay's
SKUs
Balaji Wafers Masala Masti 45g, Balaji Wafers Simply Salted 45g
Areas
Indiranagar, Koramangala, Marathahalli, HSR Layout, Whitefield

Baked / healthy snacks gaining share in East Bengaluru

conf 0.83
rising demandpositivelocalised:east

In Indiranagar, Koramangala and HSR Layout, retailers report steady week-on-week growth in baked and 'better-for-you' snacks — Too Yumm (Multigrain, and the new Karare range), Beyond Snack banana chips, makhana. The crowd is diet-conscious and actively asks 'baked or fried'. Margins are reported as better than fried mainstream, and traditional Haldiram namkeen is comparatively slow in these pockets.

Brands
Too Yumm, Beyond Snack
SKUs
Too Yumm Multigrain Chips 46g, Too Yumm Karare, Beyond Snack Banana Chips 50g
Areas
Indiranagar, Koramangala, HSR Layout

Haldiram's namkeen price hike is pushing customers to smaller packs and Bikaji

conf 0.80
price changenegativecity_wide

Haldiram's raised namkeen MRPs 3-5% from September, with Aloo Bhujia 200g up ~₹5. Retailers see customers down-trading to 100g packs and, at the same price point, shifting to Bikaji, whose salesforce is pushing harder to exploit the gap. Old-MRP stock is causing pricing confusion at the counter.

Brands
Haldiram's, Bikaji
SKUs
Haldiram's Aloo Bhujia 200g, Haldiram's Aloo Bhujia 100g
Areas
Malleshwaram, Rajajinagar, Jayanagar, Basavanagudi, RT Nagar

Ganesh Chaturthi lifting sweets and dry-fruit gift packs

conf 0.74
rising demandpositivecity_wide

Festival-week demand (Ganesh Chaturthi) is up for modak, besan laddu, chakli, soan papdi and 250g/500g dry-fruit and chocolate gift boxes, with retailers doubling some orders. Effect is city-wide but time-boxed — one retailer already notes bulk namkeen demand cooling immediately after the festival.

Brands
Haldiram's, Cadbury
SKUs
Haldiram's Soan Papdi 250g, Cadbury Celebrations, dry-fruit gift box 250g
Areas
Jayanagar, Basavanagudi, Malleshwaram, Rajajinagar

Kurkure short supply in North Bengaluru (reported plant issue)

conf 0.70
supply issuenegativelocalised:north

Retailers in Yelahanka, RT Nagar and Hebbal report Kurkure — especially Masala Munch — running 10+ days late, attributed by distributors to a plant issue; one distributor (Sri Sai Agencies) missed two consecutive orders. Customers are substituting to Bingo Mad Angles. Distributor guidance is ~1 more week to normalise. Because the stated cause is production, not local logistics, other areas may be affected even though reports so far cluster in the north.

Brands
Kurkure, Bingo
SKUs
Kurkure Masala Munch 90g
Areas
Yelahanka, RT Nagar, Hebbal

Stack & approach

Claude APIPythonpandasStreamlit (original)rules + LLM splitsynthetic data

Built as a weekend MVP with a written PRD and a build log recording each decision and its rationale. The engine ships with committed sample outputs so it runs with no API key; the two layers regenerate them from the raw posts when a key is set.