Pitch: Turn MBB's items page from a dumb list into a smart inventory advisor that predicts stockouts, surfaces dead capital, and closes the loop with one-click restocking.
Every Indian SMB owner has had this happen:
A customer walks in and asks for their usual. You go to the shelf — it's empty.
You lost the sale. The customer is annoyed. You didn't even see it coming.
The current MBB experience:
- You manually set a "minimum quantity" per item
- MBB shows "16 items below minimum stock"
- That's it. You still don't know which items to buy how much of and when
What's broken:
- The threshold is static and manual — owners rarely set it correctly
- It tells you what IS, not what WILL BE
- There's no action — you see the alert, then have to figure out what to do next
The real question an owner needs answered:
"Which items will I run out of, when, how much should I order, and from whom?"
Three things, in sequence:
Compute sales velocity from actual transaction history → predict days to stockout per item.
No manual setup. Works on day 1 with existing data.
Show the prediction as urgency tiers on the items page — critical, at-risk, dead stock.
One number: Inventory Health Score.
One-click restock: pre-fills a PO with last supplier, last price, suggested quantity.
Closes the loop from alert → order in under 60 seconds.
| Dimension | Detail |
|---|---|
| Global proof | Inventory Planner acquired by Cin7 (~$200M). Charges $99–299/month just for this. |
| India gap | Zero Indian billing app (Vyapar, OkCredit, Khatabook) has demand forecasting. |
| Data ready | get_item_timeline MCP exists. 1.1B item rows + 491M voucher rows in Snowflake. |
| No setup needed | Works from existing sales data. No onboarding. |
| Instant value | Owner opens items page → immediately sees "3 items run out this week" |
| Monetization | ₹499/month easily justifiable. Stockout = lost sale = real money. |
| Founder criteria | Instant 10x value ✅ Show-off/FOMO ✅ Psychological safety ✅ No setup ✅ |
┌─────────────────────────────────────────────┐
│ Stock Value: ₹4.2L │ Low Stock: 16 │ Expiring: 4 │
└─────────────────────────────────────────────┘
┌──────────────┬────────┬──────────────┬───────────────┐
│ Item Name │ Stock │ Selling Price │ Purchase Price │
├──────────────┼────────┼──────────────┼───────────────┤
│ Atta 10kg │ 8 │ ₹340 │ ₹280 │
│ Dal Moong │ 5 │ ₹120 │ ₹95 │
│ Basmati Rice │ 12 │ ₹210 │ ₹165 │
│ Samsung 65" │ 2 │ ₹68,000 │ ₹55,000 │
└──────────────┴────────┴──────────────┴───────────────┘
What the owner is thinking: "Which of these 200 items do I need to worry about right now?"
What MBB tells them: Nothing useful.
┌────────────────────────────────────────────────────────────────────┐
│ 🔴 3 Critical (< 3 days) │ 🟡 7 At Risk (3–7 days) │ 💤 18 Dead Stock (₹32K) │
│ Inventory Health Score: 67 / 100 │
└────────────────────────────────────────────────────────────────────┘
💡 AI Summary: "3 items run out this week — together ₹18,400 in blocked sales.
Atta 10kg is your fastest mover at 4.2 units/day. 18 items (₹32K) haven't
moved in 60+ days — consider a clearance push."
[Restock All Critical ↗]
┌──────────────┬────────┬──────────────┬──────────┬───────────┬──────────┐
│ Item Name │ Stock │ Velocity/day │ Days Left │ Margin % │ Action │
├──────────────┼────────┼──────────────┼──────────┼───────────┼──────────┤
│ Atta 10kg │ 8 │ 4.2 /day │ 🔴 1.9d │ 17.6% │ [Restock]│
│ Dal Moong │ 5 │ 1.8 /day │ 🔴 2.7d │ 20.8% │ [Restock]│
│ Basmati Rice │ 12 │ 1.6 /day │ 🟡 7.5d │ 21.4% │ [Restock]│
│ Samsung 65" │ 2 │ 0.0 /day │ ⚫ Dead │ 19.1% │ [Clear] │
└──────────────┴────────┴──────────────┴──────────┴───────────┴──────────┘
What the owner knows immediately: Exactly which 3 items to restock today.
- Open Items page → intelligence banner loads with "3 Critical" in red
- Click "3 Critical" → filtered table shows only the at-risk items
- Click "Restock All Critical" → Restock Assistant modal opens
- Modal shows: pre-filled PO — Atta 10kg, 50 units, Agarwal Traders, ₹28/kg
- Confirm → PO created / WhatsApp message to supplier drafted
- Done. Alert to order, in under 60 seconds.
Before this feature: 10-minute manual process of checking each item, calling supplier.
After: 60-second end-to-end flow.
avg_daily_qty_sold= total units sold in last 30 days ÷ 30- Zero-sale days are included in the denominator (honest velocity)
- Displayed as:
4.2 units/dayor0.3 units/day
days_to_stockout=current_stock ÷ avg_daily_velocity- Urgency tiers:
- 🔴 Critical — < 3 days
- 🟡 At Risk — 3 to 7 days
- 🟢 Safe — > 7 days
- ⚫ Dead Stock — velocity = 0, item not selling
- Items with zero sales in last 30 / 60 / 90 days (configurable)
- Per item: days since last sale, current stock, capital locked (
qty × purchase_price) - Aggregate: "₹41,200 locked in 23 unsold items"
margin %=(selling_price − purchase_price) ÷ selling_price × 100- Both prices already exist in item schema — zero backend change
- Alert threshold: items with margin < 10%
- "Restock" button on each at-risk item row
- Pre-fills PO with:
- Last supplier (from purchase invoice history)
- Last purchase price
- Suggested quantity:
avg_daily_velocity × 15 days−current_stock
- User edits if needed → confirms → PO created
- "Restock All Critical" — creates POs for all 🔴 items in one action
- Review screen: see all items together before confirming
- Estimated total restock cost shown upfront
- Formula:
(avg_daily_velocity × target_cover_days) − current_stock - Default target: 15 days of cover
- User can change target days in settings
- Pulls last 3 purchase transactions for the item
- Shows: supplier name, price, date
- Pre-selects the most recent for the PO draft
Single composite score for the business's overall inventory health.
| Component | Weight | What it measures |
|---|---|---|
| Stockout Risk | 40% | How many items are in critical/at-risk zone |
| Dead Stock Ratio | 30% | Locked capital as % of total stock value |
| Margin Health | 20% | Average margin across all items |
| Turnover Rate | 10% | How fast inventory converts to sales |
Displayed as: 67 / 100 with a color band (red / amber / green).
- Track last 5 purchase prices per item over time
- Alert: "Cement 50kg price up 12.3% in 3 months"
- Margin erosion alert: "Cost went up but selling price unchanged → margin: 22% → 9%"
- Top 10 items by: revenue, quantity sold, margin
- Bottom 10 items: lowest velocity, lowest margin, most overstock
- Simple sort — no AI required
- Items where current stock > 90 days of sales velocity
- "You have 180 days of Ariel 1kg at current pace. Slow down purchases."
- Capital efficiency angle: "₹8,400 tied up unnecessarily"
Uses the existing /web/genai/llm/json endpoint — no new model, no new service.
Input (built from computed metrics):
{
"critical_items": [
{ "name": "Atta 10kg", "days_left": 1.9, "velocity": 4.2 },
{ "name": "Dal Moong", "days_left": 2.7, "velocity": 1.8 }
],
"dead_stock_count": 18,
"dead_stock_value": 32400,
"top_seller": { "name": "Atta 10kg", "velocity": 4.2 },
"health_score": 67
}Output (LLM-generated, 3 bullet points):
"3 items run out this week — ₹18,400 in blocked sales if you don't restock."
"₹32,000 sitting in 18 items that haven't sold in 60+ days — consider a clearance push."
"Your best mover (Atta 10kg) accounts for 34% of your daily inventory movement."
This is the only AI in the feature. Everything else is pure math.
| Data needed | Source | Status |
|---|---|---|
| Current stock per item | /web/items list API |
✅ exists |
| Sales history per item | get_item_timeline MCP |
✅ exists |
| Purchase price per item | Item schema purchaseInfo.price |
✅ exists |
| Selling price per item | Item schema salesInfo.price |
✅ exists |
| Item stats (counts) | /web/items/stats |
✅ exists |
| LLM narrative | /web/genai/llm/json |
✅ exists |
| Snowflake query path | flo-analytics-llm | ✅ exists |
Input: company_id, days=30 (lookback window)
Processing: One query joining stock levels + sales history per item:
SELECT
ii.id,
ii.name,
ii.quantity AS current_stock,
SUM(CASE WHEN vi.itemable_type = 'Invoice' AND v.voucher_type = 1
THEN ABS(vi.quantity) ELSE 0 END) / :days AS avg_daily_velocity,
MAX(CASE WHEN vi.itemable_type = 'Invoice' THEN v.voucher_date END) AS last_sold_date
FROM inventory_items ii
LEFT JOIN items vi ON vi.itemable_id = ii.id -- item timeline join
LEFT JOIN vouchers v ON v.voucherable_id = vi.itemable_id
AND v.voucher_date >= CURRENT_DATE - :days
WHERE ii.company_id = :company_id
GROUP BY ii.id, ii.name, ii.quantityOutput:
{
"items": [
{
"id": "abc123",
"name": "Atta 10kg",
"current_stock": 8,
"avg_daily_velocity": 4.2,
"days_to_stockout": 1.9,
"last_sold_date": "2026-05-04",
"urgency": "critical",
"dead_stock": false
}
],
"summary": {
"critical_count": 3,
"at_risk_count": 7,
"dead_stock_count": 18,
"dead_stock_value": 32400,
"health_score": 67
}
}Cache: 1-hour TTL per company.
1. InventoryIntelligenceCardsComponent
- Replaces / extends the current
item-index-data-cards - Shows: 🔴 Critical, 🟡 At Risk, 💤 Dead Stock (₹value), Health Score
- Each card is clickable → filters the table to that tier
2. New columns in ItemIndexTableConfig
{ key: 'velocity', label: 'Sales/day' },
{ key: 'daysLeft', label: 'Days Left', sortable: true },
{ key: 'urgency', label: '' } // color indicator column3. InventoryAISummaryCardComponent
- Calls
/web/genai/llm/jsonwith inventory metrics - Streams the 3-bullet summary
- Dismissible, cached per session
4. RestockAssistantModalComponent
- Opens when user clicks "Restock" on a critical item
- Fetches last purchase history for that item
- Shows: supplier, last price, suggested quantity, estimated cost
- CTA: "Create Purchase Order" or "Send WhatsApp to Supplier"
5. BatchRestockComponent
- "Restock All Critical" flow
- Summary review: N items, total estimated cost ₹X
- Creates all POs in one API call
If short on time, this is the absolute minimum to demo and still win:
- Intelligence cards — 4 new stat cards (critical, at-risk, dead stock, health score) calling the new
/web/items/intelligenceendpoint - "Days Left" column — add velocity + days_to_stockout columns to existing items table
- Filter by urgency — clicking a card filters the table (same pattern as existing low_stock filter)
- AI summary card — 3-line LLM summary using existing genai endpoint
That alone is a fundamentally different product. Restock assistant is v2.
The problem in one sentence: Indian SMB owners lose lakhs every year to stockouts they never saw coming and dead stock they never notice.
The solution in one sentence: Inventory Copilot turns MBB's item list into a predictive advisor — it tells you what will run out, when, and exactly what to order.
Why it's not just a feature, it's a product: Inventory Planner, a SaaS that does only this, was acquired for ~$200M. Every serious inventory management tool globally charges $100–300/month for demand forecasting. India has zero equivalent in the SMB billing space. MBB can own this category.
Monetization: ₹499/month add-on. The first stockout it prevents pays for 6 months. Owners will pay without hesitation.
Why only MBB can build this: We have 10M+ businesses' transaction data. Our velocity predictions get better with every user. No competitor starting today has this training set.
| Feature | MBB Today | MBB with Inventory Copilot | Vyapar | QuickBooks India | Inventory Planner |
|---|---|---|---|---|---|
| Low stock alert | Manual threshold | ✅ Velocity-based prediction | Manual threshold | Manual threshold | ✅ AI forecast |
| Days to stockout | ❌ | ✅ Per item | ❌ | ❌ | ✅ |
| Dead stock ID | ❌ | ✅ With ₹value | ❌ | ❌ | ✅ |
| Reorder quantity | ❌ | ✅ Auto-suggested | ❌ | Basic | ✅ |
| One-click PO | ❌ | ✅ | ❌ | Basic | ❌ |
| AI summary | ❌ | ✅ LLM narrative | ❌ | ❌ | ❌ |
| Price | Included | ₹499/month add-on | Included | ₹X | $99–299/month |
- Backend access — Can we ship a new
/web/items/intelligenceendpoint on the main Rails/Python backend? Or do we route via genai/Snowflake? - Velocity window — 30 days default? Or 7/14/30/60 user-selectable?
- PO flow — Does a Purchase Order creation API exist? Or do we open the purchase invoice creation flow with pre-filled data?
- Restock via WhatsApp — Does the WhatsApp sharing infrastructure accept arbitrary text messages (not just invoice PDFs)?
- Health score formula — Agree on weights before building.
- Paywall placement — Is this a new micro-app at ₹199–499/month, or bundled into an existing plan upgrade?