Nothing leaked when we attacked it
We used an anonymous key from outside to read the tables behind every live design — 653 tables. Nothing came back that should have been private.
Internal work never wins the sprint, so it stays in a spreadsheet and a group chat. Describe what the team does, get a screen with logins and roles, and stop asking for a slot.
Permissions are decided on the server. Anything a role cannot do is refused, not just hidden.
Everyone agrees the leave requests should not live in a chat thread. It still loses to customer-facing work, every quarter, correctly. So the team keeps a spreadsheet, someone maintains it in their own time, and it breaks when they are away. The cost of building this properly used to be a sprint. Now it is an evening, which changes the answer.
The boring parts — logins, permissions, an audit of who did what — come with it.
"Staff file an expense, a manager approves it, finance exports the month." The tables and screens follow from that sentence.
Up to six roles. Filing, approving, and reading can be three different people, and the server enforces it.
They sign in with an email and password. Nine checks run before it goes out, and a serious finding blocks the publish.
Each one has a live demo. Starting from one costs no credits.
What is in stock, what is on order, what needs reordering — without a shared sheet.
Requests, approvals, and the remaining balance in one screen instead of a chat thread.
File with a receipt, approve in one place, export the month when it closes.
All 336 have a running demo. Open one before you copy it.
Internal tools hold staff data. That deserves a straight answer, not a badge.
We used an anonymous key from outside to read the tables behind every live design — 653 tables. Nothing came back that should have been private.
Nine checks run before a publish. A serious finding stops it, and dismissing the finding does not unblock it — only a clean re-scan does.
User provisioning from a company directory is written and tested against the spec, but has never been connected to a real identity provider.
One approver, one step is what these handle well. A five-stage chain with conditional routing is more than we would claim here.
Pick the process that generates the most messages and replace that first.