Redesigning qualitative data management for impact foundations
Stories 2.0
OVERVIEWMy role
Research
Product Design Lead
Team
Product Manager
Engineering
Client Management
Company
UpMetrics
BRIEFFoundations could collect stories directly in the platform, but had no way to label, organize, or analyze them once they were in — so anything beyond simple storage got manually exported to Google Sheets.
I led design on a full rebuild — story creation, tagging, and a real path into Advanced Analytics — that closed the gap and helped retain a major at-risk client.
Timeline
6 weeks
The Problem
Foundations could enter stories directly in the platform — that part worked fine. The gap was afterward: no effective way to label, organize, or analyze that data once collected.
A second, distinct gap: tagging and goal/indicator assignment already existed in the legacy version, but there was no way to categorize, reorganize, edit, or delete tags. For the at-risk client specifically, this meant an ever-growing, unmanageable flat list with no governance.
Anything beyond simple storage got manually exported to Sheets — a real operational bottleneck, not a story-creation problem.
The stakes were explicit: a major client was at risk without a fix.
My Approach
Two research touchpoints, not one:
I protected this order deliberately — first-contact confusion can't be recaptured once someone self-teaches the interface.
5 participants · 3 organizations · real workflows, not synthetic tasks.
Also grounded in real usage data, not just impressions: audited Ford's actual tag usage (136 tags → cut to 81 after removing low-use ones) to recommend concrete taxonomy limits — 13–15 groups org-wide, max 15 tags per group.
Finding 1Tags meant different things to different people
Lingo Live Admin capturing client information for a new program.
I predicted this risk before testing began. What I found wasn't confusion — it was disagreement:
"The groupings help me make sure that we're tagging all the things appropriately."
— Kerry, wanting consistency
"It would also be helpful to have just one umbrella, Detroit, regardless of where all of those different buckets."
— Carly, wanting both
This became a real product conversation, not just a design fix. I presented this finding directly to the team: "Users universally expect a tag to mean the same thing regardless of group, the opposite of how the system works." Jourdan's response was a genuine admission — the system was "a blend of two different solutions." Tyler, engineering: "We didn't really implement it the way tags are usually done." The team didn't resolve it in that meeting — it got escalated as a product decision. My research is what surfaced the internal admission that the system was inconsistent.
No clean fix existed. My call: keep codes category-scoped, but let Advanced Analytics roll up across categories — and flag the deeper tension for further product decision rather than resolve it alone. The design iterated in stages: a first-time explanatory banner and inline group-membership display, then duplicate-detection errors and concrete impact messaging on deletion, then a final settled behavior — deleting a category deletes its codes entirely, with no "move to ungrouped" fallback.
Worth being honest about: that final behavior doesn't fully match what most testers wanted — Kerry and Carly both leaned toward preservation. Shipping it anyway was a real tradeoff, not a clean win, and I'd rather name that directly.
"It kind of feels like our current implementation does half of each of these jobs."
— Jourdan, PM
Finding 2The form didn't fit the screen
Lingo Live Admin capturing client information for a new program.
"I can't really scroll here..."
— Eric, unable to see the save button on his laptop
Root cause: fixed-height modal, not viewport-aware. Fix: full-page editing instead of a modal — framed as a curb-cut fix: helps small screens, improves things for everyone. Two related problems got resolved in the same pass: an inconsistent edit affordance (now inline click-to-edit everywhere) and confusion over "link display text" (renamed to "Label," with example text and reordered fields).
Finding 3Bulk editing hid two different states
Lingo Live Admin capturing client information for a new program.
"I would think by me checkboxing them, that's adding them."
— Kerry
The drawer conflated available tags with already-applied tags. Fix: status badges plus a mixed-state checkbox, borrowed from the platform's existing filter pattern. Worth noting: the original pattern wasn't arbitrary — it was built to reduce scanning burden — but testing showed the intent didn't survive contact with real users.
A related but separate issue: Luke needed to merge duplicate tags — a missing feature, not a confusing one. This one's honestly still unresolved as of the latest design review — not everything gets solved in one pass.
Finding 4One date field, three jobs
Lingo Live Admin capturing client information for a new program.
"Is it today's date, or the date of the event? I always remember to ask."
— Onyinye
"The date would reset... and I'd lose the original date."
— Carly, describing real data loss
Fix: "Story Date" for the editable field, with the upload timestamp kept as "Added"/"Added by" — deliberately not "Created," since that wording implies authorship, which doesn't fit a field often filled in by whoever happened to upload someone else's story. Confirmed resolved at the follow-up debrief: Onyinye's response, shown the fix — "Yes, please."
OUTCOMES014 of 5 participants enthusiastically ready
0280% target met
03All four fixes shipped ahead of General Availability
"You're not having to also buy the other qualitative coding software."
— Kerry
WHAT I LEARNED / WHAT I’D DO NEXT
01Sometimes you have to focus on the right people
Tag identity mismatch had no clean fix — Carly, Kerry, and Luke each held a different, defensible mental model for what a tag should mean, and picking one would have meant overriding real needs based on my own opinion, not signal. So I delivered a precisely scoped question instead of a forced fix, plus a recommendation for exactly which stakeholders needed to own that tradeoff. Knowing when not to hand over a solution is a harder skill than shipping one — and easy to leave out of a portfolio full of clean resolutions.
02Seamless pathway to chart creation
The connective tissue between Stories and Advanced Analytics kept surfacing across findings, and it did get addressed — a direct "Analyze and Explore" button now links from Stories straight into Advanced Analytics with the data table pre-selected. What's still open is carrying the active filter state over automatically, which is where I'd focus next.