Skip to content
Case study · Frozen food distribution

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.

2022–24Chembur · Mumbai
10functional application modules
70+business data models
160+routes, pages and APIs · 6 third-party integrations
01 Executive summary

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.
02 The client & the brief

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.

B2C

Home customers

Families ordering frozen cold cuts, snacks and meals for doorstep delivery in serviceable pincodes.

B2B

Bulk & trade buyers

Hotels, caterers and retailers placing large orders and asking for quotations and premium ranges.

Network

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

ObjectiveWhat success looks like
Sell onlineCustomers find products, log in without passwords, and pay online in a few taps on mobile.
Control serviceabilityDelivery availability is shown by pincode, and demand from unserved pincodes is recorded for expansion planning.
Digitise operationsProducts, purchasing, stock, quotations, collections and expenses are managed in one secure dashboard.
Grow the networkPartner, franchise and bulk-order enquiries are captured and listed for the sales team.
Stay in touchAutomatic SMS, WhatsApp and email at key moments, with SMS costs controlled through a credit wallet.
Measure dailyManagement sees today's orders, revenue, visitors, enquiries and messaging on one screen.
03 Solution architecture

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

LayerWhat sits there
ChannelsMobile web store · desktop web store · admin / staff dashboard
Experience100+ responsive templates · AJAX cart & search · OTP login modal · PDF invoices · dashboard charts · CSV / Excel import-export
Application modulespages (storefront) · offline_pages (back-office) · user (identity) · category_app · product_app (cart & orders) · inventory_app · shipping_app · galley_app · slider_app · contact_app
DataPostgreSQL · media storage (product, blog, outlet images) · scheduled jobs (django-crontab)
IntegrationsWorldline 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.

04 Customer journey

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.

  1. 1Discover

    Home page with best sellers, today's specials, categories, sliders and outlets.

  2. 2OTP Login

    Mobile number and pincode, then a 4-digit OTP by SMS. New users are registered automatically.

  3. 3Serviceability

    Pincode checked against the delivery master; shows “Delivery Available” or “Not Available”.

  4. 4Cart

    Add products, change quantities live, see service charge and total update instantly.

  5. 5Checkout

    Address check. If the profile is incomplete, the customer is taken to the address form.

  6. 6Pay

    Signed request sent to Worldline (cards, UPI, net-banking) and a verified response comes back.

  7. 7Order

    Order number created, cart turned into an invoice, and an SMS confirmation sent.

  8. 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.

MomentChannel
OTP verificationSMS (sender ID SSUVED)
Welcome on first loginSMS
Account activation linkEmail + WhatsApp
New client alert to sales teamWhatsApp
Payment success / failureSMS
Feedback & product campaignsWhatsApp (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
05 Business logic: commerce

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)
CodeMeaningPlatform action
0300SuccessCreate order, convert cart, SMS confirmation
0398InitiatedLog; show status page
0396AwaitedLog; show status page
0399FailureLog; failure SMS with retry prompt
0392AbortedLog; 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)

1 · VerifyRecompute and match the response hash.
2 · IdentifyFind the customer from the mobile in the gateway metadata.
3 · NumberGenerate the next SUV order number.
4 · ConvertCart lines become order lines; totals go to the invoice header.
5 · NotifyClear the cart, log the payment, send SMS, deduct one SMS credit.
06 Business logic: operations

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
Illustration: purchase ₹200 + 5% GST = ₹210 landed cost. Selling at ₹273 gives a margin of 30%.

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

DocumentFormatCreated inFeeds
Online order / invoiceSUV-808-MMYYNNNStorefront payment callbackMy Orders, PDF invoice, dashboard revenue
Purchase vendor orderPVO-00NBack-office purchase entryInventory ledger, CGST/SGST totals
QuotationQuotation-00NBack-office quotation builderQuotation history, printable quotation
Vessel supply orderOrder code + vesselShip-supply modulePDF 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.

07 Storefront modules

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.

ModuleCapabilities
Home & merchandisingHero sliders, best sellers, today's specials, featured categories, gallery highlights, franchise and partner locations; managed by admins and ordered by sequence.
CatalogueCategory 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.
SearchInstant product search API and category-filtered product API (JSON) with “already in cart” state for each product.
OTP authenticationMobile and pincode capture, SMS OTP, automatic registration, welcome message; email-based login and password reset for staff and admins.
ServiceabilityPincode-to-area master; delivery availability shown in the cart and catalogue; waitlist for unserved pincodes.
CartAdd, update and remove through AJAX; live repricing of line totals, service charge, shipping and final amount; cart count on every page.
Address bookBilling and shipping address with landmark, street, city, state and pincode; inline edit of email and address.
Checkout & paymentProfile check, Worldline hosted payment with signed request and verified response, success and failure pages.
My Orders & invoicesOrder history; GST-style PDF invoice with amount in words; download or view in the browser.
Lead capture formsContact us, product enquiry, category enquiry, bulk order, channel-partner application, franchise outlet locator.
Content & trustAbout, our manufacturers, certificates, blogs with individual posts, and policy pages (terms, privacy, returns, shipping, disclaimer).
SEO toolkitMeta 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.
08 Back-office modules

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.

Masters

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
Transactions

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
Online sales

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
Growth & CRM

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
Content & SEO

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
Users & communication

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
Admins and staff are sent to the dashboard on login; customers go to the storefront. The Django admin (Jet theme) with import/export is available for bulk data work.

