Back to cases
  • Design System
  • Prototype
  • Product Design
  • UX Design

Consent Audit Report

Designing a compliance report from scratch, intertwined with the platform's core data architecture — balancing faster user flows against data integrity risks across the whole system.

V3

versions iterated

3

core problems solved

3

impacted user flows

The Challenge

The Consent Audit Report is one of the platform's core compliance deliverables, helping customers prove and maintain compliance with data privacy regulations like GDPR and CPRA. I designed this report from its first version, evolving it through three major iterations in close collaboration with business and product stakeholders. This case focuses on its most recent redesign (V3) — by the time it was scoped, three recurring gaps were preventing the report from delivering its full value and directly blocking revenue opportunities the company was actively pursuing: • Actionable insights: The report showed unauthorized vendors, but offered no audit trail or workflow to act on them: no way to investigate, assign, or track resolution status over time. • Ease of use: Reaching key information required too many steps (login > project > consent audit > details), creating friction for users who needed quick answers. • Granularity of detail: Understanding the full context of a single result — what happened, why, and what it meant — required piecing information together, with no unified view tying it all into a clear picture.

My Role

I was the only designer responsible for the Consent Audit Report across all three versions, with end-to-end ownership — from initial concepts to final Design System components (the Design System did not exist before I joined and was created, documented and maintained by me, both in this report and across the platform). For V3, I worked closely with product and business stakeholders to scope priorities, helping identify a technical constraint tied to the platform's data architecture. I used Granola AI to transcribe discovery meetings, and Figma Make and Claude Design to explore layouts.

Information architecture & context

The Consent Audit Report's position within the platform — its place in the sidebar navigation, alongside other compliance modules — was already established from earlier versions. For V3, this existing structure served as the starting point for the redesign.

Consent Audit userflow. New V3 additions shown in orange: a Dashboard shortcut and an email notification flow for report completion.

These additions reduced friction for users who needed quick access — and set the stage for a more significant workflow change still to come. The platform's existing personas also provided context for who relies on this report most, and their differing needs mapped closely to the three priority gaps.

  • The Security Engineer: responsible for investigating and acting on unauthorized vendors — needed a structured way to do so within the report itself, shaping the actionable insights workflow detailed later in this case.
  • The Compliance Analyst: focused on generating audit-ready reports without digging into technical detail, needed a clear, unified summary and quicker access, reflected in these navigation shortcuts.
The platform's personas and their differing levels of operational ownership and technical confidence.

Delivery 1

The problem · Actionable insights

The biggest design challenge in V3 was the "actionable insights" gap: giving users a way to resolve a violation without duplicating logic that already existed elsewhere in the platform, or introducing risk of inconsistent data. That "elsewhere" mainly meant two configurations: Policies and Data Sources. Policies in the platform aren't scoped to a single project. This meant any action that modified a policy could ripple beyond the report the user was currently looking at.

Why this matters

Customers can apply the same policy across multiple projects to simplify maintenance of an otherwise complex configuration — so a change made in one place isn't isolated.

Screen recording showing how a Consent Audit policy is configured.

Data Sources — a separate but closely related configuration, defined back in V1 and V2 with no changes in this iteration — added another layer to this complexity, determining which URLs and consent scenarios a given audit would actually run against.

  • Early discovery considered redirecting users to the existing policy page, but after reviewing the technical impact with development, we moved the resolution flow directly into the report instead — reducing engineering risk while saving users an extra step.
  • Making violations actionable also required a new business rule: previously, a failed check had no formal status. V3 introduced a clear distinction between passed checks and violations, with a dedicated overview summarizing how many of each existed.

This reclassification was what made resolution possible in the first place — once a failed check was formally a violation, it could be tracked, acted on, and resolved. Each violation type still required a different resolution path, depending on whether a permanent fix was technically possible yet:

  • Unauthorized vendors could be resolved in two ways: adding the vendor to the policy's "strictly necessary" list — a change that would affect every project using that policy — or resolving the violation without modifying the policy, a scoped, one-off fix.
  • Banner visibility and custom check violations didn't yet have an equivalent policy-level mechanism to resolve their root cause. For these, I designed a "Resolve until next occurrence" action — a deliberately temporary fix, scoped only to the current report, that unblocked users immediately while a more complete resolution path was planned for a future release.

