Julian Morel — Automated Media Systems

I build pipelines
that produce
media.

I build automated systems that produce creative work at scale — music, video, narrative, documents. The hard part is never the prompt. It's everything that happens after it.

Dev Environment VSCode / Cursor GitHub Copilot Claude ChatGPT Windsurf Great for greenfield projects. On complex multi-file systems, file-by-file control wins.
Languages Python JavaScript TypeScript Node.js
Frontend & Backend React Next.js Flask FFmpeg Playwright
Infrastructure Firebase GCP Cloud Run Firestore Docker RunPod Cloudflare
Generative AI Video Generation Music Composition Lyric Writing Voice Synthesis Image Generation Audio Separation Transcription & Alignment Narrative Generation Vector Memory Talking Head Video
Called direct, via aggregators or self-hosted on GPU — an ever-increasing roster including OpenAI Runway Kling Luma Suno Whisper SadTalker Replicate Stability AI ElevenLabs TTS Pinecone Demucs Midjourney
Selected Work

ThemeTuned

themetuned.com ↗
Live

One prompt. One finished music video. Lyrics written, music composed, vocals recorded, visuals generated and timed, karaoke subtitles burned in — everything rendered and ready to publish.

That can be fully automated — fire a prompt, walk away, get a video. Or it can be a creative tool: choose your visual style, pick your video supplier, set resolution and cost parameters, upload a character or generate one, toggle continuous chaining on or off. The pipeline handles the complexity either way. The user decides how much control they want.

Prompt
User input
Lyrics
AI writing + normaliser
Music
AI composition
Alignment
Transcription + matcher
Visuals
AI video generation
Render
FFmpeg · Cloud Run
The Normalisation Layer
A voice model sings what it reads. A transcription model writes what it hears. If those two things diverge — a year as digits, a name as an abbreviation, a vowel held long across a musical phrase, a word absorbed into an instrumental passage — the alignment between audio and text breaks. The normalisation layer is the bridge between what was written and what was produced, handling every case where a model's output format diverges from the next model's input expectations.
Retry & Quality Logic
AI audio generation is non-deterministic. The pipeline doesn't assume a first attempt will pass — it runs multiple generation attempts with automatic style fallbacks, measuring alignment quality after each one and only proceeding when the result meets the threshold. Quality assurance designed into the architecture from the start, not bolted on afterwards.
Kling Continuous Chaining
In continuous mode, the last frame of each generated clip becomes the start frame of the next. The pipeline extracts that frame, stores it, and seeds the following generation — producing the appearance of one unbroken shot across dozens of individual clips. Motion prompts carry forward across lyric boundaries so the visual flow never breaks.

▲ Sound on

FightAnything

fightanything.com ↗
Live

Type a prompt. Get a fighter. Complete backstory, fighting style, lore, character art, theme song — generated from a single input. Enter them into a league where outcomes aren't random: a narrative engine reads each fighter's history and form, then weights the odds. The whole league is rendered as an automated broadcast.

Fighter creation

Prompt
User input
Profile & Lore
AI writing
Character Art
AI image generation
Theme Song
AI music + render
Intro Video
AI video generation

Daily broadcast

Battle Engine
Narrative-weighted RNG
Fight Reports
AI writing + lore context
Commentary
AI writing + RAG memory
Graphic Frames
Headless browser render
Talking Head
AI video · GPU instance
Final Render
FFmpeg · Cloud Run
Narrative-Driven Odds
Outcomes aren't produced by a random number generator. The battle engine reads each fighter's skills, lore, and fight history to weight the odds before any result is generated. A fighter on a losing streak faces different conditions than one coming off a dominant run. The numbers emerge from the narrative. It feels like a real sport because the logic is the same.
RAG Commentary Memory
Every fight is stored in Pinecone. When generating commentary for the Daily Top 10, the engine retrieves relevant fight history — rivalries, rematches, unfinished business — and passes it as context. The AI knows these two fighters have met before. It knows who nearly won last time. The commentary reflects that.
GPU Broadcast Pipeline
The Daily Top 10 is fully automated. Rankings compiled, commentary written, voice synthesised, graphic frames rendered via Playwright, and a talking-head presenter generated using SadTalker on a self-configured RunPod GPU instance — spun up on demand, Docker-containerised, torn down after render. FFmpeg assembles the final programme. No human in the loop.

Daily Top 10 — Automated Broadcast

▲ Sound on

Live Example
See a Fighter — Full Profile, Theme Song & Intro Video
Each fighter is generated from a single prompt: backstory, fighting style, lore, AI character art, an original theme song, and a mini intro video. All automated.
Browse Fighters ↗

FinalEyes

finaleyes.co ↗
Live