Who sees what

RoleLands onTypical work
AdminOperations dashboardMasters, pricing and margin, users, SMS wallet, SEO and content, every report and inbox
StaffOperations dashboardPurchases, quotations, collections, expenses (own records), order processing and tracking
CustomerOnline storeBrowse, cart, checkout, address book, order history and invoices
09 Data model

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

EntityRole in the businessLinked to
VendorSupplier master with GST, PAN, FSSAI and bank details for paymentsPurchase orders
Purchase invoice & linesVendor purchases with HSN, GST rate and amount; CGST/SGST totalsProduct, OnlineInventory
Quotation invoice & linesClient quotations with line and overall discountsClient, products
StaffCollectionPayments collected in the field with mode, reference and proofCustomer, staff user
DailyExpensesOperating expenses with bill image, per userStaff user
ChannelPartnerDealer directory organised by location and areaArea, Location
RechargeWalletSMS credit top-ups converted to message pointsSMS reports
10 Growth & engagement engine

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

TriggerChannelPurpose
Customer signs upEmail + WhatsAppActivation link; “New client arrived” alert to the sales team; follow-up nudge
OTP requestSMSSecure login; also counted as a daily active-visitor signal
First loginSMSWelcome message promoting doorstep frozen-meal delivery
Payment outcomeSMSOrder number and thanks, or a failure notice with a prompt to retry
CampaignsWhatsApp (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

1 · CaptureWeb form, OTP login or enquiry API stores the lead with a timestamp.
2 · AlertCounted on today's dashboard; new-client WhatsApp alert to sales.
3 · ReviewA dedicated inbox for each lead type in the back-office.
4 · ConvertQuotation, partner listing, outlet or new delivery pincode.
11 Ship-supply module

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.

1 · EnquiryVessel requirement received from agent.
2 · Build orderPick items from the master; set vendor and vessel.
3 · PriceCost and sale price per line; totals calculated automatically.
4 · InvoicePDF invoice generated for the order code.
5 · HistoryOrder history and export for accounts.
CapabilityDetail
Fast item lookupSearch APIs for products and vendors while building an order
Margin on every linePurchase and sales price captured side by side, so pricing is checked before supply
GST-ready mastersHSN and GST % on items; GST numbers on customers and vendors
Vessel-linked paperworkEach order carries the vessel name and order and supply dates
12 Analytics & reporting

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.

Sales

Orders & revenue

Count and value of successful online orders today.

Traffic

Active visitors

Unique mobiles requesting OTP today, with frequency.

Behaviour

Page events

Event counts (for example home-page visits) charted by name.

Leads

Enquiries

Bulk, product, contact and partner enquiries received today.

Comms

SMS sent

Messages sent today and their purpose.

Cost

SMS balance

Live wallet credits remaining.

Stock

Inventory value

Daily stock statement PDF.

Finance

Payments log

Every gateway response for reconciliation.

Reports & exports

ReportContentsFormat
Customer invoiceOrder lines, charges, total in words, customer addressPDF
Online stock statementOpening, purchase, sale, closing and value for each product todayPDF
QuotationLine-wise MRP, discount, net amountPrint / PDF
Vessel supply invoiceOrder code, vessel, items, totalsPDF
Item master exportFull product master including cost and marginCSV
SMS delivery reportMobile, message type, status, timestampScreen
Bulk dataImport/export of any master through the adminCSV / XLSX

Data assets ready for advanced analytics

Order headers & linesCart activity (abandonment)Unserved-pincode demandLead inboxesPayment outcomesCost, GST & marginOTP / visitor logsPurchase historyPage eventsDaily stock ledgerMessaging logs
13 Technology & integrations

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.

LayerTechnology
LanguagePython 3
FrameworkDjango (MVT), Django Admin with Jet theme
DatabasePostgreSQL
Front endServer-rendered HTML templates, Bootstrap-style responsive UI, jQuery / AJAX
Documentsxhtml2pdf, ReportLab, num2words (amounts in words)
Datapandas, openpyxl, django-import-export
MediaPillow (automatic image resizing)
Schedulingdjango-crontab
HostingUbuntu Linux cloud server
ServiceUsed for
WorldlineOnline payments (cards, UPI, net-banking), SHA-512 signed
SriSai SMSOTP and transactional SMS, DLT sender ID SSUVED
InteraktWhatsApp user profiles, events and campaigns
SMTP emailActivation links, order and enquiry emails, password reset
NominatimReverse geocoding of the customer's location
RazorpayAlternate 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.

14 Value delivered & roadmap

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

AreaBeforeWith the JMDA platform
OrderingPhone and WhatsApp orders taken manuallyOnline catalogue, cart and checkout with OTP login
PaymentsCash or offline transfers, manual reconciliationGateway payments with signed verification and a full payment log
InvoicingHandwritten or spreadsheet invoicesAutomatic numbering and PDF invoices with amount in words
ProfitabilityMargins estimatedLanded cost and margin % recorded for every SKU
StockManual countsDaily ledger updated from purchases, with a PDF statement
LeadsScattered across calls and chatsDedicated inboxes for each lead type, counted daily
ExpansionInstinct-drivenDemand 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
Free consultation

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.

Call WhatsApp Get Quote