| ID | Deposit Date | Deposit Amount | Remaining Tickets | |
|---|---|---|---|---|
| 1 | 6/19/2024 | $600.00 | 4 | Resume |
| 3 | 12/4/2024 | $400.17 | 6 | Resume |
| 4 | 5/30/2024 | $200.90 | 20 | Resume |
| Date Inquire | Created By | Type | |
|---|---|---|---|
| 6/19/2024 | vorchheimera | Event Info | View Task |
| 12/4/2024 | vorchheimera | Call Back | View Task |
UX Case Study
St. Jude
Raffle
EDC (Enterprise Dream Campaign) is the internal platform behind the St. Jude Dream Home Giveaway. It manages every part of a raffle, from event setup and ticket sales through drawing day, across 40+ markets nationwide.
Overview
Project Overview
The Short Version
EDC was generating more operational failures than it solved. Over three years I redesigned it around three decisions: validate eligibility before anything else, link every ticket to its deposit by design instead of by memory, and keep one record per person. Purchase errors dropped ~60%, and the workarounds that held the old system together disappeared.
The Problem
When I joined, EDC was generating more operational failures than it was solving. Staff had built workarounds for everything, and that told me the real problem was not the interface. It was the flows and the process.
Business Goals
User Goals
My Role
I owned design end to end. I partnered with my PO, BA, and territory leads to keep decisions grounded in real operational needs, staying in the problem through build, QA, and launch. Three years of continuous iteration: research, design, test, ship, repeat. The platform went from broken workarounds to the backbone of a $700M+ program.
Working Across the Org
Territory leads & volunteers
Shadowed live raffles in their markets and turned their workarounds into requirements they could see themselves in.
Call centers
Wrote the purchase scripts and moved zip validation to the first step after hearing the calls it was causing.
Engineering, PO & BA
Built the shared component library together so every design decision was defensible in development cost.
Dream Home leadership
Gave directors live raffle visibility, which kept a three-year redesign funded and prioritized.
Design Constraints
The objective was a clean, uniform experience that could launch quickly. We built a shared component library with reusable elements that sped up coding, simplified developer onboarding, and kept every screen feeling cohesive. For the dashboard, a widget-based architecture made the five-level role hierarchy practical to implement.
Launch fast
New raffles open in new markets on tight timelines. Reusable patterns like the stepper appear across multiple pages, which meant faster coding and easier training.
One system, five roles
Directors, leads, volunteers, and two call centers all work in the same product. Every screen had to show each role exactly what it needs and nothing it doesn't.
Data feeds from outside
An external call center processes purchases in its own UI that feeds into EDC. Flows had to stay correct even for data EDC didn't create.
How the Giveaway Works
Since 1991, local builders have donated a fully built home in each participating market. The community buys $100 raffle tickets, one winner is drawn on live TV, and 100% of ticket proceeds go to St. Jude. The platform I redesigned, EDC (Enterprise Dream Campaign), manages every aspect of a raffle from event setup through drawing day.
Builders donate the home
Community buys $100 tickets
One winner on live TV
100% goes to St. Jude
Children get free treatment
Who Uses EDC
The Challenge
The Operational Failures That Defined Scope
Before any wireframe, I needed to understand how the system worked under live conditions, not just what stakeholders said was wrong. Working alongside staff during live operations, three structural failures kept surfacing.
No Operational Visibility
Directors were making critical in-event decisions without real data. There was no visibility into what the system was capturing, and without knowing what data existed, there was nothing meaningful to surface or display.
What research revealed
Fewer clicks
The #1 request across every user I spoke with. I used it as a hard constraint on every flow.
Always know which raffle you're in
Same interface, different live events. During shadowing I encountered the error firsthand: the interface gave no signal about which event was active.
One-stop shop
Users were context-switching between screens to complete one task. Every key action needed to be reachable from the home screen.
Role-based, easily configurable
Five distinct roles, one system. The permission model needed to flex without developer involvement every time.

Error-Prone Ticket Purchases
The purchase screen was creating problems faster than users could fix them. Observational research during live events revealed a consistent pattern of avoidable entry errors, and every wrong deposit ID meant hours of manual correction after the event.
Entry errors found
Typing errors
The #1 request on this page was address autofill. Users were mistyping addresses constantly and had no assistance to catch it.
Deposit ID linking
Users struggled to remember which deposit a purchase was against. Linking was manual and easy to get wrong, and a wrong deposit ID meant hours of correction after every live event.
Unused fields
The form had many input fields that served no purpose in the actual workflow. The clutter added confusion and slowed users down.
Late zip code validation
Users completed most of the form before being told the ticket buyer's zip code was ineligible. Zip code validation needed to happen first.



