Ted Jenkins
Content Systems & AI Infrastructure — 25 years building the pipelines behind audio, brand, and knowledge products, and still shipping production AI/audio software solo today
Burbank, CA — remote
|
reclusestudios@gmail.com
|
linkedin.com/in/ted-jenkins-21a7b57b
I build the infrastructure that makes content and audio findable, usable, and trustworthy — at massive catalog scale, across multi-brand portfolios, and now inside AI-driven products. One thing worth knowing up front: I don't write code by hand. I direct AI coding agents, applying 17 years of software QA instincts — test design, bug triage, systems thinking under real production constraints — to get production-grade results most non-engineers couldn't. Below are four things I shipped recently this way, on current-generation tooling (Next.js 16, React 19, JUCE 8, Gemini 2.5, local LLM inference), followed by the track record that got me here.
Recent Product WorkSolo-built, 2026 — Recluse Studios
StemScribe — Stem Separation & Chord Transcription for Musicians
Local-first desktop app — CPU-fast, CUDA optional
- Challenge
- Learning a song by ear means isolating instruments and figuring out the chords yourself — tab archives only cover popular songs, and only imperfectly. And practicing often means finding (or being stuck with) a backing track that isn't in your key or tempo.
- Approach
- v1 shipped as a hosted web app (Next.js/React + FastAPI, queued GPU pipeline on RunPod, Stripe subscriptions). When rented GPU availability became the bottleneck, rebuilt it as a local desktop app: a JUCE 8/C++ shell with a frozen Python companion running demucs (6-stem source separation) and a BTC transformer for beat-aligned chord recognition across a 170-chord vocabulary — entirely local inference. The CPU-only build generates 60 seconds of audio in about 47 seconds; a CUDA variant bundles the GPU runtime for those who have one. Stripe subscriptions remain, gating full-length playback, pitch-locked speed control, and PDF chord-chart export. When Stable Audio 3 shipped, added a feature-flagged Generate mode: describe a style, key, mode, tempo, and length, and a self-hosted Stable Audio 3 Small-Music model renders a practice track that flows through the identical stem-separation and chord-recognition pipeline as an upload — same-day chords and stems for a track that didn't exist an hour earlier. A v2 pass extended Generate into a "riff in, band out" workflow: audio-to-audio and inpaint modes take a recording of the user's own playing and build a full band around it, then the same separator mutes the played stem so they can practise their part live over the generated rest — plus an inline refine loop that regenerates from an edited prompt at a held seed.
- Outcome
- A local-first production product: no cloud dependency, CPU-only generation fast enough for real use (47s to generate 60s of audio), subscription billing retained, and production installers (CPU and CUDA) ready to ship — architected and built end to end by one person.
JUCE 8 / C++Python / FastAPI companiondemucs
BTC transformerStable Audio 3StripeLocal CPU + CUDA installers
Corrigit — Click-Locked Reference Files From Phone Demos
Desktop app — custom beat-tracking algorithms
- Challenge
- A singer records a rough acoustic demo on their phone — no click, tempo drifting naturally. To give the drummer something to play to, a bandmate currently has to relearn and re-record the whole song just to lay a click under it. The use case comes straight from a working musician's forum thread; the manual workaround is standard practice in remote bands.
- Approach
- Built a JUCE desktop app: import the phone take (m4a/AAC included via Windows Media Foundation), paint regions on the waveform, and export click-locked files without anyone re-recording. Each region is either Follow (the click tracks the demo's natural tempo drift; audio passes through untouched — for rubato intros) or Lock (fixed BPM; audio time-stretched to match — for verses and choruses). Wrote the beat/tempo tracker in-house — spectral-flux onset envelope, autocorrelation with onset-supported octave resolution, Ellis-style dynamic-programming beat tracking — after the obvious library (BTrack) turned out to be GPLv3. SoundTouch handles time-stretch (LGPL, dynamically linked). Exports three files: click-only, a hard-panned click/program stereo mix that removes the DAW requirement for the drummer, and a byte-for-byte copy of the original. No GPU anywhere in the pipeline; reuses the Recluse license server and Stripe.
- Outcome
- Six and a half hours from conception to the first working render. v1 is code-complete, and the whole point holds: nobody re-records anything.
JUCE 8 / C++In-house beat trackerSoundTouch
Windows Media FoundationRecluse license serverStripe
GigSmith — AI-Assisted Setlist Generator
Live, commercialized SaaS — $10/mo
- Challenge
- Setlist order isn't arbitrary — it shapes audience energy and pacing across a set — but building a good one by hand, every time, is tedious and easy to get wrong.
- Approach
- Built a three-stage pipeline: performers import their existing song catalog, an enrichment step fills metadata gaps from vetted sources, and a deterministic transition engine sequences the set using cross-track metrics — rather than leaving pacing decisions to an LLM's guesswork. An early, deliberate example of constraining AI output with hard logic instead of trusting a model to reason about ordering on its own.
- Outcome
- Fully built and commercialized, live today — real product, real subscribers, held back only by marketing budget, not by whether it works.
- In Development
- BackstageIQ — AI-assisted stage-plot conflict detection for live sound — is being folded into GigSmith for a one-stop live logistics solution for bands and techs: setlists, stage plots, and conflict checks in one place.
Next.js / ReactTypeScriptStripe subscriptionsDeterministic transition engine
Vocant — Natural-Language Audio Effects for Music Producers
VST3 plugin + local AI companion service
- Challenge
- Dialing in a studio-quality effects chain means hunting through hundreds of parameters across a dozen plugins. Producers wanted to just describe the sound they want.
- Approach
- Built a VST3 plugin (JUCE 8, custom WebView UI) exposing 283 automatable parameters across 32 effect modules — dynamics, EQ, drive, amp/cab modeling via Neural Amp Modeler captures, modulation, pitch, and creative effects. Paired it with a local companion service running a local LLM (Phi-3.1-mini via llama.cpp, auto-probing CUDA/Vulkan/CPU) that turns a prompt like "60s pop vocals" into a full, dialed-in effect chain in 1–3 seconds over OSC — with an optional cloud-LLM fallback for anyone who'd rather not run local inference. Then built the commercial layer to match: a Laravel/PHP license server with Stripe checkout, RSA-signed license keyfiles, seat management, and a 14-day trial flow.
- Outcome
- A real, licensable commercial plugin — not a demo — where audio never leaves the user's machine by default, and the entire path from "type a prompt" to "sound is dialed in" is under three seconds.
JUCE 8 / C++Local LLM (llama.cpp)OSC
Laravel 11 / PHP 8.4StripeRSA-signed licensing