3 min read
From generative AI to AI-native systems
What changes when a language model has to work with trusted data, permissions, existing applications, and a record of what happened.
Pending client review. This article is a draft for approval before it is treated as final.
4 min read
Retail software is often designed as if the shop were a browser tab with a reliable connection. Counters are not like that. A card machine, a barcode scanner, and a queue of people do not pause because a back-office API timed out. Offline-first means the sale is recorded on the device first, and the network is a convenience for sharing that record, not a requirement for taking it.
During a shift, the till needs a local copy of the catalogue, the prices it is allowed to charge, and the stock it believes it has. It also needs a local log of every sale, void, and return. That log is the source of truth for the shift. The server’s copy is a replica that catches up.
This is the opposite of a typical web app, where the server is the only place a write is real. If you keep that model and add a cache, you will still lose the sale when the cache cannot refresh. Offline-first turns the cache into a store with rules, not a temporary hint.
When the connection returns, the device sends its log and receives what other branches have done. Two tills can sell the last unit of the same item. The software has to decide what that means. Common choices are: accept both sales and let stock go negative so a person can reorder, or block the second sale if the device had heard about the first. Neither choice is free. Negative stock is honest about what left the building. A hard block is kinder to the count and ruder to the customer in front of you.
Write the rule down before you build it. Include who is notified, how a supervisor corrects a duplicate, and how a purchase receipt updates the count the tills are using. If the rule only exists in code, the next branch will invent a different one.
A product barcode can be copied to every device and updated when it changes. A staff PIN should not live in a spreadsheet on the shop floor, but the device does need to know who is allowed to discount while it is offline. That usually means a signed list of roles, with an expiry, stored on the device and refreshed when it can.
Payments are stricter. If a card is authorised by a network you do not control, you cannot invent an approval. The offline design has to say what the cashier does: take another tender, record an order to complete later, or refuse the sale. Cash and house accounts can be local. Card acquiring usually cannot. Pretending otherwise creates a reconciliation problem that finance will find at month end.
One branch is a pilot. The tests that matter are dull:
If those paths are not tested, you do not have offline-first software. You have a till that happens to have a local database.
Teams get lost when offline-first becomes an excuse to sync every table in the business. Start with the catalogue, the shift log, and stock movements. Leave HR, marketing, and long reports on the server. A device does not need a year of history to sell a shirt this afternoon.
The point is narrow: the queue keeps moving, and the books can be explained the next morning. The network will fail on a busy day whether the diagram allowed for it or not.
3 min read
What changes when a language model has to work with trusted data, permissions, existing applications, and a record of what happened.
3 min read
How to let an agent do useful work while the platform, not the model, owns authorization, state, and the evidence of what ran.
2 min read
The execution record an operator needs when a workflow spans models, tools, policies, and the business system that committed the change.