COMPANY
Wholechain
TEAM
PM · 2 Product Designers · Frontend & Backend Engineers · GSA stakeholders
TOOLS / SYSTEM
Figma · Ant Design
PROJECT TYPE
Enterprise Product Design
These screens were reconstructed in Ant Design, the design system the original product was built on, using placeholder data. They reflect the workflow as it existed in 2024. The original files remain with the company.
Redesigning audit workflows as the rules evolved
Wholechain's certification system supports GSA audits across eleven stages and four roles, each with different permissions and editing restrictions. These rules kept changing as GSA and the product manager refined the workflow.
I joined the ongoing redesign as a UX Design Intern, focusing on navigation, auditor assignment, and First Page Report submission. Another designer and I explored interaction approaches in parallel, then refined them with the PM.
The certification rules came from GSA. My work was to design how the product behaved while they were still changing.

A single audit moves through eleven stages and four roles. Two of those stages happen outside the platform and are only recorded afterward.
A certification audit was not a linear form
Four things in the audit each depended on something else: who was eligible to audit, which assessments appeared, what could still be edited, and what had happened outside the platform. Each rule's effect depended on the state of the others, and the rules kept changing.
Three decisions shaped this workflow. Flexible navigation that keeps incomplete work visible Auditor eligibility resolved at selection Explicit review and confirmation before submission locks information

These four dependencies prevented the audit from working as a linear sequence.
Surfacing incomplete work only after a section has been visited
Incomplete and error states had to stay visible throughout, while users still needed to move freely between audit sections.
I proposed using the empty space beside each tab label to show a count of unresolved required items, appearing only after a user had visited the section and left it incomplete. I raised it with the PM and confirmed feasibility with the frontend engineer before it went into the design.
Error states belong to work a user has actually touched. Incomplete work stays visible until it is resolved.

A section that has not been opened stays neutral. Once opened and left incomplete, the tab carries a count.

Preventing invalid auditor assignments at selection
Eligibility depended on qualification, the role being filled, and whether the auditor had already audited that facility three years running. An earlier flow allowed restricted auditors to be selected, leaving GSA to correct the assignment afterward.
After the product manager reviewed the flow with GSA, we revised it to prevent restricted selections. Ineligible auditors remained visible but disabled, so a user could tell an unavailable auditor from one the search had not returned.
Surface decision-relevant information where the decision happens, and prevent invalid states before they create downstream work.

Filters narrow the pool; the qualification beside each name verifies the individual.
Treating submission as a commitment
First Page Report submission pulled information from across the audit, and some of it could no longer be edited once submitted. Users could only submit once required information was complete, and needed a chance to review the report before committing.
I worked on the FPR interaction design and designed the final confirmation modal, which lists the information that can no longer be edited after submission. Cancelling returns the user to the report or to the audit tabs to keep editing.
Reviewing each field inside a form and reviewing those fields assembled into the report that will actually be submitted are two different tasks. Separating them made the final step a review of the finished report, after the data entry was already complete.
The more consequential the action, the stronger the system intervention.

Users complete the required information, review the assembled report, and confirm. Cancelling returns them to the audit tabs.
One model of intervention, applied across the audit
The level of system intervention scaled with the consequence of the action. Applying the same four levels across audit sections gave users predictable guidance.
With a small team and limited development resources, we worked primarily within Ant Design. When a grouped-list variation could not support the interaction we had designed, I worked with engineering on a small adjustment that preserved the intended behavior.

The same four levels of intervention are applied across every audit section.
What this project changed about how I work
Most of the difficulty was in understanding how the rules affected one another. That meant deciding what users needed to know at each point, when the system should stay flexible, and where it had to enforce a boundary.
The platform launched as GSA Prism in December 2024, after my internship ended, so I did not see every workflow through its final production iteration. But the work taught me to treat validation, permissions, states, and exceptions as part of the product experience.
The same questions apply to any system that produces consequential output on a user's behalf: when should it explain, when should it warn, and when should it require a person to verify its output before an action can no longer be undone.

