Case Study
Decisions were validated at the most expensive possible moment — by paying customers, after shipping. I spent a decade building the infrastructure that made evidence-based product decisions possible. Every intervention — wireframes, behavioral analytics, a research program, a methodology, an SDLC redesign, developer enablement, the team — was a response to a specific gap in the feedback loop.
Before
After
Decisions at the company were validated at the most expensive possible moment — by paying customers, after shipping. We learned the cost firsthand when a product launched whose core design philosophy was wrong: the PM had designed the workflow without user testing, end users rejected it, and the fix wasn't a tweak — it was rethinking the entire workflow. No UX discipline existed. Developers built products and shipped them; customer liaisons relayed what users had to say after launch. Every product was built in isolation, with no central design thought and no UI consistency across the suite.
An agile organization with no history of incorporating user feedback. I had to earn buy-in across development, QA, product, and architecture. There was no top-down mandate to fall back on. I built most of the work alongside live product delivery, on internal and confidential systems.
Before the practice existed, the organization had no mechanism for knowing whether a product decision was right or wrong before a client complained. After, it did. Where the practice took hold, behavioral evidence replaced assumption: analytics coverage at over 90% across the suite, a research program producing end-user testing on a multi-week cadence, hypothesis-driven design methodology adopted where teams could absorb it, an SDLC redesign that surfaced the organizational limits of process change, and the team that delivered all of it.
Decisions at the company were validated at the most expensive possible moment — by paying customers, after shipping. I lived it early: we launched a product whose core design philosophy was wrong. The PM had designed the workflow without user testing, end users rejected it on contact, and the fix wasn't a tweak — it was rethinking the entire workflow. The investment was sunk and the customers were unhappy by the time anyone learned the original idea had been off.
That failure was structural, not accidental. There was no UX discipline, no shared design language, no central thought to challenge any of it — every product was built in isolation from the rest. The decade I spent building the practice was a sustained answer to that single problem, and every intervention that follows was a response to a specific gap in the feedback loop. The order was strategic, not chronological.
Developers were inventing UI mid-implementation, with no designed target to build against. My title at the time was front-end developer and there was no UX function at the company, so I started producing wireframes and flow diagrams for my own work first — before anyone asked. I needed proof of value before I could argue for anything bigger, and cheap deliverables on my own projects were the lowest-risk way to make the case.
A representative wireframe-and-flow deliverable: connected screens with annotations, decision points, and variant paths laid out in one place. A developer could implement against it directly, with no design call-out needed.
Features came together more cleanly the first time, with fewer late-cycle revisions. Other teams started asking for the same artifacts on their projects, and over time the design work crowded out the coding entirely — the title caught up later. Everything that followed — analytics, research, methodology, team — was built on the room those cheap deliverables earned.
Design prioritization was guesswork because nobody had data on how customers actually used the platform. Instrumenting the apps I was already working on didn't need organizational permission, so I started there — value compounding app by app while the bigger asks (research access, methodology adoption) were still building.
To keep instrumentation portable, I authored a shared analytics-plan template. Every product owner filled out the same workbook before tracking went in. Events were grouped by user intent rather than by layout, and each plan recorded which input method triggered the action (toolbar, context menu, keyboard, drag, footer) — so dashboards could compare adoption across applications without anyone reconciling naming after the fact.
| Category | Action | Triggered from | Value |
|---|---|---|---|
| Shift Operations | Cut | main-toolbar, context-menu, keyboard | — |
| Create | main-toolbar, context-menu, keyboard | — | |
| Delete | main-toolbar, context-menu, keyboard | — | |
| Paste | main-toolbar, context-menu, keyboard | — | |
| Copy | main-toolbar, context-menu, keyboard | — | |
| Drag | grid | — | |
| Drop | grid | — | |
| Assign | grid | — | |
| Recalculate Shifts | action-bar | — | |
| Delete All Shifts | action-bar | — | |
| View Options | Change Date Range | main-toolbar | — |
| Date Next | main-toolbar | — | |
| Date Prev | main-toolbar | — | |
| Toggle Scheduled Hours Column | main-toolbar | 0 / 1 | |
| Toggle Daily Summary | footer | 0 / 1 | |
| Toggle KBIs | footer | 0 / 1 | |
| Filter | Filter by Schedule Group | filter control | — |
| Open Job Filter modal | filter control | — | |
| Schedule Operations | Import | menu | — |
| Generate | menu | — | |
| menu | — | ||
| Copy Schedules | menu | — | |
| Other Operations | Unassign All Employees | menu | — |
| Sort Options | Sort options 1–8 | column header / sort menu | 0 = asc, 1 = desc |
General-purpose dashboards gave a wide variety of surface-level information for quickly gauging product performance; deeper reports were available for identifying and troubleshooting specific friction points. More than once, this data led us to re-sequence schedules or reorder priorities as the real usage patterns surfaced.
The reports surfaced things usability testing couldn't: which applications clients actually relied on day-to-day, which features were consistently ignored, how usage varied by client and region, where sessions ran longest (a proxy for where users were working hardest). That data fed directly into design prioritization.
I shipped a plan like this for every major app in the suite and took behavioral analytics coverage from under 10% to over 90%. For the first time, design and product had a reliable picture of what customers were actually doing. What the data couldn't tell us was why — the next move had to be qualitative.
The practice was outrunning my capacity to deliver it. I hired, onboarded, and grew the designers who carried it forward — defining the roles, writing growth plans, running performance conversations, and making the case for headcount each time leadership wasn't sure UX needed to scale with engineering. Every new designer went through a structured 30/60/90 onboarding that ended in a 30-day embed with a product team; after that, they could carry the practice into a project on their own.
I was always impressed by his ability to help and push others to reach their full potential. While working under his supervision, I could complete some of my best work and gained valuable field experience.
Harish Vellore, UX Designer, direct report
Analytics told us what; research was the only way to learn why. The company had never tested with end users, and getting access to them was a multi-year organizational-change problem — so I built the program in phases, each one delivering value on its own.
To make the research reusable, I introduced role-based personas — a regional manager forecasting next month's labor, a sysadmin debugging punch corrections, a line-level housekeeper clocking in from a hallway — and teams carried them from one project to the next instead of rebuilding them each time.
Four role-based personas for the UniFocus suite — each grounded in field research, reused across projects so every team started from a shared, validated picture of who they were designing for.
The reach gap was simple: the UX team was never large enough to staff every project at the depth the work deserved. The strategic call was to extend design consistency and sensibility through channels — documentation, rituals, shared standards, internal writing — instead of through bodies. Each channel reached a different audience and did a different job.
Together, these channels let design consistency and sensibility reach projects, decisions, and conversations the UX team itself never directly touched.
By this point the research program was producing better evidence, the team was bigger, design quality was visibly improving — and management was telling me UX was the bottleneck. My read was the opposite. Product planning wasn't looking far enough out to account for a proper design process, and UX was the only function being asked to compress around an already-set delivery date.
The direct fix sat at the PM's part of the cycle, but that wasn't a fight I could win head-on without giving PMs a tool they actually wanted to pick up. So I went looking for methodology that could meet engineering where it was. Jake Knapp's Sprint and Lean UX both offered compressed, hypothesis-driven cycles that fit inside engineering's planning horizons — I adopted both, adapted them for enterprise SaaS, and wrote a facilitation playbook teams could pick up and run.
I got the methodology adopted where teams could absorb it. It didn't fully resolve the mismatch between product planning and what design needs to do its job — that problem needed a different kind of intervention.
Methodology inside the design phase only goes so far without a surrounding process to support it. When the VP of Development asked me to help redesign the broader software development lifecycle, the SDLC was the lever big enough to move the planning behavior I couldn't change project-by-project. I interviewed staff across every functional role the SDLC touched, pulled the existing JIRA workflows onto a single canvas, and iterated the document and diagram with the VP across multiple versions.
The earliest draft on hand is v1.5 (October 2019): Lean UX sits on the canvas but isn't yet wired into the surrounding phases. By v4.3 — the version that landed — Lean UX had moved inside Requirements & Design as the engine of how design happens, with explicit research inputs, formalized per-iteration deliverables, and MVP/MMF branching in Deployment. The bottleneck I'd diagnosed earlier was visible as a sequence of phases with explicit time inside each.
v1.5 (October 2019). Lean UX is on the canvas but not yet connected to the flow.
v4.3 (the version that landed). Lean UX inside Requirements & Design, with formalized per-iteration deliverables and MVP/MMF branching in Deployment.
Explore an interactive horizontal version of v4.3 →
Full adoption didn't happen. Upfront planning conflicted with the delivery pace engineering was measured on, and developers experienced the process as UX work being distributed to them rather than owned by UX. Both objections were legitimate. I carried forward a pragmatic version of the approach — meeting teams where they were rather than asking them to absorb the full framework. Process change only sticks where the organization is ready for it.
Running in parallel to the practice work, the company's Java suite was being rewritten in React. Alongside that rewrite, I authored a set of shared standards (a responsive column grid, size classes, canonical layouts, full breakpoint specs) that every product team designed against. Those standards are part of the design system story, not the practice story, so the detail lives in the companion case study: UX Governance at Scale. I built the practice and the standards together. The methodology, research, and design enablement described in this study are part of what made building those standards possible.
Before vs. after
Before the practice existed, the organization had no mechanism for knowing whether a product decision was right or wrong before a client complained. After, it did. The function itself was the durable result — and what follows is what it produced.
Mobile app redesign: App Store rating ~2.0 → ~4.5
This was the case where the practice came together end-to-end on a single product — most of the techniques the practice had introduced were applied to one effort, and App Store ratings for both the iPhone and Android versions climbed from roughly 2.0 to roughly 4.5 out of 5.
Analytics steering a rewrite
A PM had sequenced a tech rewrite to start with the legacy product's lowest-usage sections. I pulled the legacy analytics, showed him the sequence was upside-down, and we re-sequenced the work to follow real usage rather than assumed priority. A small example, but representative — turning roadmap assumptions into evidence-graded decisions before they became sunk cost was the practice's everyday job.
Analytics coverage: <10% → >90%
Suite-wide behavioral analytics, with a shared template and common vocabulary, gave design and product a way to prioritize against real usage instead of roadmap assumption.
What didn't change
The PM-level discipline of closing the loop on every feature didn't fully take hold — that kind of cultural shift needs buy-in further up the chain than design alone can deliver. By the time I left, a Director of Product had been hired and product concerns finally had a C-suite seat.
Designing a rigorous process is easier than getting an organization to absorb its overhead. Where the organization wasn't ready, the better play was to meet teams where they were, prove value on one project, and let adoption spread on the strength of evidence.