A professional translation, reconstruction and certification platform for certified translators — Word documents and PDFs in, perfectly reconstructed translated documents out. Eliminates the need for expensive DTP reconstruction: structure, layout, formatting, and meaning all survive the same process. Built for professional translation workflows where document fidelity isn't optional.

YouTube

Heroes of the Wood

youtube.com/@Heroesofthewood ↗

Where it started. When generative video first appeared, the tools were barely usable — two seconds of footage before the model dissolved into its training data, if you were lucky. Heroes of the Wood was the lab where those early experiments happened. Now it's where ThemeTuned and FightAnything outputs go public — a running record of how far the tools have come, and what these pipelines actually produce in the wild.

How I Work

System first.
Stack second.

I invest as much time as possible understanding what I'm building before I build it. It's always iterative in practice — sometimes I only learn what's wrong by fighting the system. But the more I think upfront, the less I unpick later. Two years of full-time AI-native development has made the pattern recognition faster. The instinct for where things are about to break is the skill.

01
Architecture First

I try to think hard upfront — data flows, transformation points, failure modes — then get into the system fast enough that it tells me what I missed. Where possible, logic lives server-side: rate limiting, cost controls, business rules.

I avoid third-party dependencies where I can build the equivalent myself.

I've learned to be deliberate about how I use AI tooling. Letting an AI copilot touch multiple files simultaneously makes debugging close to impossible. File-by-file changes, keeping markdown notes of what changed and why — it feels slower but it's the only way to stay in control of a codebase you actually understand.

02
Model Boundaries
The hard problems seem to live where one model's output becomes another model's input and the assumptions don't match. A voice model sings what it reads. A transcription model writes what it hears. If those two things diverge — a number, a name, a vowel stretched across a musical phrase, a word absorbed into an instrumental passage — the pipeline fails silently, at scale. I don't trust AI output blindly. Every system I build has validation layers, sanitisation, fallbacks, and purge mechanisms — in production, hallucinations aren't edge cases.
03
Full Infrastructure
Firebase, GCP Cloud Run, RunPod GPU instances, Docker — configured and deployed end-to-end, not used as black boxes. Cost matters, especially in video: a wrong model choice or an avoidable generation pass is a real number. Using YouTube to serve video rather than Firebase Storage isn't laziness — it's just the right call.
FirebaseGCP Cloud RunDocker RunPodFirestore FFmpeg
04
Right Tool, Right Job
Model selection comes down to what the task needs and what it costs. Stock clips for economy. Runway for character consistency. Kling for continuous chained shots. Luma when the brief fits. SadTalker for talking-head GPU generation. ElevenLabs when quality demands it; TTS when cost demands it. The approach keeps getting more rigorous as the systems get more serious.
RunwayKling LumaSadTalker SunoWhisper DemucsPinecone ElevenLabsReplicate

Background

A circuitous
route in

English & Film Studies at university — then a career spent at the coalface of deliberately disruptive industries. I headed up the B2B division of a UK-licensed secondary lottery company, building commercial products in a regulated category that barely existed yet, before moving to a City-based professional gambling operation primarily staffed by quants. Independent, lateral thinking — finding the edge, the way through — was the thing those environments rewarded.

When generative AI arrived, I taught myself to code — with AI as the development environment from day one. I started where most people start — Webflow, Make, Zapier. As AI made working directly in code not just possible but preferable, I ditched them. I started experimenting immediately, back when you'd get perhaps two usable seconds from a five-second clip before the model dissolved into its training data. Some of those early experiments are still up. ↗

Now I build full-time, with generative AI woven through the stack at every level — not as the product, but as the material. Still learning every day. That's the point.

Some instincts go back further still. In the early 2000s I founded the UK's first automated TV bingo platform — video and audio, generated and simulcast to live television in real time. A production pipeline before production pipelines were a thing.

Early 2000s
Founded UK's First Automated TV Bingo
Video and audio generated and simulcast to live television in real time. A production pipeline before production pipelines were a thing.
Watch archive footage ↗
2000s–2010s
Commercial & Product Lead Roles
City-based professional gambling firm. B2B division lead at a UK-licensed secondary lottery company owned by a German public company. Novel regulated products in barely-defined categories.
AI era begins
Heroes of the Wood
Started experimenting with generative video immediately — back when two usable seconds from a five-second clip was a win before the model dissolved into its training data.
YouTube channel ↗
Now
Three Live Products
ThemeTuned, FightAnything, FinalEyes — each a complete automated media or AI system, built and deployed end-to-end. No team.

Get in touch

Let's talk about
what you're building.

If you're working on automated media, generative AI systems, or anything that involves getting models to work together reliably — I'm interested.