Designing for the decision that can break the system

Stopping duplicate invites in a shared guest list

Stopping duplicate invites in a shared guest list

Staff couldn’t tell if it was safe to act.
I redesigned the list so they can decide in one glance.

Staff couldn’t tell if it was safe to act.
I redesigned the list so they can decide in one glance.

Staff couldn’t tell if it was safe to act.
I redesigned the list so they can decide in one glance.

Impact

52% fewer

52%
fewer

duplicate invites

34% faster

34%
faster

invite workflow

43% less

43%
less

staff back-and-forth

Before → After

Before (left): users read across columns to figure out state
After (right): state is clear enough to act without checking

Left: Before / Right: After

Summary

INVITI is a shared guest list system used by multiple staff.


Before sending an invite, staff couldn’t tell if it had already been sent or what would happen next. This led to duplicate invites and mistakes.


I redesigned the list so users can quickly see the current state and know what each action will do before clicking.

Product Type:

B2B SaaS internal tool for managing VIP invitations.

Users:

Event teams collaborating on the same guest list.

Design Focus:

Preventing wrong actions in a shared workflow

by clarifying state and action.

Reducing hesitation and duplicate invites in shared workflows.

Status:

Shipped for internal staff.


Currently being refined before expanding to

external event planners.

Shipped for internal staff.


Currently being refined before expanding to external event planners.

Where it breaks

The system works, but it fails at the moment people decide to send.


Before sending an invite, users have to stop and read the table.


They check:


  • whether an invite was already sent

  • whether the state is current

  • what the action will do


The answers are in the UI,
but not in a way that’s quick to confirm.


So people hesitate.
And sometimes send duplicates.

What I changed

I focused on making the system safe to act in,

by making both state and outcome explicit before interaction.

Execution

Before, users couldn’t confirm two things before acting:


  • what already happened

  • what would happen next

In the original table:


  • invite state wasn’t explicit

  • actions had no clear outcome

  • destructive actions were easy to trigger

In the updated version:


  • invite state is explicit (sent, pending, not sent yet)

  • actions are predictable before interaction

  • high-risk actions require confirmation

Users can now verify both state and outcome before acting.

State is explicit.
Users can tell what needs action at a glance.

Predictable action

Users can see what will happen and what already happened.

Destructive actions require confirmation.
Prevents accidental mistakes.

Result

✅ Fewer duplicate sends

✅ Less double-checking

✅ Faster day-to-day actions


The workflow stayed the same,
but the decision became easier