Back to portfolio

Case Study

Heurizztik

A rejection for "not enough research experience" became the question this tool answers: what if the heuristic pass happened before a single participant was recruited, so every hypothesis a researcher tests is already grounded, not guessed?

RoleDesigner and developer
Year2026
StackReact, TypeScript, Gemini API
ContextSheBuilds on Lovable hackathon

01 / Context

The problem was not a lack of design instinct. It was a lack of infrastructure.

I applied for a UX researcher role and was rejected for not having enough work experience. What the rejection made visible: I had been working as a designer at a startup in beta, with no dedicated researcher, no recruiting budget, and sprint cycles that moved faster than any study could close.

Every untested assumption that shipped was a team problem, not just a personal one. Engineers were building against guesses. PMs were escalating UX issues that a 30-minute heuristic review would have caught weeks earlier. The research gap had a cost, and it was not abstract.

Heurizztik is the response to that situation. Not a replacement for user research. A way to make the recruiting budget go further by doing the heuristic work before a single participant is recruited.

The constraint Cannot skip research but cannot afford to run sessions every sprint. The tool is not trying to replace user research. It is trying to make the recruiting budget go further.
Who else needs to read this Findings legible to a PM. Test scripts exportable to UserTesting, Maze, Lyssna, or Fable. Patterns a team lead can read without prior context.

02 / Approach

Two phases: heuristic pre-screen, then human validation.

Phase 1 is a check against published research frameworks before any real user is involved. Phase 2 is where a researcher closes the loop with actual people. The handoff point between them is the test script the tool generates from flagged findings.

The hypotheses you bring into a session are already grounded. You're not testing random assumptions; you're testing what Nielsen and WCAG flagged as likely problems before you recruited anyone.

Phase 1: pre-screen

Upload design
AI checks heuristics
Findings + citations
Test script

Phase 2: human validation

Run sessions
Log evidence per finding
Cross-run patterns
Nielsen heuristics WCAG 2.1 AA Cognitive load
What the AI actually does The AI's job is narrow on purpose: image and audience lens in, structured findings out (principle, severity, citation, draft questions). Everything measurable, contrast ratio, tap target size, nav item count, runs against fixed thresholds with no AI involved. The test script and cross-run patterns are rule-based, not generated. I drew that line deliberately: the model infers where research is ambiguous, and code decides where the answer is a number.
Heurizztik analysis screen showing an annotated design with numbered issue pins alongside the results panel with heuristic scores and severity breakdown

Phase 1 output: annotated design with finding pins, heuristic scores, severity breakdown, and cited violations ready to compile into a test script.

03 / Friction

What didn't go to plan.

With no researcher to check against, every call about scope, accuracy, and output format was mine to make and mine to defend. Three of them are worth explaining because the fix wasn't cosmetic, it changed what the tool was allowed to claim.

Confidence without calibration

AI-generated findings felt authoritative even when the inference was speculative. A flat list with no confidence signal trained users to treat everything as equally certain.

Resolution Three tiers: Deterministic (it either passes or fails a threshold), Heuristic (the research says this matters), Speculative (the model noticed a pattern). Each finding card shows which.

Evidence that vanished between sessions

Early builds stored validation evidence against finding IDs only. Re-running an analysis created a new session, orphaning old evidence. The patterns view showed zero validation on findings already confirmed.

Resolution Evidence scoped by session when present. The aggregation layer matches evidence to the run it came from, so cross-run views stay accurate.

Patterns view with no filter

Findings from multiple runs visible at once turned the patterns view into noise. Users could not tell a persistent problem from a one-off flag from a single run.

Resolution Recurring failures surface as a dedicated block above the main list. Validated findings get a distinct badge. Findings with no evidence after two or more runs get a needs-attention flag.
Patterns page showing recurring failures aggregated across multiple runs with trend indicators and validation counts

Patterns page: recurring failures surface with trend indicators, validation counts, and per-run severity history across all runs.

04 / Decisions

