Paul Wentzell UX
Paul Wentzell UX

Madison Resources— Navigator CRMDesigning for three user groups with three conflicting agendas.

Madison Resources— Navigator CRMDesigning for three user groups with three conflicting agendas.

THE PROBLEM

Recruiters couldn't trust the data, managers couldn't see the pipeline, and payroll needed accuracy without getting pulled into recruiting politics. I redesigned Navigator from the ground up — contact architecture, relationship visibility, duplicate prevention, and the design-to-dev pipeline that shipped it.

Recruiters couldn't trust the data, managers couldn't see the pipeline, and payroll needed accuracy without getting pulled into recruiting politics. I redesigned Navigator from the ground up — contact architecture, relationship visibility, duplicate prevention, and the design-to-dev pipeline that shipped it.

Client / Madison Resources

Client / Madison Resources

Client / Madison Resources

Industry / Human Resources

Category / Human Resources

Category / Human Resources

Team / UX, Product, Engineering

Team / UX, Product, Engineering

Team / UX, Product, Engineering

Platform / Desktop

Platform / Desktop

Platform / Desktop

Role / Sr UX Designer

Role / Sr UX Designer

Role / Sr UX Designer

Tools / Figma

Tools / Figma

Tools / Figma

Framework / .NET & Blazor

Framework / .NET & Blazor

Framework / .NET & Blazor

Timeline / 8 months

Timeline / 8 months

Timeline / 8 months

  • CRM

    CRM

  • HR Technology

    HR Technology

  • Date Visualization

    Date Visualization

  • Desktop

    Desktop

  • Responsive

    Responsive

Prevented

Prevented

Prevented

4

4

4

3

3

3

1

1

DUPLICATE DATA

ENTRY

DUPLICATE DATA

ENTRY

BUSINESS OUTCOMES

DELIVERED

RESEARCH

& DESIGN PHASES

BUSINESS OUTCOMES

DELIVERED

ACCOUNT STRUCTURES

MODELED

ACCOUNT STRUCTURES

MODELED

PRIVATE DATA

FLAG SHIPPED

PRIVATE DATA

FLAG SHIPPED

THE PROBLEM

Madison's reps were managing contacts across disconnected views — no single place to understand a contact's full history.

  • Recruiters couldn't find existing customers without hunting across disconnected views. Creating a new client meant fighting a form-based workflow that wasn't built for the speed of a live conversation. Duplicate records had accumulated for years — anyone could create a new contact at any time with no validation. Madison's internal term for it was dirty data. The system had earned the name.

  • Recruiters couldn't find existing customers without hunting across disconnected views. Creating a new client meant fighting a form-based workflow that wasn't built for the speed of a live conversation. Duplicate records had accumulated for years — anyone could create a new contact at any time with no validation. Madison's internal term for it was dirty data. The system had earned the name.

  • Managers had no shared picture of pipeline status. No visibility into who owned what relationship. No way to know what their team was actually working on.

  • Managers had no shared picture of pipeline status. No visibility into who owned what relationship. No way to know what their team was actually working on.

  • And underneath all of it was a structural problem the old system had quietly enabled: recruiters are commission-based. Sharing a candidate or a new client meant risking the placement — and the paycheck. The old system let them keep that data opaque. That wasn't a bug. For the reps, it was a feature.

  • And underneath all of it was a structural problem the old system had quietly enabled: recruiters are commission-based. Sharing a candidate or a new client meant risking the placement — and the paycheck. The old system let them keep that data opaque. That wasn't a bug. For the reps, it was a feature.

MY ROLE

Led UX design for Navigator CRM — from contact relationship architecture and Gator DS implementation through story lifecycle design and .NET Blazor handoff.

WHAT I OWNED

Research, UX design, annotated Figma deliverables built on Gator DS components, prototypes with recorded functionality, and user validation to back design decisions. Wrote stories across the full lifecycle — from UX research through ready-for-dev, development, QA, and delivery. Collaborated with the PM to define the roadmap, establish the story creation process, and build the Azure DevOps state workflow that governed how work moved through the pipeline.

HOW I WORKED

Navigator runs on .NET Blazor. Every component spec was written for Blazor's rendering model — parameter bindings, state definitions, and responsive behavior across desktop, tablet, and mobile.

WHAT REPS ACTUALLY TOLD US

Before wireframes, I talked to sales reps directly. Four things came up in every conversation.

RESEARCH ARTIFACT - SESSION NOTES

Before any wireframe, I opened a notebook.

Before any wireframe, I opened a notebook.

User flows, ownership rules, ORG-to-ORG relationship types, contact verification logic — all mapped by hand during rep conversations, before a single screen was designed

