<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: founder mersall</title>
    <description>The latest articles on DEV Community by founder mersall (@founder_mersall_5a8b7449a).</description>
    <link>https://dev.to/founder_mersall_5a8b7449a</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4205250%2Fb6573de2-34c1-4984-8894-f3f1f9ac1465.png</url>
      <title>DEV Community: founder mersall</title>
      <link>https://dev.to/founder_mersall_5a8b7449a</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/founder_mersall_5a8b7449a"/>
    <language>en</language>
    <item>
      <title>What I learned building a short-video pipeline that posts on a schedule</title>
      <dc:creator>founder mersall</dc:creator>
      <pubDate>Sat, 24 Oct 2026 17:59:21 +0000</pubDate>
      <link>https://dev.to/founder_mersall_5a8b7449a/what-i-learned-building-a-short-video-pipeline-that-posts-on-a-schedule-1mkn</link>
      <guid>https://dev.to/founder_mersall_5a8b7449a/what-i-learned-building-a-short-video-pipeline-that-posts-on-a-schedule-1mkn</guid>
      <description>&lt;p&gt;I am a solo developer. Over eight weeks I built PilotReels, a tool that turns one series setup into daily faceless short videos and posts them to YouTube Shorts, Instagram Reels and TikTok. The AI parts were the fast part. This post is about everything else.&lt;/p&gt;

&lt;h2&gt;
  
  
  Approval is a feature, not a safety net
&lt;/h2&gt;

&lt;p&gt;Early on I let finished videos publish on their own. Two videos went out with the same hook three days apart. Now every video stops at an approval step, and the user can edit the script before it renders. Users told me this was the one thing that made them trust the tool. I expected the opposite.&lt;/p&gt;

&lt;h2&gt;
  
  
  A judge model that blocks drafts
&lt;/h2&gt;

&lt;p&gt;One model writes the script. A second model scores it on a short rubric and rejects anything below a threshold. Rejected drafts are regenerated with the judge's notes attached. The judge catches repetition across the series, claims with no source, and openers that do not fit the format. It costs one extra call per video and saved me from most of the embarrassing outputs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Voice must match script
&lt;/h2&gt;

&lt;p&gt;Text-to-speech skips or merges words sometimes. I align the voice back to the script with timestamps and flag any gap over a tolerance. Captions are built from the aligned words, not the raw script, so what you read is what you hear.&lt;/p&gt;

&lt;h2&gt;
  
  
  Right-to-left captions
&lt;/h2&gt;

&lt;p&gt;Arabic captions broke my first caption renderer in three ways: bidi ordering of mixed digits, line wrapping at the wrong boundary, and punctuation jumping sides. Fix: shape text per line before rendering, and keep digits in their own runs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Idempotent pipeline steps
&lt;/h2&gt;

&lt;p&gt;Each stage (plan, write, judge, voice, images, captions, render, publish) writes its output under a key derived from its inputs. A retry after a crash finds the existing output and skips. This made the job queue boring, which is the goal.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stack
&lt;/h2&gt;

&lt;p&gt;Next.js, Postgres with row-level security, a Postgres-backed job queue, object storage for media, one small cloud instance. No queue service, no extra workers until a real need shows up.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would do differently
&lt;/h2&gt;

&lt;p&gt;Ship the approval step on day one. Build the judge before the second provider integration. Do not run a paid ad before a paying user.&lt;/p&gt;

&lt;p&gt;PilotReels is live at &lt;a href="https://pilotreels.com" rel="noopener noreferrer"&gt;https://pilotreels.com&lt;/a&gt;, and the onboarding wizard opens without a login. Questions about any of the above are welcome.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>postgres</category>
      <category>sideprojects</category>
    </item>
  </channel>
</rss>
