EPAM · 2026 · Internal R&D
The UX Pipeline
A design process that can run itself will decide anything you let it decide. The interesting work was never the generating — that is close to free — but deciding what the machine may not decide, and building the stop that enforces it. Six stages from raw research to developer-ready stories, everything checkable checked before a person sees anything.
- 6
- Stages, from raw research to an evaluation plan
- 3
- Choices at the fork a person makes, not the pipeline
- 50
- Test fixtures; a rule without one gets reverted
- 17
- Developer-ready stories from the worked run
-
01
Discovery
Transcripts, tickets and briefs become themes, each carrying verbatim quotes and declared gaps.
→ themes, quotes, corpus -
02
Strategy
Themes become personas and a current-state journey; the problem becomes How-Might-We statements.
→ personas, journey, HMWs -
03
Ideation
Each HMW gets features scored on reach, impact, confidence and effort, plus two or three directions.
→ scored backlog, directions
The pipeline proposes directions and is forbidden from choosing one. Direction, platform and design system are all picked by a person, and the choice is recorded on the run.
-
04
Wireframe & IA
The chosen direction becomes a sitemap and page specs — every state, every breakpoint, accessibility.
→ page specs, Figma prototype -
05
Delivery
Pages become stories a developer can pick up: Given/When/Then, accessibility, analytics, microcopy.
→ stories, microcopy -
06
Evaluation
The claims the first five stages made become a test plan and a measurement plan.
→ test plan, metrics
Three judgments I kept for a person
And what it takes to make a refusal stickNaming the exceptions is easy and worth little. The work is building a system where the exception cannot quietly be skipped the first time it is inconvenient.
-
The bet
Stage 3 produces two or three whole directions and is forbidden from picking one. Direction, platform and design system are chosen by a person, and the choice is written into the run.
Recorded, not buried in a prompt -
Yes, or revise
Every stage ends at a human approval. Approve and the artifact is persisted; ask for a revision and the feedback becomes that stage's next input.
The only gate that can change the brief -
Overriding a rule
A reviewer can overrule a validator. What they cannot do is edit it to make the complaint disappear — the override is recorded on the run, errors intact.
Override and weaken are different acts
The fork mattered most. A direction is a bet about how to solve the problem, not a visual theme, so it is a real stop rather than a default with an opt-out — and part of the cache key, so re-entering an unchanged stage returns what the reviewer approved rather than a generation that has quietly drifted.
The Stage-2 contract permitted exactly two personas; the run below carries three, because all three users were interviewed directly. The validator was not modified — it still reports both errors, recorded as an authorised override. Loosen it in the moment and the record would show a clean run, with no trace that a judgment had been made.
The evidence spine
The one rule the rest hangs offNothing downstream may reference something the upstream stage did not produce. Applied at every boundary, that single constraint is what the pipeline is — and each link below is a check that runs before any human sees the artifact, not guidance in a prompt.
- A verbatim quote An exact substring of the research corpus — not a paraphrase, not a tidy-up.
-
A theme
Carries its quotes, and its
frequencycannot exceed the number of sources the corpus has. -
A persona
Names the theme it is
grounded_in, and that theme has to be one Stage 1 produced. - A How-Might-We Reframes exactly one theme. Every feature in the backlog answers exactly one HMW.
- A page Appears in the sitemap, and its primary journey has to be reachable by walking the prototype as a graph.
- A story Resolves to a real persona and a real page; every page is covered by a story carrying accessibility criteria.
- A metric Declared at ideation, planned exactly once in the evaluation plan. Declared and never planned for is never declared.
This is what makes the output arguable. Disagree with a theme and you can follow it back to the sentence someone actually said, so the disagreement is about evidence rather than taste.
Two gates a machine can run, and one it can’t
Structure, then honesty, then judgmentEvery stage passes the same three checks. The split between them is the part I spent longest getting right.
-
Tier 1 — structural
Deterministic Python. Schema, ranges, the verbatim-substring check, every link in the spine. It recomputes the scoring arithmetic rather than trusting the number it was handed.
Cannot be argued with -
Tier 2 — rubric
Three to six weighted dimensions per stage, scored by a model told to read the artifact as if someone else wrote it. Every score cites evidence: a quote, a named field, or a named absence.
Catches what parses but isn't honest -
Then a person
Reached only once the first two pass, so human attention is never spent on a stage that failed arithmetic. What they read is Markdown, written to be read.
The gate the other two exist to protect
Structure goes to Tier 1, honesty goes to the judge. A validator can prove a quote is real; it cannot tell you whether six themes are six themes or one theme written six ways. A judge can, and cannot be trusted to count. Asking either to do the other's job is where this kind of system quietly rots.
A failure is not a dead end: the error list becomes the next attempt's input. A stage gets two attempts, and a third failure escalates to a person rather than retrying.
What each stage enforces, and what it judges
| Stage | Enforced deterministically | Left to the judge |
|---|---|---|
| 01 discovery | Quotes are exact substrings; every source opens with a participant identifier; a corpus block names method and participant count |
Whether the declared bias is a real bias, and whether severity tracks consequence |
| 02 strategy | Two or three personas, exactly one primary; each grounded in a real theme; a four-to-seven-stage journey | Whether a third persona is supported by the research, or padding |
| 03 ideation | Every feature answers one real HMW and carries a success metric with a name and a target; the scoring arithmetic is recomputed | Whether the metric measures the outcome or just feature usage |
| 04 wireframe | Contrast cites a ratio or two named tokens; touch targets cite a measurement; no two pages share an accessibility block; all ten heuristics reviewed | Whether the heuristic findings are about this design or would fit any product |
| 05 delivery | Every page covered by a story with accessibility criteria; stories that write data carry analytics events | Whether the criteria came from that page's own spec or from a generic checklist |
| 06 evaluation | Tasks resolve to real journey stages and pages; every metric planned exactly once; unknown baselines declared | Whether the tasks are goals or interface scripts — and whether the plan can fail |
Every rule in that table is pinned by at least one fixture — a deliberately broken artifact that must fail, with the right diagnostic. Fifty run on every push. A rule that lives only in prose gets dropped the first time it is inconvenient.
A run end to end
NexusIntel · 3 interviews · 6 stagesNexusIntel is a sourcing and portfolio-analytics tool for a private-credit desk. Three people were interviewed: a screening associate, a credit risk reviewer and a managing director. The associate described spending the first two days of a deal window on data logistics — roughly seventy per cent finding and formatting, thirty analysis.
That corpus went in one end. What came out:
- 6 themes carrying 18 quotes machine-verified as exact substrings, and 8 declared gaps
- 3 personas, a 7-stage journey with five consecutive high-drop-off stages, and 5 How-Might-We statements
- 11 scored features and 3 whole design directions
- 8 page specs, 11 prototype flows, 17 developer-ready stories, and a test plan whose 11 metrics include 7 baselined
unknown
-
Stage 1 P01 · Screening Associate
Assignment and orientation
Receives an entity name, checks whether the company is public or private, and scopes how much of the structure will have to be built by hand.
Apprehension — the size of the build is clear before any of it is possible Low drop-offOpen the screening queue
The assigned profile shows its remaining window and any blocking input, so a stalled dependency is visible on arrival rather than discovered at the deadline.
01 - Screening Queue Outstanding-Input Tracker -
Stage 2 P01 · Screening Associate
Hunting internal precedent
Searches the CRM, Salesforce and the credit document repository for prior firm contact, and asks colleagues where older coverage might sit.
Low-grade doubt — he cannot tell the difference between no history and history he failed to find High drop-offRead what the firm already knows
Searching the entity returns every prior touch the firm has had with it, its sponsors and its subsidiaries — attached to the profile before any build work starts.
02 - Precedent Search Entity Precedent Timeline · Inbox and Drive Ingestion -
Stage 3 P01 · Screening Associate
Extracting terms from source documents
Parses hundreds of pages of PDF agreements, draws the org chart in PowerPoint, copies financials into the Excel template.
Grinding — the work is legible as effort and illegible as judgment High drop-offReconcile extracted terms
Each extracted term is checked against its source passage, then committed.
03 - Document Extraction Credit Agreement Term ExtractionThe model populates itself
Committed terms fill the profile model, so work begins on leverage and thesis, not transcription.
04 - Borrower Profile Model Template Auto-Population -
Stage 4 P01 · Screening Associate
Modelling and thesis under a live clock
Calculates leverage metrics, writes the investment thesis, emails the deal team for a missing cash flow statement — and waits.
Pressure — the analysis he was hired for begins on the second night High drop-offAnswer the challenge flags, then submit
Flags raised on recurring add-backs and vendor pulls not adjusted for a recent acquisition are resolved before the reviewer ever sees them.
04 - Borrower Profile Add-Back and Pro-Forma Challenge Flags -
Stage 5 P02 · Credit Risk Reviewer
Risk review and verification
Reads total leverage, interrogates the EBITDA add-backs, checks liquidity runway and the guarantee package, skims past the overview entirely.
Guarded — reading for the one thing that will invalidate the rest High drop-offVerify each figure in place
The page opens on total leverage, then liquidity runway, then structure and guarantees — her stated reading order — and every figure resolves to the sentence it came from without leaving the profile.
06 - Risk Review Click-to-Source Provenance -
Stage 6 P02 + P01 · Both
Defect return and rework loop
She fixes minor issues herself to avoid a round of email, returns the file when the leverage math is wrong, and he reworks against a partly elapsed deadline.
Strain on both sides — she is spending her time on his work, he is redoing work he thought was finished High drop-offAdjudicate, thread the defect, sign off
A defect is returned as a thread on the figure it concerns rather than as email. Sign-off is blocked while any first-read figure is unverifiable or any blocking thread is open.
06 - Risk Review In-Profile Review Threads -
Stage 7 P03 · Managing Director
Post-close portfolio monitoring
Receives borrower-submitted covenant figures quarterly, has them keyed into spreadsheets, and scans monitoring dashboards.
Reactive — informed of conditions that have already settled Medium drop-offUnderwriting becomes the baseline
The covenant thresholds extracted at underwriting become the live monitoring reference.
08 - Position Detail Continuous Position Health ScoreAct on a ranked alert
One entry carries the issue, the exposure and the distance to breach. Acknowledge or escalate.
07 - Portfolio Watch Decision-Carrying Alert Feed
Five consecutive high drop-off stages — the run’s central finding
-
01 Screening Queue
/screeningP01The family entry — every page is reachable from here.
-
02 Precedent Search
/precedentP01What the firm already knows about this entity. The RBAC wall between Private Equity and Liquid Strategies is load-bearing on this page.
-
03 Document Extraction
/profile/:id/extractionP01Reconcile each extracted term against its source passage, then commit.
-
04 Borrower Profile
/profile/:idP01The model, populated from committed terms.
-
05 Corporate Structure
/profile/:id/structureP02Ultimate parent, co-issuers, guarantors — which entities are on the hook.
-
06 Risk Review
/profile/:id/reviewP02Opens on leverage, then liquidity runway, then structure. Sign-off is individual, non-delegable and audited.
-
-
-
07 Portfolio Watch
/portfolioP03The attention band, capped at five items. Reached from the queue’s sidebar.
-
08 Position Detail
/portfolio/:positionIdP03Covenant headroom against the threshold extracted at underwriting.
-
ia_coherence to 0.85 — the weakest dimension in a stage that scored 0.89
against a 0.80 threshold, and the information-architecture cost named in the register
above. The eleven flows that wire these pages together are tabled further down.
state_and_responsive
dimension being checked rather than asserted. The last one is the reason the rule exists
— a disabled control that says why it is disabled and when it comes back is a
different design from one that is simply grey.
The reviewer took all three directions rather than one, which is why the design covers every HMW and all eleven features — at the information-architecture cost recorded in the register above.
Stage 1 declares eight gaps against itself. The fourth reads: “No participant gave a volume figure — deals screened, profiles built, positions monitored. Any reach estimate downstream is an assumption.” Reach is what sets the ordering of the backlog, so the run carries that admission forward and scores itself down for it. The second gap is sharper still: the brief’s predictive deal-sourcing feature has no user evidence anywhere in the corpus, and the run says so rather than designing it anyway.
That is the behaviour I was trying to build. A backlog that announces which of its own numbers are invented is more useful than one that reads cleanly.
Then I reviewed it against my own practice
What the second contract changedOnce it was producing complete runs, I reviewed it the way I would review someone else's process. The spine held up. Three gaps were structural.
Accessibility was asserted and never verified. A page needed five non-empty accessibility strings, so “Meets WCAG AA” passed — and the rubric weighted it lowest of five dimensions while design-system fidelity carried the most. Across both completed runs, zero acceptance criteria mentioned accessibility.
Nothing said how you would know it worked. An impact score claims something moves; no stage named what. Features gained a success metric, and stories that write data gained analytics events.
The pipeline only ever generated. Research, strategy, ideation, wireframes, handoff, stop. No critique pass, no test plan, no loop back from evidence of use. A process that only generates cannot be wrong, which is not the same as being right. Stage 4 now self-critiques against the ten heuristics, and Stage 6 exists at all.
The reweighting
Stage 4 is the strictest gate in the system, and accessibility carried the least weight in it. That ordering said something out loud I would not have said.
Solid bar: weight now. Dashed marker: weight before. ▲ marks the two dimensions that also carry a hard pass threshold.
Accessibility went from lowest weight to joint-highest and gained a threshold it must clear on its own, so a stage can no longer average its way past it. Not a claim that it is worth exactly a fifth of the score — a correction of what the old ordering said.
The heuristic pass was the sharpest thing to come out of it. Run against a spec that had already cleared the old gate, it found six real problems:
high User control and freedom · 06 - Risk Review
Sign off was irreversible and unconfirmed. A mis-click ended a
twenty-minute review; recovery was administrative.
medium Error prevention · 06 - Risk Review
Concurrent review was reported at sign-off, not prevented.
medium Consistency and standards · 08 - Position Detail
Two controls named alike, one portfolio-wide and one position-only.
6 findings · all 6 fixed in the spec · 4 heuristics clean with reasons
Two more turned up for a duller reason: no tests, no CI. Two committed artifacts had drifted out of conformance with their own validators and nothing said so — I found them by running the validators, not by reading. Earlier runs were left alone: back-filling today's fields would mean inventing the kind of data this pipeline exists not to invent.
Reflection
Getting a model to produce a persona, a journey map or a page spec is close to free. Getting output you would be willing to hand a developer is entirely a question of what you refuse to accept. One caveat worth keeping: runs are driven through the skills conversationally, and the orchestration graph, though tested, does not yet execute end to end.
What it reinforced for me:
- Decide early which judgments are not the machine's to make, then build the stop that enforces it. A process that never pauses for a person is not faster — it has moved the decision somewhere nobody signed for it.
- Put the rule where it can be enforced. Anything that lives only in prose will be dropped the first time it is inconvenient, and nobody will notice.
- Traceability is worth more than quality. An artifact you can argue with beats a better-written one you cannot check.