RESEARCH ARTIFACT - SESSION NOTES

Before any wireframe, I opened a notebook.

User flows, ownership rules, ORG-to-ORG relationship types, contact verification logic — all mapped by hand during rep conversations, before a single screen was designed

"Manual entry is killing selling time."


Reps estimated only 28% of their day was spent actually selling. The rest went to data entry, duplicate cleanup, and hunting across disconnected systems.

"Manual entry is killing selling time."


Reps estimated only 28% of their day was spent actually selling. The rest went to data entry, duplicate cleanup, and hunting across disconnected systems.

"ATS and CRM live in separate worlds."


Disconnected systems forced double entry for every contact. Communication history fell through the gaps. The same prospect in two systems — neither complete.

"ATS and CRM live in separate worlds."


Disconnected systems forced double entry for every contact. Communication history fell through the gaps. The same prospect in two systems — neither complete.

"Dirty data erodes trust in the tool."


Inaccurate records, outdated numbers, duplicate entries. If you can't trust what's in the system, you stop using it entirely.

"Dirty data erodes trust in the tool."


Inaccurate records, outdated numbers, duplicate entries. If you can't trust what's in the system, you stop using it entirely.

"Information is siloed intentionally."


Reps weren't sharing prospect data across teams. The initial assumption was a technical problem. The real reason was something no requirements doc would have surfaced.

"Information is siloed intentionally."


Reps weren't sharing prospect data across teams. The initial assumption was a technical problem. The real reason was something no requirements doc would have surfaced.

INSIGHT THAT IMPACTED THE DESIGN

Reps weren't hoarding data because the system didn't allow sharing. They were hoarding it deliberately — because sharing a candidate meant losing the commission.

This isn't a features problem. It's a behavioral problem. No sharing button fixes a compensation incentive. The design had to acknowledge the tension — not pretend it didn't exist.

This isn't a features problem. It's a behavioral problem. No sharing button fixes a compensation incentive. The design had to acknowledge the tension — not pretend it didn't exist.

That single insight drove every privacy decision in the system. The Private flag wasn't a feature request. It was the design's answer to a compensation problem.

HIERARCHY VISIBILITY MODEL — WHAT EACH USER LEVEL CAN SEE, AND WHY

The tension the design had to resolve.

BUSINESS WANTED

Shared data — Better forecasting

  • Shared candidate visibility

  • Manager oversight

  • Accurate pipeline

  • Cross-team collaboration

REPS WANTED

Protect the pipeline — Protect the commission

  • Own their candidates

  • No management surveillance

  • Fast entry during calls

  • Control over visibility

PAYROLL RESOLVED

Accuracy without recruiting access

  • Accurate customer data

  • No pipeline visibility

  • Same UI, scoped by permission

  • No separate build

DESIGN RESOLVED

Activity transparency — Pipeline privacy

  • Private flag on contacts

  • Visibility toggle on relationships

  • Notes visible — pipeline protected

  • Permission-based scoping

DESIGN DECISIONS

Every decision traced back to a finding.

Five distinct design choices — each one a direct response to something we heard in the field or found in the system.

DECISION 1

Quick-add panel — designed for the speed of a phone call.

QUICK-ADD-SLIDE-IN CONTACTS LIST STAYS VISIBLE DURING CALL

FINDING

Reps generate leads live on calls. Thirty seconds, limited information. They cannot stop to fill twelve fields while someone is talking.

INSIGHT

Partial records at point of entry are intentional — not a data quality failure. Reps enrich detail as prospects move through the funnel, not all at once.

DESIGN

Slide-in panel keeps the contacts list visible — no navigation break mid-call. Minimal required fields. "Save and Open" creates the record now, lets the rep return for detail later. The contact is placed correctly in the ORG hierarchy immediately — no orphaned records.

DECISION 2

Cards over tables — a layout decision that was also an architectural decision.

CARD EXPLORATION - ORG STRUCTURE - ADD ORG & PERSON

FINDING

Early-stage records are sparse by design. A data table of empty cells signals bad data — even when the record is intentionally minimal at first-call capture. And the CRM needed to work across screen sizes without rebuilding layouts for each one

INSIGHT

Multiple layouts were explored and rejected. The two-column card layout won on three counts: partial records look intentional, the layout adapts across screen sizes without a rebuild, and cards can change without touching the underlying structure. The layout choice was also an architecture choice.

DESIGN

Cards throughout the CRM. Prospect records, customer records, org entries — all render cleanly from first-call capture to fully qualified customer. The pattern holds at every lifecycle stage and scales across desktop and horizontal tablet without a layout rebuild.

