Studio Vandaag · creative agency · 24 staff · Utrecht
Every other page on this site is written for whoever sets Sallyport up — the matrix, the row filters, the audit log. Twenty-three of these twenty-four people will never open any of it. This is their week instead: eight things that actually happened, on the devices they happened on, with the gate doing its work somewhere none of them had to look.
The people in it
Roles here are access, not job titles — they are what Sallyport grants. One person holds one of them, which is the whole reason two different approvals can mean two different things.
MK
Melanie Koster
Admin
Operations Director. Signs off as the manager.
AM
Anna Meijer
Finance
Books what comes in. Rarely at a desk to do it.
TB
Thomas Bakker
Sales
His accounts, and only his.
HB
Hannah Bos
DPO
Classifies the fields. The only one who can.
DV
David Visser
Sales
Asks for more than he has. Gets an answer either way.
JV
Julia Vermeer
Admin
The one who does open the rules screen.
RW
Robert de Wit
Auditor
Reads the log. Reads nothing else.
IM
Iris Mulder
HR
Holds what nobody else may. Approves nothing of hers.
LB
Lisa de Boer
Starts Monday
Not a user yet. That is scene seven.
Melanie approves as a manager. Hannah approves as the DPO. Two approval paths, two people — that is the product working, not a naming detail.
Monday, 08:47
The most ordinary question anyone asks an HR department, asked of an assistant instead. It has two halves, and only one of them is anybody’s business but his.
Scene 01 · sales × hr
“How many leave days do I have as a manager, according to the handbook?” The handbook half is a paragraph in handbook-v4.pdf, on the company’s own drive, which all twenty-four of them may read and which says the same thing to all of them: twenty-five days, and two more for a managing role. Gemini reads it there, the way it reads everything else on that drive. Sallyport is not asked, and should not be.
The other half is his — accrued, taken, booked, carried over — and it is one row of twenty-four. That half comes through the gate, filtered to the person asking, exactly as his 212 customers do two scenes later. He gets one answer and never sees the join.
TBThomasSales · his own row
→
27
TB
| Base, all staff | 25 · handbook §4.2 |
| Managing role | +2 · handbook §4.3 |
| Taken | 13 |
| Booked, October | 2 |
Thomas · before the stand-up
Indexing the drive was never the mistake. Putting the row on the drive was.
Monday, 11:24
A supplier mails a PDF to an inbox. Nobody opens it, nobody types it into anything, and it is booked before the train gets to Amersfoort.
Scene 02 · finance × operations
The mail lands at facturen@studiovandaag.nl and a webhook wakes the playbooks. The PDF is read where it sits — supplier, date, lines, VAT, total — and matched against the open projects in Gripp. It is over €1.000, so it stops and asks a person.
That person is Anna, because the rule says finance signs invoices, and Sallyport knows which human that is. She gets one card. Two taps later it is a purchase invoice in Moneybird with the document filed against it.
AMAnnaFinance · approves
→
MKMelanieManager · counter-signs
→
booked & filed
AM
Purchase invoice · over your €1.000 threshold
€2.480,00
De Groot Media · 21% btw
Over €1.000 also needs a manager.
Melanie is next in the chain.
Anna · on the 11:09 to Amersfoort
The same run is in the audit log, with the two approvals named. An invoice that nobody can show you the approval for is the actual finding — not the invoice.
Tuesday, 10:42
Thomas is in a car park between two meetings. He is not going to open a CRM on his phone, and he does not have to.
Scene 03 · sales, on the road
The gate resolves who is asking on every single request — not once at login, and not from something carried around inside a token. Thomas’s row filter is his accounts, active ones, not on credit hold. It is applied on the way out, and pushed into Gripp’s own query where Gripp can express it.
So he does not get a filtered view of the whole customer base. He gets a smaller world, and there is no seam in it where the rest used to be — no greyed-out rows, no “insufficient permissions”, nothing to screenshot and complain about. The IBAN comes back masked because the DPO said so, and he has never needed it anyway.
TB
| De Groot Media | €4.210 · 12d |
| Vos & Partners | €1.870 · 5d |
| Atelier Lindenhof | €920 · 3d |
Thomas · car park, Nieuwegein
The row filter and the field policy that decide this are shown, as screens, on the governed page. This is the same two rules from the other side.
Tuesday, 16:05
The most ordinary thing an employee ever does to their own record, and the one place where being able to read something and being able to change it are obviously not the same permission.
Scene 04 · sales → hr
He types one sentence on the sofa. The row it lands on is his own — the same row filter as the CRM, on a table where it resolves to one of twenty-four. What he may write on it is three fields: address, phone, next of kin. He is not shown a form with greyed-out boxes; the rest of the row simply is not part of the write.
His IBAN comes back masked, as it does everywhere else on this page, and the date he gave is a value in a field the record already had — from 1 October. Nothing is scheduled and nothing is held. The systems read the date when the date matters.
TBThomasSales · his own row
→
3 systems
→
IMIrisHR · confirms the allowance
TB
Thomas · Tuesday evening
| Field | Comes back | He can change it | Because |
|---|---|---|---|
| address | in full | yes | his to keep current |
| phone | in full | yes | his to keep current |
| next of kin | in full | yes | his to keep current |
| iban | masked | no | changing where wages land is not self-service |
| contract dates | in full | no | read is a different grant from write |
| commute allowance | in full | no | it is money — Iris signs it |
It is the same rule as the scene above, on a table with one row in it. He has never seen the other twenty-three employees, and three of the fields on the one row he can see are not his to change — not hidden, not greyed out. Simply not part of what he was granted.
Wednesday, 14:31 → 15:08
Most access control ends at “no”, which is why people route around it. This is the same “no” with a door next to it — and the door is the reason the “no” holds everywhere else.
Scene 05 · sales → DPO → back
Beat one. He asks for every client contact’s date of birth, for a birthday mailing. Hannah classified that field as personal data in March, and the classification is gate-wide: it does not matter which tool he asks through, or which assistant. He gets a refusal that says which field and whose rule — not an error code, and not silence.
Beat two. In the same thread there is a button. He states what for and how long, and it goes to Hannah, because a personal-data request is hers and nobody else’s.
Beat three. Hannah gets the whole picture on one screen: the field, its classification, what the standing rule says, who else currently holds it, and what he wrote. She grants seven days, read-only.
Beat four. On the 17th it reverts. Nobody schedules that, nobody remembers it, and the log records the expiry as its own event.
DVDavidSales · refused 14:31
→
HBHannahDPO · granted 15:08
→
expires 17 Sep
DV
David · 14:31
HB
Requested by
David Visser · Sales
Reverts on 17 Sep with no further action.
Both the grant and the expiry are logged.
Hannah · 15:07, iPad
| Who | Change | Scope | Until | State |
|---|---|---|---|---|
| David · Sales | grant read-only | gripp · contacts.birthdate | 17 Sep · 7 days | active |
| Anna · Finance | grant View | exact · invoices | 30 Sep | active |
| Contractors | revoke all access | gripp · contacts | 31 Oct | active |
| Support | unmask iban | moneybird · contacts | expired | reverted |
That fourth row is the point of the table. Nobody had to remember to take it away — and standing exceptions are exactly how least-privilege quietly dies.
Thursday, 08:20
HR holds the most sensitive data in the building and, in most companies, has the least to show for how it is held. This is the one scene where the correct answer is that a question has no answer for anyone.
Scene 06 · hr × operations
Anna calls in at ten past eight. What the company needs is genuinely operational: she is out, since today, expected back Monday — because somebody has to cover the De Groot delivery. Melanie sees exactly that and reschedules around it.
What nobody sees is why. Not Melanie, not the assistant, not the log, and not Iris — under Dutch law the reason belongs to the occupational health service and never becomes an employer’s record at all. So there is no field to mask here. There is a field that no profile is granted, and Hannah classified it in March, the same March as the birthdays.
Then the part she cannot do herself. Thomas’s commute allowance is waiting from Tuesday. She proposes it and the gate sends it to Melanie, because a person who can both propose and approve a payment is not a control. Two people, two roles — the same shape as the invoice, on HR’s side of the building.
IMIrisHR · registers
→
MKMelanieManager · approves
→
reason: held by nobody
IM
What the company records
Out · back Monday
Anna Meijer · Finance
Cover for the De Groot delivery is Melanie’s call.
Nothing here reaches the assistant.
Iris · 08:20, the HR queue
Thursday, 09:11
Onboarding is the process every company has and nobody has written down. Here it is written down exactly once, and it runs itself the next twelve times.
Scene 07 · operations → admin → finance
Seven tasks across four systems, and only one of them stops. The Sales role is a grant of access, so a person decides it — that is Julia, in about four seconds, from her phone. Everything either side of it is machinery.
Note what the pause is not: it is not a ticket, not a reminder, and not a step someone has to know exists. The playbook holds, asks the person whose job it is, and carries on the moment it has an answer.
MKMelanieOps · one sentence
→
3 systems
→
JVJuliaAdmin · signs off the role
→
mail & calendar
JV
Grant a connector role
Sales
to Lisa de Boer
Step 4 of 7 · the run resumes on your answer
Julia · 09:14
Four minutes end to end, of which one human took four seconds. The other three minutes and fifty-six were waiting on three vendors’ APIs.
Eight months later
Every company has an onboarding checklist. Ask for the offboarding one and you get a pause, then a name, then “I think IT does it”.
Scene 08 · the one nobody runs
Everyone remembers to disable the login. It is visible, it is one click, and somebody notices if it does not happen. That is why it is almost never the thing that leaks.
What stays is quieter: the two temporary exceptions granted in March for one afternoon and never revisited, the seven projects she owned, the twelve client relationships with her name in the owner field — which is also the field somebody else’s row filter is matched against, so those records now belong to nobody and appear for no one.
Sallyport knows all of it, for the boring reason that it granted all of it. The trigger is her last day landing in the HR record; the run starts three days ahead of it.
LB
The run, three days before her last day
The difference is not diligence. It is that one of them is a checklist and the other one is a trigger.
The week, from the floor
Everything above was decided by rules somebody wrote once. Here is what each person actually did instead of reading them.
AM
Anna · FinanceTapped Approve on a train. Never opened Moneybird, never saw a PDF, never typed an amount.
TB
Thomas · SalesAsked three questions from three sofas and car parks. Never learned that 328 rows were withheld, which is the correct amount to learn, and never opened a portal to move house.
DV
David · SalesWas told no, and told why, and told who to ask. Had the field thirty-seven minutes later, for seven days.
HB
Hannah · DPOMade one decision, with everything she needed to make it on one screen. Classified the field once, in March.
MK
Melanie · OperationsWrote one sentence, counter-signed one invoice and approved one allowance. All three from a phone, and she has never seen why Anna was out.
JV
Julia · AdminThe one person who does open the rules screen — and did not need to this week, because she opened it in March.
RW
Robert · AuditorRead the log. Read no customer record, no invoice and no contact, because the Auditor role reaches none of them.
LB
Lisa · joined, then leftHad working access on her first morning and none of it by her last evening. Was never asked to chase either.
IM
Iris · HRRegistered an absence without recording why, and asked for money she was not allowed to approve. Both of those are the job, and both of them are now provable.
Closed beta · EU-hosted · Every call logged
Half an hour, your own stack, your own rules. You will know inside a week whether the week above is yours.