Delteka case study
Deltek · Kona · access control

Guest access

Two kinds of “guest” hiding under one label — and how I gave the platform a way to tell them apart.

In Kona, Deltek’s project-collaboration platform, people work inside a shared space of files and threaded conversations. Two outsiders had been let in — Shaun, given the run of a whole space, and Mark, looped into a single thread — and the product treated them as the same kind of thing. This is how I untangled that.

a space & its two outsiders
A space
Conversation · Lakeville Boathouse
Conversation · Pipeline
Files & attachments
SRShaun

Sees the whole space

MNMark

Sees one thread

Product / UX designInteraction designAccess-model designWireframingDeltek · Kona
00The product · how Kona works

First, how the product works.

People work inside a space — a shared project workspace of files, attachments, and threaded conversations (the product also calls these topics).

Most people in a space are members. But two kinds of outsider can be let in — and that distinction is where everything that follows begins. Hold onto these three roles; they’re the whole story.

Organization · Apple & Bartlett
A space
Conversation · Lakeville Boathouse
Conversation · Pipeline
Files & attachments
Memberof the org and the space
Space guestin the space, outside the org
Conversation guestin neither; invited to one thread
01The problem

One flat label, two kinds of access.

The existing screen presents “guest” as a single thing. Underneath, the platform grants two very different scopes — and nothing lets the person running the space see the difference, or choose.

That’s how sensitive proposal detail ends up in front of someone who was only meant to answer one question.

The screen I was handed · Kona · People panel (original)

Kona · People panel (the screen I was handed)
PeopleEveryone (7)This design
Assignees
Christine Boermeester
Katie Lavenstein
Lisa RabideauCreator
Shaun Ramember?

↑ A space guest — but reads as a full member.

Guests
Mark Nadigguest

↑ A conversation guest — but the label never says his access is limited.

02Two outsiders

Same label. Opposite blast radius.

SR
Shaun Ra
Space guest

In the space, outside the org. Trusted to work across it — so he can self-serve every file and conversation without a stream of “can you send me…” requests.

Access → the entire space
MN
Mark Nadig
Conversation guest

In neither the space nor the org. Looped into one conversation for proposal insight — and should see only what’s relevant to that thread. Nothing more.

Access → one conversation

The interface calls them both, simply, “guest.”

03How I worked the problem

The reframe wasn’t luck — it was a path.

The same method I’d run on any ambiguous brief: frame the one question that matters, reframe around the answer, write the principles I’m designing against, take the decision through every touchpoint, and confirm my assumptions rather than bury them. The rest of this deck walks it, step by step.

Step 01
Frame
what actually differs between the two?
Step 02
Reframe
collapse to one designation, scope as a property
Step 03
Principles
revocable · many-at-once · obvious
Step 04
Design
every touchpoint — invite, edit, roster, label
Step 05
Confirm
surface assumptions, validate before committing
04The one thing to learn first

What actually differs between the two?

Everything downstream depended on the answer — so I settled it before opening the wireframing tool. Framed the right way, having both roles stops being confusing and becomes obviously useful: one spares the trusted collaborator constant requests, the other keeps sensitive detail out of the wrong hands.

Space guest

The whole space — all files, attachments and conversations. Self-serves what they need for their work.

Conversation guest

One conversation— and only what’s relevant to it. Keeps irrelevant, sometimes sensitive, detail out of reach.

Guests need scoped access — provided the platform makes the scope explicit and controllable.
05Principles I designed against

The constraints are the design.

In an access-control problem the constraints are the design, so I wrote down the principles I was designing against before I drew anything.

01

Revocable

Whatever you grant, you can take back — at any time.

02

Many at once

A user can belong to multiple spaces and conversations. One guest ≠ one place.

03

Obvious

It’s clear which kind of user someone is. If a viewer has to think, the design failed.

06The pivotal decision

Promote the hidden variable: make access scope the thing you set.

Rather than making the typeof person the primary concept, I collapsed “space guest” and “conversation guest” into a single designation — Guest — and made what they can access the thing you set and change. Scope stops being two rigid categories and becomes a property: explicit, editable, set at the moment the account is created, changeable forever after. I took it through the flow at three points: invite, edit, and the roster.

Before — two rigid types
Space guestConversation guest
After — one designation, a setting
Guestwith access →Full AccessThis Topic OnlyDocuments Only
07–10Through the flow

Set it up front. Change it forever. Audit it on one screen.

I took the decision through every touchpoint — invite, edit, roster, label — and rebuilt each in Deltek’s MUI standard. Below, each screen is shown twice: the original Kona wireframe (Then) beside the Material rebuild (Now).

07Adding someone · scope at invitation

