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?