Abdullah Omer Presentation
Case study · Permissions & data governance · Legal tech

Who can see, ask and change a confidential contract.

Contracts are among the most sensitive files a company has, and an AI workspace adds a new kind of access: asking questions about a document. I designed Malakah's permission system, from organisation roles down to a single contract, so legal teams can share widely without losing track of who can do what.

AOAbdullah Omer·Product Designer, Stixor·6 min read
View the presentation Short on time? The whole story in 14 slides · PDF, 4.0 MB
Manage access window for a project: a list of team members with checkboxes and a role picker open, showing Edit, Query and View, each with a one-line description of what it allows
Manage access. Three project roles, each described by what it lets you do.
RoleProduct Designer
CompanyStixor, for Malakah
Timeline2024–2026
UsersLegal teams, business approvers, org admins
ScopesOrganisation, project, contract, signing
LanguagesArabic (RTL) + English (LTR)
At a glance
Problem
Contracts were shared by email and WhatsApp, so every share made an uncontrolled copy. Moving them into one workspace solved that only if sharing inside it was safe and easy to understand.
Insight
Not everyone who needs a contract needs to change it. Business approvers needed answers from contracts, not editing rights.
What I designed
A four-level access model, a role picker that explains each role, sharing and invite flows with visible pending states, owner-aware views, and an audit trail on every signed contract.
Key decision
A third project role, Query: use the AI on a project's files without being able to edit or delete them.
Outcome
One permission model shipped across organisation, project, contract and signing, used by Malakah's 1,000+ legal professionals.
The problem

Every share was a copy nobody could take back

In 12 interviews and 6 contracts followed end to end, the same pattern showed up: drafts went back and forth by email, finance approved in WhatsApp, and 9 of 12 people had sent an outdated version at least once. Each of those messages was a copy of a confidential document that nobody could recall or audit.

Moving contracts into one workspace fixes the copies, but only if sharing inside it is at least as easy as forwarding an email, and much safer. Three groups touch every contract, and they need very different access:

In-house counselOwn the contract. Draft, edit, decide who else gets in.
Law-firm associatesWork on specific matters. Edit what they're assigned, nothing more.
Business approversNeed to understand the contract and approve it. Rarely need to change it.

The design goal: anyone can see, at a glance, who can see, ask about and change a document, and change that in two clicks.

Access model

Four levels, each answering one question

Rather than one long list of permissions, I split access into four levels. Each one answers a single question, in the place where people ask it.

1OrganisationWho is on our team?
Admin or Member.
2ProjectWho works on this matter?
Edit, Query or View.
3ContractWho can open this document?
Per person, per file.
4SigningWho signs, in what order, until when?
With an audit trail.
Add Member window: an email field and a list of invitations, each person with a Member or Admin role and a remove button
Organisation level. Invitations are reviewed as a list before sending, each with its own role.
Key decision

A role for asking, not editing

The usual model has two roles: people who can change a document and people who can only read it. AI breaks that. Reading a 60-page supply agreement isn't what a finance approver wants; asking “what are our payment terms and penalties?” is. With only Edit and View, they'd either get edit rights they shouldn't have, or no way to ask.

Simpler · not chosen
Edit and View only. Fewer choices, a familiar pattern. But approvers end up with editing rights just to use the AI, which is exactly the over-sharing we were trying to remove.
Chosen
Edit, Query and View. Query lets someone run questions across a project's files without changing structure or files. One more option to understand, so each role carries a one-line description in the picker.
What each project role allows
RoleCan doCan't do
EditManage the project, add and delete files, run queries—
QueryRun and analyse questions with the AI, see the answersEdit the project structure or files
ViewRead project files and earlier queriesMake any changes

The descriptions in the picker are written as what you can do, not as a role name to decode. Choosing a role means reading one sentence, not checking a help page.

Controls

Sharing that stays visible and reversible

01Share a single contract

Share this Contract window over a contract: an email field with a Can edit selector and send button, and a People with access list where each person has a role selector and a remove button
Share a contract. Invite and set the level in one row; everyone who already has access is listed underneath.

02Manage a whole project

Manage access window listing team members with Edit or View roles, and two greyed-out people marked Pending with a delete button
Pending is its own state. Invited people appear greyed out until they accept, and can be withdrawn before they ever get in.

03The interface reflects your access

Projects you own
Projects page with My Projects and Shared With Me tabs; project cards marked Owner, and a menu with Edit, Manage Access and Delete
Owners see Edit, Manage Access and Delete.
Contracts shared with you
Contract list filtered to Not Owned By Me under a Shared heading, with a menu offering only Download
On a contract shared with you, the menu offers only what you're allowed to do.
Audit

Every signature leaves a record

Signing is where access matters most, because it involves people outside the company. Each contract sent for signature carries its participants, an expiry date and an audit trail, all from the same menu.

Signing table listing documents with statuses such as Pending, Completed, Expiring Soon, Waiting on Others and Action Required, and an action menu with Audit Trail, Edit Expiration and Participants
Signing table. Audit trail, expiry and participants sit on the contract, one menu away.
Measuring success

How I'd know it's working

Good permissions are mostly invisible, so the signals are about mistakes and friction. These are the metrics I'd put in place.

Task successShare completion rateShare windows opened that end in a successful invite, and how long that takes.
AccuracyRole changed within a dayAccess changed or revoked soon after it was granted, a sign the first choice was wrong.
Least accessQuery vs Edit shareHow often approvers get Query instead of Edit, showing whether over-sharing went down.
HygieneStale pending invitesInvitations left pending for weeks: access offered and forgotten.
SupportAccess-related tickets“I can't open this” and “who can see this?” requests to admins.
AdoptionContracts shared in-appShare of contracts sent through the workspace rather than as email attachments.
Reflection

What I took from this

AI creates new kinds of access. “Can ask about this” is different from “can read this” and “can change this”, and the permission model had to say so.

Describe the action, not the role. A one-line “what you can do” beat any role name, especially across two languages.

Show access where it's granted. Putting the access list inside the share window did more for safe sharing than a separate settings page would have.

Next, I'd add an access review. A single view per contract answering “who can see this, and since when?”, so admins can tidy access without opening every project.