CASE DOSSIER · RETAIL AND DISTRIBUTION
A distributor that runs North Company, managed as a single ERP with a voice POS.
Several companies, several warehouses, a counter where every minute counts, and a collections process that never knew what was overdue. We understood it end to end and rebuilt it into a complete ERP with a document pipeline, a POS that takes orders by speaking, and real-time multi-warehouse inventory.
01 · The process before
The problem was not a lack of goods. It was that nobody had a single, real-time picture of the business.
- ✕The counter was slow: every order was typed item by item while the customer waited and the line grew.
- ✕Inventory was handled blind across several warehouses: nobody knew how much was available, how much was reserved, or where.
- ✕Prices depended on the customer type (wholesale, installer, retail) and were calculated by hand, with errors.
- ✕Collections had no aging: what was due in 30 days was indistinguishable from what was over 90 days old.
- ✕Each company in the group lived in its own file; consolidating the business was manual month-end work.
- →A voice POS: the salesperson says "product by quantity" and the line is added on its own, without putting the goods down.
- →Real-time multi-warehouse inventory: available, reserved, minimum, and maximum per warehouse and product.
- →Price lists per customer type with per-SKU overrides: the right price comes up on its own when the customer is selected.
- →Receivables with 0-30 / 31-60 / 61-90 / 90+ aging and partial payments, exportable to Excel.
- →Real multi-company: the admin sees the whole group and switching company reloads the entire ERP.
02 · The optimized flow
A document belt that never breaks: Quote → Order → Dispatch → Invoice.
Each document inherits from the previous one. Stock is reserved at the exact point of the process and receivables are born from the invoice, not from a separate spreadsheet.
Quote
Built with prices from the customer price list. Stock is not touched yet.
Order
On confirmation, the stock becomes reserved and stops being sold to others.
Dispatch
It leaves the warehouse with a shipment; logistics and driver are assigned.
Invoice
Issued with VAT, it feeds receivables and enters the aging view.
03 · The voice POS
"I said: hammer times three" → it was added to the order.
At the counter the salesperson does not put the goods down to type. They say "product by quantity", the voice modal interprets it, and it retries on its own up to 30 times if the microphone cuts out.
Transcript
"hammer times three"
→ Claw hammer 16oz × 3
Web Speech API · auto-restart ≤30 retries
Waiting for the first phrase…
04 · Multi-warehouse inventory
A warehouse × product grid: available, reserved, and minimum, with no guessing.
Stock reserved by pending orders is no longer available to sell. When what is available drops below the minimum, the row lights up.
| SKU | Product | Loc. | Avail. | Resvd. | Min. |
|---|---|---|---|---|---|
| MTL-016 | Claw hammer 16oz | A-12 | 142 | 18 | 40 |
| TOR-050 | 1/2" screw, box of 100 | B-04 | 310 | 60 | 80 |
| SIL-280 | Clear silicone 280ml | C-21 | 88 | 25 | 60 |
| CIN-020 | Black electrical tape 20m | A-07 | 540 | 90 | 150 |
05 · What we built
An ERP the business understands, not just an invoicing system.
Complete ERP
Financial dashboard (sales vs. the previous period, AR/AP, cash, cash flow, aging with sparklines), POS pipeline, inventory, customer CRM, returns with an automatic credit note, warranties, tiered commissions, and reports with a query builder.
Voice POS
A voice order modal built on the Web Speech API that interprets "product by quantity", prices from the customer price list, stock reserved on pending orders, PDF, and an activity log.
Multi-warehouse inventory
A warehouse × product grid with available/reserved/min/max/location, bulk threshold editing, barcode scanning, price lists per customer type with per-SKU overrides, bulk CSV upload, and a multi-image gallery with zoom.
Multi-company and client portal
Multi-tenant where the admin reaches every company; switching company reloads the ERP. A cross-company client portal for checking their account.
Logistics and collections
Drivers with a mobile PIN login, digital signature, incident photos, and GPS. Receivables with aging, partial payments, and bank reconciliation via CSV import.
Shopify sync
Linking SKUs, publishing products, and importing images, plus real-time internal chat and a dropshipping module.
06 · Development scope
The technical decisions that hold up the daily operation.
Document pipeline
Quote → Order → Dispatch → Invoice, with inheritance between documents and stock reserved at the exact point of the process.
Multi-currency VE domain
Official BCV rate + parallel rate, coverage and change, 16% VAT, and customer types mapped to price lists with their discount %.
Two-phase loading
Critical data is cached in localStorage with a 4h TTL; secondary data loads asynchronously in the background so the ERP opens fast.
07 · What changed
Process outcomes: the business runs on data, not on memory.
The counter stopped being a bottleneck: taking an order by voice beats typing it, and the salesperson never puts the goods down.
Stock that did not exist stopped being sold: what is reserved by pending orders no longer shows as available in any warehouse.
Prices come out right on their own: each customer carries their price list and overrides, with no manual recalculation.
Collections became actionable: the aging view shows what to chase first and partial payments are recorded.
The group looks like one business: the admin consolidates every company without assembling the report by hand each month.
The catalog stays synced with Shopify: publishing and maintaining images stopped being double work.
YOUR COUNTER IS NEXT
Does your inventory live in files separate from your billing?
That's exactly what we turn into an ERP the business can understand. Schedule a 30-minute assessment and we'll show you how we'd rebuild it with AI.