An internal sales ops intelligence tool built for Coolberg (Ghodawat Consumer Limited) that automatically detects upcoming dry days across Indian cities and pre-calculates SKU-level stock recommendations before demand spikes hit. The engine scrapes Google News RSS feeds every 6 hours for election and festival dry day announcements, merges them with auto-generated national holiday data and computes city-wise demand uplift using configurable multipliers per event type. Sales teams get a real-time dashboard with copy-ready WhatsApp-style alerts, priority-ranked city recommendations and one-click CSV export, eliminating the manual effort of tracking dry days across 14 states.
Coolberg loses significant revenue on dry days because stock isn't pre-positioned in advance. Distributors and retailers run dry while demand spikes, especially around elections and national holidays. This tool gives the sales ops team 1β14 days of advance warning with exact SKU quantities to push city by city.
- Frontend: https://dry-day-demand-engine.vercel.app
- Backend: https://dry-day-demand-engine.onrender.com
Note: Render free tier spins down after inactivity. First load may take 30β60 seconds for the backend to wake up.
| Layer | Technology |
|---|---|
| Frontend | HTML, Tailwind CSS CDN, Vanilla JavaScript |
| Backend | Node.js, Express |
| Scraping | Axios, Cheerio, Google News RSS |
| Scheduling | node-cron (scrapes every 6 hours) |
| Storage | JSON flat files |
| Export | CSV (server-generated) |
| Frontend Deploy | Vercel |
| Backend Deploy | Render |
dry-day-demand-engine/
β
βββ frontend/
β βββ index.html # Landing page
β βββ dashboard.html # Main sales ops dashboard
β βββ css/
β β βββ styles.css # CSS variables, custom components
β βββ js/
β βββ api.js # All fetch calls to backend
β βββ utils.js # SKU colors, badges, formatters
β βββ dashboard.js # Dashboard logic, renders, filters
β
βββ backend/
β βββ server.js # Express app, cron scheduler
β βββ routes/
β β βββ drydays.routes.js
β β βββ recommendations.routes.js
β β βββ alerts.routes.js
β β βββ export.routes.js
β βββ services/
β β βββ scraperService.js # Google News scraper + national holidays
β β βββ dryDayService.js
β β βββ demandEngine.js # SKU multiplier calculations
β β βββ alertEngine.js # Alert generation logic
β β βββ csvExportService.js
β βββ data/
β β βββ drydays.json # Auto-updated by scraper
β β βββ cityDemand.json # Weekly demand per city per SKU
β β βββ skuMultipliers.json # Multipliers per event type
β βββ utils/
β β βββ dateUtils.js
β βββ package.json
β
βββ README.md