BLAZOR / Madison Resources HR Staffing CRM
Blazor-Native CRM Built End-to-End on the Gator Design System
CORE RESEARCH
FINDINGS
THE PROBLEM
Madison's reps were managing contacts across disconnected views — no single place to understand a contact's full history.
RESEARCH & DISCOVERY
What reps actually told us.
USER FLOW - MAPPED BEFORE ANY WIREFRAMES
OPPORTUNITIES MODEL - ONE ORG, MULTIPLE RELATIONSHIPS
"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.
"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. Initial assumption: 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.
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
BUSINESS WANTED
Shared data — Better forecasting
Manager oversight
REPS WANTED
Own their candidates
No management surveillance
DESIGN RESOLVED
Private flag on contacts
Visibility toggle on relationships
DESIGN DECISIONS
Every decision traced back to a finding.
Quick-add panel — designed for the speed of a phone call.
QUICK-ADD-SLIDE-IN CONTACTS LIST STAYS VISIBLE DURING CALL
Cards over tables — a layout decision that was also an architectural decision.
CARD EXPLORATION - ORG STRUCTURE - ADD ORG & PERSON
Duplicate detection at point of entry — before bad data is created.
DESIGN ARTIFACT — DUPLICATE DETECTION GATE
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.
Card layout as relationship architecture — the power of the CRM made visible.
DESIGN ARTIFACT — RELATIONSHIP ARCHITECTURE EXPLORATION
Multiple structural models evaluated before landing on the hierarchy tree. Complexity made navigable without exposing the underlying data model.
FINAL MODEL
Full org hierarchy with Private contacts visible as nodes. Relationship exists — details protected.

IN PRODUCT
Org Summary embedded directly in the contact record. No separate navigation required.
MY ROLE
Led UX design for Navigator CRM — from contact relationship architecture through Blazor component specs and Gator DS implementation.
WHAT I OWNED
Full scope — contact taxonomy, relationship visibility, progressive disclosure, wireframes, Blazor component specs, and design system application across all Navigator CRM modules.
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.
THE CONSTRAINT
Gator DS governed all pattern decisions. Card layouts, filter patterns, status badges, and command surfaces were pre-established. Specs had to be precise enough for Blazor implementation without back-and-forth.
Navigator CRM was built on the Gator Design System — the atomic component library created for Madison Resources earlier in the engagement. Every UI pattern drew from Gator's governed component set, specified with Blazor binding expectations and integration guidance in mind.
PROCESS
From contact taxonomy and relationship mapping to .NET Blazor handoff.
1
Discovery & Understanding the Problem
Audited Navigator contact views, interviewed staffing coordinators, and mapped where the current system created friction.
2
Mobile-First Responsive Strategy
Established a mobile-first foundation as a deliberate architectural decision — every layout and component designed for mobile constraints first.
3
Card-Based Component Architecture
Designed the relationship model connecting contacts, companies, placements, and coordinators into navigable flows with progressive disclosure.
4
Card-Based Component Architecture
Built a card system using Gator DS components giving coordinators scannable, action-ready views.
5
UX Architecture & Prototyping
Established a layout system that brought scattered controls back into proximity with the data they affected.
6
.NET Blazor Implementation Support
Delivered Gator-aligned, implementation-ready specs for .NET Blazor, staying in through integration to close the gap between design and shipped behavior.
RELATIONSHIP VISIBILITY
Contact context at a glance
The core challenge was surfacing relationship depth — who a contact was connected to, their placement history, and current status — without requiring coordinators to navigate across multiple views. Progressive disclosure solved it.
GATOR DS IN PRACTICE
Governed components, faster delivery
Every pattern decision was grounded in an established system. Card layouts, filter patterns, status badges, and command surfaces were all pre-governed. Engineering moved faster because the design was already consistent and documented.
"Gator wasn't just a library — it was institutional knowledge embedded in components."
AGILE PROCESS
Building a shared language between design, dev, and QA
Developers were filling in story gaps their own way and QA had no consistent baseline to test against. Working with the PM, I designed the story structure and Azure DevOps state workflow — explicit criteria gave QA something to test directly against, kickbacks became documented and traceable, and stories stopped stalling at handoff.
PROCESS IMPROVEMENTS
Fewer mid-sprint questions
Explicit criteria reduced developer questions during active sprints — decisions were made before work started, not during it.
QA had a clear baseline
Acceptance criteria were written at a testable level — QA tested against the story directly rather than interpreting intent.
Kickbacks became traceable
Every kickback was documented with a written reason in Azure DevOps — creating a clear record rather than a verbal loop.
Consistent pipeline movement
Stories moved through defined states in sequence — stalls at handoff points became visible and addressable.
Junior devs worked independently
Detailed criteria for complex stories meant junior developers could implement without waiting for design clarification.
Less back-and-forth at handoff
Design and dev aligned on scope before stories entered the sprint — reducing revision cycles after work had already started.
WORKFLOW DESIGNED WITH PROJECT MANAGER — AZURE DEVOPS WORK ITEM STATES
Story Examples - Click to View
OUTCOMES
A governed, relationship-aware CRM experience — consistently delivered across Navigator on .NET Blazor.
Data entry shifted from a free-for-all to a governed process — duplicate records blocked at point of creation, not cleaned up after the fact.
Account structure visible to management for the first time — replacing mental models that previously lived only in individual reps' heads.
Commission tension resolved through design — the Private flag gave reps protection and the business transparency, without forcing a choice between them.
Contact type ambiguity eliminated — every person placed correctly in the org hierarchy at point of entry, with role and relationship explicit.
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.


































