<?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: Dima Vremenko</title>
    <description>The latest articles on DEV Community by Dima Vremenko (@dima_vremenko).</description>
    <link>https://dev.to/dima_vremenko</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3654311%2F3774698f-3f3c-4636-b63f-c6fd20753cfa.jpeg</url>
      <title>DEV Community: Dima Vremenko</title>
      <link>https://dev.to/dima_vremenko</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dima_vremenko"/>
    <language>en</language>
    <item>
      <title>No API? No Problem!</title>
      <dc:creator>Dima Vremenko</dc:creator>
      <pubDate>Tue, 09 Dec 2025 23:59:34 +0000</pubDate>
      <link>https://dev.to/dima_vremenko/no-api-no-problem-2j4i</link>
      <guid>https://dev.to/dima_vremenko/no-api-no-problem-2j4i</guid>
      <description>&lt;h2&gt;
  
  
  Why Computer Use Agents (CUAs) Fail
&lt;/h2&gt;

&lt;p&gt;When we set out to build AI tools for healthcare, we had to integrate with a maze of legacy systems that either had no public APIs or charged absurd fees to access their internal ones. Multiple customers were ready to pay us, &lt;em&gt;as long as&lt;/em&gt; our AI could work with their EHRs, CRMs, and internal portals. Out of desperation, we turned to Computer Use Agents — the tech everyone promises will “solve browser automation.”&lt;/p&gt;

&lt;p&gt;Here’s what we actually found:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Too slow&lt;/strong&gt; — they reload entire pages just to extract a single field
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Too expensive&lt;/strong&gt; — you’re burning tokens just to click a button
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Break constantly&lt;/strong&gt; — especially when confronting date pickers 📅🤦 &lt;em&gt;(I once looked through the reasoning logs and the LLM appeared to have briefly contemplated its own existence.)&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;CUAs promise generalizability, but modern web apps aren’t built for systems that take discrete screenshots and spend seconds reasoning before each click. They’re designed for a human’s continuous perception, attention, and reaction time. By the time a CUA decides what to do, the DOM has shifted, the element has re-rendered, and the button it planned to click has already disappeared.&lt;/p&gt;

&lt;h2&gt;
  
  
  Our Insight: Web Apps Already Reveal Their Own APIs
&lt;/h2&gt;

&lt;p&gt;The breakthrough for us was realizing that every modern web app &lt;em&gt;must&lt;/em&gt; communicate with backend services — and that communication is inherently structured. The browser already knows how to authenticate, fetch data, submit forms, paginate results, and trigger workflows. And if the browser knows it, we can know it too.&lt;/p&gt;

&lt;p&gt;By observing the full browser state, we can decode the hidden contract between the frontend and backend:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HTML structure&lt;/strong&gt; and DOM mutations
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JavaScript bundles&lt;/strong&gt; and the logic they execute
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cookies&lt;/strong&gt; and authentication tokens
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local and session storage&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;All network traffic&lt;/strong&gt;: XHR, fetch, GraphQL, REST, streaming
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Runtime signals&lt;/strong&gt; from the JS process itself
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you can see all of this, the structure of the app’s communication reveals itself.&lt;br&gt;&lt;br&gt;
And once you understand that structure, you can replicate it without scraping pixels or driving a synthetic user.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw4tbnwoin8axuznr66xp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw4tbnwoin8axuznr66xp.png" alt="Chrome Debug Console" width="800" height="483"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing Vectorly: Turn Web Apps into APIs
&lt;/h2&gt;

&lt;p&gt;Vectorly doesn’t try to “be a human in the browser.” Instead, it instruments the browser and turns what it sees into reusable automation recipes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1 — Interact with any website in the Vectorly Console
&lt;/h3&gt;

&lt;p&gt;You browse the site naturally—click, search, scroll, and explore as you would. While you interact, Vectorly captures everything the browser sees: network traffic, cookies, storage, HTML, and JS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvt2ctuqvikie9lpzigid.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvt2ctuqvikie9lpzigid.png" alt="Vectorly Dev Console - browser monitoring" width="800" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2 — Tell the agent what you want
&lt;/h3&gt;

&lt;p&gt;Once you’re done with the interaction, you simply describe what you need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;data&lt;/strong&gt; you want extracted (e.g. “all upcoming bookings for this account”)&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;API behavior&lt;/strong&gt; you want replicated (e.g. “search flights with these parameters”)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Our AI agent then reviews all the captured assets and infers the underlying structure of the app’s internal APIs and flows.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3gzjbg45ydo038tfz715.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3gzjbg45ydo038tfz715.png" alt="Vectorly Dev Console - AI Agent" width="800" height="521"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From that analysis, Vectorly's AI Agent will generate a &lt;strong&gt;routine&lt;/strong&gt;: a structured automation recipe made of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Concrete &lt;strong&gt;browser steps&lt;/strong&gt; (navigate, click, input, wait, scroll…)&lt;/li&gt;
&lt;li&gt;Direct &lt;strong&gt;internal API calls&lt;/strong&gt; with the right parameters, headers, cookies, and auth&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1f75v98zcvqzeznzn0k0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1f75v98zcvqzeznzn0k0.png" alt="Vectorly Dev Console - Routine" width="800" height="592"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3 — Call the Routine Via API or MCP
&lt;/h3&gt;

&lt;p&gt;Vectorly then exposes this routine as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A REST API endpoint&lt;/strong&gt; you can call from your code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An MCP tool&lt;/strong&gt; your LLM agents can use as a first-class capability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Define once. Reuse everywhere. You get the real behavior of the web app — without driving a fake user or scraping pixels.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5wzwnahfl6vc0ft2wcza.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5wzwnahfl6vc0ft2wcza.png" alt="ChatGPT - Vectorly MCP" width="800" height="357"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  📚 Resources
&lt;/h2&gt;

&lt;p&gt;If you want to explore Vectorly, here are all the key links in one place:&lt;/p&gt;

&lt;h3&gt;
  
  
  🔗 Official Links
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Developer Console:&lt;/strong&gt; &lt;a href="https://console.vectorly.app" rel="noopener noreferrer"&gt;https://console.vectorly.app&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://vectorly.app" rel="noopener noreferrer"&gt;https://vectorly.app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docs:&lt;/strong&gt; &lt;a href="https://www.vectorly.app/docs" rel="noopener noreferrer"&gt;https://www.vectorly.app/docs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Discord Community:&lt;/strong&gt; &lt;a href="https://www.vectorly.app/discord-invite" rel="noopener noreferrer"&gt;https://www.vectorly.app/discord-invite&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🧩 Open Source
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Web Hacker (Reverse Engineering Framework):&lt;/strong&gt;
&lt;a href="https://github.com/vectorlyapp/web-hacker" rel="noopener noreferrer"&gt;https://github.com/vectorlyapp/web-hacker&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🎥 Videos &amp;amp; Launch
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Demo Video:&lt;/strong&gt; &lt;a href="https://youtu.be/xX4ycRAU5dA" rel="noopener noreferrer"&gt;https://youtu.be/xX4ycRAU5dA&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;YouTube Channel:&lt;/strong&gt; &lt;a href="https://www.youtube.com/@VectorlyAI" rel="noopener noreferrer"&gt;https://www.youtube.com/@VectorlyAI&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;If you try Vectorly, we’d love to hear what workflows, websites, or integrations you want to unlock next!&lt;/p&gt;

</description>
      <category>automation</category>
      <category>ai</category>
      <category>mcp</category>
      <category>api</category>
    </item>
  </channel>
</rss>
