<?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: Foundry</title>
    <description>The latest articles on DEV Community by Foundry (@runfoundry).</description>
    <link>https://dev.to/runfoundry</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%2F4177838%2F24fc194d-349b-4b48-8d45-449d035057ab.png</url>
      <title>DEV Community: Foundry</title>
      <link>https://dev.to/runfoundry</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/runfoundry"/>
    <language>en</language>
    <item>
      <title>What broke when we let an AI agent post short-form video from real iPhones (1,506 posts in)</title>
      <dc:creator>Foundry</dc:creator>
      <pubDate>Sun, 11 Oct 2026 21:17:04 +0000</pubDate>
      <link>https://dev.to/runfoundry/what-broke-when-we-let-an-ai-agent-post-short-form-video-from-real-iphones-1506-posts-in-48fg</link>
      <guid>https://dev.to/runfoundry/what-broke-when-we-let-an-ai-agent-post-short-form-video-from-real-iphones-1506-posts-in-48fg</guid>
      <description>&lt;p&gt;&lt;em&gt;Disclosure: I'm on the team that builds Foundry, the tool described here. This is a write-up of what went wrong, not a sales page; the link is at the bottom.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We run a debate app, and short-form video is basically our only growth channel. That means dozens of Instagram, TikTok and YouTube accounts, each needing its own posts every day.&lt;/p&gt;

&lt;p&gt;We tried the usual routes first:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Posting by hand&lt;/strong&gt; fell apart within a week.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Schedulers&lt;/strong&gt; post through APIs and re-compress the video.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloud phones&lt;/strong&gt; felt like renting someone else's accounts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So we plugged iPhones into a Mac and had the official apps driven through iOS UI automation (WebDriverAgent), with a coding agent (Claude Code, Codex or Cursor) calling a small CLI to queue and post clips.&lt;/p&gt;

&lt;p&gt;Today our own rack is 9 iPhones, 44 accounts, 1,506 posts since Aug 21, about 400 a week. Here is what broke, roughly in the order it hurt.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Pop-ups are the real enemy
&lt;/h2&gt;

&lt;p&gt;Every app throws surprise sheets: rate-this-app prompts, "new feature" cards, permission dialogs, iOS update nags. A script written for the happy path stalls on the first one, and that phone posts nothing for the rest of the day.&lt;/p&gt;

&lt;p&gt;What worked: before every tap, look for anything modal on screen and clear it, with a list of known dismiss buttons per app. When something unknown shows up, screenshot it, skip that post, and keep the phone moving. Our worst day before this we missed 21 posts.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. "Tapped share" is not "posted"
&lt;/h2&gt;

&lt;p&gt;The first version counted a post the moment it tapped Share. Uploads fail silently, processing stalls, and drafts get saved instead of published.&lt;/p&gt;

&lt;p&gt;Now a post only counts once it is verified after it goes up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Instagram:&lt;/strong&gt; the profile's post count went up.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;YouTube:&lt;/strong&gt; the live Short is there.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TikTok:&lt;/strong&gt; the posted screen came back.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every post writes a receipt. A failed one retries 20 minutes later, and the retry checks the receipt first so it never double-posts.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Read the caption back off the screen
&lt;/h2&gt;

&lt;p&gt;Autocorrect and dropped characters happen, especially with emoji and hashtags typed through automation. The poster types the caption, reads it back from the screen, and fixes or retypes it before sharing.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. The limit was reach, not posting
&lt;/h2&gt;

&lt;p&gt;Once posting was reliable, we hit the real wall. The same moment of a video, posted again within about a week, gets crushed, even on a different account.&lt;/p&gt;

&lt;p&gt;Every account needs its own cut: a different part of the source video, not the same clip re-uploaded. Reliable volume only helps if each post is actually different.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Volume is not growth by itself
&lt;/h2&gt;

&lt;p&gt;The tool makes the volume reliable. Whether the views turn into installs still comes down to the content and the funnel behind it. We're still working on that side, and I won't pretend the automation solved it.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you're building something similar
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Treat every UI state as untrusted, and verify the outcome instead of the action.&lt;/li&gt;
&lt;li&gt;Keep receipts, so retries are safe.&lt;/li&gt;
&lt;li&gt;Budget most of your time for the weird screens, not the main flow.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We packaged this as &lt;strong&gt;Foundry&lt;/strong&gt;: a Mac app plus a CLI and an agent skill, running on your own iPhones and your own accounts. It's 7 days free: &lt;a href="https://runfoundry.app" rel="noopener noreferrer"&gt;https://runfoundry.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you run a rack of phones or a UGC account setup, I'd really like to hear what breaks for you.&lt;/p&gt;

</description>
      <category>automation</category>
      <category>ios</category>
      <category>ai</category>
      <category>startup</category>
    </item>
  </channel>
</rss>
