Contents
For two years I used AI for serious work: agents that run client accounts, read meeting transcripts and watch ad budgets. Humour was the one thing I was sure it couldn't do. Every "joke" I had asked a model for read like a greeting card.
Then, in late September 2026, two friends and I started a podcast. Five weeks later we have a YouTube channel, a cast of nine animated critics and a pipeline that turns a 30-year-old TV commercial into a rendered 3D roast in about the time it takes to make a coffee.
I was wrong about AI and humour. But not in the way I expected. The model didn't suddenly become funny. What made it work was the pipeline around it, and a human who refuses to accept the first draft.
This is the whole story, from the first commit to the collision engine.

Week 1: a fifth chair at the table
On 23 September we were three friends in three time zones who wanted to record together. The first thing I built wasn't a joke machine. It was a teammate.
Alfarito is a Claude Code agent that sits in our Discord voice channel. It listens, transcribes live, checks facts when someone says "Oye, Alfarito", pulls up a map or a YouTube clip on a shared screen, and interrupts with opinions. By 26 September it had a face, a voice and a personality: a cocky Ecuadorian-Colombian buddy who talks too much.

Building it the safe way mattered more than building it fast. Chat text never touches the terminal the agent runs in; messages travel through a queue and the agent reads them from files. What each person may ask is enforced in code, not in the prompt. I built it this way because it's the same security discipline I use for client systems. A podcast bot is just a more entertaining place to practise it.

Week 2: the idea — laugh at old commercials
Alfarito was the prototype. The commercials became the production line.
On 30 September Alfarito learned a new trick: pick moments from a video and react to them like a reaction streamer. I rated its versions A, B and C. Most were flat. One — taking an idea into an absurd, everyday scene — was actually funny. That gave me the direction.
On 5 October the idea clicked: old Latin American TV commercials. Nineties Colombian ad breaks, Venezuelan spots, later Argentine and Mexican ones from 2002. Overacting, WordArt logos, VHS colour bleed, jingles that never end. The material is already absurd; it just needs someone to point at it.
The first one was a toilet-cleaner ad. By the end of that day the pipeline had processed 25 Venezuelan commercials and a full Colombian ad break from 1994.
The pipeline
Here is what happens today when I say: "find me commercials from that era in Mexico".
1. Find and download. A research agent searches YouTube for compilations of old commercials and builds a candidate list. yt-dlp downloads the one I pick, with its description.
2. Segment without a model first. Cheap, objective signals come first: scene cuts, black frames and silence from ffmpeg. If the uploader left timestamps in the description, those are free too. Only then does Gemini watch the whole compilation at low resolution, together with a transcript, and propose where each commercial starts and ends. Every boundary snaps to the nearest real cut. To keep it fast and private, transcription runs locally on my RTX 3090 with faster-whisper large-v3, and pyannote separates the speakers.
3. Gemini watches each spot. Each commercial is cut into its own small clip and Gemini watches it as a sequence, through a "lens" I wrote for retro commercials: story beats, overacting, colours, sets, fashion of the time, cheap effects, editing mistakes, VHS quality. The output is a timeline per spot plus the two or three moments most worth a roast — each with a timestamp, a reason and a box on the screen. That box later becomes the red circle in the Short.
When Gemini's safety filter refused a Colombian ad break from 1994 — too much politics and too much cartel era for its taste — Claude took over the visual notes from frame sheets. In a head-to-head, Claude's notes were better, so they became the default. I also tried a local vision model on my own GPU; it wasn't good enough yet.
4. The bible. Since 24 October every clip has one JSON file — the biblia — that holds everything: the analysis, corrections of misheard names, the reaction, every gag to the second (image, stamp, emoji, sound, face, music) and the Short. Two render scripts turn it into video without making any creative decisions of their own: one outputs the 16:9 reaction, the other the 9:16 Short. Same bible, same video, every time. A shortened example (the field names are Spanish, like the show):
{
"biblia": 1, "ep": "ep04", "clip": 1,
"correcciones": [{"oido": "Garfield", "es": "Garfio"}],
"reaccion": {"texto": "…", "cara": "laugh", "remate": "trombone"},
"short": {
"tramos": [{"de": "clip", "desde": 17.5, "hasta": 20.45, "nota": "gancho"},
{"de": "reaccion", "desde": -0.25, "hasta": 3.5}],
"eventos": [{"t": 2.1, "tipo": "sello", "texto": "…", "anim": "slam", "sfx": "clock"}]
}
}Each critic has a character bible too. El Che's says, among other things: he makes fun of the commercial and of himself — never of the viewer, never of Argentina.
5. Claude writes the jokes. Claude Opus writes the lines from Gemini's analysis. Two formats: a punchline at the end, or a pause — the commercial freezes on the key moment, one line, and it keeps running. The rules came from failures: a pause never gives away a joke the commercial hasn't told yet; the hook lands in the first two seconds; no Short runs over 40 seconds.
6. A second model checks, a human decides. Gemini checks every line against the rules and writes down why it dropped one. If a bible fails the check, it goes back to Claude once, with Gemini's reason. Then I watch every Short in my own review player and rate it: weak, good or genius. The weak ones never ship.

