Delteka case study
Kona · access control

Deltek

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 kinds of outsider can be let in — and the interface called them both, simply, “guest,” while the platform quietly granted them opposite access.

people & access — scope at a glance
PeopleEveryone (7)
Assignees
Add people
CBChristine Boermeester
JSJeff Schuman
KLKatie Lavenstein
KZKurt Zaenfoss
LRLisa Rabideau
SRShaun Ra
Guests
Add guests
MNMark Nadig
Product / UX designInteraction designAccess-model designWireframingDeltek · Kona
01The problem

One flat label, two kinds of access.

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

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

Same label. Opposite blast radius.

Space guest

In the space, outside the org. Trusted to work across it — so he can self-serve every file and conversation. Access → the entire space.

Conversation guest

In neither the space nor the org. Looped into one thread for proposal insight, and should see only what’s relevant to it. Access → one conversation.

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

03How I worked the problem

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

Frame
what actually differs?
Reframe
scope as a property
Principles
the constraints
Design
every touchpoint
Confirm
surface assumptions

The one thing to settle before opening the wireframing tool: what actually differs between the two? Both need scoped access — provided the platform makes the scope explicit and controllable. The space guest gets the whole space and self-serves; the conversation guest gets one conversation, keeping irrelevant, sometimes sensitive, detail out of reach.

04Principles I designed against

The constraints are the design.

Revocable

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

Many at once

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

Obvious

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

guest with access → (recreation)
Edit User
Jeff Schuman
Jeff@Jeff.Com
This Topic Only
OK
User Access
Full Access
This Topic Only
Documents Only
THE DECISIONPromote the hidden variable

Make access scope the thing you set.

Instead of a “Guests” list hiding a distinction, access becomes an explicit, editable property — set at invitation, changeable forever after. I took it through the flow at three points: invite, edit, and the roster.

Before

Two rigid types

“Space guest” and “Conversation guest” — two fixed roles, with the real distinction (what each could actually see) buried underneath the same word.

After

One designation, a scope you set

Everyone is a Guest; access becomes a setting you choose and change — Full Access · This Topic Only · Documents Only.

05Through the flow

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

Adding someone — scope at invitation

Name, email, and a User Access level chosen the moment the account is created — never left to chance, no silent defaults.

Changing someone later — revocable

Access is a dial, not a trap. The same control that grants scope takes it back; the model never locks a person at their first level.

Seeing everyone at once — audit & revoke

Each row carries its own access control, and color carries the scope so it reads before you do — the place an admin audits and revokes.

people & access — the one screen you audit and revoke on
PeopleEveryone (7)
Assignees
Add people
CBChristine Boermeester
JSJeff Schuman
KLKatie Lavenstein
KZKurt Zaenfoss
LRLisa Rabideau
SRShaun Ra
Guests
Add guests
MNMark Nadig

Every row carries its own scope chip and access control — the audit surface the third principle describes, shown in one place.

06Make the label do work

Scope, readable at a glance.

Color carries the meaning before the words do: a Topic Guest in orange, a plain Guest in green — on a person row and as a standalone tag.

● Topic Guest — one thread● Guest — whole space
07Trade-offs & what I’d revisit

Each was a deliberate call — with the test that would change my mind.

A third access level

Added “Documents Only” for an outside reviewer who needs the files but not the conversation. I’d revisit: confirm it earns its complexity with real admin usage — or collapse back to two.

One label, not two role names

Everyone is a Guest; scope is the property. Fewer concepts on screen. 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

Forces an explicit access decision up front — no silent defaults, no one quietly over-scoped. I’d revisit: I optimized the single-invite path; a sensible default and bulk-invite editing need their own pass.

Working the ambiguity

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

The unknowns weren’t a reason to stall — they were something to surface. I wrote down the platform and data-model assumptions I was designing under, handed them back to the team as part of the work — correctable, not hidden — and confirmed the requirements in writing before committing a single screen.

Where it landed

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

A coherent access model where every piece traces to a principle set before I started: one designation with scope as a setting, three tiers (Full · This Topic · Documents), a roster to audit and revoke, and color-coded labels you read at a glance.

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