Skip to main content
UX Case Study 🎵 Audio & GovTech CURRENTLY DEPLOYED

Locked in Proprietary Software. We Built a Way Out.

Court recordings were locked in a proprietary format that only two Windows apps could open. Staff spent over an hour on every conversion request. I built a single Flutter app powered by FFmpeg that gets it done in under 15 minutes, on any machine.

Role UX Designer
& Developer
Timeline 2024
Ongoing
Stack
Python FFmpeg Flutter Figma
Key Win 2 Apps → 1

"We went from a 2-app, 1-hour headache to a single-click solution that saves nearly 45 minutes per request."

Court Staff Feedback

The Problem vs. The Solution

The proprietary format was a dead end for anyone not on Windows. Cutting out both legacy apps and going straight to FFmpeg is what made it possible.

Before

The Double-App Bottleneck

Court staff juggled two Windows-only proprietary tools to extract audio from every proceeding. Every request meant an hour of active work, and clients still had to come back to collect.

🔒
Proprietary Encrypted Format
Files were stored in an encrypted format requiring licensed Windows software. That made the audio inaccessible to anyone not on a Windows machine.
60+ Minutes of Active Staff Time
The Editor and Player apps each required manual configuration. A 6-hour court day meant over an hour of conversion work, per request.
🔁
Clients Had to Return
With no same-day turnaround possible, clients were told to come back later. That meant extra friction, cost, and a second courthouse trip.
After

One App, One Click

A Python backend using FFmpeg handles decryption, concatenation, and conversion simultaneously. A Flutter frontend gives staff a clean, single-dashboard experience that works on any OS.

🛠️
1. FFmpeg Decryption & Concatenation
FFmpeg decrypts the proprietary chunks and concatenates them into a single file in one pass. No manual file selection across apps.
🖥️
2. Flutter Dashboard — Select Folder & Go
Staff select the source folder and hit Convert. The Flutter UI runs on both Mac and Windows with no licence or configuration required.
🎧
3. Standard .mp3 / .wav — Same-Day Handoff
The output is a standard audio file any device can play. Clients walk out the door with it. No return trip. No proprietary player needed.

60 Minutes Became 15

A 6-hour court day used to cost staff an hour of conversion work on top. Now it costs them a folder selection and a coffee break.

Legacy Workflow 2-app proprietary process
60+ min
App setup · Manual selection · 60+ min conversion · Client returns
Launch Editor App Launch Player App Manual Selection Configure Export Wait 60min Client Returns
Audio Converter Single-app, single-click
<15 min
Select folder · Click Convert · Done
Open App Select Folder Click Convert Wait ~15 min Same-Day Handoff
45 min
Saved per request
75%
Time reduction
0
Return trips needed

From Fragments to Files

Court audio was stored in dozens of 5-minute encrypted chunks. The old workflow meant handling each one manually. FFmpeg processes the whole folder at once, decrypting and merging everything in a single pass.

FFmpeg
6 hrs .mp3 1 file

A full 6-hour court day, previously stored as 72 individual 5-minute encrypted files, becomes a single consolidated .mp3 that plays on any device.

The Build Process

Research from the AI Transcriber project surfaced FFmpeg as the key to cracking the proprietary format. From there the work split into two tracks: the Python backend to handle the heavy lifting, and the Flutter frontend to make it usable for staff who had never touched a command line.

Understanding the Constraint First.

The existing workflow was documented before a single line was written. Staff walkthroughs showed the bottleneck wasn't speed. It was the 2-app handoff. Wireframes focused on collapsing that into a single screen.

  • Two apps, two configs, two mental models for staff to hold
  • No progress visibility. Staff had no idea how long conversion would take
  • UX Principle: reduce cognitive load by exposing only what's needed at each step
Wireframe 1
Wireframe 1 — initial layout concept
Wireframe 2
Wireframe 2 — folder selection flow
Wireframe 3
Wireframe 3 — progress and output view
Lo-fi sketches focused on collapsing the 2-app flow into one screen

Backend Logic, Frontend Simplicity

The bridge between a command-line tool and a product a court clerk would actually use.

Python + FFmpeg

The backend engine. Python orchestrates FFmpeg commands that decrypt, concatenate, and convert the proprietary audio chunks in one pass. No manual intervention.

Backend

Flutter

The cross-platform UI layer. Flutter renders identically on Mac and Windows, the two operating systems court staff actually use, with no codebase split required.

Frontend

Figma

All wireframes and high-fidelity screens were prototyped in Figma and tested with actual court staff before Flutter development began. Design validated the workflow before any code was committed.

Design

Before & After: Side by Side

Every step of both workflows, mapped out. The difference isn't subtle.

Open in new tab

Feature Comparison

The same task. Completely different experience.

Feature Legacy Workflow Audio Converter
Apps Required ✗ 2 Proprietary Windows Apps ✓ 1 Custom Flutter App
Manual Steps Multi-step selection across 2 apps Select folder & click "Convert"
Conversion Time 60+ Minutes < 20 Minutes
Output Format Fragmented / Proprietary Single consolidated .mp3 / .wav
OS Compatibility Windows only Mac, Windows, iOS, Android
Client Pickup Must return for handoff Same-day, no return trip

The Impact

Putting the right tool in front of court clerks changed the numbers fast.

0%
Faster Conversion
60+ min down to under 15
2→0
Apps Consolidated
One dashboard replaces both
0
Return Trips Required
Clients leave with audio same day
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. If you have a legacy nightmare that needs solving, I'd love to chat.