Short write‑ups of problems we hit running a real commerce operation and what we changed in the code because of them. No product announcements; just the reasoning.
We built an internal messenger into the ERP instead of sending the warehouse to a third-party app. Why it had to be separate from customer chat, why the first users were pickers on tablets, transparent translation between languages, chats that start from an order, and the rule that staff chat is work — so HR may read it.
Coming soon in the manufacture module — a production reward scheme that pays people by the hour at a band earned by their pace, never below the legal wage, with targets derived so that faster work costs the business the same per unit. Why we did not build piecework, how the spreadsheet became rows with dates, and the live ladder on the shop‑floor screen.
One warehouse wanted a fingerprint reader, another wanted to scan a QR with their own phone, the office wanted a PIN on a tablet, and a visiting colleague wanted to clock in wherever they happened to be. How the clocking system grew eight machine types by listening to managers, and the two quiet rules — order the timestamps, find the right employment — that keep the timesheets honest underneath all of them.
Staff access in aiku is granted by job position — "dispatch clerk in the Spanish warehouse", "customer‑service supervisor for the UK shop" — not by ticking permissions. Positions expand to roles, roles to permissions, all scoped to the group, organisation, shop or warehouse they name. Why we chose that, how a permission is checked in the same place for the UI, the API and the MCP server, the "team id" that makes it all silently false if forgotten, and the things we refuse to do with an admin flag.