The critics
A voice reading jokes isn't a show. So the jokes needed faces.
On 7 October the first 3D character appeared: Sebas, a posh Bogotá guy in a pink polo shirt with an embroidered donkey, rendered in a flat-shaded low-poly style — the "Money for Nothing" look, with a head a quarter of his body height on purpose. He became the main critic: 104 of the 146 Shorts we've produced are his.
The cast grew from analytics, not from a whiteboard. When YouTube showed that Argentina brought 18.5% of our views, El Che arrived on 20 October: a frustrated ad copywriter from Buenos Aires with a nineties mane and moustache. When the age data showed most viewers were 25–34, I switched from 1996 commercials to ones from 2002–2012. That's where the Mexicans came from: Pato, Rodrigo, Memo and El Toro, four archetypes reacting to Mexican TV commercials from the winter of 2002. Instead of guessing which one works, I made them compete: each persona got its own script for the same 28 spots, side by side.

Voices went through a bake-off of five engines (Edge, Chatterbox, Qwen3-TTS, Voxtral, Fish Audio). The critics now speak with voices designed in Gemini's TTS; El Toro sounds like a wrestling announcer because that's the one I chose out of twelve. My friends and I also exist as 3D figures in our real heights, with cloned voices — recorded with our own consent.


Giving the critics a body: rig, motion and a physics engine
Short clips with a talking head in the corner were fine. But the scripts started asking for physical comedy, and animating every scene by hand doesn't scale. So the bodies needed rules: a world where gravity, furniture and other people behave without anyone keyframing them.
- 11 October: real motion capture from the CMU database moves the figures. We transfer only the direction of each limb onto the character's proportions, so a 1.70 m figure doesn't move like a 1.90 m actor. Rendering moved to the GPU (nvdiffrast): from 289 to 78 seconds per 40-second Short.
- 13 October: our own motion layer on top of open tools — inverse kinematics with anatomical limits, faces driven by FACS action units, an attention engine that decides who looks at whom, and a first physics layer: nothing goes through furniture, bodies rest on what they sit on.
- 14 October: a character controller and ragdoll physics (with the Rapier physics engine), stairs and ramps. The trigger was a question I asked: "What happens after the ramp? Does he fall?" We didn't have an answer, so we built one.
- 20–21 October: a physics benchmark for jumps, falls and walking, then interaction physics between two figures.
- 23–24 October: a pipeline from concept art to an animatable 3D character: concept images → 3D mesh → automatic rig → our engine's skeleton → clothes.
We use Blender only to build sets and bake the lighting. Every frame of the final video comes from our own GPU engine. The sets come from code, from photos, and from the city itself — how an address becomes a 3D scene from official Berlin building data is its own case study.
Where the human comes in
If you read the commit history, the most important lines aren't code. They're my notes. Some of them, translated:
- "People in a dialogue face each other." Before that rule, every scene read like everyone talking into the void. After it, we re-rendered every story.
- "Let's understand the root, not patch it." — when characters slid across the floor instead of walking. That became a general rule: movement comes from the feet.
- "Higgs sounded wrong." — so we went back to another voice engine for every clone.
- And a failure I like to tell: for a while, the voice server silently fell back to a different voice when it was busy. The result was a critic who changed voice in the middle of a Short. Since then the system fails loudly instead of quietly — a missing voice stops the render rather than swapping it.
- "Captain Hook, not Garfield." — a misheard name that turned into a check in every prompt.
- "Sharper. No mercy.", "Images, not just text.", "Let the sentences finish."
- And the one I repeat most: "Remember, the final filter is us." For a comedy show, the models kept softening every joke into something polite and toothless. I took those creative brakes out of the prompts — not the system's safeguards. Deciding where the line is in our own comedy is the editors' job, not the model's. For client work it's the opposite: brand-safety rules stay on, and I add more of them, not fewer.
This is the part I didn't expect. The AI does the heavy lifting: it watches hours of footage, finds the moments, drafts jokes, animates bodies, renders and schedules. But it doesn't know which joke lands. It doesn't notice that two people talking with their backs to each other look wrong. It doesn't ask what happens after the ramp. I do. Then I turn the answer into a rule, so it never has to be said twice.
For the bigger scripts I also use a second model as a critic: Gemini writes a blind review, Claude accepts, half-accepts or rejects each note, and I decide.
The numbers, honestly
- The channel went live on 18 October 2026. In its first week: 17,167 views, 7,709 engaged views, 43% of viewers stayed to watch, 275 likes, 44 hours of watch time, +21 subscribers.
- Of the 20 public Shorts, 11 sit between 1,152 and 1,336 views; the median is about 1,175. Four never got shown by YouTube at all.
- That plateau is YouTube's test batch. To break out of it, more people need to stay to the end. That's the experiment now.
- Audience: Mexico 29%, Argentina 17%, Peru 8%, Chile and Spain around 5% each, Colombia about 5%. 41% are 25–34.
- Behind the 20 public Shorts are 146 produced. Most never shipped. That's the point of a pipeline with a human at the end.
It's a side project, not a business. No monetisation, no ads. But it's the best lab I've had for the question I care about professionally: how do you build an AI pipeline that runs on its own, without giving up judgment?
A note on the material: the commercials are third-party footage. We use short excerpts as commentary and parody — the spot runs, the critic comments, the key frame is pixelated in thumbnails. Two Content ID claims for music so far. The footage belongs to others; the jokes and the pipeline are ours. Client pipelines are a different world: they run only on the client's own or licensed data.
What I learned about AI and humour
AI can be funny. Not on its own, and not on the first try. It gets funny when:
- It sees before it writes. Jokes from a description are generic; jokes from what Gemini actually saw at second 0:17 are specific. Specific is funny.
- It has a character. A bible with a voice, a worldview and rules ("never mock the viewer") beats any "be funny" prompt.
- It has constraints. Pause formats, 40 seconds, a hook in two seconds. Constraints make jokes.
- Another model checks it, and a human picks. Most drafts are mediocre. The pipeline produces enough of them that the good ones exist, and the human finds them.
- Every correction becomes a rule. I said "face each other" once. Since then, no one has turned their back on the camera.
That's also how I build agents for clients. Whether the input is a messy ad account or a 1994 toilet-cleaner commercial, the architecture is the same: let the machine do the heavy lifting, keep the judgment with a human, and turn every mistake into a permanent rule.
If you want to see where it stands: youtube.com/@LosPanchitosPodcast. The jokes are in Spanish. The critics don't care if you understand them.
