incoDynamixRM · the web application
Your whole retail operation,
in a browser.
Till to head office, warehouse floor to wholesale order book, with an AI assistant on every screen that can read your reports and do the work with you. Built on .NET 10 and Blazor, running today in South African footwear and apparel businesses.
What you run in it
One application, the whole operation
No client install. Staff open a browser, sign in, and see only what their role allows.
Selling
Till operation and POS sign-on, cash pickups, expenses and SPIVs, cash-up and banking, day end, lay-bys, quotes, document reprints and barcode labels. Separate permissions for selling, refunding and lay-bye.
Stock & transfers
Bin-level inventory, stock on hand, and product enquiry with a full audit trail per product. Stock takes by sheet or by bin with two-scan counting and mismatch resolution. Transfers from request through packing to receipt, with a warehouse control tower over the lot.
Buying & merchandising
Purchase orders with per-product costing, multi-currency landed cost covering freight, port and demurrage, size-curve distribution to stores and spreadsheet import. Goods receiving with cost variance against the order, eight promotion builders, model stock and supplier scorecards.
Wholesale
A complete order-to-cash line: sales orders, picking, invoicing, shipments, credits and returns. Plus commission schemes and statements, price groups, line sheets, sales ratio and royalty reporting.
Online orders
Order capture, pick management, pick-slip release and order status, with Pargo click-and-collect built in.
Loyalty
A loyalty dashboard with RFM customer segmentation, audience building and a 360-degree member view. QR loyalty cards, a public self-registration page for customers, and SMS messaging with every send logged.
Sophia
An assistant on every screen, that cannot outrank your permissions
Most retail software bolts a chatbot on the side. Sophia is wired into the application itself, and she is deliberately fenced in.
She knows the screen you are on
Sophia carries a written guide for each screen and reads the record in front of you, so "how do I finalise this GRV?" gets an answer about this GRV rather than a generic help article.
She fills in the form
Describe the purchase order you want in plain English and Sophia stages the values on the form for you to check. She never saves anything herself.
She does the work, on your say-so
Twenty-nine tasks across purchase orders, goods receiving and costing, markdowns, promotions, transfers, model stock and loyalty cards. Every one is proposed, never silent.
Read this report for me
Fifty-eight reports carry a one-click interpretation. Sophia reads the figures already on your screen and answers in plain language: what it shows, why it matters, what to do, ranked by the rand value at stake and rated for confidence.
It cannot exceed a manual click
Every action Sophia takes is re-checked against the same permission the manual button requires, then run through the same code. If you could not do it yourself, she cannot do it for you.
Every action is on the record
Who asked, what capability ran, under which permission, on which screen, with a cryptographic hash of the request and the outcome. Anything destructive always asks first, whatever your settings.
It never does your arithmetic
Totals, VAT and margins are calculated by the system, never by the AI. Report interpretations must quote your figures exactly and are forbidden from inventing benchmarks or new numbers.
You bring your own Anthropic key. It is encrypted on your server and never reaches the browser. Set a monthly spend cap per department and the system stops before it exceeds it. Every call is logged with a rand estimate. For questions that range across your whole business rather than one report, that is what QWRI is for.
Reporting
115 reports, and they agree with each other
Sales and performance, inventory and stock health, stock counts, purchasing, transfers, lay-bye, margin and KPIs, audit extracts, and a separate wholesale set.
- GMROI and gross margin audit
- Open-to-Buy and OTB preparation
- Sell-through by store and by product
- Stock ageing, detail and aggregated
- Size trend analysis and ABC analysis
- Non-moving inventory and stock turnover
- Markdown ROI, history and costing
- Year-on-year and comparative KPI
- Supplier scorecards: fill rate, lead time, on-time
- Every report exports to Excel and PDF, branded
- 75 reports can be scheduled and emailed
- Branch managers see only their own store
Scheduled delivery records an audit row for every send, so you can see exactly which reports went out and when. And the test suite checks that gross profit, VAT and sales totals agree between different reports before a release ships.
When the line goes down
The shop keeps trading. Head office is never in the path of a sale.
Every store runs its own database on site. Tills read and write locally, so a sale does not wait on a link to Germiston, and a dead line is an inconvenience rather than a closed shop.
What still works
Sales, refunds, lay-byes and lay-bye payments, stock receiving, inter-store transfers, cash-up, banking and day end — all against the store's own database. Receipt printing and the cash drawer run straight through the Windows print spooler with no network call at all.
Card payments carry on
The till talks to the card machine over a serial cable or a socket on the store's own network, and the tender is written into the same local transaction as the sale. If the terminal itself cannot be reached, the till offers to process the payment manually so the cashier falls back to a standalone machine rather than losing the sale.
Two stores cannot clash
Document numbers are allocated locally under a database lock and carry the store's own code as a prefix. Two branches trading blind through the same outage cannot issue the same invoice number.
- Stores always dial out to head office. No branch needs an inbound firewall hole or a static IP
- Nothing queued is lost. Work waits in the store's own outbox and goes out on the next connection — and a transport failure never counts as a retry, so a two-day outage costs nothing but time
- Status updates collapse to the latest value while every transaction is kept individually
- The sync service detects gaps in its own sequence and re-requests the missing file rather than applying data out of order
- A half-transferred file is rejected on its trailer check; a timed-out import is re-queued rather than marked failed
- When head office is unreachable the store backs off on a 1, 2, 5 then 15-minute ladder instead of hammering a dead line, and reconnects the moment one call succeeds
- Head-office instructions apply in strict order, halting rather than skipping if one cannot be applied — and the halt clears itself once the message is fixed
- Store secrets are encrypted at rest on the store machine
Store to head office
Stores run an authenticated API channel to head office carrying configuration, receipts, health and trading data, so head office sees the estate in near real time. It runs alongside the established sync, so a store crosses over while it keeps trading.
Updates
Software that has to earn its place
Pushing a bad release to a shop floor on a Saturday is the nightmare. The update path is built assuming that will eventually happen.
- Releases go to a pilot ring first, not the fleet
- Packages are checked against a published hash twice before anything is swapped
- A new version must prove itself inside a 10-minute health gate, with live heartbeats and a successful head-office call
- Three crashes in ten minutes and it rolls back automatically
- A version that fails is blacklisted so it cannot be offered again
- A store that is alive but cannot reach head office extends its health gate rather than rolling back — a dead line is not a bad update
- Downloads resume in chunks and survive a power cut, so a store on a poor line accumulates a large update across attempts instead of restarting it each time
- Schema changes travel the same ordered channel, hash-checked, applied in one transaction that rolls back completely on any error, and journaled so the same change cannot apply twice
- A supervisor service checks the agent every five seconds and restarts it if it dies
The rollback logic is a pure function with 38 automated tests behind it, twelve of them pinning every branch of the update-and-rollback matrix. The resumable-download tests run against a server that deliberately severs connections mid-transfer. Rollback and schema-migration drills have been run on live production stores, not only in test.
From head office
You can see the whole estate on one screen
A fleet view refreshes every two minutes and turns coral the moment a store has been quiet for longer than your threshold, six hours by default and adjustable on the screen. Per store it shows last transaction, last poll, sync backlog, POS version, sync version and the remote-support ID, so a support call starts with the answer already on the screen.
For stores on the newer channel you also see live sync lag, pending and failed message counts, agent version, and a halted badge if an inbound stream has stopped on a bad message.
On the floor
A handheld built for pickers, not for phones
An Android application covering receiving, transfer picking, sales picking, online picking, GRV receiving, bin moves, stock takes, write-offs and stock enquiry. It drives the hardware scanner on Urovo and Sunmi rugged devices, with different sounds and vibrations for different outcomes so staff can work with their eyes on the stock rather than the screen.
Duplicate protection on the server means a retry can never double-post the same carton, count or pick. Stock takes use a two-scan discipline: an independent verify pass, an automatic difference report, and a forced third recount of only the disputed lines before anything posts. Every mismatch becomes a structured supervisor exception on the control tower rather than a popup nobody sees.
Governance
The parts your auditor will ask about
- 241 permissions, managed by you through the interface
- Roles configured per business, not fixed by us
- Two-factor authentication with authenticator-app enrolment and single-use recovery codes
- API tokens with revocation, expiry and per-store binding
- Audit trails across user actions, account changes, product and store master data, report runs, customer messaging and every AI action
- A lost connection cannot create a duplicate transaction
- Your data lives in its own database, on its own application instance
- Your logo appears in the application and on every document it generates
A build gate fails the release if any screen or endpoint is missing its permission definition, so a new feature cannot ship silently open.
See it on your own numbers
The fastest way to judge this is to watch it run your awkward week, not our demo data.