UX CASE STUDY · GOVTECH · July 20 - 30, 2025

Public access to court hearings unlocked in 10 days with a solo-built Flutter dialer.

A custom Flutter dialer built solo in a ten-day July sprint. It generates the DTMF tones that bridge courtroom video hardware to the MS Teams public call-in service, and it has run with 100% reliability since deployment.

SPEC · DCD001
Role
Solo Dev & Designer
Timeline
July 20 - 30, 2025
Stack
Flutter · Dart · Figma
Constraint
DTMF TO TEAMS BRIDGE
SUCCESSFUL BRIDGE CONNECTIONS (%)AFTER vs BEFORE 0→100
MY ROLE002

I solo-developed this project end-to-end: from researching audio frequency generation in Flutter and Dart, to building the functional engine, to designing multiple high-fidelity UI skins in Figma.

Team
Solo (1 person)
Stakeholders
SC Executives & Judges
FIG. 01July 20 - 30, 2025
PROBLEM → SOLUTION003

The Problem vs. The Solution

The Supreme Court had the video hardware and the MS Teams service. What it didn't have was a way to connect them, so public access meant gallery seats, a TV wheeled into the hallway, and email lists serviced by hand every hearing morning.

BEFORE003.A

The DTMF block

Courtroom video hardware could not generate the specific DTMF tones required to initiate and host the MS Teams bridge call, so the public-access system sat unusable.

P-01
Video cart ready, strandedCourtroom video hardware was in place but could not initiate the MS Teams bridge on its own.
P-02
Missing DTMF tonesNo mechanism existed to generate the precise dial tones needed to handshake with the Teams service.
P-03
Public locked outWithout the bridge, the public's options were gallery seats or a hallway TV. Virtual access meant proving a connection to the court file and waiting on a hand-sent Teams link the morning of the hearing.
AFTER003.B

The Flutter dialer

A custom Flutter app that generates the precise DTMF tones, connecting the courtroom video cart to the Teams service and opening hearings to the public.

S-01
DTMF tone engineThe Flutter app generates the precise audio frequencies needed to initiate the MS Teams handshake.
S-02
Bridge connectedThe courtroom video cart links to the Teams service under a single controlled participant.
S-03
Public access openThe public can now dial into hearings while judicial control over hot mics is maintained.
THE IMPACT004

The Impact

A ten-day solo sprint that unlocked an entirely new channel for public participation in Supreme Court proceedings.

Requirement to deployment
0 days
July 20 to 30, solo
Reliability
0%
Since deployment, through live hearings
Courtrooms in scope
0
Supreme Court of BC, Vancouver; 20+ callers on high-profile cases

Public bridge connections

Before the dialer, courtroom video carts could not join the call-in service at all. After deployment, connections held through live hearings.
KEY DECISIONS005

Key Design Decisions

Every trade-off was deliberate. These three calls shaped the final product, each made against a real constraint.

DEC-01
Rapid prototyping over process

Went from a functional requirement to a live build in days. No committee reviews, no multi-sprint roadmap.

Why

Public hearings were blocked without this tool, so speed was non-negotiable. The MVP focused on one thing: generating tones reliably.

DEC-02
Multiple UI skins

Designed four skins in Figma: the original purple, two planned as user-switchable options, and the BC Mountain theme that shipped.

Why

The core logic was locked early, which freed the second week for design. Switchable skins made a utility feel like a finished product that belonged in a courtroom.

DEC-03
Single controlled participant

All public callers connect through one controlled Teams participant, never as individual attendees.

Why

Open attendee access risks hot mics disrupting proceedings. Routing everyone through one participant keeps judicial control over who is heard in the courtroom at all times.

OLD vs NEW WORKFLOW006

Getting Into a Hearing, Both Ways

What it took a member of the public to attend remotely, before and after. The clerk's side is three steps too: open the dialer, share screen to the courtroom's video cart, dial the bridge into the room.

OLD WORKFLOW · FILE-CONNECTED ONLY006.A
  1. 01Sit in the gallery, or catch a TV set up outside the courtroom
  2. 02For virtual access, contact a separate registry counter
  3. 03Prove you're connected to the court file
  4. 04Get your email added to the file's access list
  5. 05Wait for staff to hand-send the Teams link the morning of
NEW WORKFLOW · ANYONE, IN SECONDS006.B
  1. 01Dial the courtroom's public bridge number
  2. 02Hear the automated rules message
  3. 03You're in: auto-muted, listening live
5 STEPS → 3 STEPS · −40% · FILE-CONNECTED ONLY → ANYONE, IN SECONDS
CALL FLOWS007

Two Ways Into the Room

The dialer served two audiences with nothing in common. A member of the public calling in from anywhere, and the courtroom cart on the other end. Both flows are live below.

embeds/dialer-flow-public.html Open in new tab ↗

Public caller. The path into a hearing from the published call-in number, with no account and no app to install.

embeds/dialer-flow-judge.html Open in new tab ↗

Judge bridge. The courtroom side, where the video cart has to produce the dial tones the service expects before it can connect at all.

BEFORE / AFTER008

Ten days, first skin to shipped

Drag the handle. The original purple skin against the BC Mountain theme that shipped to the courtroom floor.

Shipped · BC Mountain
V1 · Original Purple
DESIGN PROCESS010

Design Process

A rapid ten-day sprint: development and research first, then design and a live courtroom test with the people who had to sign off on it.

01
DISCOVER
  • Courtroom hardware audit
  • MS Teams bridge requirements
  • DTMF tone specification research
02
BUILD
  • Audio frequency generation in Dart
  • Core DTMF functional engine
  • Rapid Flutter prototyping
03
DESIGN
  • Multiple UI skins designed in Figma
  • Utility tool raised to a courtroom aesthetic
  • Intuitive dial pad interaction design
04
VALIDATE
  • Dry-run in an empty courtroom with an executive and my manager
  • Found the one screen-share order that carried sound reliably
  • The working procedure became the official instruction manual
REFLECTION011
Built fast, built to be replaced

The entire public-access system was blocked by one missing capability: the right tones at the right moment. No platform rebuild, no committee. A focused tool that does one thing has run with 100% reliability since deployment, and the four Figma skins were my proof that a two-week window doesn't have to cost craft. The part I'd actually tell a team is the least impressive-sounding one: this dialer is glue between two systems I don't control, and glue should expect to be replaced. If the court swaps its video carts or its conferencing service, the tool's job ends that week. I built it cheap and disposable on purpose. Knowing when to build disposable software is a skill nobody puts on a resume.

Available for Work

Let's build something impactful.

I'm currently open to new opportunities in UX/UI Design, Product Design, and GovTech transformation roles.