Skip to content
EE
All work

Voya

TRC case management, made visible

Voya — TRC case management, made visible
Role
Personal project — shelved
Year
2026
Status
Shelved

The problem

A two-sided case-management product for Polish law firms handling Temporary Residence Card applications — an admin dashboard for the firm, a plain-language portal for the client. Built, pitched, and shelved when the prospect turned out to be the wrong customer.

Firms handling residence-permit applications were running them on spreadsheets and WhatsApp. The firm can't see which cases are stalling, and the applicant — waiting on a decision that governs their legal right to stay in the country — has no idea what stage they're at or what's expected of them. The anxiety is the product problem as much as the admin overhead is.

Voya law firm admin dashboard with KPI tiles and case charts
The firm's view: dense, quiet, and built so a partner can see which cases are stalling in one glance. The wordmark reads StayLegal because the product was designed to be white-labelled per firm — Voya is the platform, StayLegal is what a client's users would see.
Voya client portal showing a six-stage vertical case timeline
The applicant's view of the same case: one timeline, plain language, and what to do next.

How I built it

01

Two audiences, two entirely different interfaces

The firm gets density: KPI tiles, cases by stage, completion trend, average days per stage, and a searchable client directory. The applicant gets the opposite — one six-stage vertical timeline in plain language, their documents, and what they need to do next. The same underlying case record, presented for two people with completely different questions.

02

Boring but polished, deliberately

Closer to Stripe or Linear than to a playful startup SaaS. No gradients, no illustration, no personality where personality isn't wanted. Law firms trust software that looks like it takes itself seriously, and the data involved — immigration status, personal documents — makes anything playful read as unserious.

03

Why it stopped

The firm I built it to pitch rejected it: they said they weren't the target market, and that data this sensitive would require ISO security certification from any vendor. Both fair. The entire reason to build it was having an immediate customer, and with that gone there was no honest reason to keep going. It's a wrong-customer outcome rather than a failed build — and finding that out took one pitch instead of six months.

Built with

  • Next.js 16
  • TypeScript
  • Tailwind CSS 4
  • shadcn/ui
  • Zustand
  • Recharts
  • Turbopack

Outcome

  • Full admin dashboard and client portal built against a realistic demo dataset
  • Pricing modelled and a twelve-slide pitch deck produced from live screenshots
  • Pitched and rejected in weeks rather than after months of building
  • Shelved honestly — kept here because the decision to stop is the useful part