All case studies

    Custom Software & Platforms

    Inventory Management System

    How we replaced five Excel sheets and a wall of manual work with a real-time inventory engine — wired directly to Shopify, built to handle 300–400 concurrent orders, and powered by a three-tier deduction logic that knows exactly where every piece of stock should come from.

    3-tier
    Deduction engine
    300–400
    Orders managed
    4
    Role types
    0
    Manual spreadsheets
    Live & running — processing Shopify orders in real time for a fashion store

    The problem

    5
    Excel sheets
    managing a live
    fashion store's
    entire inventory

    A fashion store. One spreadsheet for everything.

    The client runs a single fashion store on Shopify selling shirts, pants, and shorts. Their inventory had three distinct stock layers — returned goods, ready-made stock, and raw fabric — and they were tracking all of it across five separate Excel sheets. One sheet for daily orders, one for ladies' tops, one for data tracking, one for fabrics, and one for returns.

    As long as order volumes were manageable, the system held. But when orders started scaling, the cracks showed fast. Someone had to manually check each incoming order, figure out which stock source to pull from, update the relevant sheet, and record the deduction. Exchanges made it worse — if a customer wanted a different item, staff had to manually track the price difference and chase the customer for payment.

    The core problem: there was no connection between Shopify and the inventory. Every time an order came in, a human had to bridge the gap — opening the right spreadsheet, finding the right stock layer, doing the deduction by hand. When concurrent orders spiked, the process broke down entirely.

    The heart of the system

    The deduction engine.

    When a Shopify order fires, the engine doesn't ask anyone what to do. It works through three stock sources in priority order, cascades automatically if a layer runs out, and handles partial fulfillment without human input.

    01

    Check return stock first

    The engine looks for the exact SKU in returned goods. Returns are prioritized because they represent already-manufactured stock that needs to move. If the item is there, it gets deducted and the order is fulfilled.

    Highest priority
    02

    Fall through to ready stock

    If returns don't have the SKU, the engine checks the ready-made stock — finished garments available to ship immediately. Found it? Deducted and fulfilled. This is the most common fulfillment path for standard orders.

    Second priority
    03

    Deduct from raw fabric

    If ready stock is also empty, the engine looks up the SKU-to-fabric mapping — for example, a black shirt maps to fabric code 11FB with a consumption of 1.7 metres. The exact fabric quantity is deducted and a production slip is generated for the workshop.

    Production triggered
    !

    Alert if all layers are empty

    If all three layers have insufficient stock, the store owner receives an immediate notification. No silent failures — every unfulfillable order surfaces immediately.

    Owner notified

    Live example — Black shirt order

    →
    Shopify webhook fires
    New order received. SKU matched: black shirt, size M. Engine starts.
    ✗
    Return stock: not found
    Black shirt M not available in returns. Cascade to next layer.
    ✗
    Ready stock: not found
    Black shirt M not in finished inventory. Cascade to fabric.
    ✓
    Fabric deducted: 1.7m from 11FB
    SKU→fabric mapping found. 1.7 metres deducted from black fabric stock. Production slip generated automatically.
    ✓
    Order fulfilled
    Production slip printed. Order status updated. No human decision made.

    Partial fulfillment

    7-item order. 3 ready. 4 not. Engine handles it.

    If an order contains multiple items and only some can be fulfilled, the system doesn't reject the whole order. It fulfils what it can, flags the shortfall items, and notifies the owner — partial production slips are generated for whatever goes to fabric.

    Concurrent order processing

    300–400 orders. No race conditions.

    The production engine uses Redis to manage concurrent order processing. When multiple orders hit simultaneously, Redis ensures the deduction queue runs correctly — no two orders can deduct from the same stock at the same time, preventing overselling and inventory mismatches at scale.

    What's built in

    Every post-order process. One system.

    From the moment an order lands on Shopify to the moment it ships, every step is managed from inside the platform.

    Order management

    All incoming Shopify orders visible in one dashboard. Status tracked from receipt through production and dispatch — with no manual data entry required.

    Production slip printing

    When an order routes to fabric, the system automatically generates and prints a production slip — item, SKU, fabric code, quantity, and all relevant details.

    Exchange management

    When a customer exchanges an item, the system calculates the price difference and automatically sends a Razorpay payment link to the customer for the balance owed.

    Returns processing

    Returned items are logged into the return stock layer and become immediately available for future order fulfillment — the return manager role handles this with a dedicated view.

    Live dashboard

    A single dashboard showing real-time stock levels across all three layers, order status, pending production, and exchange queue — replacing the five Excel sheets entirely.

    Custom order placement

    Operators can place custom orders directly from inside the inventory system — without going through Shopify's front end — triggering the full deduction and production flow automatically.

    Access control

    Four roles. Everyone sees exactly what they need.

    Every user type has a purpose-built view — no one sees more than they need, and no one can touch what they shouldn't.

    Admin

    Main admin

    • ›Full system access
    • ›All reports & dashboard
    • ›User management
    • ›Stock configuration
    • ›SKU–fabric mapping
    • ›Custom order placement
    Ops

    Ops manager

    • ›Order queue management
    • ›Production slip printing
    • ›Exchange processing
    • ›Razorpay link dispatch
    • ›Partial fulfillment review
    • ›Order status updates
    Stock

    Stock manager

    • ›Ready stock management
    • ›Fabric stock management
    • ›Deduction log review
    • ›Low stock alerts
    • ›Product image sync
    • ›Inventory reporting
    Returns

    Return manager

    • ›Returns intake & logging
    • ›Return stock visibility
    • ›Exchange initiation
    • ›Condition assessment
    • ›Return status tracking

    At scale

    Built to handle load.

    The numbers the system manages in normal operation — without a spreadsheet in sight.

    0–400

    orders managed concurrently using Redis-backed queue processing

    0

    stock layers — returns, ready stock, and raw fabric — in one unified engine

    0

    role types with purpose-built views and access controls

    0ms

    human decisions required to route an order from Shopify to production

    Integrations

    Four systems. One connected operation.

    The system doesn't live in isolation — it's wired to every external tool the store depends on.

    Shopify webhooks

    Two-way integration. New orders trigger the deduction engine instantly via webhook. Product updates — including images, SKUs, and variants — sync into the inventory system in real time, keeping the platform always current with the store.

    Razorpay

    When a customer exchanges a product and owes a price difference, the system calculates the delta and dispatches a Razorpay payment link automatically — no manual invoice, no chasing payment over WhatsApp.

    Redis — concurrent order queue

    Redis underpins the production engine's ability to handle 300–400 concurrent orders without race conditions. The queue ensures deductions are processed sequentially per SKU, preventing two orders from claiming the same stock simultaneously.

    Shopify Flow (ShopFlow)

    Integrated for streamlined checkout handling and one-time payment flows, extending the native Shopify checkout with custom logic required for the store's specific order types and exchange scenarios.

    Tech stack

    Built with.

    The full stack powering the deduction engine, real-time integrations, concurrent order processing, and role-based access.

    Node.jsRedisPostgreSQLShopify WebhooksShopify FlowRazorpayRole-based AuthProduction EngineSKU–Fabric Mapping

    Before. After.

    Before

    • 5 separate Excel sheets for orders, stock, fabric, returns, data
    • Manual deduction from the right sheet for every order
    • No connection between Shopify and inventory — human bridges the gap
    • Exchange price differences tracked manually, payment chased by hand
    • Concurrent orders caused errors, double-deductions, overselling
    • No self-service for returns, stock, or ops staff
    • Production slips written or typed manually

    After

    • Single platform managing all stock layers, orders, and production
    • Three-tier deduction engine runs automatically on every order
    • Shopify webhook triggers the full workflow — zero manual bridging
    • Razorpay payment links auto-generated for every exchange
    • Redis queue handles 300–400 concurrent orders with no race conditions
    • Four purpose-built role views — each person sees exactly their work
    • Production slips printed automatically when fabric is triggered

    Start a project

    Ready to replace your spreadsheets?

    Whether it's inventory, operations, or any back-office process held together by Excel — we build the system that actually fits how your business works.

    Get in touch →