Decide the scope up front.

Name, email, and a User Access level — chosen the moment the account is created, never left to chance, no silent defaults. Documents Only is the tightest of the three, for an outside reviewer who needs the files but not the conversation around them.

add user — scope chosen at invitation
Then · original wireframe
Add User
Name
Mark Nadig
Email
email@email.com
User Access
Full Access
This Topic Only
Documents Only
OK
Now · rebuilt to MUI
Add user
Name
Mark Nadig
Email
email@email.com
User access
Full Access
Full Access
This Topic Only
Documents Only
CancelOK
08Changing someone later · revocable

Access is a dial, not a trap.

The same three-way control that grants scope also takes it back — you can dial someone from This Topic Only up to Full Access, or back down, at any time. The model never locks a person at their first level.

edit user — scope you can dial up or down
Then · original wireframe
Edit User
Jeff Schuman
Jeff@Jeff.com
Guest
User Access
This Topic Only
Full Access
Documents Only
OK
Now · rebuilt to MUI
Edit user
MN
Mark Nadig
mark@nadig-consult.com
Topic Guest
User access
This Topic Only
Full Access
This Topic Only
Documents Only
CancelSave changes
09Seeing everyone at once · audit & revoke

Who can see what — on one screen.

A table of user, email, user type, and access — each row carrying its own access control, and for topic-scoped guests, which topics they can reach. Color carries the scope so it reads before you do. This is the at-a-glance answer to who can see what — and where an administrator audits and revokes.

people & access — the one screen you audit and revoke on
Then · original wireframe
User
Email
User Type
Topics
user name
email@email.com
Specific Topic
Topic List
user name
email@email.com
Documents Only
Topic List
user name
email@email.com
Full Access
Now · rebuilt to MUI
People & accessAdd people
User
Email
User type
Access
Topic scope
LRLisa Rabideau
lisa@apple-bartlett.com
Member
Full Access
All conversations
SRShaun Ra
shaun@partner.co
Guest
Full Access
Entire space
MNMark Nadig
mark@nadig-consult.com
Topic Guest
This Topic Only
Lakeville Boathouse
DODana Osei
dana@ext-review.org
Topic Guest
Documents Only
Lakeville Boathouse
10Make the label do work

Scope, readable at a glance.

A Topic Guest in orange, a plain Guest in green — tried at a few densities (with an avatar, name-only, and compact), mirroring the original wireframe. Color-coding a guest’s scope right next to their name is the cheapest possible way to keep the whole team’s expectations aligned.

labels — color carries the scope before the words do
Then · original wireframe
Label concepts
user nameTopic Guest
user nameGuest
Topic GuestGuest
Now · rebuilt to MUI
With avatar
MNMark NadigTopic Guest
SRShaun RaGuest
Compact — tag only
Topic GuestGuest← orange = one thread · green = whole space
11Trade-offs & what I’d revisit

What I chose — and what I’d revisit.

Each was a deliberate call, not an oversight — and each comes with the test that would change my mind.

A third access level

The call

Added Documents Only beyond full-space and single-topic — for an outside reviewer who needs the files but not the conversation around them.

What I’d revisit

Confirm the third level earns its complexity with real admin usage before it ships — otherwise collapse back to two.

One label, not two role names

The call

Everyone is a Guest; scope is the property you set. Fewer concepts on screen, and the distinction stays explicit.

What I’d revisit

Test whether admins lose a useful shorthand — a subtle scope descriptor on the chip may still earn its place.

Scope set at invitation

The call

Forces an explicit access decision up front — no silent defaults, no one quietly over-scoped.

What I’d revisit

I optimized the single-invite path; a sensible default and bulk-invite editing need their own pass.

12Working the ambiguity

The strongest move wasn’t a wireframe. It was getting clarity before I started.

The brief was thin on the things I’d normally know — platform constraints, technical limits, the real data model behind spaces and conversations. The unknowns weren’t a reason to stall — they were something to surface. I’d rather make my assumptions visible and correctable than quietly bake them in and hope.

Wrote down the platform & data-model assumptions I was designing under.
Handed them back to the team as part of the work — correctable, not hidden.
Confirmed the requirements in writing before committing to a direction.
13Where it landed

A coherent access model — where every piece traces to a principle I set before I started.

One designation

“Guest,” with scope as a setting

Three tiers

Full · This Topic · Documents

A roster

Audit & revoke who sees what

Scope labels

Color-coded, read at a glance

When two hidden categories fight under one label, the fix isn’t a better label — it’s promoting the underlying variable into something a person can set and change.

A craft-and-reasoning case study — the named people in the mockups are illustrative sample data, and there are no measured metrics to quote.