AI-powered store management platform — Telegram bots, Claude AI agents, and a real-time owner dashboard for small retail businesses.
Small retail shop owners in India track inventory in notebooks, lose money to uncollected credit, and have no visibility into which products are actually driving profit. BazaarOps replaces that with a multi-agent AI system: Claude analyzes sales velocity and credit patterns daily, then pushes actionable alerts directly to the owner's Telegram. Customers place orders through a conversational Telegram bot with NLP — no app to install, no signup friction.
Live demo → bazaarops.tanisheesh.in
- Conversational customer ordering — Customers browse and order via Telegram using natural language (
order Rice 2kg); fuzzy matching handles typos and shorthand product names. - Claude AI inventory analysis — Twice-daily analysis of stock levels vs. sales velocity, with one-tap WhatsApp links to contact suppliers for critical items.
- Credit risk assessment — Daily Claude-powered analysis of unpaid orders, with tailored collection strategies per customer risk profile.
- Business intelligence dashboard — Week-over-week trends, 7-day revenue forecasts, stockout predictions, profitability by product, and anomaly alerts in a Next.js UI.
- Multi-agent event bus — Coordinator agent resolves conflicts between inventory, credit, churn, and order agents using Redis pub/sub; decisions are logged and outcomes tracked for strategy adjustment.
| Layer | Tech |
|---|---|
| Frontend | Next.js 14 (App Router) · TypeScript · Tailwind CSS · Lucide React |
| Backend | FastAPI · Python 3.13 · Uvicorn |
| Database | Supabase PostgreSQL |
| AI | Anthropic Claude API (claude-sonnet-4-5) |
| Messaging | Redis pub/sub (inter-agent message bus) |
| Bots | python-telegram-bot 22.6 |
| NLP | fuzzywuzzy · python-Levenshtein |
| Scheduling | schedule (Python) |
| Hosting | Render (backend services + bots) · Vercel (dashboard) |
Why a multi-agent event bus over direct API calls between services? Agents emit typed events (INVENTORY_LOW, CREDIT_RISK_HIGH, CUSTOMER_CHURN_RISK) that any subscriber can act on independently. A new agent can be added without touching existing code — the coordinator handles conflict resolution without tight coupling.
Why Claude for inventory and credit analysis rather than rule-based alerts? Reorder thresholds are too blunt — a product below threshold but with zero recent sales should not trigger the same alert as one selling 10 units/day. Claude receives structured JSON of sales velocity and stock data, not raw data dumps, and produces context-aware recommendations the owner can act on immediately.
Why Telegram instead of a dedicated mobile app for customers?
Zero install friction. The primary customer segment is neighbourhood shop regulars who already use WhatsApp/Telegram. Deep linking (t.me/BazaarOpsCustomerHelpBot?start=STORE_ID) lets owners share a single link that onboards customers to the correct store automatically.
What would you do differently in v2? The scheduler runs inside the bot process — if the bot restarts, a scheduled report can be skipped silently. Moving scheduled jobs to a proper task queue (Celery + Beat, or APScheduler with a persistent store) would make the scheduling layer independently restartable and observable.
| Document | Description |
|---|---|
| PRD | Product requirements — goals, user stories, non-goals |
| Architecture | System design, data flow, component breakdown |
| Decisions | Every major technical decision and why |
| Setup | Local dev setup, env vars, deployment |