Suved Distributors: one platform for a distributor going digital
How we built a digital commerce and operations platform for a Mumbai frozen-food distributor: online store, payments, back-office, inventory, dealer network and ship-supply operations, all in one system.
One platform for a distributor going digital
Suved Enterprises (trading as Suved Distributors) supplies frozen and ready-to-cook foods (chicken and pork cold cuts, frozen snacks and meals) across Mumbai. JMDA Analytic designed and built a custom web platform that turned a phone-and-paper business into a digital one.
- Industry
- Frozen food distribution
- Client location
- Chembur, Mumbai
- Engagement
- 2022 – 2024
- Solution
- E-commerce + ERP-lite platform
- Delivered by
- JMDA Analytic Pvt Ltd, Mumbai
What JMDA delivered
- A branded online store with mobile-OTP login, category catalogue, cart and a checkout that checks delivery pincodes.
- Secure online payments through the Worldline gateway, with SHA-512 signed requests and verified responses.
- An operations back-office for products, cost and margin, vendor purchases, quotations, collections and expenses.
- A daily inventory ledger updated automatically from purchase entries.
- Growth tools: channel partners, franchise outlets, bulk-order and dealer enquiries, a pincode waitlist, blogs and SEO.
- Customer messaging by SMS, WhatsApp (Interakt) and email, with a prepaid SMS-credit wallet.
- A ship-supply module for supplying provisions to vessels.
A cold-chain distributor serving Mumbai
Based in Chembur, Suved sources frozen and ready-to-cook products from manufacturers and brands and delivers them to households, retailers, food businesses and institutional buyers. It also supplies provisions to ships calling at Mumbai.
Home customers
Families ordering frozen cold cuts, snacks and meals for doorstep delivery in serviceable pincodes.
Bulk & trade buyers
Hotels, caterers and retailers placing large orders and asking for quotations and premium ranges.
Partners & outlets
Channel partners (dealers) and franchise outlets across Mumbai's localities, plus vessel-supply customers.
The business challenge
Like many regional distributors, Suved ran on phone calls, WhatsApp messages, spreadsheets and handwritten invoices. Growth across channels made that hard to manage.
Sales & customers
- No self-service ordering channel; every order needed staff time.
- Online payments had to be collected and reconciled securely.
- Deliveries had to stay within the areas the cold chain reaches.
- Repeat customers needed order updates and re-engagement.
Operations & growth
- Product cost, tax and margin were not in one place.
- Stock positions depended on manual counts.
- Quotations, collections and expenses were tracked on paper.
- Dealer, franchise and bulk-order leads arrived through scattered channels.
Project objectives
| Objective | What success looks like |
|---|---|
| Sell online | Customers find products, log in without passwords, and pay online in a few taps on mobile. |
| Control serviceability | Delivery availability is shown by pincode, and demand from unserved pincodes is recorded for expansion planning. |
| Digitise operations | Products, purchasing, stock, quotations, collections and expenses are managed in one secure dashboard. |
| Grow the network | Partner, franchise and bulk-order enquiries are captured and listed for the sales team. |
| Stay in touch | Automatic SMS, WhatsApp and email at key moments, with SMS costs controlled through a credit wallet. |
| Measure daily | Management sees today's orders, revenue, visitors, enquiries and messaging on one screen. |
Four business pillars, one codebase
JMDA chose a modular Python/Django architecture. Each business area is its own application, and all of them share one customer, product and order database. Public pages are server-rendered for speed and SEO; cart, search, OTP and notifications use lightweight JSON APIs.
Online Store
Catalogue, OTP login, cart, checkout, Worldline payments, orders and invoices.
Back-Office
Item master, purchasing, inventory, quotations, collections, expenses, users.
Growth Engine
Partners, franchises, bulk orders, enquiries, blogs, SEO, messaging.
Ship Supply
Vessel provisioning items, customers, vendors, orders and invoices.
Platform layers
| Layer | What sits there |
|---|---|
| Channels | Mobile web store · desktop web store · admin / staff dashboard |
| Experience | 100+ responsive templates · AJAX cart & search · OTP login modal · PDF invoices · dashboard charts · CSV / Excel import-export |
| Application modules | pages (storefront) · offline_pages (back-office) · user (identity) · category_app · product_app (cart & orders) · inventory_app · shipping_app · galley_app · slider_app · contact_app |
| Data | PostgreSQL · media storage (product, blog, outlet images) · scheduled jobs (django-crontab) |
| Integrations | Worldline payment gateway · SriSai SMS gateway · Interakt WhatsApp · SMTP email · Nominatim geocoding · xhtml2pdf / ReportLab |
Design principles
Business-first modules
Each app maps to a business function, so new lines of business (such as vessel supply) are added without touching the store.
Mobile-first commerce
Login by mobile number and OTP removes password friction for first-time Indian e-commerce buyers.
Search-friendly by design
Slugs, meta titles, keywords and descriptions on every category and product, keyword-rich URLs, a sitemap and a blog.
From first visit to doorstep
The journey is designed around how Mumbai households shop on their phones: few form fields, no passwords, delivery status shown early, and confirmation on SMS.
- 1Discover
Home page with best sellers, today's specials, categories, sliders and outlets.
- 2OTP Login
Mobile number and pincode, then a 4-digit OTP by SMS. New users are registered automatically.
- 3Serviceability
Pincode checked against the delivery master; shows “Delivery Available” or “Not Available”.
- 4Cart
Add products, change quantities live, see service charge and total update instantly.
- 5Checkout
Address check. If the profile is incomplete, the customer is taken to the address form.
- 6Pay
Signed request sent to Worldline (cards, UPI, net-banking) and a verified response comes back.
- 7Order
Order number created, cart turned into an invoice, and an SMS confirmation sent.
- 8Track
“My Orders” with downloadable PDF invoices; the back-office records tracking updates.
Frictionless identity
A customer only needs a mobile number. On the first OTP request the platform creates a customer profile, records the pincode and sends a WhatsApp/SMS welcome. Repeat customers go straight back to their saved address and order history. Customers from pincodes not yet served are still recorded, which builds a list of where demand exists.
| Moment | Channel |
|---|---|
| OTP verification | SMS (sender ID SSUVED) |
| Welcome on first login | SMS |
| Account activation link | Email + WhatsApp |
| New client alert to sales team | |
| Payment success / failure | SMS |
| Feedback & product campaigns | WhatsApp (Interakt events) |
Most first-time buyers in the category shop on mobile. Asking for a password at checkout loses the sale, so we built the whole store around the mobile number.
JMDA Analytic Pvt Ltd project team
The rules behind every order
Cart pricing
The cart reprices on every change. All charge rates are set in the database by the admin, so pricing policy changes without code changes.
# per line line_amount = selling_rate × quantity # per cart grand_total = Σ line_amount service_charge = grand_total × service_charge_% / 100 # admin-configurable shipping = policy-driven (free-delivery threshold) # currently ₹0 final_amount = grand_total + shipping + service_charge # rounded to 2 dp
Secure payment handshake
Checkout builds a Worldline request with a unique transaction ID and a SHA-512 hash of the merchant ID, transaction ID, amount, customer mobile and email, signed with a merchant salt. When the gateway calls back, the platform recomputes the hash over all 15 response fields and accepts the result only when the two match. Every gateway response, success or failure, is stored in a payment log for finance and support.
hash = SHA512(merchantId | txnId | amount |||
mobile | email |||||||||| salt)| Code | Meaning | Platform action |
|---|---|---|
| 0300 | Success | Create order, convert cart, SMS confirmation |
| 0398 | Initiated | Log; show status page |
| 0396 | Awaited | Log; show status page |
| 0399 | Failure | Log; failure SMS with retry prompt |
| 0392 | Aborted | Log; failure page |
Order numbering
Brand prefix, branch code, month and year, and a running sequence, so invoices are easy to read and sort for accounts.
SUV-808-MMYY-NNN # e.g. SUV-808-0124-057
Order creation sequence (on successful payment)
Cost, margin, stock and credits
Landed cost & margin
When a product is added to the item master, the platform works out its fully loaded cost and margin from the purchase price and GST, so management sees profitability for every product.
tax_amount = purchase_cost × tax_% / 100 total_cost = purchase_cost + tax_amount margin_% = (selling_rate / total_cost − 1) × 100
Daily inventory ledger
Each product has one stock row per day. A scheduled job carries yesterday's closing stock forward as today's opening stock. Purchase entries post to the ledger automatically, and deleting a purchase reverses the posting. A one-click PDF stock statement lists today's position and value for every SKU.
close = open + purchase − sale value = close_kg × rate # quantities held in grams; # purchase qty (kg) × 1000 → ledger
Document numbering across the business
| Document | Format | Created in | Feeds |
|---|---|---|---|
| Online order / invoice | SUV-808-MMYYNNN | Storefront payment callback | My Orders, PDF invoice, dashboard revenue |
| Purchase vendor order | PVO-00N | Back-office purchase entry | Inventory ledger, CGST/SGST totals |
| Quotation | Quotation-00N | Back-office quotation builder | Quotation history, printable quotation |
| Vessel supply order | Order code + vessel | Ship-supply module | PDF invoice, purchase vs sales totals |
Purchase tax split
Each purchase line records the HSN code, GST rate, price, quantity, weight and GST amount. Invoice totals split the GST equally into CGST and SGST for intra-state purchases, ready for GST filing.
Quotation builder
Staff build a multi-line quotation (MRP, discount %, price after discount, pack type, weight, qty) for any client, with an overall discount and net amount, and print it straight away.
Prepaid SMS-credit wallet
Admins log each recharge; points = recharge ÷ ₹0.30 per SMS. Every SMS sent deducts one credit and writes a delivery-report row. The live balance is on the dashboard so credits never run out unexpectedly.
What customers see and use
The public site is the brand's main digital shopfront. It is built to load quickly on mobile, rank on local search terms such as “frozen foods Chembur Mumbai”, and turn visitors into customers or leads.
| Module | Capabilities |
|---|---|
| Home & merchandising | Hero sliders, best sellers, today's specials, featured categories, gallery highlights, franchise and partner locations; managed by admins and ordered by sequence. |
| Catalogue | Category pages with SEO slugs; product pages with up to 5 images, brand, pack size, net weight, shelf life, packing type, manufacturer, cooking instructions, MRP vs offer price and stock flag. |
| Search | Instant product search API and category-filtered product API (JSON) with “already in cart” state for each product. |
| OTP authentication | Mobile and pincode capture, SMS OTP, automatic registration, welcome message; email-based login and password reset for staff and admins. |
| Serviceability | Pincode-to-area master; delivery availability shown in the cart and catalogue; waitlist for unserved pincodes. |
| Cart | Add, update and remove through AJAX; live repricing of line totals, service charge, shipping and final amount; cart count on every page. |
| Address book | Billing and shipping address with landmark, street, city, state and pincode; inline edit of email and address. |
| Checkout & payment | Profile check, Worldline hosted payment with signed request and verified response, success and failure pages. |
| My Orders & invoices | Order history; GST-style PDF invoice with amount in words; download or view in the browser. |
| Lead capture forms | Contact us, product enquiry, category enquiry, bulk order, channel-partner application, franchise outlet locator. |
| Content & trust | About, our manufacturers, certificates, blogs with individual posts, and policy pages (terms, privacy, returns, shipping, disclaimer). |
| SEO toolkit | Meta title, keywords and description for every category and product, editable from the dashboard; keyword-rich URLs; sitemap.xml; robots.txt; auto-resized images for page speed. |
The operations cockpit
Admins and staff log in to a separate dashboard that brings together purchasing, sales and marketing work that used to live in registers and spreadsheets.
Products, customers, areas
- Item master: category, brand, HSN, pack and sales type, purchase cost, GST, auto-calculated margin, images, best-seller and stock flags
- Category master: images (auto-resized), sequence, SEO
- Customers & vendors: contact, GST, PAN, FSSAI, bank details, IFSC
- Area & pincode masters
Purchases to expenses
- Purchase vendor orders: multi-line entry with HSN and GST, posting to inventory
- Quotations: builder, history, printable quotation
- Purchase history with reversal on delete
- Staff collections with proof upload
- Daily expenses with bill image; staff see only their own entries
Orders and payments
- Online order history with invoice and process-order views
- Order notifications with read/unread status
- Tracking updates recorded for each order
- Payment gateway log (all Worldline responses)
- Online inventory PDF statement
Network and leads
- Channel partners: location → area → partner, with profile images
- Franchise / factory outlets with map links
- Enquiry inboxes: bulk orders, partner applications, product, contact and online enquiries
- Unserved-pincode demand list
Site content
- Blog CMS with auto-resized banner and thumbnail images, slugs
- Slider & gallery image managers
- SEO editor for categories and products
- CSV export of the item master
Roles and messaging
- Role-based users: Admin, Staff, Customer, each with its own list and editor
- SMS wallet: recharges, live balance
- SMS delivery report by message type
Who sees what
| Role | Lands on | Typical work |
|---|---|---|
| Admin | Operations dashboard | Masters, pricing and margin, users, SMS wallet, SEO and content, every report and inbox |
| Staff | Operations dashboard | Purchases, quotations, collections, expenses (own records), order processing and tracking |
| Customer | Online store | Browse, cart, checkout, address book, order history and invoices |
The core entities
More than 70 data models sit behind the platform. These are the core commerce and operations entities and how they connect.
User
email · mobile · WhatsApp · role (admin / staff / normal) · is_active. Owns a cart, places orders, has addresses.
Product
name · brand · HSN · slug · selling rate · MRP · purchase cost · GST · margin · net weight · shelf life · best-seller / special / stock flags.
Shopping_Cart
user · product · pack · rate · qty · amount. Becomes the invoice on payment.
Invoice_Detail
order_no · user · status · grand / service / shipping · final amount · tracking · notification flag.
Order_Detail
order_no · product · pack · rate · qty · total.
OnlineInventory
Daily ledger: date · product · open · purchase · sale · close · stock value.
Area & Pincode
area_name · pincode — the serviceability master.
WorlLineResponse
txn status · amount · bank ref, for every gateway call-back.
Key operations entities
| Entity | Role in the business | Linked to |
|---|---|---|
| Vendor | Supplier master with GST, PAN, FSSAI and bank details for payments | Purchase orders |
| Purchase invoice & lines | Vendor purchases with HSN, GST rate and amount; CGST/SGST totals | Product, OnlineInventory |
| Quotation invoice & lines | Client quotations with line and overall discounts | Client, products |
| StaffCollection | Payments collected in the field with mode, reference and proof | Customer, staff user |
| DailyExpenses | Operating expenses with bill image, per user | Staff user |
| ChannelPartner | Dealer directory organised by location and area | Area, Location |
| RechargeWallet | SMS credit top-ups converted to message points | SMS reports |
Built to grow the network, not just take orders
For a distributor, growth comes from more dealers, more outlets, more bulk buyers and more pincodes served. JMDA made each of these a structured, trackable flow.
Channel-partner network
A three-level hierarchy (Location → Area → Partner) powers a public “find a partner near you” directory with shop name, address, contact and photo. Prospective dealers apply online, and applications go straight to the sales inbox.
B2B & bulk demand
The bulk-order form records company, premium products of interest and preferred service. Product and category enquiries capture intent on products that are out of stock or new.
Market-expansion signal
Every login from a pincode that isn't served yet is stored with the mobile number, giving management a ready list of interested customers when deliveries extend to a new area.
Franchise & factory outlets
An outlet showcase with images (auto-resized), location and map link, managed and ordered from the dashboard.
Engagement automation
| Trigger | Channel | Purpose |
|---|---|---|
| Customer signs up | Email + WhatsApp | Activation link; “New client arrived” alert to the sales team; follow-up nudge |
| OTP request | SMS | Secure login; also counted as a daily active-visitor signal |
| First login | SMS | Welcome message promoting doorstep frozen-meal delivery |
| Payment outcome | SMS | Order number and thanks, or a failure notice with a prompt to retry |
| Campaigns | WhatsApp (Interakt) | Bulk events to the customer base (feedback requests, new range launches such as chicken cold cuts) |
Search & content marketing
Local-intent URLs
Key pages use descriptive, location-rich URLs to target local searches for frozen foods in Chembur, Mumbai.
Editable SEO meta
Marketing edits the title, keywords and description of any category or product from the dashboard without a developer.
Blog CMS
Recipes, product stories and brand news with friendly slugs and banner images sized for speed.
Lead lifecycle
Supplying provisions to vessels
Next to food distribution, Suved supplies provisions to ships calling at Mumbai. Ship supply has its own catalogue, counterparties and paperwork, so JMDA built it as a separate module inside the same platform.
Item master
Product, category, HSN, brand, description, packing, purchase price, sales price and GST.
Customers
Name, address, email, mobile, pincode and GST number for shipping agents and owners.
Vendors
Supplier directory with GST and contact details, plus quick search.
Vendor orders
Order code, vendor, vessel name, order date and supply date.
Order economics on every line
Each vessel order line records both purchase price and sales price along with brand, pack type, weight and quantity. The platform totals both sides for each line and for the order, so the gross profit of each supply is visible when the order is booked.
purchase_total = Σ (purchase_price × qty) # cost to Suved sales_total = Σ (sales_price × qty) # billed to vessel gross_profit = sales_total − purchase_total
Why a separate module?
Ship supply works differently from retail: price lists are negotiated, orders are tied to vessel arrival dates, and invoices go to agents. Keeping it separate keeps both workflows simple, while users, infrastructure and reporting are shared, so Suved runs a second business line at no extra platform cost.
| Capability | Detail |
|---|---|
| Fast item lookup | Search APIs for products and vendors while building an order |
| Margin on every line | Purchase and sales price captured side by side, so pricing is checked before supply |
| GST-ready masters | HSN and GST % on items; GST numbers on customers and vendors |
| Vessel-linked paperwork | Each order carries the vessel name and order and supply dates |
A daily pulse for management
The dashboard home page answers one question every morning: how is the business doing today? It brings data from every module into a single set of live counters and charts.
Orders & revenue
Count and value of successful online orders today.
Active visitors
Unique mobiles requesting OTP today, with frequency.
Page events
Event counts (for example home-page visits) charted by name.
Enquiries
Bulk, product, contact and partner enquiries received today.
SMS sent
Messages sent today and their purpose.
SMS balance
Live wallet credits remaining.
Inventory value
Daily stock statement PDF.
Payments log
Every gateway response for reconciliation.
Reports & exports
| Report | Contents | Format |
|---|---|---|
| Customer invoice | Order lines, charges, total in words, customer address | |
| Online stock statement | Opening, purchase, sale, closing and value for each product today | |
| Quotation | Line-wise MRP, discount, net amount | Print / PDF |
| Vessel supply invoice | Order code, vessel, items, totals | |
| Item master export | Full product master including cost and margin | CSV |
| SMS delivery report | Mobile, message type, status, timestamp | Screen |
| Bulk data | Import/export of any master through the admin | CSV / XLSX |
Data assets ready for advanced analytics
A proven, cost-efficient stack
JMDA chose mature open-source technology that is easy to maintain and cheap to host, so the client spends its budget on the business rather than on licences.
| Layer | Technology |
|---|---|
| Language | Python 3 |
| Framework | Django (MVT), Django Admin with Jet theme |
| Database | PostgreSQL |
| Front end | Server-rendered HTML templates, Bootstrap-style responsive UI, jQuery / AJAX |
| Documents | xhtml2pdf, ReportLab, num2words (amounts in words) |
| Data | pandas, openpyxl, django-import-export |
| Media | Pillow (automatic image resizing) |
| Scheduling | django-crontab |
| Hosting | Ubuntu Linux cloud server |
| Service | Used for |
|---|---|
| Worldline | Online payments (cards, UPI, net-banking), SHA-512 signed |
| SriSai SMS | OTP and transactional SMS, DLT sender ID SSUVED |
| Interakt | WhatsApp user profiles, events and campaigns |
| SMTP email | Activation links, order and enquiry emails, password reset |
| Nominatim | Reverse geocoding of the customer's location |
| Razorpay | Alternate gateway, provisioned |
Engineering highlights
Modular apps
10 Django apps with clear responsibilities; more than 100 schema migrations show the platform growing with the business from 2022 to 2024.
Role-aware routing
One login sends admins and staff to the dashboard and customers to the store; staff see only their own expense records.
Config over code
Service and shipping charges, sequences, SEO and merchandising flags are data-driven and editable by admins.
Performance-minded media
Category, partner, outlet and blog images are resized on upload to set dimensions.
Audit trails
Created and updated timestamps on all records; payment, SMS and event logs.
Document automation
Invoices, quotations, stock statements and vessel invoices generated from HTML templates.
From distributor to digital brand
A new sales channel
A self-service online store that takes orders and payments around the clock without staff involvement.
Operational control
Cost, margin, purchases, stock, quotations, collections and expenses in one system instead of registers.
Structured growth
Partner, franchise, bulk and pincode-demand pipelines that sales can act on every day.
Business outcomes
| Area | Before | With the JMDA platform |
|---|---|---|
| Ordering | Phone and WhatsApp orders taken manually | Online catalogue, cart and checkout with OTP login |
| Payments | Cash or offline transfers, manual reconciliation | Gateway payments with signed verification and a full payment log |
| Invoicing | Handwritten or spreadsheet invoices | Automatic numbering and PDF invoices with amount in words |
| Profitability | Margins estimated | Landed cost and margin % recorded for every SKU |
| Stock | Manual counts | Daily ledger updated from purchases, with a PDF statement |
| Leads | Scattered across calls and chats | Dedicated inboxes for each lead type, counted daily |
| Expansion | Instinct-driven | Demand recorded for each unserved pincode |
Phase 2 roadmap: analytics and AI by JMDA
AI & analytics
- Demand forecasting and reorder points for each SKU from order and stock history
- Recommendations: frequently bought together, and repeat-purchase reminders on WhatsApp
- WhatsApp ordering assistant over the live catalogue and order status
- Expansion analytics: ranking unserved pincodes by demand density
- Lead scoring and automatic routing for bulk and partner enquiries
- Payment-failure insights to recover lost conversions
Platform evolution
- Upgrade to the current Django LTS and Python release
- Security hardening: server-side OTP verification, fine-grained role permissions, secrets kept in a vault
- Real-time stock deduction on online sales and low-stock alerts
- Automated payment reconciliation and order-status webhooks
- Stronger relational links between orders, products and purchases for analytics
- Automated test suite and CI/CD pipeline
Taking your distribution business online?
Talk to JMDA Analytic about a platform built around your business logic, from storefront to stock ledger.
Suved, Suved Distributors and Suved Enterprises are names of the client and are used with reference to this engagement.