Home/Work/CS-07
Illustrative scenario · Distribution

Every balance
has a story.

The monthly count took three days and still did not explain the write-offs. We replaced typed balances with a movement ledger, scanning on an offline-first app and blind counts with approval thresholds.

Sector
Distribution
Capability
Data IQ
Timeline
12 weeks, warehouse by warehouse
Status
Illustrative

This is a composite scenario built from how we deliver this kind of work. The client is fictional and the figures are targets, not measured results. We will replace it with a named engagement when a client agrees to be quoted.

The client

A consumer electronics distributor with three warehouses, eleven delivery vans and about 9,000 SKUs across Bangladesh

The problem
  1. System and shelf disagreed every month. The count took three days across three warehouses, vans carried stock the system thought was in the warehouse, and unexplained variance ran at about 2.4 percent of stock value.
  2. Balances were typed into the system by hand, so a wrong number could be overwritten without a trace. Nobody could say which movement had caused a difference.
Approach

How we approached it.

  1. A ledger, not a balance

    Every receipt, issue, transfer, van load and return became an event with an actor and a time. The balance is a sum, never a typed number.

  2. Scan, do not type

    An offline-first Android app with barcode and QR scanning for warehouse staff and van drivers, syncing when the network returns.

  3. Blind cycle counts

    Counters do not see the system figure. A variance above the threshold creates an adjustment event that waits for a supervisor.

  4. Vans as locations

    Each van is a stock location. Loading and delivery are transfers, so van stock is always visible.

  5. Alerts and reorder

    Low-stock alerts per warehouse and a reorder list from sales velocity.

See it take shape

Try it yourself.

A simplified illustration with made-up data. It plays once when it scrolls into view, and you can pause it or step through.

Ledger reconcileIllustrative
37unexplained differences
10 SKUs shown. The counter covers the whole sheet.
SKUDistributor sheetERPResult
SKU-1041120 pcs120 pcswaiting
SKU-104212 cartons144 pcswaiting
SKU-110760 pcs48 pcswaiting
SKU-1180300 pcs300 pcswaiting
SKU-12338 dozen96 pcswaiting
SKU-126075 pcs75 pcswaiting
SKU-131840 pcs25 pcswaiting
SKU-1342210 pcs210 pcswaiting
SKU-140552 pcs55 pcswaiting
SKU-145690 pcs90 pcswaiting

Step 1 / 7 Two lists that should agree: the distributor sheet and the ERP. 37 differences, none explained.

Watch the distributor sheet and the ERP pair up, and the unexplained differences fall from 37 to 3.
Scope

What we built.

  • Movement ledger with derived balances and full history
  • Offline-first scanning app for warehouses and vans
  • Blind cycle counts with approval thresholds
  • Variance and write-off reports that link to the movements behind them
  • Low-stock alerts and reorder suggestions
  • Integration with the accounting system
Outcomes

Outcomes (targets).

These are the results we would aim for. They are not measured results from a named client.

  • Target
    3 days to 6 hours
    monthly count
    three warehouses
  • Target
    2.4% to 0.3%
    unexplained variance by value
    after two cycles
  • Target
    100%
    adjustments with a named approver
    none without a reason
  • Target
    11 / 11
    vans tracked as stock locations
    load and delivery as transfers
Delivery

Timeline and stack.

Timeline

12 weeks, warehouse by warehouse

Stack
Kotlin (Android)offline syncPostgreSQLPythonaccounting integration
Lessons

What we learned.

  • A typed balance has no history. A ledger always does.
  • Offline-first is not optional in a warehouse or a van.
  • Thresholds and approvals turn counting from an argument into a record.
Related offering

How we would deliver it.

Start a project

Want this
for your business?

Message an engineer on WhatsApp or send a brief. We agree scope and price before work begins and build in small working steps you can test.