Fragmented Constituent Records
Ticket buyers often purchase multiple times, creating many separate profiles. Records were scattered across disconnected systems with no way to reconcile them, so keeping track of a single buyer was nearly impossible.
What research revealed
No single source of truth
Constituent records existed across multiple disconnected systems. Getting a complete view of any one person required checking each system separately.
Duplicate records
The same constituent could exist as multiple separate entries. There was no duplicate detection and no way to merge records once created.
No purchase history or change tracking
Purchase history couldn't be viewed alongside contact info. There was no record of what changed, when, or by whom. Once edited, the original data was gone.

Solution
What We Built
Role-Based Dashboard
A widget-based home screen where every key action is reachable in one place. Widgets show or hide based on the user's role, so a director sees live raffle performance while a volunteer sees purchase tools. A persistent context banner always shows which raffle you're working in, ending the wrong-event errors I saw during shadowing.
Redesigned Purchase & Audit Flow
Validation order was the core design decision: zip eligibility first, so buyers are never walked through a purchase they can't complete. Each purchase type got its own flow carrying only the fields it needs, with address autofill catching typos at entry. Cash and check purchases now start from the deposit itself, so tickets link to the right deposit ID by design instead of by memory, and leads audit inline with every change logged rather than exporting to Excel. The full flow map below shows how much work this removed.
Unified Constituent Record
One profile per person, with purchase history and contact info side by side. Duplicate detection catches repeat buyers at entry, and a full change log records what changed, when, and by whom, so original data is never lost.
Configurable Permissions
A five-level role hierarchy that admins manage themselves. Adjusting what a territory lead or volunteer can see and do no longer requires developer involvement, which meant new raffles and new markets could launch without engineering in the loop.
Solving Deposit ID Linkage, Mapped End to End
Cash and check purchases split into two flows once the deposit lands. I mapped them side by side to see where the real pain points were. A few jumped out fast: deposit IDs that never linked, fields no one used, and audits that pushed leads into Excel just to find what went wrong.








Design
Before & After
Each area went through the same loop: research under live conditions, an Axure prototype tested with real system users, then refinement before any build. Prototype testing with live users was the right call before committing to a full build. It validated the direction and surfaced specific refinements every time.
EDC Dashboard
Every widget on the new home screen maps to a research finding. Role-based visibility decides what each person sees, and the persistent event banner came directly from an error I hit myself while shadowing across two live raffles.

Purchase Flow
Validation order was the key decision: zip eligibility first, identity second, payment last. Splitting the flow by purchase type means each screen carries only the fields that type actually needs.

Constituent Record
One record per person was the constraint everything hung on. Duplicate detection runs at the point of entry rather than as cleanup, and the change log preserves original data instead of overwriting it.

Outcomes
What We Delivered
Three years of continuous iteration shipped a platform that powers a $700M+ fundraising program across 40+ markets. The workarounds that defined the old system are gone.
Tracked by comparing correction tasks in EDC before and after the redesign. Address autocomplete, zip validation upfront, and deposit linking eliminated the most common failure points.
Call center staff personally thanked me for moving zip code validation to the start of the flow. Buyers were no longer taken through the full purchase before being told they were ineligible.
Every issue raised in discovery was addressed. Reusable components also meant faster launches, and stakeholders were happy with both the output and the speed.
Next Steps
What's Next
Key Takeaway
"The workarounds were the research findings. Every workaround staff had built was a map to a broken flow."
Staying embedded with the people running live raffles meant I saw the Excel exports, the sticky notes, and the shared logins for what they were: precise descriptions of where the system failed. Designing against the workarounds, rather than the stated requirements, is what made three years of iteration land. Since this project, I start every redesign by cataloging the workarounds before I touch the interface.
Extend the shared component library beyond EDC so other internal fundraising products can launch with the same speed and consistency.
Bring the external call center interface into the same design system, so inbound purchase data follows the same validated flows as everything else.
Build audit reporting that surfaces error patterns across events, letting leads spot recurring problems instead of fixing them one deposit at a time.
Automate duplicate merging on constituent records, moving from detection at entry to cleanup of the historical database.
Interactive Prototype
Try the Purchase Flow Yourself
This is a working model of the redesigned flows: run a scripted credit card purchase with live validation, or create a deposit and watch tickets link to it by design. Every field behaves the way it shipped, down to zip eligibility checking first.