Where I had to choose.

Decision 01

Everything stays in the browser, no account required

Cloud sync with a backend database
Larger local storage with manual file management
Browser-based, no backend, capped at 30 runs

Auth and database setup were out of scope for the hackathon timeline. Keeping everything in the browser is synchronous, zero-setup, and fast enough for how the tool actually gets used. The cap enforces a useful discipline: if you are reviewing the same design thirty-plus times, you probably need something other than history. The tradeoff is that runs do not follow you across devices, which felt acceptable for a tool designed to be opened, used, and closed quickly.

Decision 02

Test script compiled from findings, not generated fresh from the image

Generate test questions directly from the design image
Compile questions from per-finding draft questions already in the analysis
Let the researcher write questions manually with AI suggestions

Each finding already includes draft validation questions from the heuristic pass. Compiling those into a script is deterministic and traceable: you know exactly which finding each question is testing. Generating a second round from the raw image would produce questions with no tie back to the flagged findings, making it harder to close the loop when evidence comes back from sessions.

Decision 03

Three confidence tiers instead of a score

A single AI-generated confidence score
Deterministic / Heuristic / Speculative tier per finding
No confidence signal, let severity carry the weight

A number implies precision the model does not have. Three tiers communicate something more useful: whether the finding comes from a measurable rule, a research-backed pattern, or an inference. The tier also determines how a finding travels across disciplines. A Deterministic finding can go directly to engineering. A Speculative finding needs human validation before it influences a roadmap decision.

05 / Validation

Six defects seeded into a test design. How many surfaced?

To measure recall, I ran the tool against a design with known violations: measurable failures (contrast ratio, tap target size), research-backed pattern violations (navigation overload, target placement, convention mismatch), and softer signals (emotional end moment, aesthetic masking).

Deterministic Measurable against a threshold. Contrast ratio, tap target size, navigation item count.
Heuristic Research-backed judgment. Convention violations, cognitive load patterns, information architecture.
Speculative Pattern inference. Emotional valence, aesthetic masking, end-moment quality.
IssueSeeded conditionResult
Hick’s Law9 nav items (threshold: 7 or fewer)caught
Fitts’s LawPrimary CTA 28x28px (threshold: 44x44px)caught
WCAG AA contrastBody text at 3.8:1 (threshold: 4.5:1)caught
Jakob’s LawCart icon top-left (convention: top-right)caught
Peak-End RuleConfirmation screen, no positive close momentpartial
Aesthetic-UsabilityHigh polish masking task-failure riskpartial

Catch rate

Caught (4) Partial (2) Missed (0)

4 of 6 seeded violations surfaced in a single pass. Deterministic checks: 4 of 4 (100%). Speculative signals: partially flagged, which honestly reflects the model's limits.

Time comparison Under 60 seconds from image upload to first findings. A comparable manual expert review: 2 to 3 hours, plus scheduling overhead.
Live session view showing participant observations tagged to heuristic findings in real time

Live session view: participant observations are tagged to flagged findings in real time, connecting AI pre-screen analysis to human evidence.

06 / Roadmap

What I'd change before handing this to someone else.

The tool works for me because I know how the confidence model behaves. Making it work for someone who didn't build it is a different problem, and it breaks into three things.

Reflection

The thing I kept running into was the gap between what the analysis surfaces and what a researcher would actually act on. The confidence tier model was an attempt to make that gap visible rather than paper over it. Whether it works well enough for someone else to use is still an open question.

Building the patterns view taught me something about the difference between data that accumulates and data that means something. Aggregating findings across runs is the easy part. Knowing when that aggregation is producing signal versus noise is much harder. The recurring failures threshold is a heuristic about a heuristic tool, which is a strange position to be in.

The rejection that started this is still the right framing. Not because the tool proves I can do research, but because building it made the infrastructure problem visible in a way that a project brief never would have. Whether I understood the problem well enough to build something coherent: I think yes. The roadmap is doing the honest work of saying where it isn't finished.