<?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: Wayne Ma</title>
    <description>The latest articles on DEV Community by Wayne Ma (@sacravenger).</description>
    <link>https://dev.to/sacravenger</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%2F3852772%2Fdf1bb805-4b40-4412-98ac-dca6a4e2f2f6.png</url>
      <title>DEV Community: Wayne Ma</title>
      <link>https://dev.to/sacravenger</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sacravenger"/>
    <language>en</language>
    <item>
      <title>Your AI Can Write the Sales Email. Can You Trust It to Click Send?</title>
      <dc:creator>Wayne Ma</dc:creator>
      <pubDate>Mon, 31 Aug 2026 18:20:40 +0000</pubDate>
      <link>https://dev.to/sacravenger/your-ai-can-write-the-sales-email-can-you-trust-it-to-click-send-2njn</link>
      <guid>https://dev.to/sacravenger/your-ai-can-write-the-sales-email-can-you-trust-it-to-click-send-2njn</guid>
      <description>&lt;p&gt;Ask AI to write a sales email and it can finish before you take a sip of coffee.&lt;/p&gt;

&lt;p&gt;Ask it to open the right account, update the CRM, attach the right file, change a status, click Save, and confirm the change—and the babysitting begins.&lt;/p&gt;

&lt;p&gt;Every browser click becomes a tiny trust exercise.&lt;/p&gt;

&lt;p&gt;Is this the right customer? Is the page still current? Did the button move after a rerender? Did Save actually work? If the connection dropped after the click, will the Agent do it twice?&lt;/p&gt;

&lt;p&gt;This is the browser gap. AI is already good at talking about work. Finishing work inside real browser tabs is harder.&lt;/p&gt;

&lt;h2&gt;
  
  
  The work nobody wants to supervise
&lt;/h2&gt;

&lt;p&gt;Sales and operations teams live in CRMs, partner portals, support tools, recruiting systems, product dashboards, and old admin pages.&lt;/p&gt;

&lt;p&gt;The repetitive work sounds easy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;research a prospect and update the account;&lt;/li&gt;
&lt;li&gt;move a lead to the right stage;&lt;/li&gt;
&lt;li&gt;prepare outreach, then record what happened;&lt;/li&gt;
&lt;li&gt;upload an asset and check the required options;&lt;/li&gt;
&lt;li&gt;work through a long form without losing progress.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These jobs are tedious for people and surprisingly risky for Agents. Two records can look almost identical. A modern form can replace a control while keeping it visually unchanged. An old portal may mix rich text, iframes, uploads, dynamic choices, and a separate Save button.&lt;/p&gt;

&lt;p&gt;The worst failure is uncertainty. An action may have happened just before a timeout. Retrying could create a duplicate message, upload, or submission. Refusing to retry means the person has to inspect the page anyway.&lt;/p&gt;

&lt;p&gt;That is why we built &lt;a href="https://github.com/nanlogic/saccade" rel="noopener noreferrer"&gt;Saccade&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Give the Agent a tab it can be responsible for
&lt;/h2&gt;

&lt;p&gt;Saccade is a live browser Truth and verified-action layer for AI Agents working in authorized Chrome and Edge tabs.&lt;/p&gt;

&lt;p&gt;An Agent knows exactly which tab it owns. It can ask for the current semantic page or only the changes since its last read. When it acts, it uses a current page object—a field, button, choice, table, upload control, or rich-text editor—instead of guessing from an old page description.&lt;/p&gt;

&lt;p&gt;The result comes back with a receipt. Saccade reports whether the action was accepted and whether the expected page change was observed.&lt;/p&gt;

&lt;p&gt;If the object was replaced, the old authority stays stale. If an action may have happened but cannot be verified, the outcome stays unknown and Saccade does not quietly replay it.&lt;/p&gt;

&lt;p&gt;In practical terms, the Agent gets clear answers to four questions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Which tab am I working in?&lt;/li&gt;
&lt;li&gt;Is this still the object I meant to use?&lt;/li&gt;
&lt;li&gt;Did the action take effect?&lt;/li&gt;
&lt;li&gt;Is it safe to try again?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That is what starts to turn browser automation from a demo into work you can hand off.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use it where the browser is actually the best route
&lt;/h2&gt;

&lt;p&gt;Saccade is the browser layer underneath an Agent, not a replacement for every API and integration.&lt;/p&gt;

&lt;p&gt;If a purpose-built API can complete a job faster and more reliably, use it. Saccade is for the steps that genuinely live in the browser: authenticated back offices, partner sites, legacy tools, and interfaces that have no useful connector.&lt;/p&gt;

&lt;p&gt;For sales, that may be the last mile between researched information and a correctly updated account. For operations, it may be a product listing, an upload flow, or a partner portal. For an automation builder, it means the Agent can work in the user's real session without receiving a free-form browser remote control.&lt;/p&gt;

&lt;h2&gt;
  
  
  We tested the part people usually wave away
&lt;/h2&gt;

&lt;p&gt;The Saccade 0.2.0 release candidate went through the same blocking gates in Chrome and Edge: forms, semantic tables, iframe rich text, uploads, reconnects, replaced controls, multiple Agent sessions, and fast moving targets.&lt;/p&gt;

&lt;p&gt;In the Mouse Accuracy gate, it completed 96 of 96 exact-target actions across the two browsers. Mean action latency in those runs ranged from 7.22 ms to 8.50 ms. The &lt;a href="https://github.com/nanlogic/saccade/blob/main/docs/reports/2026-08-30-saccade-0.2.0-release-gate.md" rel="noopener noreferrer"&gt;release evidence&lt;/a&gt; keeps those numbers attached to their test conditions.&lt;/p&gt;

&lt;p&gt;Playwright was an important reference for strict resolution, actionability, assertions, and isolation. It remains an excellent choice for reproducible browser tests. Saccade focuses on a different job: keeping an Agent attached to the user's current, authorized browser state and returning evidence about what changed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try Saccade 0.2.0
&lt;/h2&gt;

&lt;p&gt;The Node package is public on npm:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx &lt;span class="nt"&gt;-y&lt;/span&gt; @nanlogic/saccade &lt;span class="nb"&gt;install
&lt;/span&gt;npx &lt;span class="nt"&gt;-y&lt;/span&gt; @nanlogic/saccade doctor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The source, Extension build, setup guide, and release evidence are public:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/nanlogic/saccade" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/nanlogic/saccade/releases/tag/v0.2.0" rel="noopener noreferrer"&gt;Saccade 0.2.0 release&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/@nanlogic/saccade" rel="noopener noreferrer"&gt;npm package&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your AI can already write the email but you still have to watch every browser click, this is the problem we want to solve.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>productivity</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