DECISION 3

Duplicate detection at point of entry — before bad data is created.

Four states of the validation flow. The Private flag on the third panel is the commission tension made visible in the UI — a match exists, but its details are protected.

FINDING

Duplicate records and inaccurate contact data had eroded trust in the CRM. Reps stopped relying on it because they couldn't trust what was in it. Madison's own term for the accumulated bad data was dirty data — the name stuck because it was accurate.

INSIGHT

Fixing dirty data after the fact is harder than preventing it. The check needs to happen at creation — not during a quarterly cleanup sprint.

DESIGN

Real-time duplicate detection surfaces matches while the rep is still typing. When a match is marked Private, the system shows it exists without exposing the protected details — data integrity enforced without forcing reps to reveal proprietary relationships. That single rule required product owner sign-off. It touched commission territory directly. During limited release, SQL Server scripts confirmed a reduction in duplicate records — the UI gate was preventing entries the old system would have accepted.

DECISION 4

Card layout as relationship architecture — the power of the CRM made visible.

Multiple structural models evaluated before landing on the hierarchy tree. Complexity made navigable without exposing the underlying data model.

FINDING

Staffing relationships are complex. One salesperson can have connections to multiple org levels, branches, and departments simultaneously. The existing system had no way to model this — reps carried the org structure in their heads.

INSIGHT

A card isn't just a UI component — it's a node in a relationship graph. The card pattern makes the data model visible without exposing the technical complexity underneath it.

DESIGN

Three representations were evaluated before landing on the hierarchy tree. Flat table variants made cross-division relationships readable as data but invisible as structure. For a rep managing an account like ESI — East, Mid, and West divisions each with multiple city branches — reading a tree versus scanning a table was the difference between understanding the account and not. The Org Summary embedded directly in the contact record. No separate navigation required.

DECISION 5

Story structure — building a shared language between design, dev, and QA.

Workflow designed with project manager - Story, Tasks, Bug Workflows

FINDING

Developers were filling in story gaps their own way. QA had no consistent baseline to test against. Stories stalled at handoff because design and dev hadn't agreed on scope before work started. The process was creating rework that showed up mid-sprint — the worst time to catch it.

INSIGHT

A story that can't be tested isn't ready. A story that needs design clarification during development wasn't finished when it left design. The acceptance criteria needed to be written at the level where QA could test directly against them — not interpret intent.

DESIGN

Working with the PM, I designed the story structure and Azure DevOps state workflow. Explicit acceptance criteria reduced developer questions during active sprints. Every kickback was documented with a written reason — creating a traceable record instead of a verbal loop. Stories moved through defined states in sequence. Junior developers could implement complex stories without waiting for design clarification. Design and dev aligned on scope before stories entered the sprint — not after work had already started.

OUTCOMES

A governed, relationship-aware CRM — consistently delivered across Navigator on .NET Blazor.

Navigator went to limited release. The full org wasn't on it yet — but what the limited release showed was enough.

Duplicate entry prevented at point of creation

the UI gate blocked records the old system would have accepted. SQL Server scripts confirmed the reduction during limited release.

Account structure visible to management

for the first time org hierarchy, relationship ownership, pipeline status. The mental models that had lived only in individual reps' heads were now in the system.

Commission tension resolved through design

the Private flag gave reps protection and the business transparency, without forcing a choice between them. That was the hardest problem in the product and it shipped.

One UI, three user groups, one codebase

payroll was designed for through permission-based scoping. No separate build required. Dev burden stayed contained.

The story lifecycle and Azure DevOps workflow outlasted the individual stories. The process didn't just ship Navigator — it gave the team a repeatable way to work.

PROJECT GALLERY

From org modeling to governed contact architecture

User Flow — View, Add & Edit

Opportunities Model — One Org, Multiple Relationships

Layout Exploration — Two-Column View/Edit/Add

Hierarchy-Visibility-Model

Relationship Diagram Sales Rep

Relationship Diagram Org to Rep

Add Contact Default Flow

Add Person and Contact At Same Time

Quick Add Workflow

Wireframes Notes- Sales Rep

Wireframes Notes- Sales Manager

Wireframe Notes - Corp Info

Quick Add Person & Org

Quick Add Person Dialog

Quick Add Org Dialog

Org Detail View

Org Add Link

Org Link Added

Person Detail View

Person Add Relationship

Person Relationship Added

What I'd do differently

Involve .NET Blazor engineers earlier in component review. Gator translated well into Blazor, but some interaction patterns around data binding and progressive disclosure required revision once server-side rendering constraints were flagged. Earlier joint reviews would have caught those gaps before handoff — and before stories had already entered the sprint.