<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Streaming Radar: Ludo Tries Things]]></title><description><![CDATA[I break things, ship fast, and write about it. AI tools, streaming tech, no-code experiments — zero guru energy.]]></description><link>https://www.streaming-radar.com/s/ludo-tries-things</link><image><url>https://substackcdn.com/image/fetch/$s_!Bniq!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217c8b49-9687-4d90-b6ea-33d7fb95f107_1024x1024.png</url><title>Streaming Radar: Ludo Tries Things</title><link>https://www.streaming-radar.com/s/ludo-tries-things</link></image><generator>Substack</generator><lastBuildDate>Fri, 10 Apr 2026 11:05:39 GMT</lastBuildDate><atom:link href="https://www.streaming-radar.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Ludovic Bostral]]></copyright><language><![CDATA[fr]]></language><webMaster><![CDATA[ludovic@streaming-radar.com]]></webMaster><itunes:owner><itunes:email><![CDATA[ludovic@streaming-radar.com]]></itunes:email><itunes:name><![CDATA[Ludovic Bostral]]></itunes:name></itunes:owner><itunes:author><![CDATA[Ludovic Bostral]]></itunes:author><googleplay:owner><![CDATA[ludovic@streaming-radar.com]]></googleplay:owner><googleplay:email><![CDATA[ludovic@streaming-radar.com]]></googleplay:email><googleplay:author><![CDATA[Ludovic Bostral]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[I Built a Wordle for FFmpeg]]></title><description><![CDATA[Built by voice. In Rust. FFmpeg would not approve.]]></description><link>https://www.streaming-radar.com/p/i-built-a-wordle-for-ffmpeg</link><guid isPermaLink="false">https://www.streaming-radar.com/p/i-built-a-wordle-for-ffmpeg</guid><dc:creator><![CDATA[Ludovic Bostral]]></dc:creator><pubDate>Tue, 17 Mar 2026 12:34:28 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!4V8x!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb38c268-791b-49cf-9ad3-22551a299f86_1414x834.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There&#8217;s a blog post by Fabio Sonnati called &#8220;<a href="https://sonnati.wordpress.com/2011/07/11/ffmpeg-the-swiss-army-knife-of-internet-streaming-part-i/">FFmpeg, the swiss army knife of Internet Streaming</a>.&#8221; Part I. Published July 2011. I had that link in my browser&#8217;s quick launches for years. Not bookmarked. Quick launches. The kind of link that&#8217;s always there, that you never click, but would notice immediately if it disappeared.</p><p>Sonnati wrote about <a href="https://ffmpeg.org/">FFmpeg</a> the way someone writes about a tool they actually use. Not tutorials. Not documentation. Just a guy who understood that FFmpeg was holding up the entire internet video industry and nobody was talking about it. He called it one of the pillars of Internet Video. YouTube wouldn&#8217;t exist without it. Neither would Netflix. Neither would that weird catch-up TV platform I spent six years building in France.</p><p>In my French newsletter <a href="https://www.streaming-radar.com/">Streaming Radar</a>, I did <a href="https://www.streaming-radar.com/p/les-streamers-de-lombre-30-ans-dinnovation">a piece on the invisible French engineers behind streaming</a> (FFmpeg was created by <a href="https://bellard.org/">Fabrice Bellard</a>, a French polytechnicien, in 2000, and Sonnati is Italian but the FFmpeg ecosystem owes a lot to French contributors). Billions of people watch video every day on technology built by people nobody knows. Sonnati documented FFmpeg for 15 years on a WordPress blog. I documented the streaming industry for 70 editions of a newsletter. We never worked together. Same reflex.</p><p>Anyway, this isn&#8217;t really about Sonnati. It&#8217;s about what happens when you spend 25 years with a tool and one day turn it into a game.</p><div><hr></div><p>Before FFmpeg, I was coding directly against APIs. QuickTime, Real Encoder. The kind of stuff where you talk to the codec and the codec talks back and sometimes it lies to you. And we didn&#8217;t have AI to read the fucking manual for us at the time. FFmpeg was still a shortcut then, not the center of the workflow.</p><p>The moment that changed was late 2007 or early 2008, I don&#8217;t remember exactly. I was at M6 Web (the digital arm of the <a href="https://fr.wikipedia.org/wiki/M6">M6</a> TV channel in France) and there was this show, <a href="https://fr.wikipedia.org/wiki/Nouvelle_Star">Nouvelle Star</a> (the French version of Pop Idol, basically). Vincent, who was on the M6 Mobile team at the time, comes to me and says: we signed a deal with Orange. Pre-roll ads on all mobile videos.</p><p>Great, I say. What&#8217;s the technical solution?</p><p>There is no technical solution, he says.</p><p>(This is a thing that happens more often than you&#8217;d think in media companies. Someone signs a deal, everyone celebrates, and then someone turns to the tech team and goes &#8220;so... how do we actually do this?&#8221;)</p><p>The mobile back then was <a href="https://en.wikipedia.org/wiki/Wireless_Application_Protocol">WAP</a>. If you don&#8217;t remember WAP, congratulations, you&#8217;re younger than me. WAP was phone internet before phones had real internet. Tiny screens, terrible bandwidth, everything felt like loading a webpage through a straw. The video format was <a href="https://en.wikipedia.org/wiki/3GP_and_3G2">3GPP</a>, a container designed by the Third Generation Partnership Project specifically for mobile networks. We&#8217;re talking H.263 video, AMR audio, resolutions like 176x144 (that&#8217;s <a href="https://en.wikipedia.org/wiki/Common_Intermediate_Format">QCIF</a>, for the nerds keeping score). This was the state of mobile video in France in 2007. This is what Orange wanted pre-roll ads on. Videos that looked like someone described the original to a very bad artist and the artist painted it with a toothbrush.</p><p>The option was either to manually prepend each ad to each video in this absurd format (which took forever) or to find an automated way. Vincent came to me because I had built Videonum 2 at my previous company Manreo, an orchestrator that could automate video operations. I talked to Yann, who handled the video operations side. We figured: what if we just use FFmpeg to concatenate the Orange ad with each 3GPP video before pushing to production?</p><p>So I built it. It worked. And here&#8217;s the thing about FFmpeg: it&#8217;s free. Completely free. And we just used it to generate advertising revenue for a TV channel. That was the moment we realized just how much money a free tool could make.</p><p>(Not us personally. M6 made the money. We made the realization. Different things. Even the coffee wasn&#8217;t free at M6 Web.)</p><p>It kept working. FFmpeg ended up generating every pre-roll ad file for all M6 sites, then for Clubic, Jeuxvideo.fr, and the rest of the group after M6 acquired Cyr&#233;alis. The running joke internally was that the ad always played, but the content video after it sometimes didn&#8217;t. Everyone thought this was hilarious. I never laughed at that joke.</p><div><hr></div><p>From there FFmpeg became a big part of what we did. At M6 Web, we had four FFmpeg servers in the basement of 46 rue Jacques Dulud in Neuilly. Four physical machines. That&#8217;s where we produced <a href="https://en.wikipedia.org/wiki/HTTP_Live_Streaming">HLS</a> before any hardware encoder supported it natively.</p><p>The story goes like this: summer 2010, Apple requires HLS for iPhone video apps. Nobody in France really knows how to produce HLS at scale. Cloud solutions don&#8217;t work yet (<a href="https://en.wikipedia.org/wiki/Zencoder">Zencoder</a> doesn&#8217;t even have HLS support until November 2010). I find a patch on Git that adds HLS support to FFmpeg. We have four servers in the basement. We plug it in. And suddenly we&#8217;re producing HLS industrially.</p><p>Then we submit the <a href="https://www.iphon.fr/post/2010-09-28-l-application-de-tele-m6-et-m6-replay-pour-l-iphone-est-disponible-sur-l-appstore">M6 Replay app</a> to the App Store. Apple rejects it. Reason: every HLS segment needs a complete audio track, and our first segment has a black screen with no audio. Our solution: submit with compliant m3u8 files, get approved, then switch to the real ones after publication. Sorry, Apple. I think the statute of limitations has passed on that one.</p><p>I could go on. St&#233;phane Reuille, a former baker who became allergic to flour and retrained as a developer (we called him &#8220;Papy&#8221; because in France a dev over 35 is considered ancient, like a shiny Charizard but with back pain), built Videonum 3 from scratch, our in-house FFmpeg orchestrator that handled all our web video formats and ran for years. The whole thing.</p><p>But this isn&#8217;t the M6 article. That one&#8217;s coming. This is about what came after.</p><div><hr></div><p>At some point, and I genuinely don&#8217;t remember when, I wrote a guide to FFmpeg. Over 100 pages. Comprehensive. From beginner to expert. Encoding, transcoding, streaming, filters, hardware acceleration, the works.</p><p>Then I put it in a drawer.</p><p>I never gave it to anyone. Never sold it. Never published it. Not because I forgot. Because a big part of it is built on other people&#8217;s work. Ozer&#8217;s methodology, Sonnati&#8217;s approaches, and others. Selling or distributing something assembled from sources that aren&#8217;t mine wouldn&#8217;t be right. Same reason I never shared the FFmpeg skill I built for Claude. I am, with full self-awareness, the king of negative ROI. This one, though, was just ethics.</p><p>That skill I mentioned, the one I built for <a href="https://claude.ai/">Claude</a>: it&#8217;s a set of instructions that teaches the AI how to encode video properly, following best practices from people like Ozer and Sonnati. So I documented everything, shared nothing with humans, and gave my knowledge to a robot. At least the robot doesn&#8217;t need to worry about attribution.</p><p>25 years of FFmpeg. A 100-page guide nobody read. A skill file an AI uses daily. And then one morning I thought: what if this was a game?</p><div><hr></div><p><a href="https://ffmpuzzle.com/">ffmpuzzle</a> is a daily Wordle for FFmpeg encoding parameters. You get a real-world scenario (&#8221;Twitch live stream via RTMP. H.264 is the only codec Twitch accepts, 720p30 at 3 Mbps for non-partners, AAC mono/stereo, FLV container as the RTMP transport format.&#8221;) and you guess the encoding parameters in 6 tries or less. Codec, bitrate or CRF, resolution, audio codec, container. Sometimes a 6th parameter for hard puzzles (preset, framerate, bitrate mode).</p><p>Green means correct. Orange means you&#8217;re in the right family (H.264 and H.265 are close, AAC and MP3 are close, MP4 and MOV are close). Red means wrong. Arrows tell you if your numeric guess was too high or too low.</p><p>![ffmpuzzle splash screen: $ start, streak: 0, best: 1](IMAGE: CleanShot_2026-03-14_at_14_18_30_2x.png)</p><p>I built it with <a href="https://docs.anthropic.com/en/docs/claude-code">Claude Code</a>, which is Anthropic&#8217;s command-line tool for coding with AI. And here&#8217;s the detail I find unreasonably funny: ffmpuzzle was my first project built entirely with Claude Code&#8217;s /voice feature. I didn&#8217;t type the specs. I talked to my terminal. I dictated the proximity families. I spoke the streak system into existence.</p><p>The game&#8217;s aesthetic is a terminal. Green text on black background. &#8220;$ start&#8221; to begin. &#8220;$ share --brag&#8221; when you win. &#8220;$ share --shame&#8221; when you lose (it says &#8220;segfault&#8221; and &#8220;don&#8217;t ask&#8221;). A love letter to the command line, built by talking to a command line.</p><p></p><p>There&#8217;s also a <a href="https://github.com/ludobos/ffmpuzzle-cli">Rust CLI</a>. You can play in your actual terminal, which feels more honest somehow.</p><p>Now, a thing you should know about FFmpeg and Rust. FFmpeg is written in <a href="https://ffmpeg.org/developer.html">C. Not C++. C.</a> ISO C11 and assembly language. Their <a href="https://ffmpeg.org/faq.html">FAQ</a> explicitly says they refuse C++, Rust, Go, and pretty much every other language that isn&#8217;t C. Their exact position is that these languages are &#8220;too bloated&#8221; and &#8220;complicate the build.&#8221; They also <a href="https://dzone.com/articles/devsecconflict-google-project-zero-ffmpeg">refuse AI-generated code</a>. Which is worth noting because I just told you I built ffmpuzzle by talking to an AI. FFmpeg is the kind of project that would look at my entire workflow and have a very short, very direct opinion about it.</p><p>And it&#8217;s not just language wars. FFmpeg has been having a rough couple of years. In January 2025, <a href="https://tanersener.medium.com/saying-goodbye-to-ffmpegkit-33ae939767e1">FFmpegKit got retired overnight</a>, the mobile wrapper that thousands of Android and iOS apps depended on. Gone. The maintainer (one person) couldn&#8217;t keep up with upstream changes, and when MPEG LA got acquired by Via-LA in 2023, the patent licensing situation got murky enough that his lawyers told him to shut it down. Thousands of CI/CD pipelines broke. This is what happens when critical infrastructure depends on one volunteer.</p><p>Then in November 2025, the <a href="https://thenewstack.io/ffmpeg-to-google-fund-us-or-stop-sending-bugs/">Google vs FFmpeg fight</a> went public. Google&#8217;s AI agent Big Sleep found about 20 vulnerabilities in FFmpeg&#8217;s code and reported them with a 90-day disclosure deadline. No patches. No code. No funding. FFmpeg&#8217;s response: &#8220;stop jerking yourselves off, just submit a patch.&#8221; Mark Atwood, who was at Amazon, <a href="https://thenewstack.io/ffmpeg-to-google-fund-us-or-stop-sending-bugs/">said publicly</a> he had to keep explaining to his bosses that FFmpeg is not a vendor, there is no NDA, and they could kill three major Amazon product lines tomorrow with an email.</p><p>This is the project I&#8217;m celebrating with a game. Volunteers, no funding, fighting with Google on Twitter, still somehow holding up the entire internet video stack. Their official Twitter account once <a href="https://x.com/FFmpeg/status/1923393871968444927">tweeted</a> &#8220;Rust is so good you can get paid $20k to make it as fast as C.&#8221; Meanwhile, a 21-year-old is attempting a <a href="https://medium.com/@trivajay259/introducing-ffmpreg-a-from-scratch-pure-rust-take-on-ffmpeg-18b236801a71">clean-room rewrite of FFmpeg in pure Rust</a>, because apparently that&#8217;s what 21-year-olds do now.</p><p>And here I am, building a game that celebrates all of this, with a CLI written in Rust, built entirely by talking to an AI. The fact that none of these communities would fully approve of my choices is part of the charm.</p><p>The thing I obsessed over in the design is the contest system. The button is visible from your very first guess. Because the audience for this game is video engineers. They will tell you your CRF 23 should be a CRF 22, that your bitrate is unrealistic for that resolution. They will fight you.</p><p>Every puzzle is a real scenario. Not fabricated. Some I write from memory (the H.265 CRF 23 in MP4 is a case I&#8217;ve seen 200 times). Some are inspired by industry references, people like <a href="https://streaminglearningcenter.com/">Jan Ozer</a> whose book is literally called &#8220;<a href="https://www.amazon.com/Video-Encoding-Numbers-Eliminate-Guesswork/dp/0998453005">Video Encoding by the Numbers: Eliminate the Guesswork from your Streaming Video</a>.&#8221; I built a game that turns encoding back into guesswork. He would probably not approve. And some puzzles are entirely AI-generated, specifically to troll you.</p><p>The ProRes in MOV is a broadcast ingest workflow. The VP9 in WebM is YouTube&#8217;s default. The Twitch puzzle (H.264, 3M bitrate, 720p, AAC, FLV, 30fps) is what every game streamer configures in <a href="https://obsproject.com/">OBS</a> without thinking about it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4V8x!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb38c268-791b-49cf-9ad3-22551a299f86_1414x834.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4V8x!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb38c268-791b-49cf-9ad3-22551a299f86_1414x834.png 424w, https://substackcdn.com/image/fetch/$s_!4V8x!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb38c268-791b-49cf-9ad3-22551a299f86_1414x834.png 848w, https://substackcdn.com/image/fetch/$s_!4V8x!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb38c268-791b-49cf-9ad3-22551a299f86_1414x834.png 1272w, https://substackcdn.com/image/fetch/$s_!4V8x!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb38c268-791b-49cf-9ad3-22551a299f86_1414x834.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4V8x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb38c268-791b-49cf-9ad3-22551a299f86_1414x834.png" width="1414" height="834" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fb38c268-791b-49cf-9ad3-22551a299f86_1414x834.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:834,&quot;width&quot;:1414,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:850155,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.streaming-radar.com/i/191242597?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb38c268-791b-49cf-9ad3-22551a299f86_1414x834.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4V8x!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb38c268-791b-49cf-9ad3-22551a299f86_1414x834.png 424w, https://substackcdn.com/image/fetch/$s_!4V8x!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb38c268-791b-49cf-9ad3-22551a299f86_1414x834.png 848w, https://substackcdn.com/image/fetch/$s_!4V8x!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb38c268-791b-49cf-9ad3-22551a299f86_1414x834.png 1272w, https://substackcdn.com/image/fetch/$s_!4V8x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb38c268-791b-49cf-9ad3-22551a299f86_1414x834.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>I spent most of my career encoding video. In basements, in cloud pipelines, in orchestrators I built myself, through APIs that lied to me, with a tool I found on a blog post I kept in my quick launches for a decade. Now I make other people guess what I was doing down there.</p><p>One thing I should probably mention: I emailed the FFmpeg project to ask if I was allowed to make this game. They haven&#8217;t responded. Which tracks. They&#8217;re volunteers who barely have time to patch bugs found by Google&#8217;s trillion-dollar AI. A French fan asking permission to build a Wordle is probably not top priority. I know, deep down, that I am a creepy fan. During the Google controversy, I posted a message that just said &#8220;LEAVE FFMPEG ALONE.&#8221; I didn&#8217;t have a wig to make the video.</p><p><a href="https://ffmpuzzle.com/">ffmpuzzle.com</a>. It&#8217;s live, it&#8217;s in testing, it&#8217;s available in 10 languages. If you feel insulted in any of them: don&#8217;t send tomatoes, send me a message. And if you want to fight me about a CRF value, there&#8217;s a button for that.</p><p></p><p><em>This is <a href="https://www.streaming-radar.com/s/ludo-tries-things">Ludo Tries Things</a>. Half experiments, half curiosity, zero guru energy. For streaming industry analysis, <a href="https://www.streaming-radar.com/">Streaming Radar</a> is over here.</em></p>]]></content:encoded></item><item><title><![CDATA[I rebuilt Afrostream in 5 hours]]></title><description><![CDATA[I&#8217;ve been in online video for 25 years. Then I rebuilt my startup in an afternoon.]]></description><link>https://www.streaming-radar.com/p/i-rebuilt-afrostream-in-5-hours</link><guid isPermaLink="false">https://www.streaming-radar.com/p/i-rebuilt-afrostream-in-5-hours</guid><dc:creator><![CDATA[Ludovic Bostral]]></dc:creator><pubDate>Tue, 10 Mar 2026 07:57:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!HvqA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb04994-49fd-4b8f-aee3-7d9840b09db5_2802x4596.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Last week I rebuilt Afrostream in five hours. It&#8217;s live at <a href="https://afrostreamia.vercel.app/">afrostreamia.vercel.app</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HvqA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb04994-49fd-4b8f-aee3-7d9840b09db5_2802x4596.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HvqA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb04994-49fd-4b8f-aee3-7d9840b09db5_2802x4596.png 424w, https://substackcdn.com/image/fetch/$s_!HvqA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb04994-49fd-4b8f-aee3-7d9840b09db5_2802x4596.png 848w, https://substackcdn.com/image/fetch/$s_!HvqA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb04994-49fd-4b8f-aee3-7d9840b09db5_2802x4596.png 1272w, https://substackcdn.com/image/fetch/$s_!HvqA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb04994-49fd-4b8f-aee3-7d9840b09db5_2802x4596.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HvqA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb04994-49fd-4b8f-aee3-7d9840b09db5_2802x4596.png" width="1456" height="2388" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3bb04994-49fd-4b8f-aee3-7d9840b09db5_2802x4596.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2388,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:12890588,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.streaming-radar.com/i/190481341?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb04994-49fd-4b8f-aee3-7d9840b09db5_2802x4596.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HvqA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb04994-49fd-4b8f-aee3-7d9840b09db5_2802x4596.png 424w, https://substackcdn.com/image/fetch/$s_!HvqA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb04994-49fd-4b8f-aee3-7d9840b09db5_2802x4596.png 848w, https://substackcdn.com/image/fetch/$s_!HvqA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb04994-49fd-4b8f-aee3-7d9840b09db5_2802x4596.png 1272w, https://substackcdn.com/image/fetch/$s_!HvqA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb04994-49fd-4b8f-aee3-7d9840b09db5_2802x4596.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.streaming-radar.com/subscribe?&quot;,&quot;text&quot;:&quot;S'abonner&quot;,&quot;language&quot;:&quot;fr&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Merci d'avoir lu Streaming Radar ! Abonnez-vous gratuitement pour recevoir de nouveaux posts et soutenir mon travail.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Tapez votre e-mail&#8230;" tabindex="-1"><input type="submit" class="button primary" value="S'abonner"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Yeah. That needs context.</p><p>I&#8217;ve spent 25 years building video pipelines. Wiring FFmpeg into internal pipelines to generate HLS, fighting piracy, tricking Apple. At M6 Replay, where I worked for seven years, my CTO was emailing with the guy who created HLS and I was adding HLS with the help of  FFmpeg  because no tool could handle it.</p><p>When I built Afrostream a few years later, the encoding problem was the same but with a DRM layer on top, because we were negotiating with Warner, Sony, Disney. We worked with Unified Streaming to stream contents. We found this company in the Netherlands, built originally for RTL. For years it was one of the most important products in video distribution worldwide and almost nobody outside the industry knew it existed. I worked with them directly, which meant I spent a lot of time in Amsterdam. Half my trips there were to visit Unified, the other half were for IBC, the big trade show for OTT and professional video. People always assume you go to Amsterdam for the freely accessible cannabis and the coffee shops. I don&#8217;t drink coffee, I don&#8217;t do drugs. I drink too much Coca-Cola.</p><p>Today, producing HLS is a commodity. You pick a tool, you transcode, you&#8217;re done. Keep that in mind.</p><h2>The first time</h2><p>Afrostream was a streaming platform for African and African-American content. Think Netflix, but focused. Tonj&#233; Bakang founded it, I joined as cofounder and CTO. We got into Y Combinator in 2015.</p><p>At our first office hours (weekly one-on-ones where YC partners tell you what you&#8217;re doing wrong), Michael Seibel looked at us and said: you need to show traction. So we thought OK, let&#8217;s put up a website and run a crowdfunding campaign. All we had at the time was 80,000 followers on a Facebook page. Yes, Facebook. It was 2015.</p><p>We launched the page with a launch date of September 1st. We were still in a hacker house in Mountain View at this point. I remember the exact moment we got our first customer because I was in the bathroom. I&#8217;d had a burrito. I heard Tonj&#233; calling my name, pure joy in his voice. Our first sale. 2,500 people ended up pre-buying a subscription at &#8364;40 each. That&#8217;s &#8364;100,000 in pre-sales. We had no platform, no catalog, and not a single line of code. We&#8217;d built a demo page we called &#8220;Best in Black&#8221; and somehow YC thought it was the actual product. We never corrected them. It was a page.</p><p>So there we were. &#8364;100,000 in pre-sales, $150K from YC incorporation. We had a Letter of Intent with Sony (basically a piece of paper that says &#8220;we&#8217;ll talk about it later&#8221;). We needed investors. We needed an actual streaming platform. And we&#8217;d told 2,500 people it would be ready on September 1st.</p><p>I moved into a house in Mountain View with two developers I&#8217;d just hired. One of them was Benjamin, who I&#8217;d first worked with at M6 Web and kept dragging along to every company since. The other was John, an American developer. We had three months. I handled the video encoding pipeline, they handled the website. We lived together, coded together, ate together. There were these excellent burritos that had the added benefit of regulating our digestive systems. Translation: we spent a non-trivial amount of time in the bathroom after lunch.</p><p>By August, we had a working streaming platform. A real one, with a catalog, a player, authentication, payments, the whole thing. On September 1st, we launched with somewhere between 500 and 800 hours of content, $1.5 million raised (two of our investors were French, and the fact that they signed checks in August in France still feels like a minor miracle), offices in Nantes, two employees, and on my end, three consecutive sleepless nights handling customer support. We made it. Barely.</p><p>That codebase is still sitting on GitHub. Open source. github.com/afrostream. Twenty-one repos, six programming languages (JS, Go, PHP, Python, HTML, LESS), running on Heroku and Docker, with RabbitMQ handling the messaging, and over sixty database tables. In 2015, we were all-in on microservices because Netflix was doing microservices and we were already copying Netflix for everything else, so we might as well go full tribute act with a fraction of the talent.</p><p>Here&#8217;s a thought that keeps nagging me: is agentic AI just microservices wearing a trench coat? You have small, specialized units (agents) communicating through protocols (MCP), each handling one piece of the puzzle, orchestrated by something that&#8217;s supposed to keep them in line. Sounds familiar. We just replaced RabbitMQ with natural language. I&#8217;m not sure that&#8217;s an upgrade.</p><h2>The second time</h2><p>I&#8217;ve been deep into Claude Code for a few months now. Built a CRM with it (<a href="https://www.streaming-radar.com/p/i-dont-know-what-a-crm-is-so-i-built">I didn&#8217;t know what a CRM was</a>, but that&#8217;s another story). Built an MCP server for my newsletter (<a href="https://www.streaming-radar.com/p/my-newsletter-has-50-ai-tools-the">50 tools at the time, 80 now</a>). Made a podcast where <a href="https://www.streaming-radar.com/p/i-do-a-podcast-i-dont-talk-in-it">I don&#8217;t talk in it</a>. Tried (and <a href="https://www.streaming-radar.com/p/i-spent-120-trying-to-make-an-ai">spectacularly failed</a>) to produce an AI-generated video trailer from my novel.</p><p>Then <a href="https://www.linkedin.com/in/birme/">Jonas Birm&#233;</a> broke my brain. Jonas is VP R&amp;D at <a href="https://www.eyevinn.se/">Eyevinn Technology</a> and the guy behind their <a href="https://www.osaas.io/">Open Source Cloud</a>, which is basically managed open-source video infrastructure you can spin up without dealing with any of the plumbing yourself. He&#8217;d just posted about building a streaming service in 36 hours with six AI agents, zero lines written by him. And my brain did the thing it does, which is: wait, I have the old Afrostream code, I have Claude Code, I have Jonas&#8217;s open-source tools, what if I just... tried?</p><p>So I tried.</p><p>I didn&#8217;t use Claude Code alone, though. I used it with the <a href="https://github.com/obra/superpowers">Superpowers plugin</a>. I gave it the old Afrostream GitHub repo, hit the brainstorming option, and it started asking me questions about the plan.</p><p>The actual bottleneck wasn&#8217;t code. It was retrieving API keys and putting &#8364;10 into OpenAI (the king of negative ROI). I spent more time on authentication paperwork than on building the platform. Then I got stuck trying to find the right poster image for Timbuktu. You know what Timbuktu means: a place that is very far away. The image certainly was.</p><p>Fun coincidence: it pulled in The Movie Database (TMDB) for the catalog data. The same TMDB that Benjamin had used years ago to build &#8220;Best in Black.&#8221;</p><p>Then Claude produced a design. It was terrible. Generic, flat, the kind of thing that says &#8220;I am a default template and I have no opinions.&#8221; So I forced it to use the original Afrostream color scheme: purple and gold. That palette was designed by the former head of art direction at M6 Web, and it&#8217;s one of the few things from the original Afrostream that still holds up.</p><p>Once the core was working, I decided to add things we never had in 2015. A chatbot that helps you pick a film by asking what mood you&#8217;re in. Back in the day, we used Intercom for customer support. This chatbot is considerably more relaxing than answering &#8220;why can&#8217;t I watch this in Belgium&#8221; at midnight.</p><p>Then came the video problem. I couldn&#8217;t pirate the Warner and Sony catalogs (also I genuinely don&#8217;t know how torrents work). So I did what every developer does: Big Buck Bunny, our industry&#8217;s favorite open-source rabbit. Growing up in France, the only rabbit I knew was the one getting its fingers stuck in the metro doors. Different vibe.</p><p>Remember those twenty-one repos and sixty tables?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gQrB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53bb8fab-d53a-4286-86e6-05a7a50ca09a_1200x700.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gQrB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53bb8fab-d53a-4286-86e6-05a7a50ca09a_1200x700.png 424w, https://substackcdn.com/image/fetch/$s_!gQrB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53bb8fab-d53a-4286-86e6-05a7a50ca09a_1200x700.png 848w, https://substackcdn.com/image/fetch/$s_!gQrB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53bb8fab-d53a-4286-86e6-05a7a50ca09a_1200x700.png 1272w, https://substackcdn.com/image/fetch/$s_!gQrB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53bb8fab-d53a-4286-86e6-05a7a50ca09a_1200x700.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gQrB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53bb8fab-d53a-4286-86e6-05a7a50ca09a_1200x700.png" width="1200" height="700" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/53bb8fab-d53a-4286-86e6-05a7a50ca09a_1200x700.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:700,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:47249,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.streaming-radar.com/i/190481341?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53bb8fab-d53a-4286-86e6-05a7a50ca09a_1200x700.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gQrB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53bb8fab-d53a-4286-86e6-05a7a50ca09a_1200x700.png 424w, https://substackcdn.com/image/fetch/$s_!gQrB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53bb8fab-d53a-4286-86e6-05a7a50ca09a_1200x700.png 848w, https://substackcdn.com/image/fetch/$s_!gQrB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53bb8fab-d53a-4286-86e6-05a7a50ca09a_1200x700.png 1272w, https://substackcdn.com/image/fetch/$s_!gQrB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53bb8fab-d53a-4286-86e6-05a7a50ca09a_1200x700.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Twelve database tables instead of sixty. PG triggers and Edge Functions instead of RabbitMQ. One language instead of six. I feel like I should apologize to someone, but I&#8217;m not sure who.</p><p>Everything users actually touch is done. Browse, search, play, save to your list, admin panel. The part that took us an entire summer in that house where the burritos were excellent and the bathroom was occupied. Three months with a team versus five hours solo. Even if you add two weeks to make this production-ready (payments, proper encoding, edge cases, testing), that&#8217;s still a compression factor that makes the 2015 version feel like it was built with stone tools. If you want a hot take about what that means for the industry, LinkedIn is right there, plenty of people will oblige.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8nbK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b257c0d-b150-4ce2-ab0c-d5cd2f14958c_1462x880.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8nbK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b257c0d-b150-4ce2-ab0c-d5cd2f14958c_1462x880.png 424w, https://substackcdn.com/image/fetch/$s_!8nbK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b257c0d-b150-4ce2-ab0c-d5cd2f14958c_1462x880.png 848w, https://substackcdn.com/image/fetch/$s_!8nbK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b257c0d-b150-4ce2-ab0c-d5cd2f14958c_1462x880.png 1272w, https://substackcdn.com/image/fetch/$s_!8nbK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b257c0d-b150-4ce2-ab0c-d5cd2f14958c_1462x880.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8nbK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b257c0d-b150-4ce2-ab0c-d5cd2f14958c_1462x880.png" width="1456" height="876" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1b257c0d-b150-4ce2-ab0c-d5cd2f14958c_1462x880.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:876,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:499223,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.streaming-radar.com/i/190481341?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b257c0d-b150-4ce2-ab0c-d5cd2f14958c_1462x880.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8nbK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b257c0d-b150-4ce2-ab0c-d5cd2f14958c_1462x880.png 424w, https://substackcdn.com/image/fetch/$s_!8nbK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b257c0d-b150-4ce2-ab0c-d5cd2f14958c_1462x880.png 848w, https://substackcdn.com/image/fetch/$s_!8nbK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b257c0d-b150-4ce2-ab0c-d5cd2f14958c_1462x880.png 1272w, https://substackcdn.com/image/fetch/$s_!8nbK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b257c0d-b150-4ce2-ab0c-d5cd2f14958c_1462x880.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>The entire stack is open source. In 2015 the ecosystem wasn&#8217;t mature enough to build a full platform on it. Now it is.</p><h2>The weird feeling</h2><p>Rebuilding your own startup is weird. Afrostream was real. We raised money, moved to California, got into Y Combinator, launched, had actual paying users. And now it&#8217;s a side project I can spin up in an afternoon.</p><p>I keep thinking about that Mountain View house. What two developers spent a summer building, I just did between lunch and dinner. Benjamin, I still work with. M6 Web, Afrostream, then Majelan, Kessel, Trace. I keep hiring him. He gets it. He was in that house. And all those years I spent understanding video encoding, from hacking HLS into FFmpeg in an M6 office to tricking Apple&#8217;s app review with fake audio-only tracks to debugging DRM tokens at 2am for Afrostream? The new version replaces all of that with two open-source tools and a config file. The knowledge is still useful (I know why things break), but the manual labor part evaporated. Nobody asked me. It just did.</p><p>It will call M6 Replay &#8220;MC Streetplay&#8221; and you won&#8217;t notice until someone points it out. It will write a blog post roasting a developer for not validating a PR (that happened). You&#8217;ll ask it to save a source for later and it will produce a full 2,000-word Streaming Radar article, unsolicited, with an editorial line you never approved, and it&#8217;ll be weirdly good.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!g6D-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6491508a-1d93-47d9-a366-92f1bb3eb2aa_572x896.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!g6D-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6491508a-1d93-47d9-a366-92f1bb3eb2aa_572x896.png 424w, https://substackcdn.com/image/fetch/$s_!g6D-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6491508a-1d93-47d9-a366-92f1bb3eb2aa_572x896.png 848w, https://substackcdn.com/image/fetch/$s_!g6D-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6491508a-1d93-47d9-a366-92f1bb3eb2aa_572x896.png 1272w, https://substackcdn.com/image/fetch/$s_!g6D-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6491508a-1d93-47d9-a366-92f1bb3eb2aa_572x896.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!g6D-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6491508a-1d93-47d9-a366-92f1bb3eb2aa_572x896.png" width="572" height="896" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6491508a-1d93-47d9-a366-92f1bb3eb2aa_572x896.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:896,&quot;width&quot;:572,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:666001,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.streaming-radar.com/i/190481341?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6491508a-1d93-47d9-a366-92f1bb3eb2aa_572x896.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!g6D-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6491508a-1d93-47d9-a366-92f1bb3eb2aa_572x896.png 424w, https://substackcdn.com/image/fetch/$s_!g6D-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6491508a-1d93-47d9-a366-92f1bb3eb2aa_572x896.png 848w, https://substackcdn.com/image/fetch/$s_!g6D-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6491508a-1d93-47d9-a366-92f1bb3eb2aa_572x896.png 1272w, https://substackcdn.com/image/fetch/$s_!g6D-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6491508a-1d93-47d9-a366-92f1bb3eb2aa_572x896.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>I don&#8217;t have a dog. I&#8217;ve always preferred cats. I wrote a whole novel about one. Anyway.</p><p>Here&#8217;s the thing: the five hours aren&#8217;t impressive because of the AI. They&#8217;re impressive because they prove the technical work wasn&#8217;t the hard part. We just thought it was because it took so long.</p><p>To be fair, I didn&#8217;t start from nothing. I had the old Afrostream codebase to feed Claude. I had Jonas&#8217;s Open Source Cloud doing the heavy lifting on video infrastructure. I had ten years of video encoding becoming a commodity. Experience made me faster, not because I wrote better code, but because I knew what to skip and what to steal from my own past.</p><p>Everybody in tech right now is doing the &#8220;experience still matters&#8221; dance. It&#8217;s not wrong. It&#8217;s just incomplete. The experience that matters isn&#8217;t the technical kind. If I can rebuild Afrostream in five hours, someone with five years of video experience could probably do it in eight. The technical gap between expert and competent just collapsed.</p><p>What didn&#8217;t collapse: knowing that 80,000 Facebook followers could turn into &#8364;100,000 in pre-sales. Tonj&#233;&#8217;s conviction that the audience existed. Two French investors signing checks in August. Three months in a house where you learn what your cofounders are actually made of. None of that was code.</p><p>And none of it gets you to a real product, because what actually makes a streaming service work isn&#8217;t the pipeline. It&#8217;s the quality of the experience, the recommendation engine, and whether your catalog fits the people you&#8217;re trying to reach. That&#8217;s where the game is now. The plumbing is solved.</p><p>I <a href="https://www.streaming-radar.com/p/lia-va-t-elle-inverser-le-rapport">wrote about this</a> six months ago. I thought it was a theory. Turns out it was a prediction.</p><div><hr></div><p><em>This is <a href="https://www.streaming-radar.com/s/ludo-tries-things">Ludo Tries Things</a>. Half experiments, half curiosity, zero guru energy. For streaming industry analysis, <a href="https://www.streaming-radar.com/">Streaming Radar</a> is over here.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.streaming-radar.com/subscribe?&quot;,&quot;text&quot;:&quot;S'abonner&quot;,&quot;language&quot;:&quot;fr&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Merci d'avoir lu Streaming Radar ! Abonnez-vous gratuitement pour recevoir de nouveaux posts et soutenir mon travail.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Tapez votre e-mail&#8230;" tabindex="-1"><input type="submit" class="button primary" value="S'abonner"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[I Spent $120 Trying to Make an AI Vertical Drama About Cats. It Was a Disaster.]]></title><description><![CDATA[Storyboard, pipeline, and files at the end of the article.]]></description><link>https://www.streaming-radar.com/p/i-spent-120-trying-to-make-an-ai</link><guid isPermaLink="false">https://www.streaming-radar.com/p/i-spent-120-trying-to-make-an-ai</guid><dc:creator><![CDATA[Ludovic Bostral]]></dc:creator><pubDate>Tue, 03 Mar 2026 12:57:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ncN5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda52b229-80f1-406d-8c89-42c6cde9659f_1536x2752.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Last week, my friend C&#233;dric tagged me on a LinkedIn post about AI-generated vertical dramas coming out of China. The ones with cats fighting other cats. Melodramatic cat soap operas. Revenge arcs, love triangles, betrayals. All AI-generated. One of them hit 150 million views.</p><p>Now, another friend of mine works on <a href="https://naralive.com/">naralive.com</a>, a platform that tells stories with AI. And I&#8217;ve been annoying everyone around me about vertical drama for months. The plan was to make something great and just drop it on them. I love it when a plan comes together. (I watch too much A-Team.)</p><p>Nobody saw anything in the end. Here&#8217;s why I thought I could.</p><p>Not because I&#8217;m a vertical drama expert (although, funny story, I literally wrote a 100-page report on the vertical drama industry). Not because I know anything about animation. But because I happen to have self-published a novel about cats.</p><p>Yes. A novel. About cats. On Amazon. It&#8217;s called <em>Les Veilleurs F&#233;lins</em>. A one-eyed ginger street cat named Mistral (yes, like the French AI company, no, I didn&#8217;t do it on purpose, the novel came first) who roams the rooftops of Nantes at night and protects the broken humans below. Inspired by the &#8220;cat distribution system&#8221; trend on TikTok, where cats supposedly choose their owners. I took that concept and made it dark. No romance, no sex, but a cat who swears a lot in his inner monologue.</p><p>(Side note: I&#8217;ve had cats my entire life. I also had a dog once, a chubby little girl. Probably the animal that loved me the most in my life. She&#8217;s gone now. So are most of the cats. Cats don&#8217;t have nine lives. We have nine lives of cats.)</p><p>I&#8217;d actually done <a href="https://youtube.com/shorts/qLz6GK9br4U">a test before</a>, at my previous job at Trace. Five scenes, ten seconds each, prompts almost one-shot. It worked. I was confident. Way too confident.</p><p>So I reread my notes on how vertical dramas are made, grabbed the first chapter of the book, and went for it. Just me, Claude Code, and a credit card.</p><h2>The Plan</h2><p>I wrote a proper storyboard. 14 shots. The teaser opens at 3am on the rooftops of Nantes. Mistral hears a man crying in an apartment below. The man (Marc, a war photographer with PTSD) moves toward the window. Mistral decides: not on my territory. Not tonight.</p><p>Dark, moody, graphic novel aesthetic. Blue-black nights, amber streetlights, rain everywhere. Mistral&#8217;s inner voice appears as scratched text on screen (not voiceover, text overlay, like graffiti made by a claw).</p><p>The technical idea: two AI video models, one for shots that needed synchronized audio, one for pure visual quality. I&#8217;d seen the demos. Seedance had Brad Pitt and Tom Cruise beating each other up. Veo had that Darren Aronofsky AI trailer. Tier one models. My logic was simple: pick the best models, and you need less prompting. It had worked the first time. My credit card was feeling confident too.</p><p>Claude Code would orchestrate the whole pipeline, generating keyframes, animating them, assembling the final cut. (For the nerds: Seedance 1.5 Pro via fal.ai, Veo 3.1 via Gemini, keyframes with FLUX Pro and Imagen 4, assembly with FFmpeg.)</p><p>Budget estimate: around 81 euros.</p><h2>Where It Went Sideways</h2><p>The keyframes came out mixed. Some were great. The close-up of Mistral&#8217;s eye had proper comic book energy: ginger, scarred, intense, rain-drenched.</p><p>Then it all started falling apart.</p><p>One shot generated parasitic text. Random English words burned into the image: &#8220;NANTES. MIDNIGHT. THE RAIN NEVER STOPS.&#8221; The AI decided to add its own subtitles. Thanks, I didn&#8217;t ask.</p><p>Another shot: Marc was supposed to be an ordinary man, broken, sitting on the floor in his underwear next to a radiator and a bottle of Jameson. The AI made him look like he benches 120kg. Wrong vibe for a guy on the edge.</p><p>The next shot was supposed to be the emotional core. Marc holding a photo of Rashid, an Afghan kid who died in front of his camera. Marc is crying. His hand is trembling. That&#8217;s the reason he has PTSD, the reason he&#8217;s drinking alone at 3am, the reason he&#8217;s at the window. The whole dramatic engine.</p><p>First problem: the AI plastered &#8220;SHADOWS OF KABUL&#8221; across the bottom of the image, like a movie poster nobody asked for. Fine, fixable.</p><p>Second problem: not fixable.</p><p>The more I tried to generate this shot (a grieving adult man, crying, holding a photo of a child), the more the AI decided this was... suspicious content. I&#8217;ll spare you the details, but the safety filters were clearly interpreting &#8220;distraught man obsessing over photo of child&#8221; in a direction that had nothing to do with war photography. Every iteration made it worse. The framing got creepier. The lighting got creepier. The AI was turning my traumatized war correspondent into something deeply uncomfortable, because it couldn&#8217;t tell the difference between grief and predation.</p><p>This is a scene from a published novel. A man mourning a child he couldn&#8217;t save. The AI couldn&#8217;t generate it without making it look like evidence from a very different kind of crime.</p><p>In the end I gave up and changed Rashid to an adult in the prompt. At least a man crying over a photo of another man just looks like a breakup. Being gay is normal. Being a war photographer with PTSD apparently isn&#8217;t, as far as AI is concerned.</p><p>Then there was the eye problem.</p><p>Mistral is a one-eyed cat. That&#8217;s his whole thing. He&#8217;s borgne (one-eyed, for the non-French speakers), scarred, battle-worn. The missing eye IS the character.</p><p>Seedance would not make a one-eyed cat.</p><p>I spent an hour on this. AN HOUR. I tried every prompt I could think of. &#8220;One-eyed cat.&#8221; &#8220;Cat with left eye missing.&#8221; &#8220;Cat with empty eye socket, scarred face.&#8221; Every single time, the model would start the animation with something that looked vaguely like a damaged eye, and then mid-scene, the eye would just... heal. Like a tiny miracle happening in real time. Frame 1: scarred, squinting, almost borgne. Frame 12: both eyes open, perfectly healthy, looking like a cat food commercial.</p><p>Somewhere in the safety layers of this model, there&#8217;s a rule that says all cats must have two functioning eyes. No override possible.</p><p>Fine. Two eyes. Whatever. Mistral has two eyes in the teaser. Which means Mistral is not Mistral.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ncN5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda52b229-80f1-406d-8c89-42c6cde9659f_1536x2752.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ncN5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda52b229-80f1-406d-8c89-42c6cde9659f_1536x2752.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ncN5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda52b229-80f1-406d-8c89-42c6cde9659f_1536x2752.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ncN5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda52b229-80f1-406d-8c89-42c6cde9659f_1536x2752.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ncN5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda52b229-80f1-406d-8c89-42c6cde9659f_1536x2752.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ncN5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda52b229-80f1-406d-8c89-42c6cde9659f_1536x2752.jpeg" width="1456" height="2609" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/da52b229-80f1-406d-8c89-42c6cde9659f_1536x2752.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2609,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1414312,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.streaming-radar.com/i/189759548?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda52b229-80f1-406d-8c89-42c6cde9659f_1536x2752.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ncN5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda52b229-80f1-406d-8c89-42c6cde9659f_1536x2752.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ncN5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda52b229-80f1-406d-8c89-42c6cde9659f_1536x2752.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ncN5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda52b229-80f1-406d-8c89-42c6cde9659f_1536x2752.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ncN5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda52b229-80f1-406d-8c89-42c6cde9659f_1536x2752.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>(If you can&#8217;t make a one-eyed cat, how are you supposed to make anything with any edge at all? Every interesting character has a scar, a limp, a missing something. If the safety filters won&#8217;t let you depict imperfection, you&#8217;re making content for toothpaste ads. I hope professional creators have access to uncensored models, because this is unusable for actual storytelling.)</p><p>Then Marc needed to appear again, later in the teaser. Marc is white in the novel and in the earlier keyframes. The model generated a Black man. Shirtless, ripped, looking like he trains twice a day. Not only can AI not keep a character consistent across shots, it changed my character&#8217;s entire ethnicity mid-teaser AND gave him abs. I&#8217;m Black, and I can make little waves with my belly. My abs are well hidden. AI has a selection bias. Blacksad became Black Sad. (I&#8217;m sorry. I had to.)</p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rn-c!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd14c5dad-d438-41af-a51f-5f71ae965bf8_1536x2752.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rn-c!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd14c5dad-d438-41af-a51f-5f71ae965bf8_1536x2752.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rn-c!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd14c5dad-d438-41af-a51f-5f71ae965bf8_1536x2752.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rn-c!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd14c5dad-d438-41af-a51f-5f71ae965bf8_1536x2752.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rn-c!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd14c5dad-d438-41af-a51f-5f71ae965bf8_1536x2752.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rn-c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd14c5dad-d438-41af-a51f-5f71ae965bf8_1536x2752.jpeg" width="1456" height="2609" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d14c5dad-d438-41af-a51f-5f71ae965bf8_1536x2752.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2609,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:640298,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.streaming-radar.com/i/189759548?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd14c5dad-d438-41af-a51f-5f71ae965bf8_1536x2752.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rn-c!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd14c5dad-d438-41af-a51f-5f71ae965bf8_1536x2752.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rn-c!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd14c5dad-d438-41af-a51f-5f71ae965bf8_1536x2752.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rn-c!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd14c5dad-d438-41af-a51f-5f71ae965bf8_1536x2752.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rn-c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd14c5dad-d438-41af-a51f-5f71ae965bf8_1536x2752.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FJzN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835d3853-f446-40d4-95db-0dbb0246b99d_804x1406.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FJzN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835d3853-f446-40d4-95db-0dbb0246b99d_804x1406.png 424w, https://substackcdn.com/image/fetch/$s_!FJzN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835d3853-f446-40d4-95db-0dbb0246b99d_804x1406.png 848w, https://substackcdn.com/image/fetch/$s_!FJzN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835d3853-f446-40d4-95db-0dbb0246b99d_804x1406.png 1272w, https://substackcdn.com/image/fetch/$s_!FJzN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835d3853-f446-40d4-95db-0dbb0246b99d_804x1406.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FJzN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835d3853-f446-40d4-95db-0dbb0246b99d_804x1406.png" width="804" height="1406" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/835d3853-f446-40d4-95db-0dbb0246b99d_804x1406.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1406,&quot;width&quot;:804,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1711233,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.streaming-radar.com/i/189759548?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835d3853-f446-40d4-95db-0dbb0246b99d_804x1406.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FJzN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835d3853-f446-40d4-95db-0dbb0246b99d_804x1406.png 424w, https://substackcdn.com/image/fetch/$s_!FJzN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835d3853-f446-40d4-95db-0dbb0246b99d_804x1406.png 848w, https://substackcdn.com/image/fetch/$s_!FJzN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835d3853-f446-40d4-95db-0dbb0246b99d_804x1406.png 1272w, https://substackcdn.com/image/fetch/$s_!FJzN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835d3853-f446-40d4-95db-0dbb0246b99d_804x1406.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Later, Mistral jumps into the apartment. Except the cat came out grey instead of ginger. And photoreal instead of illustrated. So now I have a Russian Blue doing parkour in what was supposed to be a comic panel.</p><p>I kept iterating. Regenerating. Tweaking. The fal.ai bill climbed to about 50 euros. Manageable.</p><p>Then I made a mistake with Gemini.</p><p>I didn&#8217;t fully understand the pricing for Veo 3.1. I thought I was generating a few test clips. Turns out those were at the &#8220;Quality&#8221; tier, which is 4K, at about $3.20 per clip. And I may have done this more than a few times without checking. By the time I noticed: $70. On four shots.</p><p>Total damage: roughly $120. About 50% more than my &#8220;smart budget.&#8221; I wonder if Patreon has an MCP.</p><p>Claude Code stitched all 14 shots together with FFmpeg (I love this tool, I&#8217;ve written about it a dozen times, if it were a cat I&#8217;d pet it constantly, no kink intended). 90 seconds. 40MB. I watched it. My exact words: &#8220;c&#8217;est totalement catastrophique lol.&#8221;</p><p>The character changed appearance every three seconds. Some shots illustrated, some photoreal, some in the uncanny middle. Seedance&#8217;s French sounded like the bad dubbing of American Samurai 3, so I tried switching to ElevenLabs, mostly because I&#8217;d already paid for a subscription and figured I might as well get something out of it. The text overlays I&#8217;d carefully added were doubling up because the AI had already baked similar text into the video. Just bad.</p><h2>So</h2><p>People keep saying AI is going to replace artists. Any day now, one person with a laptop will produce Pixar from their couch. I just tried it. What actually happens: you spend two days, $120, and you produce 90 seconds of a cat that can&#8217;t stay the same color, a man who keeps changing face, and an eye that heals itself because the AI thinks scars are offensive.</p><p>Some of the individual frames were gorgeous, by the way. That&#8217;s what&#8217;s misleading about AI demos. They show you one frame. One clip. Look how beautiful. And it is. The rain on the cobblestones in the opening shot? Perfect. I&#8217;d use it as a wallpaper.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gSfn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca805ebf-3199-4320-895b-0933780a223c_1536x2752.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gSfn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca805ebf-3199-4320-895b-0933780a223c_1536x2752.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gSfn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca805ebf-3199-4320-895b-0933780a223c_1536x2752.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gSfn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca805ebf-3199-4320-895b-0933780a223c_1536x2752.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gSfn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca805ebf-3199-4320-895b-0933780a223c_1536x2752.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gSfn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca805ebf-3199-4320-895b-0933780a223c_1536x2752.jpeg" width="1456" height="2609" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ca805ebf-3199-4320-895b-0933780a223c_1536x2752.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2609,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:810394,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.streaming-radar.com/i/189759548?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca805ebf-3199-4320-895b-0933780a223c_1536x2752.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gSfn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca805ebf-3199-4320-895b-0933780a223c_1536x2752.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gSfn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca805ebf-3199-4320-895b-0933780a223c_1536x2752.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gSfn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca805ebf-3199-4320-895b-0933780a223c_1536x2752.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gSfn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca805ebf-3199-4320-895b-0933780a223c_1536x2752.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>But making 14 shots that hold together? Consistent characters, unified visual style, emotional pacing, a story that tracks from beginning to end? That&#8217;s direction. That&#8217;s the ability to look at a frame and go &#8220;the cat is grey, it should be ginger&#8221; or &#8220;this man looks too healthy for someone who wants to jump out a window.&#8221; The AI generates. It doesn&#8217;t really direct. Not in the way you need it to.</p><p>And even with me directing (badly), the result was still garbage. Because I&#8217;m not an animator. I&#8217;m a streaming consultant who writes novels on the side. Giving me access to Seedance and Veo is like giving me access to a Formula 1 car. I technically have the keys. I just stall it immediately. (I also literally don&#8217;t have a driver&#8217;s license, but that&#8217;s another story.)</p><p>A real visual artist would have gotten something ten times better with these exact tools. Fewer iterations, better prompts, less money burned. Multiply zero artistic skill by a thousand, still zero. Turns out that&#8217;s not how multiplication works in art.</p><p>So if you&#8217;re an artist worried about AI taking your job: relax. The good artists will stay, because we need them. Maybe more than before. And they&#8217;ll definitely be cheaper to hire than letting people like me loose on API pricing tiers I don&#8217;t understand.</p><p>I&#8217;m probably going to try again. Which might be the real problem.</p><h2>The Open Source Bit</h2><p>I&#8217;m putting the whole thing out there. Storyboard, config file, prompt library, pipeline, budget breakdown, all of it.</p><p>If someone with actual animation chops (or just more patience than me) wants to pick this up and see what they can do: go ahead. The novel is on Amazon, the character design exists, the direction is documented, the tools are all accessible. A competent person should spend way less than I did, because a competent person wouldn&#8217;t regenerate the same shot six times because the cat keeps turning grey.</p><p><strong><a href="https://github.com/ludobos/feliguard">GitHub repo: ludobos/feliguard</a></strong></p><div><hr></div><p><em>I&#8217;m Ludo. I build things with AI to see what works. This was not that. For the rest: <a href="https://www.streaming-radar.com/">streaming-radar.com</a>.</em></p>]]></content:encoded></item><item><title><![CDATA[I don’t know what a CRM is. So I built one.]]></title><description><![CDATA[On building a sales pipeline when you've never actually sold anything.]]></description><link>https://www.streaming-radar.com/p/i-dont-know-what-a-crm-is-so-i-built</link><guid isPermaLink="false">https://www.streaming-radar.com/p/i-dont-know-what-a-crm-is-so-i-built</guid><dc:creator><![CDATA[Ludovic Bostral]]></dc:creator><pubDate>Fri, 27 Feb 2026 09:18:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!E4xm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc898652-a79d-4319-88fb-743e2e19c9a2_1200x630.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!E4xm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc898652-a79d-4319-88fb-743e2e19c9a2_1200x630.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!E4xm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc898652-a79d-4319-88fb-743e2e19c9a2_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!E4xm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc898652-a79d-4319-88fb-743e2e19c9a2_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!E4xm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc898652-a79d-4319-88fb-743e2e19c9a2_1200x630.png 1272w, https://substackcdn.com/image/fetch/$s_!E4xm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc898652-a79d-4319-88fb-743e2e19c9a2_1200x630.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!E4xm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc898652-a79d-4319-88fb-743e2e19c9a2_1200x630.png" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fc898652-a79d-4319-88fb-743e2e19c9a2_1200x630.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:630,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:39086,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.streaming-radar.com/i/189341083?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc898652-a79d-4319-88fb-743e2e19c9a2_1200x630.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!E4xm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc898652-a79d-4319-88fb-743e2e19c9a2_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!E4xm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc898652-a79d-4319-88fb-743e2e19c9a2_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!E4xm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc898652-a79d-4319-88fb-743e2e19c9a2_1200x630.png 1272w, https://substackcdn.com/image/fetch/$s_!E4xm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc898652-a79d-4319-88fb-743e2e19c9a2_1200x630.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Last week, my MCP server had 50 tools. Today it has 80. I need to stop. I won&#8217;t, but I need to.</p><p>(If you don&#8217;t know what an MCP server is, I wrote about it <a href="https://streamingradar.substack.com/p/my-newsletter-has-50-ai-tools-the">a few issues ago</a>. Short version: it&#8217;s a way to give AI tools access to your stuff. My stuff being two research databases, a newsletter archive, and now apparently the emotional state of my sales pipeline.)</p><p>So here&#8217;s the thing. I recently went freelance again. You know the drill. The LinkedIn post where you announce your &#8220;new chapter&#8221; with a sunrise emoji. I didn&#8217;t write that post. I thought about it for four seconds and closed the tab.</p><p>But the problem remains: you need clients. And clients don&#8217;t just appear because you updated your headline. Clients appear because you talk to people. You follow up. You send that slightly awkward email where you&#8217;re trying to sound casual but you&#8217;re actually sweating.</p><p>My mother asks me every year what I do. The only time she stopped asking was when I worked at M6 Web, between 2007 and 2013. She thought I worked in television. M6 was the second biggest channel in France at the time. I never corrected her. It was the only job title she could explain to her friends, and honestly, I wasn&#8217;t going to take that away from her. Point is: if my own mother can&#8217;t figure out what I sell, imagine a stranger on LinkedIn.</p><p>So you&#8217;d think the solution is to just talk to more people. Go outside. Network. But I don&#8217;t have a dog. This is relevant because a dog gives you an excuse to go outside and accidentally bump into humans. My building doesn&#8217;t allow dogs (or maybe it does, I&#8217;ve never actually checked, which tells you everything about my level of social initiative). So the dog strategy is out. What I have is a LinkedIn export and a strong opinion about CRM software.</p><p>CRM stands for Customer Relationship Management, which sounds like something from a McKinsey deck right between &#8220;synergy matrix&#8221; and &#8220;stakeholder alignment.&#8221; I just want to know who I talked to and whether they seemed interested. That&#8217;s it.</p><p>So I tried existing tools. Folk, Attio, HubSpot free tier, a Google Sheet with color-coded rows. I even tried one of those LinkedIn automation tools. Took me about a day to realize it was slower than what I&#8217;d already built myself. Never even made it past the free trial. That&#8217;s two potential sponsorships I&#8217;ve killed in two articles.</p><p>Every tool wants to be your entire business operating system. I don&#8217;t have a business operating system. I have a text file with names in it and a vague sense of guilt about not following up.</p><p>So I built one. In my MCP server. Two days.</p><p>Here&#8217;s what it actually looks like. Six lists: consultants I know, streaming decision-makers, Africa report prospects, US/Canada contacts, Europe, and a general pipeline. Each contact has a status, a priority, and a field I&#8217;m particularly proud of called &#8220;angle_perso&#8221; which is basically &#8220;why would this specific human care about what I do.&#8221; Notes update as conversations happen. The whole thing runs on Supabase, same database as Streaming Radar.</p><p>My workflow now: I open Claude. &#8220;Show me my warm leads.&#8221; I get a list. I pick someone. &#8220;Draft a follow-up for Marie, mention the streaming audit we discussed.&#8221; Claude writes the email, I tweak two words (because Claude is still slightly too polite and I am not), and I send it. Without opening Gmail. Without opening a CRM. Without opening anything except the conversation I was already in.</p><p>Is this a good CRM? Absolutely not. No pipeline visualization. No forecasting. No calendar integration. But here&#8217;s what it has: I actually use it. That&#8217;s the whole point. I never went back to Folk. I never opened the Google Sheet again. But I talk to Claude every day anyway, so the CRM is just... there. Like a Post-it note that talks back.</p><p>Now, the part where I spent 10 euros. I built a Chrome extension (took about an hour, Claude Code again) that lets me tag profiles on LinkedIn and send the data straight to my MCP server. Haiku processes each one for about 0.001 euros. I&#8217;ve tagged ten people so far.</p><p>At this rate, I have enough credits to last until Christmas 2027.</p><p>But &#8220;having a pipeline&#8221; is apparently step one of being a functioning freelancer, according to every podcast hosted by someone who sells courses about freelancing.</p><p>(I just heard the neighbor&#8217;s dog barking. That dog gets invited to more aperos in this building than I do. I have 80 MCP tools and the dog is winning.)</p><p>The truth is, I&#8217;ve sent my CV four times in my life. Twice in 2000, twice in 2007. Since then, never. People call me. I go. I do the job (good or bad). Then they call me again. For 25 years, that worked. Y Combinator, streaming startups, tech companies. Always the same pattern: someone needs a thing done, someone mentions my name, my phone rings.</p><p>But here&#8217;s what I realized recently. They called me because I&#8217;m a good tool. Not because I&#8217;m a good thinker. And there&#8217;s a difference. A tool gets hired to execute. A thinker gets hired to decide. I&#8217;ve been the tool for two decades and now I want to be something else, and I&#8217;m 49, and nobody is going to rebrand me except me.</p><p>So I built a CRM. Not because I&#8217;m good at sales. Because I&#8217;m bad at it, and I needed something that would fit inside the one tool I already open every day.</p><p>Now scroll back up. I said &#8220;I don&#8217;t have a business operating system.&#8221; That was twelve paragraphs ago. Since then I&#8217;ve described a database, six contact lists, an email integration, a Chrome extension, and 80 MCP tools connected to everything.</p><p>A Business Operating System. B.O.S.</p><p>My name is Bostral. My handle is ludobos. I&#8217;ve been building a BOS without even noticing.</p><p>Eighty tools. Zero guru energy. Negative ROI. Subscribe for more.</p><div><hr></div><p><em>This is Ludo Tries Things. Half experiments, half curiosity, zero guru energy.</em></p><div><hr></div><p><em>Ludo Tries Things is the experimental side of what I do. For streaming industry analysis, Streaming Radar is over here &#8594; <a href="https://www.streaming-radar.com/">www.streaming-radar.com</a></em></p>]]></content:encoded></item><item><title><![CDATA[I do a podcast. I don’t talk in it.]]></title><description><![CDATA[35 episodes. Zero words spoken. My clone breathes better than I do.]]></description><link>https://www.streaming-radar.com/p/i-do-a-podcast-i-dont-talk-in-it</link><guid isPermaLink="false">https://www.streaming-radar.com/p/i-do-a-podcast-i-dont-talk-in-it</guid><dc:creator><![CDATA[Ludovic Bostral]]></dc:creator><pubDate>Sat, 21 Feb 2026 23:01:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Mad_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7068b77f-a59c-410e-8a6e-3f6e7a98be6f_1200x630.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Mad_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7068b77f-a59c-410e-8a6e-3f6e7a98be6f_1200x630.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Mad_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7068b77f-a59c-410e-8a6e-3f6e7a98be6f_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!Mad_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7068b77f-a59c-410e-8a6e-3f6e7a98be6f_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!Mad_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7068b77f-a59c-410e-8a6e-3f6e7a98be6f_1200x630.png 1272w, https://substackcdn.com/image/fetch/$s_!Mad_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7068b77f-a59c-410e-8a6e-3f6e7a98be6f_1200x630.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Mad_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7068b77f-a59c-410e-8a6e-3f6e7a98be6f_1200x630.png" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7068b77f-a59c-410e-8a6e-3f6e7a98be6f_1200x630.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:630,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:53765,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.streaming-radar.com/i/188728739?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7068b77f-a59c-410e-8a6e-3f6e7a98be6f_1200x630.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Mad_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7068b77f-a59c-410e-8a6e-3f6e7a98be6f_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!Mad_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7068b77f-a59c-410e-8a6e-3f6e7a98be6f_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!Mad_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7068b77f-a59c-410e-8a6e-3f6e7a98be6f_1200x630.png 1272w, https://substackcdn.com/image/fetch/$s_!Mad_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7068b77f-a59c-410e-8a6e-3f6e7a98be6f_1200x630.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>I&#8217;m obsessed with podcasts. Like, <em>obsessed</em> obsessed. Most podcast addicts at least have a dog to justify the habit. I don&#8217;t have a dog. I don&#8217;t even walk. Bad back. I just consume other people&#8217;s conversations horizontally, like a podcast sommelier with a herniated disc. Five hours a day, earbuds in, lying on my couch, listening to people talk about streaming, tech, geopolitics, whatever.</p><p>So naturally, when I launched <a href="https://www.streaming-radar.com/">Streaming Radar</a>, I wanted a podcast to go with it. Except I didn&#8217;t set up a mic and talk. I write every word, feed it to ElevenLabs, and publish a show where my cloned voice says things I never actually said out loud. About thirty-five episodes in now, covering everything from sports rights wars to YouTube eating TV to Nollywood reshaping African streaming. And before you judge me (okay, actually, go ahead and judge me, it&#8217;s objectively a weird thing to do) let me walk you through how this happened and why it&#8217;s become something I think about more than I probably should.</p><div><hr></div><p>This isn&#8217;t my first podcast life. Before Streaming Radar, I co-hosted a show called <em>On va taper dedans</em> with my friend Florian. We debriefed Top Chef. The real one. The French one. The one with actual chefs who trained for years, not whatever the international versions are doing, but that&#8217;s a different rant.</p><p>Brick and mortar podcasting. We&#8217;d both bought the same mic to make sure our voices sounded consistent. That level of commitment, for a show that paid us exactly zero euros. I&#8217;d edit alone on Audacity, which if you&#8217;ve never used it, looks like the steampunk version of an Airbus cockpit. Long Discord conversations about titles and cover art. The recording was the fun part. Everything around it was a tax.</p><p>Toward the end, in 2023, we started poking at DALL-E for covers and ChatGPT for titles. Even back then, back when ChatGPT was basically a sympathetic mean girl who hallucinated half the time, the time savings were noticeable. Forty-five minutes of title debates became five minutes of &#8220;yeah, option three works, ship it.&#8221;</p><p>Two years later: one guy at his desk, generating thirty-five episodes without ever opening his mouth. I went from artisanal to industrial and I&#8217;m still not sure how I feel about it. (I&#8217;d spent years before that thinking about podcast mechanics as the first employee and CTO at Majelan, a French podcast platform, and now I&#8217;m building <a href="https://www.podvore.com/">Podvore</a>, because apparently I&#8217;m not done with podcasting.)</p><div><hr></div><p>The first Streaming Radar episodes were awful. Flat, robotic, uncanny valley. Every sentence sounded like I was reading a press release at gunpoint. My real voice is all over the place. I speed up when I&#8217;m excited, I trail off mid-thought, I start a sentence and fifteen minutes later I&#8217;m still in it, adding clauses like a man who&#8217;s physically incapable of finding a full stop. The clone did none of that. It just... delivered text.</p><p>I didn&#8217;t care that much, honestly. I was experimenting. That&#8217;s the whole point.</p><p>Some technical context, since people always ask: I use ElevenLabs v2. The v3 model is objectively better (more natural emotions, better pacing) except it destroys my cloned voice. It doesn&#8217;t sound like me anymore. I tried it twice, went back to v2, and decided I&#8217;d rather adapt my writing than lose my voice to a better engine. As for the cloning itself, it was absurdly easy, but only because I had three years of podcast recordings sitting on a hard drive. Ten minutes of clean audio, upload, done. The whole thing costs about &#8364;200 a year, which is nothing, though to be fair, I&#8217;m the undisputed king of negative ROI. That&#8217;s not actually my nickname in the industry. Nobody in the industry has a nickname for me. But if they did, that would be it.</p><p>The surprise, though: the problem wasn&#8217;t really ElevenLabs. The problem was me. My writing. When you write something that&#8217;s going to be <em>read</em>, you write one way. When you write something that&#8217;s going to be <em>heard</em>, you need to write in a fundamentally different way, and I didn&#8217;t know how to do that yet. My first scripts were newsletter paragraphs. Dense. Packed with subordinate clauses and parenthetical thoughts and dashes everywhere. Basically exactly how I&#8217;m writing right now, which works on a page but sounds insane when a synthetic voice tries to speak it. Nobody talks like that. Not even me, and I talk like someone who&#8217;s permanently mid-digression.</p><p>So over nine months, two things happened in parallel. I learned to write for voice: shorter sentences, more breath room (literally), more conversational rhythm, less information density per sentence. And ElevenLabs got dramatically better. Like, weirdly better. The pacing improved. The intonation became less monotone.</p><p>The exact moment I knew something had shifted was in November. I was listening back to a new episode and I heard myself (well, &#8220;myself&#8221;) breathe between two sentences. Not a glitch or an artifact. A natural pause, the kind a real person takes when they&#8217;re about to change topics.</p><p>Hilarious, because in real life, I don&#8217;t breathe. I mean obviously I breathe, I&#8217;m alive, but when I talk I&#8217;m the kind of person who delivers an entire paragraph worth of thought on a single breath and then gasps like I just surfaced from a pool. My clone breathes more naturally than I do. My artificial voice has better vocal hygiene than my actual voice. Make of that what you will.</p><div><hr></div><p>So I did what any reasonable person would do: I pushed further. I sent a voice note to Florian, my former co-host on OVTD. The pitch: what if we each record a five-minute debrief of the latest Top Chef episode, clone our voices, and then let two AI versions of us debate the episode for fifteen minutes? Completely AI-piloted. Top Chef, fully generated. I thought it was hilarious.</p><p>Florian&#8217;s response was instant and perfect. He laughed, said sure, it would be funny, and then explained why he&#8217;d never actually do it. The thing that makes OVTD work is the spontaneity. The dumb jokes. The terrible puns. &#8220;AI will never, ever make couscous nazi jokes,&#8221; he said. And he&#8217;s right. For context, that&#8217;s our running bit about people who insist there&#8217;s only one sacred way to make couscous and any deviation is heresy, a riff on the Soup Nazi from Seinfeld. It&#8217;s the sort of absurd thing that happens when two friends riff on a cooking show at 11 PM and the conversation derails completely. No language model on earth is generating that.</p><p>Which is exactly what I found when I tried the next experiment: simulating an editorial conference. Two fictional people discussing the topic with my clone. A fake newsroom conversation. (You can hear the episode <a href="https://www.streaming-radar.com/p/streaming-radar-31-qui-compte-les?r=5j8ahttps://claude.ai/chat/LINK_EPISODE_CONF_REDAC">here</a>. Judge for yourself.) It&#8217;s... not bad? The voices interact. They build on each other&#8217;s points. It sounds like three people in a room having a structured discussion. It&#8217;s also clearly not real. Nobody interrupts anyone, which is the dead giveaway. Real editorial meetings are 80% interruptions. There&#8217;s a politeness to the exchange that no actual newsroom has ever had. Turns out the messy parts are the whole show.</p><p>It&#8217;s <em>almost</em> there for solo content, though. Almost convincing enough that if you weren&#8217;t paying attention, you&#8217;d think you were hearing someone speak. And if it&#8217;s almost there in February 2026, where is it in February 2027?</p><div><hr></div><p>I should be honest about something. I didn&#8217;t spend much time thinking about the ethics of any of this. I was experimenting, and when I experiment I&#8217;m selfish: I test, I deploy, I move on. Disclosure wasn&#8217;t on my radar. It was on my LinkedIn because I was showing off the process, but that&#8217;s not the same as telling your listeners &#8220;hey, this voice isn&#8217;t really me talking.&#8221; It hit me recently when someone offered me a gig helping build a platform with an explicit no-AI-content policy. I turned it down. Not because the project was wrong, but because I couldn&#8217;t take that job and keep doing what I&#8217;m doing. So consider this the disclosure.</p><p>And while I&#8217;m at it: I don&#8217;t think what I&#8217;m doing has much value. My podcast averages about 200 downloads per episode. A quarter of the listeners are American, which is funny for a show entirely in French. I suspect some of them are bots, or very confused. It&#8217;s a simplified audio version of my newsletter. It&#8217;s water.</p><p>The real humans will win. The ones with actual mics, sitting in shitty caf&#233;s, recording video podcasts that look terrible and sound worse. Those are the people shaping opinions right now. That&#8217;s why Netflix is getting into video podcasts. People who think AI voices will replace that are making the same mistake as people who thought photographs captured your soul. In the future, there will be a hundred AI-generated podcasts for every real one. And most listeners will still choose the real ones. Because the guy rambling into a mic at midnight, contradicting himself, getting heated about something nobody else cares about? That&#8217;s not a bug. That&#8217;s the whole product.</p><p>My podcast is the other kind. The 99%. I&#8217;m fine with that.</p><p>But every word in it is still mine. AI can clone my voice but it can&#8217;t read a Netflix research paper and decide the real story is that their algorithm only does 4% better than methods from the 2000s. It can&#8217;t notice that Hallmark invented the micro-drama model thirteen years before TikTok. It can&#8217;t do the thing where you&#8217;re lying on your couch and suddenly think &#8220;wait, HBO is putting linear channels <em>back</em> inside streaming. Didn&#8217;t we spend ten years burying that?&#8221; The kind of thought you&#8217;re supposed to have while walking a dog, except I&#8217;m horizontal and the dog still doesn&#8217;t exist.</p><p>The day AI can do that, we&#8217;ll talk. Until then it&#8217;s a pattern-matching machine spinning like a dervish. Tomorrow? Ten years? Anyone who tells you they know is selling something.</p><p>If you hear me breathe in the next episode, that&#8217;s not me. But everything else is.</p><p>(<a href="https://www.streaming-radar.com/podcast">Listen here</a>, it&#8217;s in French.)</p><p>or read my first article :<br></p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:188412572,&quot;url&quot;:&quot;https://www.streaming-radar.com/p/who-needs-squarespace-anymore&quot;,&quot;publication_id&quot;:4960281,&quot;publication_name&quot;:&quot;Streaming Radar&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Bniq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217c8b49-9687-4d90-b6ea-33d7fb95f107_1024x1024.png&quot;,&quot;title&quot;:&quot;Who needs Squarespace anymore?&quot;,&quot;truncated_body_text&quot;:&quot;I built three websites with AI. No templates, no drag-and-drop, no &#8364;12/month. Here&#8217;s what actually happened.&quot;,&quot;date&quot;:&quot;2026-02-18T19:12:38.921Z&quot;,&quot;like_count&quot;:0,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:258202,&quot;name&quot;:&quot;Ludovic Bostral&quot;,&quot;handle&quot;:&quot;ludobos&quot;,&quot;previous_name&quot;:&quot;Streaming Radar&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/c99a2c2b-85f5-4fa5-a680-3fe242050224_512x512.jpeg&quot;,&quot;bio&quot;:&quot;Video Everywhere taulier&quot;,&quot;profile_set_up_at&quot;:&quot;2021-05-12T14:22:55.446Z&quot;,&quot;reader_installed_at&quot;:&quot;2022-12-14T13:30:40.548Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:5059622,&quot;user_id&quot;:258202,&quot;publication_id&quot;:4960281,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:false,&quot;publication&quot;:{&quot;id&quot;:4960281,&quot;name&quot;:&quot;Streaming Radar&quot;,&quot;subdomain&quot;:&quot;streamingradar&quot;,&quot;custom_domain&quot;:&quot;www.streaming-radar.com&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Ludovic Bostral est consultant en strat&#233;gie et mod&#232;les &#233;conomiques du streaming. Passionn&#233; par l&#8217;innovation digitale, il accompagne plateformes et contenus dans l&#8217;optimisation de leurs offres SVOD, AVOD et FAST. Sur StreamRadar, il d&#233;crypte chaque semaine&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/217c8b49-9687-4d90-b6ea-33d7fb95f107_1024x1024.png&quot;,&quot;author_id&quot;:258202,&quot;primary_user_id&quot;:258202,&quot;theme_var_background_pop&quot;:&quot;#FF6719&quot;,&quot;created_at&quot;:&quot;2025-05-08T13:32:59.916Z&quot;,&quot;email_from_name&quot;:&quot;Streaming Radar de Ludovic Bostral&quot;,&quot;copyright&quot;:&quot;Ludovic Bostral&quot;,&quot;founding_plan_name&quot;:&quot;Very Happy Streamer&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:&quot;fr&quot;,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false}}],&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;status&quot;:{&quot;bestsellerTier&quot;:null,&quot;subscriberTier&quot;:null,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:null,&quot;paidPublicationIds&quot;:[],&quot;subscriber&quot;:null}}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://www.streaming-radar.com/p/who-needs-squarespace-anymore?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><img class="embedded-post-publication-logo" src="https://substackcdn.com/image/fetch/$s_!Bniq!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217c8b49-9687-4d90-b6ea-33d7fb95f107_1024x1024.png" loading="lazy"><span class="embedded-post-publication-name">Streaming Radar</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">Who needs Squarespace anymore?</div></div><div class="embedded-post-body">I built three websites with AI. No templates, no drag-and-drop, no &#8364;12/month. Here&#8217;s what actually happened&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">2 months ago &#183; Ludovic Bostral</div></a></div>]]></content:encoded></item><item><title><![CDATA[My newsletter has 50 AI tools. The writing is still mine.]]></title><description><![CDATA[I built a brain for my newsletter. Then I open-sourced the parts you can use.]]></description><link>https://www.streaming-radar.com/p/my-newsletter-has-50-ai-tools-the</link><guid isPermaLink="false">https://www.streaming-radar.com/p/my-newsletter-has-50-ai-tools-the</guid><dc:creator><![CDATA[Ludovic Bostral]]></dc:creator><pubDate>Fri, 20 Feb 2026 08:26:52 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/52c4739c-475a-45cd-9f0c-d17564353ab5_1200x630.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7KjF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87b0a9cd-3bde-4473-b0d1-eabe3e54b364_1200x630.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7KjF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87b0a9cd-3bde-4473-b0d1-eabe3e54b364_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!7KjF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87b0a9cd-3bde-4473-b0d1-eabe3e54b364_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!7KjF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87b0a9cd-3bde-4473-b0d1-eabe3e54b364_1200x630.png 1272w, https://substackcdn.com/image/fetch/$s_!7KjF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87b0a9cd-3bde-4473-b0d1-eabe3e54b364_1200x630.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7KjF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87b0a9cd-3bde-4473-b0d1-eabe3e54b364_1200x630.png" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/87b0a9cd-3bde-4473-b0d1-eabe3e54b364_1200x630.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:630,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3029597,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.streaming-radar.com/i/188592137?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87b0a9cd-3bde-4473-b0d1-eabe3e54b364_1200x630.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7KjF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87b0a9cd-3bde-4473-b0d1-eabe3e54b364_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!7KjF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87b0a9cd-3bde-4473-b0d1-eabe3e54b364_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!7KjF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87b0a9cd-3bde-4473-b0d1-eabe3e54b364_1200x630.png 1272w, https://substackcdn.com/image/fetch/$s_!7KjF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87b0a9cd-3bde-4473-b0d1-eabe3e54b364_1200x630.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>I write a newsletter called <a href="https://www.streaming-radar.com/">Streaming Radar</a>. It&#8217;s about the OTT and streaming industry. It&#8217;s in French. It&#8217;s been going for 68 editions now. I bring this up not to brag (OK, a little) but because this article is about something I noticed while writing it.</p><p>Writing Streaming Radar takes me roughly 3 to 5 hours per edition, plus a bunch of micro-sessions throughout the week cataloguing sources. I timed it once because I was curious and then immediately regretted it. Of those hours, maybe 2 are actual writing. The rest? Collecting sources. Tagging them. Tracking which expert said what. Remembering that I already covered Canal+ bundling strategy three editions ago. Checking if that Netflix Africa number is from the Parrot Analytics report or the one from Digital TV Research. Looking up whether I already cited Tim Siglin this month or if I&#8217;m about to make him my de facto co-author.</p><p>This is not writing. This is information logistics. And I was doing it with a mix of browser tabs, a Notion database I kept forgetting to update, and my own questionable memory.</p><p>So I built an MCP server.</p><p>If you don&#8217;t know what MCP is, here&#8217;s the short version: Model Context Protocol. It&#8217;s a way to give AI tools access to your stuff. Your databases, your files, your APIs. Instead of copy-pasting context into Claude every time you want help, you build a server that Claude can talk to directly. It&#8217;s like giving your AI assistant the keys to your office instead of reading everything out loud through the door.</p><p>My MCP server has 50 tools. I know this because I just scrolled through the permissions screen in Claude and counted them. Fifty. For a newsletter. That number sounds insane and I want to explain why it&#8217;s not.</p><div id="youtube2-JVq8ILTiJ6c" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;JVq8ILTiJ6c&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/JVq8ILTiJ6c?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Here&#8217;s what those 50 tools actually do.</p><p>Some of them manage my sources. I read maybe 30 to 40 articles per week for Streaming Radar. Industry reports, earnings calls, analyst pieces, random LinkedIn posts that turn out to be surprisingly good. Before the MCP, these lived in approximately 14 different browser tabs that I&#8217;d lose every time Chrome crashed. Now I save them with a tool call. They get tagged, dated, and tracked. I can see which ones I&#8217;ve used in articles and which ones are still sitting there waiting. Ideas too. I get ideas at weird times. In the shower, while walking the dog I don&#8217;t have, while watching something on Canal+ and suddenly realizing there&#8217;s a pattern. These used to go into Apple Notes and die there. Now when I sit down to write, I can ask Claude to prepare a brief and it pulls together all the unused sources and editorial notes for the next edition. Like a research assistant who actually remembers things.</p><p>Some of them connect to my research database. This is the part that gets a bit ridiculous. I maintain two research reports (Africa Streaming 2026 and Vertical Invasion 2026) backed by a Supabase database with over 20,000 datapoints. 172 companies. 34 countries. 54 tracked experts. 255 sources. The MCP lets Claude query all of this while helping me write. So if I&#8217;m drafting a paragraph about Nigerian SVOD penetration, it can pull the actual number instead of me alt-tabbing to a spreadsheet.</p><p>The rest is article search, editorial notes, stats, expert tracking. Individually mundane. Together, they mean I don&#8217;t have to hold my entire newsletter in my head anymore.</p><p>Actually, let me just show you. I mentioned Tim Siglin earlier, the guy I joked about making my de facto co-author. I just asked Claude to look him up in my MCP. Turns out he&#8217;s in my expert database, tier 2, affiliated with Streaming Media, expertise in codecs and encoding. Number of times I&#8217;ve actually cited him in 68 editions: zero. Tim, if you&#8217;re reading this, I&#8217;m sorry. You&#8217;re in the database. That has to count for something.</p><p>And that Canal+ bundling strategy I said I covered three editions ago? I just searched &#8220;Canal+&#8221; across my archive. Four articles came back. The big bundle piece from May 2025, the FAST and sports rights edition from October, the predictions issue from January, and the sports rights deep dive from August. Three editions ago was wrong. It was closer to five. This is exactly why I need the MCP. My memory is confidently wrong about everything.</p><p>You see the pattern. I should be honest here: this is the first article I&#8217;m writing using this setup. Claude helps me write. I&#8217;m not going to pretend otherwise, I literally did it in the first edition and I&#8217;m doing it now. But the MCP tools? None of them generate a paragraph or suggest a headline or craft a hook. They handle the stuff <em>around</em> the writing. The collecting, the organizing, the remembering, the retrieving. The opinions are mine. The weird digressions about why Canal+ buying MultiChoice is actually about mobile payments in West Africa, that&#8217;s mine. Claude helps me say it. The MCP helps me know what to say.</p><p>I&#8217;ve spent 25 years in streaming and I write novels on the side, so I&#8217;m not short on things to say. Building 50 tools for a newsletter that pays me nothing is not a rational decision. It&#8217;s the most fun I&#8217;ve had in years.</p><p>Everyone talks about AI writing like it&#8217;s one thing. But there&#8217;s a difference between &#8220;AI wrote this&#8221; and &#8220;AI helped me write this while also remembering where I put my sources.&#8221; The writing is why you have a newsletter. That&#8217;s the thing people subscribe for. But you <em>can</em> automate everything around it. That&#8217;s not creativity. That&#8217;s ops. And ops is exactly what computers are supposed to be good at.</p><p>Same thing as the Squarespace story from <a href="https://ludotriesthings.substack.com/p/who-needs-squarespace-anymore">the first edition</a>. The tool didn&#8217;t make me a designer. It got out of my way fast enough to let me be one. The MCP doesn&#8217;t make me a better writer. It&#8217;s more like... the AI lets you go 200km/h on the highway without having to look at the road. The GPS is handled, the lane is clear, the engine does its thing. You&#8217;re still driving. You&#8217;re just not wasting attention on stuff that isn&#8217;t the driving. (Don&#8217;t actually do this unless you&#8217;re on a German autobahn. And if you get caught I&#8217;ll say the AI wrote that part. Also I don&#8217;t have a driver&#8217;s license, so take the metaphor for what it is.)</p><p>Anyway. I open-sourced the core.</p><p>The Streaming Radar MCP is specific to my setup (Supabase, my schema, my workflow). But the source management, the notes, the briefs &#8212; that&#8217;s generic. And since Pocket is dead and bookmarking tools keep disappearing, it felt like the right layer to extract. So I built <a href="https://github.com/ludobos/inkwell-mcp">inkwell-mcp</a>. It&#8217;s an MCP server for newsletter creators. Save sources, organize notes, prepare briefs, track articles and experts. SQLite by default, no external services needed. Your data stays yours. You install it, point it at Claude Desktop or Claude.ai, and you&#8217;ve got a newsletter brain.</p><p>It&#8217;s early. The README says &#8220;expect breaking changes&#8221; and I mean it. The voice cloning and import connectors (Substack, Beehiiv, Ghost) are on the roadmap but not built yet. It type-checks, but I haven&#8217;t battle-tested it with anyone else&#8217;s workflow. I&#8217;m one person building this between actual newsletter editions and freelance gigs.</p><p>Why open source? Because I can. That&#8217;s it. That&#8217;s the reason. Last guy who open-sourced something with &#8220;open&#8221; in the name around AI might have made several hundred million dollars. Hello Claude, call me &#129305;. I&#8217;m currently at minus twelve dollars, which is a domain name and a Cloudflare plan. The ROI curve is pointing in a direction.</p><p>OK, fine, there&#8217;s a slightly more thoughtful answer. I&#8217;ve been in tech long enough to know that the best tools come from people scratching their own itch. I had an itch. I scratched it. The scratch turned into 50 MCP tools and a database with over 20,000 datapoints. It seemed selfish to keep the generic parts to myself when the whole point of MCP is that these things should be composable and shareable.</p><p>Also, there&#8217;s something poetic about open-sourcing a newsletter tool built with AI while writing this article with AI about using AI. The whole AI discourse is stuck in this loop of &#8220;AI will replace creators&#8221; versus &#8220;AI will never replace the human touch.&#8221; Both miss the point. AI doesn&#8217;t replace you and it doesn&#8217;t leave you alone. It makes you faster at being you. It makes the people who already have something to say less bogged down by the stuff that isn&#8217;t the saying. It doesn&#8217;t give you a voice. It gives your voice more road.</p><p>If you write a newsletter and you&#8217;re drowning in tabs and notes and &#8220;I know I read something about this last week,&#8221; go look at <a href="https://github.com/ludobos/inkwell-mcp">inkwell-mcp</a>. Star it if you want. Open an issue if something&#8217;s broken. Don&#8217;t email me if it deletes your database. (It won&#8217;t. Probably. I mean, it&#8217;s SQLite, worst case you have a .db file you can recover. But still, back up your stuff. This is not financial advice.)</p><div><hr></div><p>I used to have a brain and elbow grease. Now I just have a brain. The elbow figured itself out.</p><div><hr></div><p><em>This is Ludo Tries Things. Half experiments, half curiosity, zero guru energy. Subscribe if that sounds like your kind of mess.</em></p>]]></content:encoded></item><item><title><![CDATA[Who needs Squarespace anymore?]]></title><description><![CDATA[This newsletter isn&#8217;t about AI. It&#8217;s about trying things &#8212; in streaming, media, and tech &#8212; and sharing what actually happens.]]></description><link>https://www.streaming-radar.com/p/who-needs-squarespace-anymore</link><guid isPermaLink="false">https://www.streaming-radar.com/p/who-needs-squarespace-anymore</guid><dc:creator><![CDATA[Ludovic Bostral]]></dc:creator><pubDate>Wed, 18 Feb 2026 19:12:38 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!-Ktq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd25577bd-2340-4323-b973-bb4d1cbe02f7_1200x630.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-Ktq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd25577bd-2340-4323-b973-bb4d1cbe02f7_1200x630.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-Ktq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd25577bd-2340-4323-b973-bb4d1cbe02f7_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!-Ktq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd25577bd-2340-4323-b973-bb4d1cbe02f7_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!-Ktq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd25577bd-2340-4323-b973-bb4d1cbe02f7_1200x630.png 1272w, https://substackcdn.com/image/fetch/$s_!-Ktq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd25577bd-2340-4323-b973-bb4d1cbe02f7_1200x630.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-Ktq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd25577bd-2340-4323-b973-bb4d1cbe02f7_1200x630.png" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d25577bd-2340-4323-b973-bb4d1cbe02f7_1200x630.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:630,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3029597,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.streaming-radar.com/i/188412572?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd25577bd-2340-4323-b973-bb4d1cbe02f7_1200x630.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-Ktq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd25577bd-2340-4323-b973-bb4d1cbe02f7_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!-Ktq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd25577bd-2340-4323-b973-bb4d1cbe02f7_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!-Ktq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd25577bd-2340-4323-b973-bb4d1cbe02f7_1200x630.png 1272w, https://substackcdn.com/image/fetch/$s_!-Ktq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd25577bd-2340-4323-b973-bb4d1cbe02f7_1200x630.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>I built three websites with AI. No templates, no drag-and-drop, no &#8364;12/month. Here&#8217;s what actually happened.</h4><p>Not mockups. Not Figma files. Actual, live, indexed-by-Google, people-are-visiting-them-right-now landing pages.</p><p>Total time spent: maybe six hours. Across all three.</p><p>I&#8217;m not a frontend developer. I <em>can</em> write some code. I&#8217;ve been in tech for 25 years, I&#8217;ve managed engineering teams, I know what a div does. But my CSS has always been the kind of CSS that makes actual frontend people physically uncomfortable. The kind where you throw <code>!important</code> at everything and hope for the best.</p><p>So when I tell you I shipped three websites that don&#8217;t look like garbage, you should understand what that means.</p><div><hr></div><p><strong>Page one: my consulting site.</strong> I&#8217;d been putting this off for literally years. You know the drill. You need a personal website. You open Squarespace, you pick a template, you start customizing, and forty-five minutes later you&#8217;re deep in the typography settings trying to decide if the heading should be 42px or 44px and honestly questioning your life choices. I&#8217;ve started that process maybe four times. Never finished.</p><p>This time, I sat down with Claude, described what I wanted (consulting page, streaming industry, case studies from M6 and Afrostream, a way to book calls) and just... iterated. Back and forth. &#8220;Make the hero bigger.&#8221; &#8220;Add a case study section.&#8221; &#8220;The CTA doesn&#8217;t feel right.&#8221; Iterate until it stops bothering you. <a href="https://www.bostral.com/">Bostral.com</a> was live in under two hours. With case studies, testimonials section, call booking integration, the whole thing. Oh, and it&#8217;s available in Mandarin and Spanish. I don&#8217;t speak Mandarin. I don&#8217;t speak Spanish. Ni hao and hola is roughly where my skills end. My English is functional at best, and my French sits somewhere between Brittany and Paris depending on how tired I am. But sure, my website speaks four languages now. That&#8217;s fine. Everything is fine.</p><p><strong>Page two: a bar.</strong> Yeah, you read that right. I invested in a bar in Nantes. Le Wagon, quai de la Fosse, lovely spot, go there if you&#8217;re in town. Which is ironic because my last mimosa was in 2012, in Vegas, and I&#8217;m still not sure it counted. But Fran&#231;ois, the owner, needed a website. Now Fran&#231;ois is a bartender. A very good one. He is not, and I say this with love, a web developer. The man doesn&#8217;t have Instagram. I had to force him to create a Facebook page, which took him an afternoon. In the old world, this meant either: (a) paying someone &#8364;2,000+ for a WordPress site, (b) spending three weekends fighting with Wix, or (c) having no website. Fran&#231;ois was solidly at (c).</p><p>I built <a href="https://www.lewagon-nantes.com/">lewagon-nantes.com</a> in one afternoon. Menu, hours, location, reviews from Google, nice photos, FAQ for SEO, the whole nine yards. It looks professional. It was made by a guy who owns a streaming newsletter sitting in his living room talking to an AI.</p><p><strong>Page three: Podvore.</strong> This one&#8217;s my side project, a podcast discovery tool I&#8217;m building. Needed a landing page to explain what it does before the product is even ready. Classic early-stage move. <a href="https://www.podvore.com/fr">Podvore.com</a> was probably the fastest one. Two hours, maybe less. Because by this point I&#8217;d figured out the rhythm.</p><div><hr></div><p>So what do I actually use.</p><p>The tool is Claude Code. It runs in your terminal. I&#8217;m a terminal guy, have been since the late 90s. So yeah, I&#8217;m biased. For a lot of people, opening a terminal already feels like defusing a bomb. Not my problem right now. You type what you want in plain English, and it writes the files, edits them, creates new ones, runs commands. It&#8217;s not a chat where you copy-paste code back and forth. It <em>is</em> the coding environment. You talk, it builds, you see the result, you talk again.</p><p>The other thing that matters is a file called <code>claude.md</code>. Think of it as a permanent brief that lives in your project folder. Mine says things like &#8220;this is a landing page for a streaming consultant, the tone should be professional but not corporate, use this color palette, the primary CTA is booking a call.&#8221; Every time Claude Code starts working on your project, it reads that file first. So it never forgets the context. It never starts from scratch. It&#8217;s like having an intern who actually reads the brief. Every single time.</p><p>You build up that file over time. First version is three lines. Then you add &#8220;never use gradients.&#8221; Then &#8220;the mobile version should stack vertically.&#8221; Then &#8220;Fran&#231;ois&#8217;s bar opens Tuesday to Saturday, not Monday.&#8221; It becomes the memory of your project. And honestly, writing a good <code>claude.md</code> is half the work. If you can describe what you want clearly enough for that file, you can build it.</p><p>Now the ugly part.</p><p>To get your site from &#8220;it works on my laptop&#8221; to &#8220;it&#8217;s live on the internet,&#8221; you need to push it somewhere. I tried Netlify, which is fine. I tried Vercel, which is great. I did not insert my debit card into Vercel because I&#8217;ve read enough horror stories about outlier invoices to know better. The standard path is GitHub, then auto-deploy to your host. Which means you need git. Which means you need to understand repositories, commits, pushes, branches. Or at least pretend to.</p><p>And that&#8217;s the wall. Not the AI part. Not the design part. The wall is git. <code>git add .</code> <code>git commit -m "stuff"</code> <code>git push origin main</code>. This looks like someone fell asleep on a keyboard. And if something goes wrong (and something always goes wrong), the error messages read like threats written by a robot lawyer.</p><p>A landing page is a pit stop, not the finish line. You can upload your HTML files straight to Netlify and skip git entirely. But most projects don&#8217;t stay a landing page. They grow, they change, you add stuff. And the moment that happens, you want to know what you changed and when. That&#8217;s git. The wall isn&#8217;t going anywhere.</p><p>So why not just use Squarespace? To be fair, they added an AI layer. I don&#8217;t care. I&#8217;m free. My sites are files I own. Not rented templates on someone else&#8217;s server. No &#8364;12/month. No platform lock-in. First article of this newsletter and I&#8217;m already killing any chance of a Squarespace sponsorship. That&#8217;s got to be some kind of record. Follow the steps, get the result, same result as everyone else. It&#8217;s IKEA for websites. I burn IKEA gift cards. Not a metaphor. People give me IKEA gift cards and I burn them. I don&#8217;t want your manual. I don&#8217;t want your template. I want to build something that looks like what I had in my head.</p><p>You don&#8217;t need to read the manual anymore. There is no manual. But you need to understand what you&#8217;re building. Why this section exists. Why this CTA should be above the fold. Why the tone feels off. The knowledge shifted. From &#8220;how to operate the tool&#8221; to &#8220;what am I actually trying to say.&#8221;</p><p>That&#8217;s a better trade.</p><div><hr></div><p>Here&#8217;s what matters though. When a landing page takes two hours instead of two weeks, you just... try more stuff. Podvore exists as a public thing partly because I could spin up a landing page fast enough that the idea didn&#8217;t die in the &#8220;I should really make a website for this&#8221; phase. Le Wagon has a web presence because the friction dropped below Fran&#231;ois&#8217;s threshold of bothering.</p><p>That&#8217;s the real story. Not &#8220;AI writes code.&#8221; That&#8217;s boring. The gap between &#8220;I had an idea&#8221; and &#8220;it exists on the internet&#8221; just got absurdly small. And when that gap shrinks, more ideas survive. Most of them still won&#8217;t work. But at least they get to exist long enough to fail properly.</p><p>I wrote something on my other newsletter, <a href="https://streamingradar.substack.com/p/lia-va-t-elle-inverser-le-rapport">Streaming Radar</a>, a few months ago. The thesis was that AI doesn&#8217;t replace execution. It amplifies the gap between people who know what to build and people who don&#8217;t. I still believe that. These three landing pages don&#8217;t matter because AI wrote HTML. They matter because I knew exactly what each site needed to say, and the tool got out of my way fast enough to let me say it. Not the code. The clarity.</p><div><hr></div><p>This article was written with Claude. Not &#8220;inspired by&#8221; or &#8220;assisted by.&#8221; I mean I talked, it wrote, I said &#8220;no that&#8217;s not right,&#8221; it rewrote, I said &#8220;add the bit about the mimosa,&#8221; it added the bit about the mimosa. The exact same loop I described for building landing pages. Because of course it is.</p><p>I could pretend I wrote every sentence myself. That would be stupid given the whole point of this newsletter. So here we are. Somewhere on the edge of the internet, in a living room in Nantes, armed with one terminal, one AI, zero mimosas since Vegas 2012, and not nearly enough substance abuse to qualify as gonzo journalism. We can&#8217;t stop here. This is newsletter country.</p><div><hr></div><p><em>This is Ludo Tries Things. Half experiments, half curiosity, zero guru energy. Subscribe if that sounds like your kind of mess.</em></p>]]></content:encoded></item></channel></rss>