Skip to content

It proposes. You approve. Then Python does the work.

The AI operator reaches your books through 51 tools filtered against your own permissions before the model ever sees them. It writes nothing itself — it hands you a typed proposal with the effect already computed, and 26 Python executors carry it out once you approve.

The model never writes a row

Everything the AI operator can change is a typed proposal. Python carries it out through the same code the screens use — the model only asks.

51 tools, filtered by your permissions first
Before the model is shown a single tool, the list is filtered against the signed-in user's own permissions out of 157. A tool with no policy entry is dropped rather than allowed, so the operator running for a cashier cannot reach what the cashier cannot reach.
26 executors, written by hand
An approved proposal runs through one of 26 Python executors calling the same serializers the screens call. Same validation, same audit trail, same double-entry — there is no second path into your data.
The approval card shows the real effect
Before the card reaches you, the actual executor runs inside a transaction that is then rolled back. The figures you read are what really happened in that throwaway run, not the model describing what it intends to do.

What an approval card actually shows

The low-stock run sweeps every 30 minutes and raised this one. The figures on it come from running the real executor inside a transaction that was then rolled back — nothing below has been written.

Proposal · awaiting approval

Order 3 products from Zafar Textile Traders

Raised by the half-hourly low-stock run at 14:30 on 12 Aug 2026. 3 products are below their reorder point with 7 days of supplier lead time to cover.

Cotton lawn, 4.5mFAB-1180 · 6 on hand · order 54
PKR 25,920
Poly-viscose blendFAB-2245 · 2 on hand · order 40
PKR 24,400
Metal buttons, 12 mmACC-0310 · 0 on hand · order 25
PKR 5,500
Previewed effect
Draft purchase order
PO-2418
Lines / units on order
3 / 119
Order value
PKR 55,820
Stock moved
None until delivery
Expires in 15 minutes
DiscardApprove

On approval one of 26 Python executors writes the order through the same code the purchasing screen uses. The model does not write the row.

Sample data · as of 12 Aug 2026

What approving actually does

Approval is the only moment anything is written, and it is fenced on both sides.

Cards expire after 15 minutes
A proposal you leave open goes stale on purpose. After 15 minutes the card can no longer be approved, because the stock counts and balances it was computed against have moved on.
Money and stock actions ask for your password again
13 of the write actions carry a password category — ledger entries, stock, orders and billing, and customer or supplier records. Approving one of those makes the approver re-type their password at the moment of approval, so a screen someone left signed in is not enough.
An approved action lands like a typed one
140 operations are idempotent, so a double-tap on Approve cannot write the same bill twice, and the 5-minute undo covers 45 record types if you change your mind. Money entries are reversed, never deleted.

5 routines that run on a schedule

Nobody has to ask. 5 of the 9 workflows run every half hour, day and night, and the other 4 launch on demand. Every run is deduped against any open run of itself, so the same problem is never raised twice.

Low-stock replenishment, every 30 minutes
Sweeps every product that has fallen below its reorder point, groups them by supplier, factors in 7 days of lead time and 3 days of safety stock, and leaves a draft purchase order waiting for you.
Supplier-order matching, at :10 and :40
Matches the delivery against the purchase order and the supplier bill, line by line, with a PKR 0.01 price tolerance. Anything outside that is proposed to you rather than posted.
Overdue supplier-order follow-up, at :15 and :45
Lists every supplier order still pending past its expected delivery date, worst first, with the open quantity attached. The follow-up note is drafted onto the order, and anything three days late or worse is proposed as urgent.
Close-short review, at :20 and :50
A part-delivered order that will never be filled sits open forever. This pass finds orders with stock received and quantity still outstanding, and proposes closing the remainder short, line by line.
Shift-variance review, at :25 and :55
When a cashier's counted drawer misses the expected cash by more than PKR 100, the shift routes to manager review. This pass picks up every shift waiting on that review, one run per shift, so a busy Saturday does not collapse into a single card.

What to order and what to clear

Forecasting runs on your own sales history — the same engine behind the inventory screens, surfaced as proposals you can approve.

Demand forecasts at 30, 60 and 90 days
Forecasts run on your sales history with seasonal adjustment and return a confidence interval, not a single guess — a range you can order against.
Restock quantities you can approve or edit
Suggested order quantities ranked by urgency, with supplier lead time already in the arithmetic. Approve the proposal and the draft purchase order exists; edit the line and it recomputes before it is written.
Dead stock with the cost attached
Days since last sale per product, and the capital sitting in it. Past 180 days with more than PKR 10,000 tied up, it is flagged critical — so clearance starts from a number, not a hunch.

Where your data goes

The AI operator queries your tenant and nothing else, and it is honest about what it cannot do yet.

Your tenant, and no further
Every tool call runs scoped to your own tenant's data. Nothing you enter is used to train a model, and nothing crosses between tenants.
English today
The operator runs in English now. Additional languages are in development, and this page will list them when they work.

Approve the first one yourself.

5 routines run every half hour and leave proposals with the effect already computed. Nothing is written until you say so.

14 days free, no card.