In both cases, resolving a violation removed it from the open count — giving users a clear, immediate sense of progress as issues were addressed.

Exploring the solution space

Before settling on the scoped resolution flow above, I used Claude and Figma Make to quickly explore a more ambitious version of the Consent Audit report — including a dedicated Issues view with severity scoring, suggested fixes, and assignee tracking.

AI-assisted exploration of a Consent Audit dashboard tile and a dedicated Issues management view, created with Figma Make.
AI-assisted exploration of a detailed issue view, created with Claude Design, using Figma's exported Design System.

These explorations showed both the ceiling of what this gap could become, and how far that was from what this release could support — which shaped the scoped resolution flow that shipped in V3.

Consent Audit report before V3.
After: V3 introduces resolution actions directly within each check, status tracking (open/resolved violations), and a dedicated Audit Trail tab.

Delivery 2

The problem · Ease of use

Reaching the Consent Audit Report used to require navigating through several steps — login, project selection, dashboard, and finally the report itself. For V3, we added a direct shortcut from the Dashboard, giving users who already knew what they needed a faster path to the report.

The new Consent Audit shortcut added to the Dashboard in V3.

We also introduced an email notification, alerting users as soon as a new report was ready — removing the need to check the platform manually to know when a scan had finished.

Email template notifying users that a new Consent Audit report is ready.

Delivery 3

The problem · Granularity of detail

Of the three gaps, this was the least resolved in V3. Fully solving it meant giving users a complete picture of a violation (what happened, why, and how to remediate it) without leaving the Consent Audit report. But some of that information already existed elsewhere in the platform, spread across other reports, and connecting it properly meant touching parts of the product beyond the scope of this project.

  • ⚡ Given the amount of work already planned for development in this release, the team — together with product — decided to deprioritize this gap in favor of the two with higher impact.

One idea discussed was adding a "Web Consent Audit" tag to vendor entries in this existing report, helping users quickly identify vendors surfaced through this data source — a small, clear-benefit change that still meant modifying a report outside this project's scope, so it stayed a future consideration.

Vendors report showing the source of a vendor as Web Consent Audit, indicated by a tag.

Also addressed as part of this gap was the Audit Trail tab on the Consent Audit report. It gives users a persistent, unified record of what had happened on the report and when.

The Audit Trail tab introduced in V3, showing a persistent log of actions taken on the report.

Status & Outcome

While this case focused on V3, every version of this report — from its first release to this final iteration — was designed by me. At the time I left the company, V3 was with the development team, including:

  • Violations classification
  • Unauthorized vendors resolution flow
  • Audit trail tab
  • Dashboard shortcut
  • Email notification

The banner visibility and custom check resolution were treated as an initial, temporary solution, with more complete options planned for a future iteration. The connection with other reports — like the proposed vendor tagging — also remained an open item for future iterations.

🎥 Watch the video, including the full flows for:

  • Policies configuration flow behind Consent Audit
  • Data sources configuration for the project
  • Consent Audit report and details page
  • The Dashboard shortcut to Consent Audit
Screen recording of the full Consent Audit V3 flows.
Explore the navigable prototypeInteractive prototype in Figma.

Final thoughts

Working on this report reinforced how much complexity a single interface can carry without the user ever seeing it. Behind every violation and resolution button was a web of policies, data sources, and configurations — and much of the design work was about finding the clearest way to represent that complexity, not adding to it. It also reinforced that improving a product is rarely linear. Every version meant designing, testing, and iterating again — as fast as we reasonably could, since sales teams were waiting to bring these improvements to customers. That pace meant real trade-offs: shipping temporary fixes, deprioritizing smaller wins to protect bigger ones, deciding what could wait. None of these were compromises I made alone, but learning to recognize when a trade-off is the right call — not a failure to get it right the first time — is something I carry with me now.