<?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: Dain Jung</title>
    <description>The latest articles on DEV Community by Dain Jung (@daino0416).</description>
    <link>https://dev.to/daino0416</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%2F4205576%2F12222aff-3b33-4c3c-b0bb-b58df9b50cb6.jpg</url>
      <title>DEV Community: Dain Jung</title>
      <link>https://dev.to/daino0416</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/daino0416"/>
    <language>en</language>
    <item>
      <title>My AI agent writes my marketing. Today I made it prove every post is true.</title>
      <dc:creator>Dain Jung</dc:creator>
      <pubDate>Sat, 24 Oct 2026 23:12:34 +0000</pubDate>
      <link>https://dev.to/daino0416/my-ai-agent-writes-my-marketing-today-i-made-it-prove-every-post-is-true-199g</link>
      <guid>https://dev.to/daino0416/my-ai-agent-writes-my-marketing-today-i-made-it-prove-every-post-is-true-199g</guid>
      <description>&lt;p&gt;I build an app called Scribo by myself. To save time, I let an AI agent write my marketing posts. It's fast. But today I noticed something. It never checks if what it says is true.&lt;/p&gt;

&lt;p&gt;I spent the day at Kane CLI Hack Day by TestMu AI, so I tested my own posts with Kane CLI. I found two problems, and both were on my own app.&lt;/p&gt;

&lt;h2&gt;
  
  
  The link that told the wrong story
&lt;/h2&gt;

&lt;p&gt;My agent wrote a Threads post and linked it to my website. Looks fine. Kane opened the post in a real Chrome browser and clicked the link.&lt;/p&gt;

&lt;p&gt;The App Store button on my website changes the campaign tag. The post sends people with &lt;code&gt;ct=threads-oct24&lt;/code&gt;, and the button replaces it with &lt;code&gt;ct=site-en-hero&lt;/code&gt;. So every install from Threads would have looked like it came from my website.&lt;/p&gt;

&lt;p&gt;There was no error. Nothing crashed. The number was just wrong.&lt;/p&gt;

&lt;p&gt;And that's the scary part. My agent learns from these numbers. With this bug, it would have decided Threads doesn't work and stopped posting there.&lt;/p&gt;

&lt;h2&gt;
  
  
  The posts that got old
&lt;/h2&gt;

&lt;p&gt;The second problem was time. I rebuilt Scribo this month. It used to be a handwriting vocabulary app. Now it's an app that rewrites videos and articles at your level.&lt;/p&gt;

&lt;p&gt;My old posts are still online. They still say "a vocabulary notebook you write by hand." People still find them, open the App Store, and see a different app.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;So I built Omni Verify, a gate between my agent and the publish button.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The agent (OpenAI) drafts a post and turns every promise in it into a check. The link's tag, each sentence, each feature.&lt;/li&gt;
&lt;li&gt;Kane CLI runs those checks in a real browser.&lt;/li&gt;
&lt;li&gt;The agent reads Kane's result. If something fails, it fixes the post and Kane checks again.&lt;/li&gt;
&lt;li&gt;Publish stays locked until Kane passes that exact version.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For the link bug, Kane failed the first draft (KR-63). The agent linked straight to the App Store with the right tag, and Kane passed it (KR-68). Then I clicked Re-verify, Kane replayed the test, and it passed again (KR-85). Only then did the publish button unlock.&lt;/p&gt;

&lt;p&gt;This post went out through that gate today.&lt;br&gt;
&lt;a href="https://www.threads.com/@scribo.voca/post/De4-yPnATF5" rel="noopener noreferrer"&gt;https://www.threads.com/@scribo.voca/post/De4-yPnATF5&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For the old posts, Kane checked six promises from three of my old posts against my website today. Three passed. Three failed, all about handwriting. The agent suggests a new version of each post, or taking it down. It doesn't change anything on Threads by itself.&lt;/p&gt;

&lt;p&gt;The agent also remembers. The three failed promises go into a memory file as "retired." When it writes the next post, it can't use them. I tested this by giving it two drafts with the old promise. It refused both.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Kane surprised me
&lt;/h2&gt;

&lt;p&gt;Kane didn't only run my checks. I gave it the campaign, and it designed its own tests, with me approving each step. It also mapped my site with Kane Explore before the agent wrote anything.&lt;/p&gt;

&lt;p&gt;It wasn't perfect. Once, Kane said a sentence wasn't on the page when it was. Asking it a simple true or false for each phrase fixed it. I wrote that down in the repo too.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a pass doesn't mean
&lt;/h2&gt;

&lt;p&gt;A pass doesn't mean more installs. I haven't checked App Store Connect yet. It means the post tells the truth when it goes out.&lt;/p&gt;

&lt;p&gt;That's the point for me. Before my agent learns from a post, I want to know the post was honest and the numbers will be right.&lt;/p&gt;

&lt;p&gt;AI can write the promise. Kane checks if the product keeps it.&lt;/p&gt;

&lt;p&gt;Demo (2 min) &lt;a href="https://www.loom.com/share/428499f73e57490c818743d7e2de3d77" rel="noopener noreferrer"&gt;https://www.loom.com/share/428499f73e57490c818743d7e2de3d77&lt;/a&gt;&lt;br&gt;
Code and every Kane run &lt;a href="https://github.com/DainoJung/omni-verify" rel="noopener noreferrer"&gt;https://github.com/DainoJung/omni-verify&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  KaneCLIHackDay
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>testing</category>
      <category>marketing</category>
      <category>buildinpublic</category>
    </item>
  </channel>
</rss>
