A desktop media downloader that wraps yt-dlp and FFmpeg in an interface a non-technical user can operate without ever seeing a flag. Downloads stream progress into the UI; processing steps are queued and surfaced as readable stages instead of raw log output.
Carries into the engineClosest thing I had built to an engine problem before Unreal: long-running work on background threads, structured progress out of unstructured output, and a UI that never stalls.

The problem
yt-dlp and FFmpeg are extraordinarily capable and extraordinarily unfriendly. Everything they do well is behind a wall of flags. The interesting question was whether that power could be exposed without the interface either lying about what's happening or freezing while it happens.
What I built
A Flutter desktop app that orchestrates both binaries as one integrated pipeline. It spawns and supervises external processes, parses their streaming output into structured progress, and recovers when a step fails partway through — all while keeping the UI thread free.

Why it matters here
This is the same class of problem a build pipeline or an asset cooker presents. Supervising external processes, turning noisy stdout into something a human can read, and never blocking the frame are habits that transfer to Unreal almost line for line.
What it taught me
Wrapping battle-tested tools is a design problem as much as an engineering one. The value was never in reimplementing FFmpeg — it was in deciding which of its thousand capabilities a person actually needs to see.
In the app
