Case Study

Stock Alarm

Helping investors scan the market to uncover investment opportunities.
Role
Competitive Analysis, Information Architecture, Wireframing, Prototyping, Usability Testing
Focus
Design a scan feature
Tools
Figma, Procreate
Team
Joy DeHaven, UX Designer
Shiva Malavika Ganesh, UX Designer
Jason Sutherland, UX Designer

Stock Alarm

Monthly Active Users
25k+
App Store Ratings
7.2k+
Rating
4.8

The Brief

Stock Alarm is a mobile and web application that lets traders of all experience levels set conditional alerts triggered by live stock price movement. The product had traction with a core user base, but a consistent pattern of feature requests had emerged: users wanted a way to proactively discover new stocks, not just monitor ones they already knew about.

The CTO's vision was precise: a stock scanner that works simultaneously for a first-time investor filtering by price movement and a seasoned trader running multi-variable technical screens. The same product. The same interface. Usable by both.

We had five weeks.

The CTO's vision was precise:
a stock scanner that works simultaneously for a first-time investor and a seasoned trader

The Market Gap

Professional-grade stock scanning tools exist. Bloomberg Terminal is the industry standard and costs approximately $24,000 per user annually. That price point is not an inconvenience for institutional traders; it is a complete barrier for the amateur and semi-professional investors who make up the majority of the market.

Stock Alarm's strategic position was clear: build the tool that Bloomberg's price makes impossible for most people to access. Make it accurate enough for professionals and simple enough for amateurs and people just learning to invest.

The design challenge was usability and democratization. Designing a system complex enough to be genuinely useful while accessible enough that complexity never became the barrier.

Stock Alarm
25k+
subscribers
$20
per month
Bloomberg Terminal
350k+
subscribers
$2,000
per month

The Complexity Problem

The scanner's core interaction was deceptively hard to design. The filter library had 3-4 layers of nested categories. An amateur trader might use two filters, a professional might combine twelve. The interface had to accommodate both without making either feel like they were using the wrong tool.

The tree table we mapped before wireframing made the scale of the problem visible: dozens of filter categories, each with multiple options, each combination producing different results. A thousand users would likely produce a thousand different scanning patterns. The design system had to be flexible enough to support all of them without becoming incoherent.

Managing scope under pressure

At the kick-off call, the client outlined their anticipated scope: a set of screens they believed would constitute the MVP. That scope was a starting point. It evolved significantly as we understood what the experience actually needed to be.

The five-week timeline was real and immovable. Development was ready to build as soon as designs were approved. Every decision about what to design, prototype, and test was made in the context of a deadline that couldn't move.

That kind of constraint is its own design problem. The question isn't just what's the best solution, it's what's the best solution we can fully validate and hand off in the time we have?

Sketching and wireframing

We worked through how users would build scan criteria, review their parameters, initiate a scan, and handle results — including edge cases like scans returning tens of thousands of results, or none at all.

Every screen opened new questions. If users were investing significant time in building complex scans, they'd want to save and reuse them. What does that management flow look like? What actions make sense after results are returned?

We voted quickly on directions, presented wireframes to the client, and divided ownership of the primary screens for high-fidelity development.

My screens
Scanner (populated), Build Scan, Results (empty)
Shiva Malavika Ganesh
NUX Flow, Review, Results (option 1)
Jason Sutherland
Scanner (empty), Loading, Results (option 2)

The structural question

Midway through high-fidelity design, something wasn't adding up.

I pulled back from the individual screens and looked at the full information architecture. The scanner was being designed as a standalone tab in the navigation — a separate destination users would go to when they wanted to scan. But the existing app already had a search feature, and search and scan are not, in practice, meaningfully different behaviors. Both are ways of finding stocks you don't currently know about. Both use criteria to surface results. The primary difference is that scanning is search with saved, customizable filters.

The implication was significant:
we were building a new tab for a behavior that users would naturally look for somewhere else.

I brought the idea to the team: restructure the information architecture to combine search and scan into a unified discovery experience. Keep the scanner's full filter capability, but integrate it into the existing search paradigm users already understood. Long-term, it would be a more usable product. It would also create natural discovery of the scanner feature for users who were already comfortable with search.

The team heard it and considered it. Given the five-week deadline and the development team already aligned to the existing scope, we made the pragmatic call to proceed with the original architecture.

That decision was the right one for the engagement, but not the right one for the product.

Building the prototype

Even knowing the IA had structural limitations, the prototype needed to be as faithful to the real experience as possible, especially for the Build Scan screen, where users would interact with the nested filter menu.

I built a component system for the accordion interactions; multiple layers of nested submenus that needed to feel realistic enough to generate valid usability data. This was technically demanding Figma work: the auto-layout behavior of deeply nested components creates compounding complexity, and some accordions performed flawlessly while others had rendering issues that obscured content beneath them.

The prototype was not perfect, but it was rigorous enough to surface what we needed to know.

Usability testing

Five participants. Moderated sessions. The primary test question: given the app, find a way to discover new stocks based on custom criteria.

The results were unambiguous.

4 of 5 participants navigated immediately to the search screen
They didn't hesitate or explore,they went directly to search because that's where discovery behavior lives in their mental model. The fifth participant said he would have gone to search first but knew we were testing the scanner.

The testing also surfaced five additional usability issues in the scanner experience itself.

That's 5 of 5 users telling us the same thing:
the scanner doesn't belong where we put it.

What testing proved

When 4 of 5 users independently navigate to the same wrong location looking for a feature, that's not a discoverability problem, it's an architecture problem. The usability testing didn't uncover a flaw in our design. It validated a structural observation I'd made before the test sessions ran.

That means the issue isn't fixable with better labels or a more prominent entry point. It's fixable with a restructured IA that puts search and scan in the same place; where users already expect to find both.

The recommendations report made this case explicitly. What Stock Alarm does with it is their decision. Our job was to make sure the evidence was undeniable.

What we delivered

V2 Prototype
Full interactive prototype incorporating client feedback and first-round usability findings, with the Build Scan screen's accordion system functional enough for realistic testing.
Usability test artifacts
Session recordings, structured notes, and a formal report documenting all six issues identified, severity ratings, and reproduction steps.
Recommendations report
A prioritized set of design recommendations for the development team, including both the immediate UI fixes addressable within the existing architecture and a documented case for the IA restructure as a future-state consideration.

Lessons learned

On advocacy
The IA restructure was the right call for the product. I raised it, made the case, and accepted the outcome. What I'd do differently: surface that kind of structural question earlier, before the team is invested in screens built on the existing architecture. The earlier a foundational question is asked, the lower the cost of answering it honestly.
On prototyping fidelity
I spent significant time making the prototype look polished when lower-fidelity wireframes would have generated the same usability insights faster. That time could have bought us an additional testing round and one more iteration before handoff. The right prototype fidelity is the minimum needed to answer the questions you're testing, not the maximum you can build in the time available.
On constraints
A five-week deadline and a ready development team are real constraints that don't disappear because a better solution exists. The most useful thing a designer can do in that situation is deliver the best possible version of the constrained solution while documenting what the unconstrained solution would require. That's what the recommendations report was for.
On being right
The testing validated the IA concern completely. That's not a victory — the product still shipped with the structural issue in place. But it's a data point worth documenting: when something feels architecturally wrong early in a project, it usually is. Learning to surface that feeling as a testable hypothesis rather than a design opinion is the skill worth developing.

Other work

Case Study

NAF Pride

Foster a workplace culture where LGBTQ+ employees can bring their full selves to work.
View Case Study
View Case Study
Packaging & Label design

Boat Box

View project
View project