<?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: Agnel Nieves</title>
    <description>The latest articles on DEV Community by Agnel Nieves (@agnelnieves).</description>
    <link>https://dev.to/agnelnieves</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%2F168324%2Fb8ed8b67-086e-4f89-b626-cb7aa4d92b87.jpg</url>
      <title>DEV Community: Agnel Nieves</title>
      <link>https://dev.to/agnelnieves</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/agnelnieves"/>
    <language>en</language>
    <item>
      <title>Vercel Shipped is-agentic.com. Here Is How the Scoreboard Works</title>
      <dc:creator>Agnel Nieves</dc:creator>
      <pubDate>Fri, 21 Aug 2026 21:41:49 +0000</pubDate>
      <link>https://dev.to/promptway/vercel-shipped-is-agenticcom-here-is-how-the-scoreboard-works-49d3</link>
      <guid>https://dev.to/promptway/vercel-shipped-is-agenticcom-here-is-how-the-scoreboard-works-49d3</guid>
      <description>&lt;p&gt;Vercel shipped a public score for whether agents can read your site.&lt;/p&gt;

&lt;p&gt;I had already been doing this work by hand on Promptway: llms.txt, feeds, JSON-LD, markdown siblings, an allowlist in robots.txt. Then they put a number on it and a CLI behind it, which is the part I wanted.&lt;/p&gt;

&lt;p&gt;The announcement is from &lt;a href="https://x.com/vercel_dev" rel="noopener noreferrer"&gt;@vercel_dev&lt;/a&gt;, August 20, 2026.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://x.com/vercel_dev/status/2090857388924661915
Introducing is-agentic.com, a tool to measure how well agents can read your site. Backed by @oradotai's research, you can run:

Audits with 100+ checks
Visualizations of agents using your site
One-click prompts to fix problems
A CLI for agents
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://is-agentic.com" rel="noopener noreferrer"&gt;is-agentic.com&lt;/a&gt; is the report. &lt;a href="https://ora.ai" rel="noopener noreferrer"&gt;Ora&lt;/a&gt; is the scanner. That split is load-bearing. Ora runs every check and scores each layer. Vercel groups those results into Essential, Recommended, and Bonus, stores the history, and publishes a shareable page. If you argue with a number, you are arguing with Ora's evidence first and Vercel's grouping second.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://is-agentic.com/about" rel="noopener noreferrer"&gt;about page&lt;/a&gt; is honest about the limits: a score is a public snapshot, not a certification. Automated checks can be wrong. Read the evidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the number is
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://is-agentic.com/methodology" rel="noopener noreferrer"&gt;methodology&lt;/a&gt; is short. Read it before you treat 74 or 91 as a grade on your company.&lt;/p&gt;

&lt;p&gt;Essential checks share an 80-point pool. Recommended checks share 20. Emerging signals can add a bonus, capped at five, and their absence never lowers the score. Partial results get proportional credit. Checks that do not apply are excluded.&lt;/p&gt;

&lt;p&gt;That last rule is the one I care about. A publication is not penalized for missing OAuth. A SaaS is not scored as a brochure. API, GraphQL, MCP, and commerce checks only fire when the scan finds that surface. Duplicated check IDs across MCP surfaces are averaged so you do not get double-counted for the same gap.&lt;/p&gt;

&lt;p&gt;Start with failed Essential items. Those are the things that stop an ordinary agent: wrong status codes, HTML that is an empty shell, errors that look like pages, content that only exists after JavaScript. Recommended items are for the product you actually ship. Bonus is gravy.&lt;/p&gt;

&lt;p&gt;Each report also shows an observed agent journey. One agent, one walk through the site, the places it got stuck. That run is not part of the numeric score. One task is not a sample of every agent. Treat it as a clip, not a study.&lt;/p&gt;

&lt;p&gt;Reports cache. A re-scan minutes after a deploy can hand you the old number. Give it about six hours, or wait until the snapshot timestamp moves.&lt;/p&gt;

&lt;h2&gt;
  
  
  The grader is a client of itself
&lt;/h2&gt;

&lt;p&gt;Chris Tate, who works on this at Vercel, posted the joke the same day.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://x.com/ctatedev/status/2090865331862446088
Best part: is-agentic.com is itself agentic

Your agent can use it to make your site more agentic
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is not branding. The &lt;a href="https://is-agentic.com/docs" rel="noopener noreferrer"&gt;docs&lt;/a&gt; describe a stack that looks like the checklist they grade you on.&lt;/p&gt;

&lt;p&gt;The CLI is on npm as &lt;a href="https://www.npmjs.com/package/is-agentic" rel="noopener noreferrer"&gt;&lt;code&gt;is-agentic&lt;/code&gt;&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx is-agentic promptway.com
npx is-agentic promptway.com &lt;span class="nt"&gt;--json&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It returns a stored report if one exists, or starts a scan and waits. &lt;code&gt;--json&lt;/code&gt; is the unchanged API body, including structured errors. That is the shape you hand an agent if you want it to close the loop without scraping a HTML report.&lt;/p&gt;

&lt;p&gt;Public pages speak markdown. Send &lt;code&gt;Accept: text/markdown&lt;/code&gt; at the same URL that serves HTML and you get &lt;code&gt;Content-Type: text/markdown; charset=utf-8&lt;/code&gt; with &lt;code&gt;Vary: Accept&lt;/code&gt;. If the client rejects every representation they produce, they 406. The HTML report is complete in the first response, so a crawler does not have to run JavaScript to see the score.&lt;/p&gt;

&lt;p&gt;The report API is &lt;code&gt;GET https://is-agentic.com/api/v1/report?url=...&lt;/code&gt;. No auth. Errors use RFC 9457 &lt;code&gt;application/problem+json&lt;/code&gt;. It does not start a new scan. 404 means nothing is stored yet; start one from the site. Rate limit is 120 requests per IP per 60 seconds, with IETF &lt;code&gt;RateLimit&lt;/code&gt; headers. OpenAPI lives at &lt;a href="https://is-agentic.com/openapi.json" rel="noopener noreferrer"&gt;is-agentic.com/openapi.json&lt;/a&gt;. The RFC 9727 catalog is at &lt;a href="https://is-agentic.com/.well-known/api-catalog" rel="noopener noreferrer"&gt;/.well-known/api-catalog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;There is a read-only MCP server at &lt;a href="https://is-agentic.com/mcp" rel="noopener noreferrer"&gt;https://is-agentic.com/mcp&lt;/a&gt;. Three tools: &lt;code&gt;is_agentic_get_report&lt;/code&gt;, &lt;code&gt;is_agentic_get_methodology&lt;/code&gt;, &lt;code&gt;is_agentic_get_developer_docs&lt;/code&gt;. No OAuth, no API key. Registry metadata is at &lt;a href="https://is-agentic.com/server.json" rel="noopener noreferrer"&gt;server.json&lt;/a&gt;. Hosts that support MCP Apps can render &lt;code&gt;ui://is-agentic/score-report.html&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;It is free. &lt;a href="https://is-agentic.com/pricing.md" rel="noopener noreferrer"&gt;pricing.md&lt;/a&gt; is a machine-readable statement, not a pricing page with a toggle. No write APIs, no webhooks, no keys. You run a scan in the browser. Everything else is read.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I would use it
&lt;/h2&gt;

&lt;p&gt;Run the CLI once. Read Essential failures against a live &lt;code&gt;curl&lt;/code&gt; before you edit anything. Soft 404s and missing &lt;code&gt;Vary&lt;/code&gt; headers are easy to misread from source.&lt;/p&gt;

&lt;p&gt;Then hand the report's fix-it prompt to whatever coding agent you use, with one extra instruction: do not invent product surface to chase Recommended or Bonus. If you do not run an MCP server, do not publish a fake one. If you are a publication, document the machine-readable content stack and stop. The applicability model only works if you refuse the checks that are not yours.&lt;/p&gt;

&lt;p&gt;I pointed it at this host and wrote the field report separately: &lt;a href="https://dev.to/blog/is-agentic-scored-promptway-74"&gt;is-agentic Scored Promptway 74. Here Is What I Changed&lt;/a&gt;. That piece is the 74, the diffs, and the prompt I would reuse. This piece is the product.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this writeup does not cover
&lt;/h2&gt;

&lt;p&gt;I am not reciting Ora's full check list. They own that, and it will move. I am not treating a score as an accessibility audit, a security review, or a ranking guarantee. The about page already said so.&lt;/p&gt;

&lt;p&gt;I also have not waited out the cache on Promptway's production rescan. The number I have is the one from before we shipped the 74-post fixes. When the snapshot timestamp moves, that field report is the place to look.&lt;/p&gt;

&lt;p&gt;If you only read one page besides this one, make it the &lt;a href="https://is-agentic.com/methodology" rel="noopener noreferrer"&gt;methodology&lt;/a&gt;. Then run the CLI on your own host.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://is-agentic.com" rel="noopener noreferrer"&gt;is-agentic.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://is-agentic.com/about" rel="noopener noreferrer"&gt;is-agentic about&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://is-agentic.com/methodology" rel="noopener noreferrer"&gt;is-agentic methodology&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://is-agentic.com/docs" rel="noopener noreferrer"&gt;is-agentic docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://is-agentic.com/openapi.json" rel="noopener noreferrer"&gt;is-agentic OpenAPI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://is-agentic.com/mcp" rel="noopener noreferrer"&gt;is-agentic MCP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ora.ai" rel="noopener noreferrer"&gt;Ora&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://x.com/vercel_dev/status/2090857388924661915" rel="noopener noreferrer"&gt;Vercel announcement&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://x.com/ctatedev/status/2090865331862446088" rel="noopener noreferrer"&gt;Chris Tate on the product being agentic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/blog/is-agentic-scored-promptway-74"&gt;is-agentic Scored Promptway 74. Here Is What I Changed&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://agnelnieves.com/blog/measuring-how-agentic-my-site-is-with-is-agentic.md" rel="noopener noreferrer"&gt;I fixed my site for agents by hand. Then Vercel shipped a scoreboard&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>aeo</category>
      <category>isagentic</category>
      <category>agents</category>
      <category>vercel</category>
    </item>
    <item>
      <title>is-agentic Scored Promptway 74. Here Is What I Changed</title>
      <dc:creator>Agnel Nieves</dc:creator>
      <pubDate>Fri, 21 Aug 2026 21:20:45 +0000</pubDate>
      <link>https://dev.to/promptway/is-agentic-scored-promptway-74-here-is-what-i-changed-4if9</link>
      <guid>https://dev.to/promptway/is-agentic-scored-promptway-74-here-is-what-i-changed-4if9</guid>
      <description>&lt;p&gt;I ran &lt;code&gt;npx is-agentic promptway.com&lt;/code&gt; and the report came back &lt;a href="https://is-agentic.com/scan/promptway.com" rel="noopener noreferrer"&gt;74 out of 100&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Essential was 59 of 80. Recommended 12.6 of 20. A 2.4-point bonus. The label was "Ready with a few material gaps."&lt;/p&gt;

&lt;p&gt;Earlier this week I did the same work on my personal site and wrote it up there (&lt;a href="https://agnelnieves.com/blog/measuring-how-agentic-my-site-is-with-is-agentic.md" rel="noopener noreferrer"&gt;I fixed my site for agents by hand. Then Vercel shipped a scoreboard&lt;/a&gt;). Promptway is the publication I want agents to cite, so I pointed the grader at this host next.&lt;/p&gt;

&lt;p&gt;We already shipped the eight-layer stack I described in &lt;a href="https://dev.to/blog/optimizing-your-site-for-ai-agents"&gt;Optimizing Your Site for AI Agents and LLMs&lt;/a&gt;: robots allowlist, sitemap, llms.txt, llms-full.txt, JSON-LD, feeds, article markdown siblings. The scoreboard still found holes. Most of them were ordinary web hygiene. A couple were "developer resources" checks that assume you are a SaaS. I fixed the first group and refused to fake the second.&lt;/p&gt;

&lt;h2&gt;
  
  
  What 74 was made of
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://is-agentic.com" rel="noopener noreferrer"&gt;is-agentic.com&lt;/a&gt; wraps &lt;a href="https://ora.ai" rel="noopener noreferrer"&gt;Ora&lt;/a&gt;'s agent-readiness research. Essential checks share 80 points, recommended share 20, and a small bonus can add up to 5. Checks that do not apply get excluded. The &lt;a href="https://is-agentic.com/methodology" rel="noopener noreferrer"&gt;methodology page&lt;/a&gt; is worth reading before you argue with a number. Reports cache for six hours, so a re-scan right after a deploy can lie to you.&lt;/p&gt;

&lt;p&gt;The CLI is the useful interface:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx is-agentic promptway.com
npx is-agentic promptway.com &lt;span class="nt"&gt;--json&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It returns a stored report if one exists, or starts a scan and waits. &lt;code&gt;--json&lt;/code&gt; is the shape an agent wants.&lt;/p&gt;

&lt;p&gt;The failures that mattered on this site, in the order the report ranked them:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Agent-friendly 404s. HTTP 404 already, but the body was a styled dead end. Partial credit until the 404 points at llms.txt, the sitemap, and a next step.&lt;/li&gt;
&lt;li&gt;Content without JavaScript. The homepage had an H1 and enough characters. The outline was flat, because the only nested headings lived inside card links, which the grader did not count.&lt;/li&gt;
&lt;li&gt;Markdown content negotiation. &lt;code&gt;Accept: text/markdown&lt;/code&gt; returned &lt;code&gt;text/html&lt;/code&gt;. &lt;code&gt;Vary&lt;/code&gt; had the Next.js RSC list and no &lt;code&gt;Accept&lt;/code&gt;. Failed.&lt;/li&gt;
&lt;li&gt;Developer resource discoverability. An agent searched for "promptway developer resources" and found nothing named that.&lt;/li&gt;
&lt;li&gt;Agent instruction / when-to-use. llms.txt listed pages. It did not say when to reach for us, or when not to.&lt;/li&gt;
&lt;li&gt;Trust pages. About existed. Contact and privacy did not.&lt;/li&gt;
&lt;li&gt;Organization JSON-LD. Name and description were there. &lt;code&gt;contactPoint&lt;/code&gt; and &lt;code&gt;address&lt;/code&gt; were not.&lt;/li&gt;
&lt;li&gt;Content efficiency. Readable text was 4.83 percent of the homepage HTML. The bar is 5.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There was also an MCP check. The site mentions MCP because we write about other people's servers. We do not run one. I did not publish a fake manifest to chase the points.&lt;/p&gt;

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

&lt;p&gt;The 404 now returns a real 404 with a recovery list: llms.txt, &lt;a href="https://dev.to/for-agents"&gt;Promptway developer resources&lt;/a&gt;, sitemap, archive, about, contact. Send &lt;code&gt;Accept: text/markdown&lt;/code&gt; and the same miss is a short markdown body instead of HTML. Verify with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; /dev/null &lt;span class="nt"&gt;-w&lt;/span&gt; &lt;span class="s2"&gt;"%{http_code}"&lt;/span&gt; https://promptway.com/some-path-that-does-not-exist
curl &lt;span class="nt"&gt;-sI&lt;/span&gt; &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Accept: text/markdown"&lt;/span&gt; https://promptway.com/some-path-that-does-not-exist
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first must print 404. The second must print &lt;code&gt;content-type: text/markdown&lt;/code&gt; and a &lt;code&gt;vary&lt;/code&gt; that includes &lt;code&gt;Accept&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Markdown negotiation follows &lt;a href="https://acceptmarkdown.com/recipes/nextjs" rel="noopener noreferrer"&gt;acceptmarkdown.com&lt;/a&gt;. &lt;code&gt;proxy.ts&lt;/code&gt; (Next.js 16's name for middleware) parses &lt;code&gt;Accept&lt;/code&gt;, skips RSC requests, and rewrites markdown-preferring GETs to a catch-all that already knew how to render articles, bots, about, and the new pages. &lt;code&gt;Vary: Accept&lt;/code&gt; is set on that response. HTML still comes back for a browser &lt;code&gt;Accept&lt;/code&gt;. A client that rejects both HTML and markdown gets 406.&lt;/p&gt;

&lt;p&gt;I did not invent a public product API. Promptway is a magazine. The developer surface is the content stack plus Prompt Inspector, which is a same-origin tool. That now lives at &lt;a href="https://dev.to/for-agents"&gt;/for-agents&lt;/a&gt; under the title "Promptway developer resources," with OpenAPI at &lt;code&gt;/openapi.json&lt;/code&gt; and an RFC 9727 catalog at &lt;code&gt;/.well-known/api-catalog&lt;/code&gt;. llms.txt links all three.&lt;/p&gt;

&lt;p&gt;llms.txt also gained a "When to use Promptway" section. The jobs we are right for are AEO guidance from this live Next.js site, a prompt structure with a copy-paste example, a founder interview with a number, a tool writeup that names the skip list, and a sourced news filter. We are the wrong fetch if you need a model API, an MCP server, OAuth, webhooks, or unlabeled AI copy.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/contact"&gt;/contact&lt;/a&gt; and &lt;a href="https://dev.to/privacy"&gt;/privacy&lt;/a&gt; are real pages, each well over 500 characters. The inbox is &lt;code&gt;agnel@promptway.com&lt;/code&gt;. The address in JSON-LD is San Juan, PR. Organization schema now has &lt;code&gt;url&lt;/code&gt;, &lt;code&gt;sameAs&lt;/code&gt;, &lt;code&gt;logo&lt;/code&gt;, &lt;code&gt;email&lt;/code&gt;, &lt;code&gt;address&lt;/code&gt;, and &lt;code&gt;contactPoint&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The homepage grew a "How to read this site" band with an H2 and two H3s that are not inside links, plus enough server-rendered prose that a no-JS crawler sees a nested outline and more than a dek.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I did not change
&lt;/h2&gt;

&lt;p&gt;I did not stand up an MCP server. The recommended check is fair for a product with tools. For a publication it would be a toy endpoint whose only job is the score. If we ever ship one, it will have a job besides the grader.&lt;/p&gt;

&lt;p&gt;I did not strip the magazine layout to win content-efficiency on markup ratio. The cards, the footer, the fonts, and the JSON-LD are the site. I added copy instead of deleting chrome. Locally that moved the homepage text ratio from 4.83 percent to about 5. If the production crawler still calls it partial, I will live with it.&lt;/p&gt;

&lt;p&gt;I did not 406 ordinary browsers. Chrome sends &lt;code&gt;text/html,application/xhtml+xml,...&lt;/code&gt; and still gets HTML.&lt;/p&gt;

&lt;h2&gt;
  
  
  The prompt I would hand an agent
&lt;/h2&gt;

&lt;p&gt;Copy this, put your domain in, and run it in whatever coding agent you use. It is the is-agentic fix-it prompt, rewritten for a site that might be a publication rather than a SaaS.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Audit and fix this site for agents
Use npx is-agentic to audit this site and fix any issues that arise. Inspect the existing codebase before changing files. Follow each published protocol exactly. Preserve visual design and product behavior. Add or update tests for every behavior you change. Verify every public endpoint after implementation.

Site: YOUR_DOMAIN_HERE

1. Run the audit
   - `npx is-agentic YOUR_DOMAIN_HERE`
   - `npx is-agentic YOUR_DOMAIN_HERE --json` if you want structured errors
   - Read https://is-agentic.com/methodology so you know essential (80) vs recommended (20) vs bonus
   - Fix essential failures first. Recommended next. Do not invent product surface to chase recommended or bonus points

2. Agent-friendly 404s
   - Nonexistent paths must return HTTP 404 or 410, never 200 with an app shell
   - The 404 body should tell an agent where to go next: sitemap, llms.txt, docs index, contact
   - If the client sends Accept: text/markdown, the 404 body should be markdown
   - Verify: `curl -s -o /dev/null -w "%{http_code}" https://YOUR_DOMAIN_HERE/some-path-that-does-not-exist`

3. Content without JavaScript
   - Server-render the homepage
   - One H1, nested H2/H3 that are not trapped inside links, 500+ characters of text in raw HTML

4. Markdown content negotiation (acceptmarkdown.com)
   - The same URL that serves HTML must serve text/markdown when Accept prefers it
   - Content-Type: text/markdown; charset=utf-8
   - Vary must include Accept (Vary: Accept, Accept-Encoding is fine)
   - Do not break Next.js RSC (skip negotiation when the RSC or Next-Router-State-Tree headers are present)
   - Optional: .md siblings and Link: rel="alternate"; type="text/markdown"
   - Verify: `curl -sI -H "Accept: text/markdown" https://YOUR_DOMAIN_HERE/`

5. Agent instructions / when to use
   - Add a "When to use this" section to /llms.txt
   - Name the jobs you are right for, the jobs you are not, and how an agent should call you
   - Generic marketing copy does not count

6. Developer resources, only if they are real
   - If you have an API, OpenAPI, MCP, auth docs, or webhooks, publish them at predictable URLs, list them in llms.txt, and put the product name in the page title and H1
   - If you are a publication or a brochure site, document the machine-readable content stack (llms.txt, markdown, feeds) under a page titled "&amp;lt;Product&amp;gt; developer resources"
   - Do not stub an MCP server, OAuth provider, or webhook hub you do not run

7. Trust pages
   - Real /about, /contact, and /privacy, each with at least 500 characters
   - A real inbox and a real location beat a contact form that posts to nowhere

8. JSON-LD
   - Organization (or Person, or SoftwareApplication) with name, description, url, plus the type-appropriate fields: sameAs, logo, address, contactPoint
   - Escape "&amp;lt;" in JSON-LD you dump into a script tag

9. Content efficiency
   - Readable text at least 5 percent of homepage HTML
   - Prefer adding real copy under real headings over deleting the design system

10. Verify, then stop
    - curl the 404, the markdown Accept, /llms.txt, /sitemap.xml, /contact, /privacy, and any OpenAPI or catalog file you added
    - Add tests for Accept parsing, 404 markdown, and trust-page length
    - Finish with a change summary, verification results, and a list of remaining items that need a product decision (MCP, OAuth, write APIs)
    - Do not claim a new is-agentic score until a scan against the deployed host completes. Reports cache for about six hours
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How to run that, as a person
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Read the &lt;a href="https://is-agentic.com/docs" rel="noopener noreferrer"&gt;is-agentic docs&lt;/a&gt; and the &lt;a href="https://is-agentic.com/methodology" rel="noopener noreferrer"&gt;methodology&lt;/a&gt;. Know which pool a failure sits in.&lt;/li&gt;
&lt;li&gt;Run the CLI once. Save the JSON. Do not start in the recommended tier.&lt;/li&gt;
&lt;li&gt;Open the codebase. Confirm each failure against a live &lt;code&gt;curl&lt;/code&gt; before you edit. Soft 404s, missing &lt;code&gt;Vary&lt;/code&gt;, and "we already have llms.txt" are easy to misread from source alone.&lt;/li&gt;
&lt;li&gt;Paste the prompt above into your agent with the domain filled in. Stay in the loop for the product decisions: MCP, OAuth, fake docs. Those are how scores get dishonest.&lt;/li&gt;
&lt;li&gt;Verify on a running server, then deploy, then wait out the cache and scan again.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The grader is applicability-aware. A portfolio and a public API are not scored as the same object. That is the part of is-agentic I trust. The failure mode is treating every recommended row as a feature request.&lt;/p&gt;

&lt;p&gt;I still want the production number to move. This piece is the receipts from the session, not a screenshot of a 100. Run the CLI on your host, hand the prompt to your agent, and keep the refusals in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://is-agentic.com" rel="noopener noreferrer"&gt;is-agentic.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://is-agentic.com/methodology" rel="noopener noreferrer"&gt;is-agentic methodology&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://is-agentic.com/docs" rel="noopener noreferrer"&gt;is-agentic developer docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://acceptmarkdown.com/recipes/nextjs" rel="noopener noreferrer"&gt;acceptmarkdown.com Next.js recipe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://agnelnieves.com/blog/measuring-how-agentic-my-site-is-with-is-agentic.md" rel="noopener noreferrer"&gt;I fixed my site for agents by hand. Then Vercel shipped a scoreboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/blog/optimizing-your-site-for-ai-agents"&gt;Optimizing Your Site for AI Agents and LLMs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ora.ai" rel="noopener noreferrer"&gt;Ora&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>aeo</category>
      <category>isagentic</category>
      <category>agents</category>
      <category>llmstxt</category>
    </item>
    <item>
      <title>Jobs I Would Let a Grok Bot Run After I Close the Laptop</title>
      <dc:creator>Agnel Nieves</dc:creator>
      <pubDate>Wed, 19 Aug 2026 20:06:12 +0000</pubDate>
      <link>https://dev.to/promptway/jobs-i-would-let-a-grok-bot-run-after-i-close-the-laptop-139p</link>
      <guid>https://dev.to/promptway/jobs-i-would-let-a-grok-bot-run-after-i-close-the-laptop-139p</guid>
      <description>&lt;p&gt;The line going around is that Grok Bot will be the breakout AI product of 2026. I do not know if that is true. This week I can use a job I can paste into a Bot and run.&lt;/p&gt;

&lt;p&gt;xAI opened Grok Bot on August 11. Eight days later I put a directory on Promptway: named teammates with one outcome each, a profile description, a first task, and a line that says what the Bot is not allowed to do.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/tools/bots"&gt;The Grok Bot Directory is here.&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Grok Bot is right now
&lt;/h2&gt;

&lt;p&gt;Grok Bot is xAI's always-on teammate product, built with Cursor. You message a named Bot the way you would message a colleague, and it works from a cloud computer that keeps running when your laptop is closed. It signs into the same apps and sites you use, including tools with no API. Several Bots can work in parallel, pass work in a group chat, and only ping you when something needs a yes. That is the official pitch, and the docs back the parts that matter.&lt;/p&gt;

&lt;p&gt;You need SuperGrok Heavy at $300 a month, Cursor Ultra at $200, or Cursor Teams Premium at $120 a seat. Desktop is macOS and Windows, there is an iPhone app, and Linux desktop is missing. Android is not in the current docs. An account can hold 50 Bots and group chats combined, and every Bot on that account shares one computer. Files, browser sessions, and logins are not a privacy wall between teammates.&lt;/p&gt;

&lt;p&gt;I am not going to pretend I have a month of production receipts. The product is eight days old in public. What I do have is the getting-started guide, the use-case list xAI is teaching, the approval model, and a catalog we can keep honest as people run these jobs.&lt;/p&gt;

&lt;h2&gt;
  
  
  What goes in a listing
&lt;/h2&gt;

&lt;p&gt;Most agent posts still share a prompt. Grok Bot wants a short name, one primary job, and a description of how the Bot should work. Then you send a first task with an outcome, sources, constraints, a deliverable, and a review point.&lt;/p&gt;

&lt;p&gt;That description is the closest thing this product has to a job spec. If someone else has the spec, they can stand up the same teammate in ten minutes.&lt;/p&gt;

&lt;p&gt;The official roster is already a tell: Sales Outbound, Talent Scout, Paid Media, Expense Manager, Product Performance, Bug Reproduction, Account Health, Chief of Staff. The getting-started example is named Piper, and her job is product-performance investigations. Focused Bots collect useful context. A "general helper" collects sludge.&lt;/p&gt;

&lt;p&gt;Each listing has seven pieces:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A name.&lt;/li&gt;
&lt;li&gt;One job, written as an outcome.&lt;/li&gt;
&lt;li&gt;The profile description, meant to go into &lt;strong&gt;Bot actions, then Edit Profile&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The first task, meant to go in the first message.&lt;/li&gt;
&lt;li&gt;A hard approval boundary.&lt;/li&gt;
&lt;li&gt;The tools it needs to sign into.&lt;/li&gt;
&lt;li&gt;An optional routine, only after the output is something you would sign.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If a setup cannot name the stop, it does not ship. Sending, publishing, filing, reimbursing, and production changes stay behind you. xAI says the same thing in the approvals doc. I am just making it a required field.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to stand one up tonight
&lt;/h2&gt;

&lt;p&gt;This is the official path, with the directory as the missing paste.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install Grok Bot from the &lt;a href="https://cursor.com/bot/onboarding" rel="noopener noreferrer"&gt;access page&lt;/a&gt;. Sign in with the Cursor account that holds an eligible plan. Legacy Privacy Mode is not supported. You will have to pick a data setting that allows cloud storage.&lt;/li&gt;
&lt;li&gt;Create a Bot. Skip "general helper." Pick a listing, or write one job you already do every week.&lt;/li&gt;
&lt;li&gt;Paste the profile description. That is the standing contract. Task-specific instructions go in the thread.&lt;/li&gt;
&lt;li&gt;When it hits a login, take over the computer. Type the password, the passkey, the 2FA code, the CAPTCHA yourself. Do not put those in chat. Sessions persist on the shared computer, which is convenient and is also the blast radius.&lt;/li&gt;
&lt;li&gt;Send the first task. Correct the format out loud: "Use this shape from now on." Then, and only then, ask it to save a skill. A routine comes last. Background routines keep running with the laptop closed, which is the feature and the reason the approval line exists.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you want a first run that needs no login, the docs suggest attaching a document and asking for a structured summary. Fine for a smoke test. The directory is for the second run, the one that has to live in a real tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would not hand a Bot on day one
&lt;/h2&gt;

&lt;p&gt;The shared computer is one VM per person. Separate Bots are not separate security boundaries. If you sign Outbound into Gmail, Watchlist can see that session. Sign out when a login should die. Do not keep client files lying around in &lt;code&gt;/workspace&lt;/code&gt; for fun.&lt;/p&gt;

&lt;p&gt;Auto Review can require approval before an external email or a production click. Turn it on. Do not write "allow everything in the browser." Websites change their buttons, and the model will click the new one.&lt;/p&gt;

&lt;p&gt;Legal and real estate get their own listings because those jobs are going to show up first, and they are easy to do wrong. &lt;a href="https://dev.to/tools/bots/law-firm-intake"&gt;Intake&lt;/a&gt; is an internal clerk that quotes. It does not advise, file, or email a client. &lt;a href="https://dev.to/tools/bots/realtor-listing-desk"&gt;Listing Desk&lt;/a&gt; builds packets and drafts follow-ups. It does not publish to MLS or text a lead. If your bar, insurer, or MLS has a written AI rule, paste the rule into the description. The Bot will not invent your ethics policy.&lt;/p&gt;

&lt;h2&gt;
  
  
  The other plays I am not doing first
&lt;/h2&gt;

&lt;p&gt;The same week I kept seeing the same advice: start a use-cases newsletter, host a meetup, record a YouTube walkthrough, open a Discord, run office hours, teach a workshop, publish vertical setups.&lt;/p&gt;

&lt;p&gt;Most of that is a night of work that disappears. A directory is something other people can cite. An agent can ingest &lt;code&gt;/tools/bots.md&lt;/code&gt;. A realtor in Broward and a lawyer in San Juan can send the same shape of spec without sitting through my workshop.&lt;/p&gt;

&lt;p&gt;We did the vertical setups anyway. They live in the catalog: real estate, legal, agency reporting, AEO citation watch, founder inbox. Newsletter, meetup, and the YouTube walkthrough can wait until there are jobs in the directory that did not come from me.&lt;/p&gt;

&lt;p&gt;If you already have a Bot that finishes something, &lt;a href="https://dev.to/tools/bots/submit"&gt;send the setup&lt;/a&gt;. Copy the markdown and email it. I will edit for house voice and publish under your name.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://x.ai/news/introducing-grok-bot" rel="noopener noreferrer"&gt;Introducing Grok Bot&lt;/a&gt; (SpaceXAI, 11 August 2026)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://x.ai/bot" rel="noopener noreferrer"&gt;Grok Bot product page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.x.ai/grok-bot/get-started" rel="noopener noreferrer"&gt;Get started&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.x.ai/grok-bot/bots" rel="noopener noreferrer"&gt;Create and manage Bots&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.x.ai/grok-bot/use-cases" rel="noopener noreferrer"&gt;Use cases&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.x.ai/grok-bot/skills-routines-and-automations" rel="noopener noreferrer"&gt;Skills and routines&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.x.ai/grok-bot/approvals-security-and-privacy" rel="noopener noreferrer"&gt;Approvals, security, and privacy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/tools/bots"&gt;Promptway Grok Bot Directory&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>grokbot</category>
      <category>xai</category>
      <category>cursor</category>
      <category>agents</category>
    </item>
    <item>
      <title>Google Thought My Archive Was the Homepage</title>
      <dc:creator>Agnel Nieves</dc:creator>
      <pubDate>Mon, 17 Aug 2026 18:58:34 +0000</pubDate>
      <link>https://dev.to/promptway/google-thought-my-archive-was-the-homepage-3n65</link>
      <guid>https://dev.to/promptway/google-thought-my-archive-was-the-homepage-3n65</guid>
      <description>&lt;p&gt;Search Console handed me a status I already knew by name: &lt;a href="https://support.google.com/webmasters/answer/7440203#duplicate_page_with_proper_canonical_tag" rel="noopener noreferrer"&gt;Duplicate page with proper canonical tag&lt;/a&gt;. I assumed it was the four reprints I had pointed at my personal site. That was half the story. The other half was worse.&lt;/p&gt;

&lt;p&gt;I curled the live HTML. &lt;code&gt;/blog&lt;/code&gt; said its canonical was &lt;code&gt;https://promptway.com&lt;/code&gt;. So did &lt;code&gt;/authors&lt;/code&gt;. So did &lt;code&gt;/authors/agnel-nieves&lt;/code&gt;, &lt;code&gt;/authors/diego-ferraro&lt;/code&gt;, and the rest of the writer pages. Google was doing exactly what I asked: treating the archive and the writer pages as copies of the homepage, and refusing to index them.&lt;/p&gt;

&lt;p&gt;This is the sequel to &lt;a href="https://dev.to/blog/from-invisible-to-indexed"&gt;From Invisible to Indexed&lt;/a&gt;. That piece was about the domain serving the wrong product. This one is about the product serving the wrong address on its own pages.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a "proper" canonical actually means
&lt;/h2&gt;

&lt;p&gt;The status is not an error. Google is saying: this URL has a canonical pointing somewhere else, we agree, we will not index this one. When that is a &lt;code&gt;/blog/slug.md&lt;/code&gt; alternate, or a trailing-slash redirect, you want that outcome. When it is &lt;code&gt;/blog&lt;/code&gt;, the page you put in the sitemap as the archive, you do not.&lt;/p&gt;

&lt;p&gt;I had done the sitemap work. I had &lt;code&gt;index, follow&lt;/code&gt; on those routes. None of that matters if the &lt;code&gt;&amp;lt;link rel="canonical"&amp;gt;&lt;/code&gt; says "the real page is &lt;code&gt;/&lt;/code&gt;."&lt;/p&gt;

&lt;p&gt;The Next.js metadata docs are explicit about this. Metadata objects &lt;a href="https://nextjs.org/docs/app/api-reference/functions/generate-metadata#behavior" rel="noopener noreferrer"&gt;shallow-merge down the tree&lt;/a&gt;, and nested fields like &lt;code&gt;alternates&lt;/code&gt; get replaced by the last segment that defines them. They do not get replaced by a page that never mentions them. A root layout with &lt;code&gt;alternates.canonical: "/"&lt;/code&gt; becomes the canonical of every child that forgets to set its own.&lt;/p&gt;

&lt;p&gt;I had set self-canonicals on &lt;code&gt;/about&lt;/code&gt;, &lt;code&gt;/tools&lt;/code&gt;, &lt;code&gt;/subscribe&lt;/code&gt;, the pillar pages, and every article. I had not set them on &lt;code&gt;/blog&lt;/code&gt;, &lt;code&gt;/authors&lt;/code&gt;, or &lt;code&gt;/authors/[slug]&lt;/code&gt;. Those three inherited the homepage. Production HTML confirmed it.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;og:url&lt;/code&gt; had the same leak. The root layout set &lt;code&gt;openGraph.url: "/"&lt;/code&gt;, and pages that never defined their own &lt;code&gt;openGraph&lt;/code&gt; object inherited the homepage as the social URL. Google treats &lt;code&gt;og:url&lt;/code&gt; as a secondary canonical hint. I pulled that field off the root layout too.&lt;/p&gt;

&lt;h2&gt;
  
  
  The four reprints pointing the wrong way
&lt;/h2&gt;

&lt;p&gt;The Search Console bucket also held four articles I had published first on &lt;a href="https://agnelnieves.com" rel="noopener noreferrer"&gt;agnelnieves.com&lt;/a&gt; and then reprinted here with &lt;code&gt;canonical&lt;/code&gt; pointing back:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/blog/from-invisible-to-indexed"&gt;From Invisible to Indexed&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/blog/optimizing-your-site-for-ai-agents"&gt;Optimizing Your Site for AI Agents and LLMs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/blog/optimizing-for-ai-search-in-2026"&gt;Optimizing for SEO, AEO, GEO, and AI Search in 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/blog/connecting-claude-to-google-ads-and-ga4-via-mcp"&gt;Connecting Claude to Google Ads and GA4 via MCP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is the HackerNoon pattern. The original keeps the credit. I wrote &lt;a href="https://dev.to/blog/getting-your-writing-seen-beyond-your-own-site"&gt;Getting Your Writing Seen Beyond Your Own Site&lt;/a&gt; arguing the opposite for this publication: Promptway is the hub, everywhere else is a spoke. I had applied the rule everywhere except to my own reprints.&lt;/p&gt;

&lt;p&gt;So I flipped them. Promptway now self-canonicalizes. The personal-site copies declare &lt;code&gt;canonical&lt;/code&gt; at the Promptway URL, drop out of that site's sitemap, and show a visible "Originally published on Promptway" line in the header. &lt;code&gt;llms.txt&lt;/code&gt; on the personal site lists the Promptway URL too, so agents that land there still get pointed at the hub.&lt;/p&gt;

&lt;p&gt;If you keep a reprint with an off-site canonical, do not submit it in your sitemap. Submitting it says "index this URL." The page itself says "index that other URL." Search Console will file the contradiction under the same status that started this post.&lt;/p&gt;

&lt;h2&gt;
  
  
  The fix, in the order I would do it again
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Do not set &lt;code&gt;canonical&lt;/code&gt; or &lt;code&gt;og:url&lt;/code&gt; on the root layout.&lt;/strong&gt; Keep feed auto-discovery there if you want. Put the homepage canonical on &lt;code&gt;app/page.tsx&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Give every indexable route a self-canonical.&lt;/strong&gt; Archive, writers index, writer pages, pillars, tools, about, subscribe. If a page is in the sitemap, it needs its own address.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Curl the rendered HTML.&lt;/strong&gt; Do not trust the source file. I used Googlebot as the user agent and grepped for &lt;code&gt;rel="canonical"&lt;/code&gt;. The leak was obvious in one pass.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decide the hub before you syndicate.&lt;/strong&gt; If Promptway is the home copy, the other domain points here. If the personal essay is the home copy, do not put Promptway in the sitemap for that slug.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Give markdown alternates a &lt;code&gt;Link: rel="canonical"&lt;/code&gt; header&lt;/strong&gt; pointing at the HTML article. I want &lt;code&gt;/blog/&amp;lt;slug&amp;gt;.md&lt;/code&gt; crawlable for agents. I do not want it competing as a search result.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The www, http, trailing-slash, and &lt;code&gt;*.vercel.app&lt;/code&gt; copies were already 308ing to the apex. Those were fine. The bug was inside the HTML I was proud of.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I am watching now
&lt;/h2&gt;

&lt;p&gt;After deploy I will request indexing on &lt;code&gt;/blog&lt;/code&gt;, &lt;code&gt;/authors&lt;/code&gt;, and each writer page. The four flipped articles get the same request on Promptway. On the personal site, those four URLs should move into "Duplicate page with proper canonical tag" and stay there. That is the correct status for a spoke.&lt;/p&gt;

&lt;p&gt;I do not have the recrawl numbers yet. I will update this if Google disagrees with the new tags. Last time the domain pointed at the wrong product, the machines believed the tag. I am betting they will believe it this time too.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.google.com/webmasters/answer/7440203#duplicate_page_with_proper_canonical_tag" rel="noopener noreferrer"&gt;Google Search Console: Duplicate page with proper canonical tag&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nextjs.org/docs/app/api-reference/functions/generate-metadata" rel="noopener noreferrer"&gt;Next.js: generateMetadata, how metadata merges&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.google.com/search/docs/crawling-indexing/canonicalization" rel="noopener noreferrer"&gt;Google: How canonicalization works&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/blog/from-invisible-to-indexed"&gt;From Invisible to Indexed&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  - &lt;a href="https://dev.to/blog/getting-your-writing-seen-beyond-your-own-site"&gt;Getting Your Writing Seen Beyond Your Own Site&lt;/a&gt;
&lt;/h2&gt;

</description>
      <category>aeo</category>
      <category>canonical</category>
      <category>searchconsole</category>
      <category>nextjs</category>
    </item>
    <item>
      <title>Block Put Its Agents in the Team Chat. Buzz Is an Audit Log Before It Is a Slack Killer.</title>
      <dc:creator>Agnel Nieves</dc:creator>
      <pubDate>Fri, 07 Aug 2026 14:50:27 +0000</pubDate>
      <link>https://dev.to/promptway/block-put-its-agents-in-the-team-chat-buzz-is-an-audit-log-before-it-is-a-slack-killer-59eg</link>
      <guid>https://dev.to/promptway/block-put-its-agents-in-the-team-chat-buzz-is-an-audit-log-before-it-is-a-slack-killer-59eg</guid>
      <description>&lt;p&gt;The most revealing line in Block's Buzz repository is written for employees.&lt;/p&gt;

&lt;p&gt;Do not use the public build, it says. Download the internal version from &lt;code&gt;squareup/buzz-releases&lt;/code&gt;. That build already points at Block's relay and agent provider.&lt;/p&gt;

&lt;p&gt;Block is using a separate, preconfigured version of its open-source workspace inside the company. That is a stronger case study than the launch claim that Buzz might replace Slack and GitHub. It tells us the product has crossed the line from demo to working infrastructure for at least one team, while stopping well short of proving an enterprise migration.&lt;/p&gt;

&lt;p&gt;Buzz launched publicly on July 21. It puts people and AI agents in the same channels, gives each agent a cryptographic identity, and records messages, code patches, approvals, and workflow events in one signed log.&lt;/p&gt;

&lt;p&gt;The Slack comparison explains the interface. The audit log explains the product.&lt;/p&gt;

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

&lt;p&gt;Buzz is a self-hostable workspace built on the Nostr protocol. A workspace maps to a relay URL. Every message, reaction, workflow step, review approval, and Git event becomes a signed Nostr event stored by that relay.&lt;/p&gt;

&lt;p&gt;Humans and agents use the same identity shape. Each participant has a public key, and every event carries a signature. Agents can join channels, open repositories, send patches, review code, run workflows, edit canvases, and call other agents.&lt;/p&gt;

&lt;p&gt;The relay remains the source of truth. Postgres stores events, channels, workflows, tokens, and the audit chain. Redis handles presence and fan-out. The desktop application uses Tauri and React. &lt;code&gt;buzz-cli&lt;/code&gt; gives agents a JSON-in, JSON-out interface. Agent Client Protocol (ACP) adapters connect Claude Code, Codex, Goose, and other compatible harnesses.&lt;/p&gt;

&lt;p&gt;Here is the practical difference:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Existing team stack&lt;/th&gt;
&lt;th&gt;Buzz&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A Slack bot posts under an integration account&lt;/td&gt;
&lt;td&gt;An agent joins as a named member with its own key&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The agent works in a private terminal session&lt;/td&gt;
&lt;td&gt;Its channel, tool calls, patches, and replies can share one record&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub holds the patch while Slack holds the decision&lt;/td&gt;
&lt;td&gt;Git events and conversation use the same event log&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bot permissions live across OAuth apps and service tokens&lt;/td&gt;
&lt;td&gt;Relay membership, channel membership, and agent identity sit in one system&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Search reconstructs a decision from several products&lt;/td&gt;
&lt;td&gt;Search can query the conversation, patch, workflow, and approval together&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Buzz does not make the underlying model safer. It makes authorship and history easier to inspect.&lt;/p&gt;

&lt;h2&gt;
  
  
  Case one: Block has an internal relay
&lt;/h2&gt;

&lt;p&gt;The public README gives Block employees their own installation path. The internal build comes wired to the company relay and agent provider. Jack Dorsey's launch post said the project was built to reduce Block's dependence on Slack and GitHub.&lt;/p&gt;

&lt;p&gt;Those two facts support a careful conclusion. Block has deployed Buzz internally and wants it to absorb work now split across incumbent tools.&lt;/p&gt;

&lt;p&gt;They do not tell us how many employees use it, how much traffic it carries, or whether any team has removed Slack or GitHub. Block has published no migration percentage, retention number, or incident record.&lt;/p&gt;

&lt;p&gt;The internal build still matters. Block is testing the identity model against its own agent work instead of asking open-source users to discover every rough edge first.&lt;/p&gt;

&lt;p&gt;The release notes focus on problems active teams encounter. Version 0.5.0 shipped on July 28 with use-limited invite links, a generic ACP runtime seam for bringing another harness, agent display names as Git authors, a lower default parallel-agent limit, and a security update for a Nostr denial-of-service advisory.&lt;/p&gt;

&lt;p&gt;Identity, invitations, Git attribution, runtime compatibility, and resource limits are not landing-page features. They are the problems a working room produces.&lt;/p&gt;

&lt;h2&gt;
  
  
  Case two: Jupiter Broadcasting opened a community
&lt;/h2&gt;

&lt;p&gt;Jupiter Broadcasting linked a live Buzz community from its July 26 episode of LINUX Unplugged. The episode page also points to external-agent integration work for Hermes, a multi-agent system the network has been testing.&lt;/p&gt;

&lt;p&gt;This is an early outside deployment, not a customer success story. Jupiter already runs a technical community across several open tools, which makes it unusually tolerant of beta infrastructure. Its use still tests something Block cannot prove alone: whether a community that values self-hosting will move conversation and agents into the same room.&lt;/p&gt;

&lt;p&gt;The linked work is specific. A feature request asks Buzz to support external agent systems that do not speak ACP. Related pull requests add Hermes runtime discovery and document the host integration.&lt;/p&gt;

&lt;p&gt;That is open-source adoption in its least polished form. A real community wants to bring an existing agent stack, finds the protocol seam too narrow, and contributes the missing adapter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Case three: A real permissions gap appeared in two days
&lt;/h2&gt;

&lt;p&gt;On July 23, an operator filed a request for channel-scoped guest access. They run a membership-gated Buzz community with internal channels and agents. They want customers to enter one public support channel without gaining access to anything else.&lt;/p&gt;

&lt;p&gt;As of July 29, Buzz cannot express that policy.&lt;/p&gt;

&lt;p&gt;The relay can require membership for everyone or accept authenticated identities more broadly. Channel visibility applies after relay admission. The operator wants a guest to read and write in &lt;code&gt;#support&lt;/code&gt; while blocking every other channel, repository, workflow, direct message, and administration surface.&lt;/p&gt;

&lt;p&gt;This issue is the best early case study in the repository because it shows the product working and the authorization model failing at the same time.&lt;/p&gt;

&lt;p&gt;Cryptographic identity answers who signed an event. It does not automatically answer which event that identity should be allowed to publish. The operator wrote out the missing contract in detail: one allowlisted channel, text-only at first, normal moderation and rate limits, agents allowed to answer, and no broader relay membership.&lt;/p&gt;

&lt;p&gt;That request is more useful than another screenshot of an agent posting in chat. It names the boundary a production community needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The product claim that holds up
&lt;/h2&gt;

&lt;p&gt;Block says agents should be members instead of bots. That claim holds up in the architecture.&lt;/p&gt;

&lt;p&gt;Buzz's agent runtime uses two small Rust binaries. &lt;code&gt;buzz-agent&lt;/code&gt; speaks ACP, calls a model, and manages sessions. &lt;code&gt;buzz-dev-mcp&lt;/code&gt; gives the agent a shell and file editor through the Model Context Protocol (MCP). The pieces communicate through published protocols, so teams can swap the model provider or agent harness without rebuilding the workspace.&lt;/p&gt;

&lt;p&gt;Each community keeps its own profiles, presence, direct messages, memories, jobs, memberships, and audit trail. The same public key can join another community, but the agent's state does not silently follow it across hosts.&lt;/p&gt;

&lt;p&gt;Portable identity does not become portable access by accident, which is the safer boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Slack-killer claim is early
&lt;/h2&gt;

&lt;p&gt;Buzz has desktop applications, chat, channels, threads, direct messages, canvases, media, search, Git events, workflows, and an agent-first command-line interface. It also says plainly that it is unfinished.&lt;/p&gt;

&lt;p&gt;As of July 29, the public roadmap still lists workflow approval gates and parts of the mobile experience as active work. Hosted relays are free during beta, with no published enterprise price or final usage limits. Slack Connect, mature retention controls, enterprise discovery, identity-provider integration, and years of administration tooling do not disappear because Nostr events have signatures.&lt;/p&gt;

&lt;p&gt;The self-hosting story carries work too. A production relay brings Postgres, Redis, object storage, backups, updates, key recovery, monitoring, and incident response. Teams gain control because they accept the operating burden.&lt;/p&gt;

&lt;p&gt;Buzz may reduce seven tabs to one substrate. It also puts seven products' worth of responsibility onto that substrate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who should pilot it
&lt;/h2&gt;

&lt;p&gt;A small engineering team or open-source community should run a pilot when agents already perform real work and the private agent conversation keeps vanishing from the team record.&lt;/p&gt;

&lt;p&gt;Use one repository, two agents, and one workflow. Give the research agent read-only access. Give the coding agent a disposable branch. Require a human reaction before a workflow can publish or merge. Measure how often teammates can reconstruct a decision from Buzz alone and how often they return to Slack or GitHub for missing context.&lt;/p&gt;

&lt;p&gt;Keep the incumbent tools during the pilot. Buzz has not earned a cutover.&lt;/p&gt;

&lt;p&gt;Teams with regulated data, complex guest access, large Slack Connect networks, or mature GitHub governance should wait. The channel-scoped support issue shows why. Signed events are valuable, but authorization still needs the boring policy work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Verdict
&lt;/h2&gt;

&lt;p&gt;Buzz has the most coherent method I have seen for tying agent work to an identity, an authority, a room, and a body of evidence.&lt;/p&gt;

&lt;p&gt;Block's internal build proves the company is willing to use its answer. Jupiter Broadcasting proves an outside community can extend it. The support-channel request proves the permissions model still has sharp edges.&lt;/p&gt;

&lt;p&gt;Pilot Buzz as an agent workspace. Do not call it a Slack and GitHub replacement until a team publishes the migration numbers and the authorization gaps close.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/block/buzz" rel="noopener noreferrer"&gt;Block, Buzz open-source repository and internal installation path&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/block/buzz/blob/main/ARCHITECTURE.md" rel="noopener noreferrer"&gt;Block, Buzz architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/block/buzz/blob/main/VISION_AGENT.md" rel="noopener noreferrer"&gt;Block, Buzz agent runtime design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/block/buzz/releases/tag/v0.5.0" rel="noopener noreferrer"&gt;Buzz Desktop v0.5.0 release notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/block/buzz/issues/2475" rel="noopener noreferrer"&gt;GitHub issue 2475, channel-scoped guest access for a membership-gated Buzz community&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.jupiterbroadcasting.com/show/linux-unplugged/677/" rel="noopener noreferrer"&gt;Jupiter Broadcasting, LINUX Unplugged 677: We Got a Buzz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://thenewstack.io/block-buzz-agent-workspace/" rel="noopener noreferrer"&gt;The New Stack interview with Block's Bradley Axen&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>buzz</category>
      <category>block</category>
      <category>aiagents</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Pieter Levels Paid $19 for Kimi K3. It Cleared the To-Do List Claude Would Not Touch.</title>
      <dc:creator>Agnel Nieves</dc:creator>
      <pubDate>Tue, 04 Aug 2026 16:16:29 +0000</pubDate>
      <link>https://dev.to/promptway/pieter-levels-paid-19-for-kimi-k3-it-cleared-the-to-do-list-claude-would-not-touch-4jc3</link>
      <guid>https://dev.to/promptway/pieter-levels-paid-19-for-kimi-k3-it-cleared-the-to-do-list-claude-would-not-touch-4jc3</guid>
      <description>&lt;p&gt;Pieter Levels wanted to install Yahoo! Messenger from 2003 inside a Windows XP desktop running in the browser. Claude Code kept treating the emulator like a cybersecurity problem.&lt;/p&gt;

&lt;p&gt;He spent two weeks bouncing between model fallbacks and safety blocks. Then he opened X and asked how to run Kimi K3 through a coding agent. The answer changed his afternoon.&lt;/p&gt;

&lt;p&gt;Levels installed OpenCode, connected it directly to Kimi, paid $19 for a membership, switched the agent into Build mode, and let it work through the simulator's to-do list. His report after the switch was short: K3 was "absolutely hammering through" the work.&lt;/p&gt;

&lt;p&gt;This is a good founder case study because the task stayed recognizable. A browser emulator was stuck. The founder changed the stack. Work resumed.&lt;/p&gt;

&lt;p&gt;It is also a messy model comparison, which is where the useful part begins.&lt;/p&gt;

&lt;h2&gt;
  
  
  The project K3 walked into
&lt;/h2&gt;

&lt;p&gt;The Windows XP simulator sits at &lt;a href="https://pieter.com" rel="noopener noreferrer"&gt;pieter.com&lt;/a&gt;. It is the kind of project Levels keeps returning to: old software, browser emulation, a long list of rough edges, and no client waiting for a compliance memo.&lt;/p&gt;

&lt;p&gt;He had already been using Claude Code heavily. In June, he wrote that he had coded almost entirely on a virtual private server with Claude Code for nearly a year. The switch did not come from a tourist opening two chat tabs and asking for a snake game. It came from a paying power user who had run into the same refusal pattern for days.&lt;/p&gt;

&lt;p&gt;Levels described the immediate problem in public:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Claude Code couldn't do this for 2 weeks."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;His complaint centered on safety fallbacks. The model treated requests around the Windows XP environment as risky even though Levels was working on a hobby project he controlled.&lt;/p&gt;

&lt;p&gt;The task context changes how I read the refusal. A guardrail can be reasonable in one environment and maddening in another. Levels was not asking an agent to probe a bank. He was trying to make Yahoo! Messenger work in a browser toy.&lt;/p&gt;

&lt;h2&gt;
  
  
  He changed four variables, not one
&lt;/h2&gt;

&lt;p&gt;The viral version of this story is Kimi K3 beat Claude. The public record supports a narrower finding.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Before&lt;/th&gt;
&lt;th&gt;After&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Model&lt;/td&gt;
&lt;td&gt;Claude models, with reported safety fallbacks&lt;/td&gt;
&lt;td&gt;Kimi K3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Harness&lt;/td&gt;
&lt;td&gt;Claude Code&lt;/td&gt;
&lt;td&gt;OpenCode&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Provider path&lt;/td&gt;
&lt;td&gt;Anthropic through Claude Code&lt;/td&gt;
&lt;td&gt;Direct Kimi connection after an OpenRouter rate limit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Permissions&lt;/td&gt;
&lt;td&gt;Claude's policy and tool gates&lt;/td&gt;
&lt;td&gt;OpenCode Build mode with permission bypass enabled&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Task&lt;/td&gt;
&lt;td&gt;Windows XP simulator to-do list&lt;/td&gt;
&lt;td&gt;The same project and backlog&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;K3 deserves credit for completing work that had stalled. Levels also removed several sources of friction around the model.&lt;/p&gt;

&lt;p&gt;He published the setup on July 17. Install OpenCode. Create a Kimi account. Pay $19. Get an API key. Connect Kimi Code inside OpenCode. Switch to Build mode. His instructions also recommend bypassing permissions, which he already did in Claude Code.&lt;/p&gt;

&lt;p&gt;That final setting makes the run faster and less comparable. A model with broad shell access can finish jobs that a more constrained agent pauses to confirm. It can also damage more when it guesses wrong.&lt;/p&gt;

&lt;p&gt;Levels made a rational trade for a hobby emulator. I would not copy that trade onto a production database.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why K3 fit this job
&lt;/h2&gt;

&lt;p&gt;Moonshot AI released Kimi K3 on July 16, one day before Levels published his switch. The model has 2.8 trillion total parameters in a mixture-of-experts architecture, with 104 billion activated for each token. It accepts a one-million-token context and handles text, images, and video.&lt;/p&gt;

&lt;p&gt;The specifications matter less here than the training target. Moonshot built K3 for long coding sessions, large repositories, terminal tools, and visual feedback loops. A browser operating-system simulator touches all four.&lt;/p&gt;

&lt;p&gt;Moonshot's own technical post says an early K3 build handled most of the team's kernel-optimization work late in development. The company also reports a 48-hour autonomous chip-design run and a compiler project built from scratch. Those are vendor case studies, so I treat the measurements as claims until independent teams reproduce them. They still show what Moonshot tuned the model to attempt.&lt;/p&gt;

&lt;p&gt;Levels supplied an outside example with a public project and a named workflow. On the same day, he also published a &lt;a href="https://levels.io/macos-27-in-the-browser-by-kimi-k3" rel="noopener noreferrer"&gt;macOS 27 browser interface created with K3&lt;/a&gt;. That does not prove the model wins every frontend task. It does show the visual coding loop was more than a benchmark row.&lt;/p&gt;

&lt;h2&gt;
  
  
  The cost moved from abstract to $19
&lt;/h2&gt;

&lt;p&gt;Levels first tried OpenRouter and hit an upstream rate limit. He then went straight to Kimi, bought the $19 membership, and used the provider's API key with OpenCode.&lt;/p&gt;

&lt;p&gt;Moonshot prices the K3 API separately at $0.30 per million cache-hit input tokens, $3 per million cache-miss input tokens, and $15 per million output tokens. The company says coding workloads on its official API exceed a 90 percent cache-hit rate.&lt;/p&gt;

&lt;p&gt;That is vendor-reported cache performance. Your bill depends on the harness, prompt reuse, context size, and how often the agent rewrites its own plan. K3 always thinks, and long autonomous runs can burn output tokens quickly.&lt;/p&gt;

&lt;p&gt;The relevant founder number remains $19. That was cheap enough for Levels to stop arguing with his old setup and try a new route.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the case study gets uncomfortable
&lt;/h2&gt;

&lt;p&gt;K3 has its own failure modes. Moonshot lists three in the release notes.&lt;/p&gt;

&lt;p&gt;First, the model expects preserved thinking history. A harness that drops earlier reasoning, or a mid-session model swap, can make quality unstable. Moonshot recommends starting K3 in a compatible harness instead of dropping it into a conversation another model began.&lt;/p&gt;

&lt;p&gt;Second, the model can act too aggressively. Moonshot says K3 may make unexpected decisions when intent is ambiguous. The company recommends explicit constraints in the system prompt or &lt;code&gt;AGENTS.md&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Third, Moonshot concedes that the overall user experience still trails the strongest proprietary models. A public Kimi Code issue filed after launch also reports the terminal interface hanging during a trivial prompt at maximum effort. The failure surface changed with the model.&lt;/p&gt;

&lt;p&gt;Levels solved one kind of agent friction by choosing a model trained to keep going and a harness configured to let it. The same combination can turn a vague instruction into a long, expensive mistake.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would copy from the switch
&lt;/h2&gt;

&lt;p&gt;I would copy the routing decision and leave the permission bypass behind.&lt;/p&gt;

&lt;p&gt;When a coding agent refuses a legitimate task twice, write down the task, the exact refusal, the branch state, and the acceptance test. Start a fresh session in a second harness with a second model. Give it the same repository and the same test. Compare the completed diff, elapsed time, tool calls, and regressions.&lt;/p&gt;

&lt;p&gt;Do not continue the old conversation after the switch. K3's own documentation warns against that path.&lt;/p&gt;

&lt;p&gt;Keep the second agent inside a disposable branch and a scoped environment. Levels can rebuild a browser simulator when an agent gets inventive. Your billing system is less funny.&lt;/p&gt;

&lt;h2&gt;
  
  
  The founder lesson
&lt;/h2&gt;

&lt;p&gt;Levels did not wait for a benchmark committee. He had a blocked task, spent $19, and changed the route.&lt;/p&gt;

&lt;p&gt;The result is strong evidence that Kimi K3 belongs in the coding-agent rotation for long, visual, tool-heavy work. It is weak evidence that K3 is categorically better than Claude because the harness, provider, and permissions changed with the model.&lt;/p&gt;

&lt;p&gt;The evidence is enough for a useful operator story: a stuck job, a visible change, and a result someone else can test.&lt;/p&gt;

&lt;p&gt;Run K3 on a fresh branch. Keep the acceptance test fixed. Keep the permissions narrower than Pieter Levels did.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://levels.io/kimi-k3-beats-claude-on-windows-xp-simulator" rel="noopener noreferrer"&gt;Pieter Levels, Kimi K3 works through the Windows XP simulator backlog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://levels.io/how-to-code-with-kimi-k3" rel="noopener noreferrer"&gt;Pieter Levels, How to code with Kimi K3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://levels.io/macos-27-in-the-browser-by-kimi-k3" rel="noopener noreferrer"&gt;Pieter Levels, macOS 27 in the browser created by Kimi K3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.kimi.com/blog/kimi-k3" rel="noopener noreferrer"&gt;Moonshot AI, Kimi K3 technical release&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/MoonshotAI/Kimi-K3" rel="noopener noreferrer"&gt;Moonshot AI, Kimi K3 model repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/MoonshotAI/kimi-code/issues/1911" rel="noopener noreferrer"&gt;Kimi Code issue 1911, terminal sessions can hang at maximum effort&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Related Promptway: &lt;a href="https://dev.to/blog/pieter-levels-flight-sim-to-zero"&gt;Pieter Levels built a flight simulator in three hours, then watched the revenue disappear&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>founders</category>
      <category>pieterlevels</category>
      <category>kimik3</category>
      <category>opencode</category>
    </item>
    <item>
      <title>He Built an AI Headshot Empire Solo. The Product Was Boring on Purpose.</title>
      <dc:creator>Agnel Nieves</dc:creator>
      <pubDate>Sun, 02 Aug 2026 14:48:54 +0000</pubDate>
      <link>https://dev.to/promptway/he-built-an-ai-headshot-empire-solo-the-product-was-boring-on-purpose-50i0</link>
      <guid>https://dev.to/promptway/he-built-an-ai-headshot-empire-solo-the-product-was-boring-on-purpose-50i0</guid>
      <description>&lt;p&gt;The first thing people tell you about Danny Postma is a number. Sometimes it is the seven-figure sale of Headlime. Sometimes it is the "$300K a month" line that gets attached to HeadshotPro in every indie-hacker roundup. Both numbers float around the internet like they are the point.&lt;/p&gt;

&lt;p&gt;I went looking for the Tuesday afternoon underneath them. What he built when the viral week ended. What he refused to build. Where the revenue actually comes from when the feed moves on.&lt;/p&gt;

&lt;h2&gt;
  
  
  The setup
&lt;/h2&gt;

&lt;p&gt;Postma is Dutch, started young, and was not a pure engineer origin story. Landingfolio, a WordPress gallery of landing-page designs, came first when he was freelancing conversion work and needed references. Monetization was weak. The pattern that stuck was different: find a sharp job people already pay for, ship a thin product, tell the truth in public, and let distribution compound.&lt;/p&gt;

&lt;p&gt;Headlime was the first real AI score. He had headline formulas in a book. He turned them into software. Then GPT-3 arrived and he got into an early access cohort, one of the first people wiring that model into a production copy tool alongside the early Jasper and Copy.ai wave. Public accounts of the trajectory put Headlime at roughly $1K MRR in December 2020, about $20K MRR by February 2021, and a seven-figure sale to the Jasper orbit not long after. Eight months, more or less, from product to exit.&lt;/p&gt;

&lt;p&gt;That is the clean legend. The next chapter is the one operators should actually study.&lt;/p&gt;

&lt;h2&gt;
  
  
  The moment something worked, and then did not
&lt;/h2&gt;

&lt;p&gt;When Stable Diffusion hit, Postma moved again. ProfilePicture.AI went out in about thirty hours. Six-figure sales in a week, per his own public telling and the interviews that followed. Fun avatars. Feed fuel. Then the curve bent. Novelty faded. Lensa-style apps ate attention. Sales cooled.&lt;/p&gt;

&lt;p&gt;Hold on. Most founders would either double down on virality or quit the category. He listened to what people were actually asking for in the replies and support threads: not a party trick profile pic. A &lt;strong&gt;professional headshot&lt;/strong&gt;. The thing you need for LinkedIn when you will not book a photographer.&lt;/p&gt;

&lt;p&gt;He launched HeadshotPro (and, in parallel, Deep Agency, an AI "modeling agency" experiment). Deep Agency got press. HeadshotPro got the money. That split is the whole piece if you are paying attention. Hype and cash are different instruments.&lt;/p&gt;

&lt;h2&gt;
  
  
  The boring product
&lt;/h2&gt;

&lt;p&gt;HeadshotPro is intentionally narrow. Professional headshots. Not dating packs, not meme styles, not every horizontal the competitors ship to chase App Store screenshots. Pricing, as listed publicly for long stretches, has lived in one-time packages roughly in the $29 / $39 / $59 band for batches of images, not a pure seat subscription. Refunds for unhappy customers are part of the trust pitch. The site claims on the order of hundreds of thousands of customers and tens of millions of headshots generated. Treat marketing totals as marketing totals. The direction is still clear: this is a volume utility, not a toy.&lt;/p&gt;

&lt;p&gt;The quality claim he has repeated in interviews is the opposite of "we wrapped open source and shipped." Custom models, long pipeline work, a year of tuning toward photos that do not immediately read as synthetic. Whether you buy the "indistinguishable" language or not, the strategy is coherent: win on the job people are embarrassed to get wrong, not on feature count.&lt;/p&gt;

&lt;h2&gt;
  
  
  The growth engine nobody screenshots
&lt;/h2&gt;

&lt;p&gt;Launch week is not why HeadshotPro kept showing up.&lt;/p&gt;

&lt;p&gt;SEO is. Indie Hackers writeups of his approach describe programmatic pages for city and long-tail headshot queries ("professional headshots in [city]"), plus ordinary blog content, aimed at keywords with enough volume and low enough difficulty to rank without a content army. Product Hunt launches were framed, in his own comments, less as pure user acquisition and more as backlink machines: even a mediocre ranking still throws domain authority around the web. When other apps go viral for AI headshots, search interest spikes, and the site already sitting on the term catches the overflow. He has described weeks where a competitor's virality tripled his sales because he owned the search intent.&lt;/p&gt;

&lt;p&gt;That is not a 24-hour story. That is a six-month compounding story. It also means the copyable lesson is closer to "pick a monetizable search job and build plumbing for it" than "tweet a demo."&lt;/p&gt;

&lt;p&gt;Pieter Levels retweeting early posts is part of the lore. It is also not a strategy you can purchase. What you can copy is the public logging, the willingness to kill the press-magnet product when the sales-magnet product is obvious, and the patience for SEO timelines that do not fit a hackathon video.&lt;/p&gt;

&lt;h2&gt;
  
  
  The asterisks
&lt;/h2&gt;

&lt;p&gt;Here is where I get careful, because the internet is not.&lt;/p&gt;

&lt;p&gt;The "$300K MRR" figure appears constantly in secondary writeups. HeadshotPro's public pricing has often been one-time packages, not classic monthly seats, and Postma has talked in later commentary about subscription mechanics being a trap for certain product shapes. Some databases show much smaller annualized snapshots for single years. Build-in-public numbers move. Portfolio revenue gets collapsed into one headline. &lt;strong&gt;I am not going to pretend a blogger's roundup is an audited P&amp;amp;L.&lt;/strong&gt; What I trust more is the pattern across years: early GPT product sold for seven figures, AI image products that repeatedly printed meaningful cash, a holding company (Postcrafts) still owning HeadshotPro rather than flipping it on the first offer, and a slow admission that hiring help was necessary even for someone who marketed the solo myth.&lt;/p&gt;

&lt;p&gt;He has said he should have built a team earlier. That sentence is worth more than another revenue screenshot. The lonely version of the empire does not scale quality pipelines forever. Compute bills do not care about your personal brand.&lt;/p&gt;

&lt;p&gt;Competition is permanent. Every model release births ten headshot clones. His answer has been focus and distribution infrastructure, not feature parity with every clone.&lt;/p&gt;

&lt;h2&gt;
  
  
  The verdict
&lt;/h2&gt;

&lt;p&gt;If you only remember the exit, you will try to time the next GPT wrapper. If you only remember the $300K line, you will argue about someone else's spreadsheet.&lt;/p&gt;

&lt;p&gt;The useful story is narrower. Postma keeps winning the same way: enter a technology wave early enough to matter, ship something people already budget for, follow sales rather than press, and install boring acquisition (SEO, refunds, clear packaging) that still works when the feed is bored. HeadshotPro is not clever because it is AI. It is clever because professional headshots were a real purchase before diffusion models existed, and he made the purchase faster and cheaper without turning the product into a carnival.&lt;/p&gt;

&lt;p&gt;The product was boring on purpose. That is the part worth stealing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.headshotpro.com/author/danny-postma" rel="noopener noreferrer"&gt;HeadshotPro, founder page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://thebootstrappedfounder.com/danny-postma-an-indie-hackers-business-evolution/" rel="noopener noreferrer"&gt;The Bootstrapped Founder, Danny Postma interview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.indiehackers.com/post/breaking-down-danny-postmas-seo-strategy-for-headshotpro-300k-in-1-year-fad0af94d2" rel="noopener noreferrer"&gt;Indie Hackers, HeadshotPro SEO breakdown&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.indiehackers.com/post/zero-to-7-figure-exit-in-8-months-with-headlime-ama-227d89ae0e" rel="noopener noreferrer"&gt;Indie Hackers, Headlime exit AMA coverage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://supabird.io/articles/danny-postma-how-a-solo-hacker-built-an-ai-empire-from-bali" rel="noopener noreferrer"&gt;SupaBird profile compilation (secondary; treat numbers carefully)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  - &lt;a href="https://x.com/dannypostmaa" rel="noopener noreferrer"&gt;Danny Postma on X&lt;/a&gt;
&lt;/h2&gt;

</description>
      <category>founders</category>
      <category>indiehackers</category>
      <category>headshotpro</category>
      <category>aiimages</category>
    </item>
    <item>
      <title>Your Brand Is Probably Wrong in ChatGPT. Here Is the 90-Minute Audit.</title>
      <dc:creator>Agnel Nieves</dc:creator>
      <pubDate>Sat, 01 Aug 2026 14:46:33 +0000</pubDate>
      <link>https://dev.to/promptway/your-brand-is-probably-wrong-in-chatgpt-here-is-the-90-minute-audit-bkd</link>
      <guid>https://dev.to/promptway/your-brand-is-probably-wrong-in-chatgpt-here-is-the-90-minute-audit-bkd</guid>
      <description>&lt;p&gt;This post is about auditing how answer engines currently represent your brand. It is not about rewriting your entire site in one weekend. By the end you will have a one-page gap matrix and a fix order you can hand to a founder without a 40-slide deck.&lt;/p&gt;

&lt;p&gt;I keep meeting teams who shipped schema, refreshed the homepage, and still have no idea what ChatGPT says when a buyer asks "what does [company] do" or "best [category] tools for [job]."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You cannot fix what you have not queried.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What you need before you start
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;90 uninterrupted minutes&lt;/li&gt;
&lt;li&gt;A spreadsheet with five columns: Query, Engine, What it said, Gap type, Fix owner&lt;/li&gt;
&lt;li&gt;Four engines if you can: ChatGPT (with search/browsing if available), Claude, Perplexity, Google AI Overview or the AI Mode you actually see in your market&lt;/li&gt;
&lt;li&gt;A human who knows the product well enough to spot a wrong pricing tier&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Incognito or a clean workspace helps. Your logged-in personalization is not your buyer's world.&lt;/p&gt;

&lt;h2&gt;
  
  
  The query set (run all of them)
&lt;/h2&gt;

&lt;p&gt;Numbered on purpose. Do these in order.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;"What is [Brand]?"&lt;/li&gt;
&lt;li&gt;"What does [Brand] do?"&lt;/li&gt;
&lt;li&gt;"Who is [Brand] for?"&lt;/li&gt;
&lt;li&gt;"How much does [Brand] cost?"&lt;/li&gt;
&lt;li&gt;"Best [category] tools for [primary job]"&lt;/li&gt;
&lt;li&gt;"[Brand] vs [Competitor A]"&lt;/li&gt;
&lt;li&gt;"[Brand] vs [Competitor B]"&lt;/li&gt;
&lt;li&gt;"Alternatives to [Brand]"&lt;/li&gt;
&lt;li&gt;"Is [Brand] legit / trustworthy?"&lt;/li&gt;
&lt;li&gt;"Recent news about [Brand]"&lt;/li&gt;
&lt;li&gt;"[Primary product] tutorial" or "how to get started with [Brand]"&lt;/li&gt;
&lt;li&gt;A category question that should include you but never says your name out loud, phrased the way a buyer would&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you sell in multiple segments, duplicate 5 and 12 per segment. Do not improvise mid-audit. Improvisation is how you cherry-pick good answers.&lt;/p&gt;

&lt;h2&gt;
  
  
  The gap matrix
&lt;/h2&gt;

&lt;p&gt;For each answer, tag &lt;strong&gt;one&lt;/strong&gt; primary gap:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tag&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;th&gt;Typical fix&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Missing&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;You should appear; you do not&lt;/td&gt;
&lt;td&gt;Category proof, third-party mentions, clearer owned definition&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Wrong&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Invented feature, bad category, dead product name&lt;/td&gt;
&lt;td&gt;Correct owned canon + earned corrections&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Outdated&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;True last year, false now&lt;/td&gt;
&lt;td&gt;Dated changelog, pressable update, refresh partners&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Competitor-owned&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Competitor is the default example in your category&lt;/td&gt;
&lt;td&gt;Comparison pages are not enough; need independent cites&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;OK&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Accurate enough to ship&lt;/td&gt;
&lt;td&gt;Monitor quarterly&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Caption for your screenshot folder: query, engine, date, gap tag. The caption is the section summary when you report up.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the results usually look like
&lt;/h2&gt;

&lt;p&gt;Patterns from client audits, not a claim about your brand specifically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Query 1–3&lt;/strong&gt; are often "OK-ish" if you have any web presence. Soft wrong more than missing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Query 4 (pricing)&lt;/strong&gt; is a graveyard of invented tiers and "freemium" guesses.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Query 5 and 12&lt;/strong&gt; are where you discover you are not in the category set at all.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Query 6–8&lt;/strong&gt; are where competitors with better earned media win even if your product is stronger.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Query 9–10&lt;/strong&gt; surface old scandals, wrong founders, or total silence.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When the model is wrong, resist the urge to only update your homepage H1. Remember the citation mix: a large share of what models lean on is earned media, not your domain. Pair owned canon with something a third party can cite. See &lt;a href="https://dev.to/blog/earned-media-ai-citations"&gt;84% of AI Citations Are Earned Media&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fix order (after the 90 minutes)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Write the canonical 120-word answer&lt;/strong&gt; to "What is [Brand]?" on a stable URL. Plain language. No banned marketing sludge. Date it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kill the most dangerous wrong&lt;/strong&gt; (usually pricing or security claims) with a clear owned page and, if needed, a support note to partners repeating the old line.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pick one category query you lost&lt;/strong&gt; and build proof: customer artifact, benchmark with method, or independent review pitch. Not five thin blog posts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Schedule a re-run&lt;/strong&gt; of the same twelve queries in 30 days. Same order. Same engines.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Never start with a full rebrand because Claude misordered your feature list. &lt;strong&gt;Never start with a full rebrand because Claude misordered your feature list.&lt;/strong&gt; Fix the fact, then the distribution of the fact.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tiny experiment
&lt;/h2&gt;

&lt;p&gt;Tomorrow, run only queries 1, 4, and 5 on two engines. Put the answers in a doc without commentary. Send them to your founder. Ask: "Would you fund a fix?" If the answer is no, either the gaps are small or the company is not serious about AI discovery yet. Both are useful information.&lt;/p&gt;

&lt;p&gt;The scaffold for this audit is stable even when models change. The dial you turn is which gaps you fund first. The fail-state is screenshotting one flattering answer and calling the brand "AI optimized."&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.to/blog/earned-media-ai-citations"&gt;84% of AI Citations Are Earned Media&lt;/a&gt; (Promptway)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://muckrack.com/blog/what-is-ai-reading-may-2026" rel="noopener noreferrer"&gt;Muck Rack Generative Pulse&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  - &lt;a href="https://dev.to/blog/getting-your-writing-seen-beyond-your-own-site"&gt;Getting Your Writing Seen Beyond Your Own Site&lt;/a&gt; (Promptway)
&lt;/h2&gt;

</description>
      <category>aeo</category>
      <category>chatgpt</category>
      <category>brandaudit</category>
      <category>citations</category>
    </item>
    <item>
      <title>I Made Grok 4.5 My Default Coding Model for One Client Week</title>
      <dc:creator>Agnel Nieves</dc:creator>
      <pubDate>Sat, 01 Aug 2026 14:46:32 +0000</pubDate>
      <link>https://dev.to/promptway/i-made-grok-45-my-default-coding-model-for-one-client-week-4gb7</link>
      <guid>https://dev.to/promptway/i-made-grok-45-my-default-coding-model-for-one-client-week-4gb7</guid>
      <description>&lt;p&gt;On July 8, Cursor and SpaceXAI put Grok 4.5 in front of every Cursor subscriber who would click the model picker. The pitch was simple: frontier-ish coding and agent work, trained with real Cursor interaction data, cheap enough that token anxiety stops being the main character.&lt;/p&gt;

&lt;p&gt;I did what I always do when a tool claims it belongs in the daily path. I made it the default for one week on a real client repo and wrote down what broke.&lt;/p&gt;

&lt;p&gt;This is not a benchmark re-score. It is a work log.&lt;/p&gt;

&lt;h2&gt;
  
  
  The task I actually ran
&lt;/h2&gt;

&lt;p&gt;Client context, sanitized: a Next.js App Router publication with content validation, MCP servers for ads and analytics reads, and a pre-commit asset pipeline. The week had three jobs that match how I actually bill time.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Ship a feature branch&lt;/strong&gt; with two new MDX routes, shared components, and schema fields that had to pass &lt;code&gt;bun run validate&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Debug a flaky integration&lt;/strong&gt; where an MCP tool returned partial JSON and the agent kept "fixing" it by inventing keys.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Drive a multi-file refactor&lt;/strong&gt; that touched route handlers, a Zod schema, and a small TypeScript helper without breaking static generation.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I used Cursor as the shell the whole week. Grok 4.5 as the default model. Same MCP config I already trust. No special harness beyond what a mid-size agency repo already has.&lt;/p&gt;

&lt;h2&gt;
  
  
  What worked, with receipts
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Speed on the boring middle.&lt;/strong&gt; Autocomplete-plus-edit on component props, frontmatter keys, and test stubs felt fast. Not magically smarter than Opus-class on hard architecture. Noticeably cheaper per loop when I was iterating ten times on the same file. For the kind of work that is 70% of a billable day, that matters more than a one-point leaderboard bump.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cursor-native habits.&lt;/strong&gt; This is the underrated part of "trained with Cursor data." The model was less confused by multi-cursor edits, partial selections, and "apply this diff but keep my comment." That is not a general intelligence claim. It is a product claim, and on this repo it held.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Price as a product feature.&lt;/strong&gt; At roughly $2 input / $6 output per million tokens (and lower on cached), I stopped doing the mental math that makes people under-prompt. I asked for the second rewrite. I asked for the third. The quality of the &lt;em&gt;session&lt;/em&gt; went up because I stopped rationing turns. That is a real effect, even when single-shot quality is a wash.&lt;/p&gt;

&lt;p&gt;Rough week spend on the client branch, all-in model cost through Cursor: under what a single heavy Claude Max-style day used to burn on comparable volume. Your numbers will differ. The direction did not.&lt;/p&gt;

&lt;h2&gt;
  
  
  What broke first
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Unsupervised multi-file refactors.&lt;/strong&gt; When I pointed it at "migrate these three modules and keep generateStaticParams honest," it produced a plausible plan and then a half-applied migration. Two files updated. One left mid-state. Tests red. Claude Code on the same prompt the next morning finished the graph more cleanly, with fewer "I will fix the types in a follow-up" lies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Confident wrong tools.&lt;/strong&gt; On the MCP JSON bug, Grok 4.5 was eager. It rewrote the client twice before it agreed to log the raw payload. Claude's slower, slightly pedantic loop would have asked for the log earlier. Eager is not free. Eager costs review time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Long context discipline.&lt;/strong&gt; On a chat that had already eaten a big schema dump, it started compressing my constraints into vibes. I had to re-paste the Zod refine rules mid-thread. Not unique to Grok. Worse here than my Sonnet baseline on the same thread length.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it compares on the jobs that matter
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Job&lt;/th&gt;
&lt;th&gt;Grok 4.5 in Cursor&lt;/th&gt;
&lt;th&gt;My Claude Code / Sonnet baseline&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Tight UI and content schema edits&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Winner&lt;/strong&gt; on speed + cost&lt;/td&gt;
&lt;td&gt;Fine, pricier per loop&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MCP / tool debugging&lt;/td&gt;
&lt;td&gt;Mixed; needs tighter human steering&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Winner&lt;/strong&gt; on "slow down and inspect"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multi-file refactors with static guarantees&lt;/td&gt;
&lt;td&gt;Risky without babysitting&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Winner&lt;/strong&gt; for unsupervised depth&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"Just ship the PR" Friday afternoon&lt;/td&gt;
&lt;td&gt;Strong if you stay in the editor&lt;/td&gt;
&lt;td&gt;Strong if you live in the terminal agent&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The posture split from the public discourse is real. Cursor assumes you are editing. Claude Code assumes you are delegating. Grok 4.5 inherits the Cursor posture even when you ask it to act like an agent. That is not a bug if you wanted a co-pilot. It is a bug if you wanted a night-shift senior.&lt;/p&gt;

&lt;h2&gt;
  
  
  Verdict
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Buy&lt;/strong&gt; Grok 4.5 as a default &lt;em&gt;inside Cursor&lt;/em&gt; for iterative product work if you already live in that editor and your pain is token cost plus turn latency.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wait&lt;/strong&gt; before making it the only model for unattended multi-file agents or production refactors that touch codegen boundaries. Keep a heavier model one hotkey away.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Skip&lt;/strong&gt; if your whole workflow is terminal-agent and you already have Claude Code tuned. Switching shells just to chase a model is a tax.&lt;/p&gt;

&lt;p&gt;I am not deleting Claude from the stack. I am not writing a "Grok won coding forever" post. I am changing my default for the 70% path and keeping the expensive brain for the 30% path that ships the scary PR.&lt;/p&gt;

&lt;p&gt;Six months ago I would have told you to pick one model and learn it deeply. I no longer believe that is the right advice for coding agents. The July wave made routing the skill. Grok 4.5 is a strong cheap route, not a religion.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I will re-test in 30 days
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Same multi-file refactor with whatever patch they ship after the first wave of forum complaints.&lt;/li&gt;
&lt;li&gt;Token spend on a pure greenfield app versus this brownfield content site.&lt;/li&gt;
&lt;li&gt;Whether "double usage first week" promo pricing was hiding a bill shock at steady state.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If any of those flip the verdict, I will update this page in public. That is the deal on The Stack.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://cursor.com/blog/grok-4-5" rel="noopener noreferrer"&gt;Cursor, Introducing Grok 4.5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://devops.com/spacexais-grok-4-5-undercuts-anthropic-and-openai-on-coding-agent-pricing/" rel="noopener noreferrer"&gt;DevOps.com on Grok 4.5 pricing and Cursor collab&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nimbalyst.com/blog/claude-code-vs-cursor/" rel="noopener noreferrer"&gt;Nimbalyst, Claude Code vs Cursor posture&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  - Prior Promptway stack note: &lt;a href="https://dev.to/blog/connecting-claude-to-google-ads-and-ga4-via-mcp"&gt;Connecting Claude to Google Ads and GA4 via MCP&lt;/a&gt;
&lt;/h2&gt;

</description>
      <category>grok</category>
      <category>cursor</category>
      <category>codingagents</category>
      <category>xai</category>
    </item>
    <item>
      <title>The July Model Wave Is Not a Race You Need to Win</title>
      <dc:creator>Agnel Nieves</dc:creator>
      <pubDate>Fri, 31 Jul 2026 15:39:17 +0000</pubDate>
      <link>https://dev.to/promptway/the-july-model-wave-is-not-a-race-you-need-to-win-4ii</link>
      <guid>https://dev.to/promptway/the-july-model-wave-is-not-a-race-you-need-to-win-4ii</guid>
      <description>&lt;p&gt;Three frontier launches. Two weeks. One bad habit.&lt;/p&gt;

&lt;p&gt;The habit is crowning a winner from a press release. Claude Sonnet 5 on June 30. OpenAI's GPT-5.6 family rolling into general availability around July 9. Grok 4.5 on July 8, co-trained with Cursor and priced to make coding agents feel cheap. The charts moved. The posts multiplied. The claim underneath most of them was the same: &lt;em&gt;this&lt;/em&gt; is the model you should standardize on.&lt;/p&gt;

&lt;p&gt;[The claim is nonsense. Standardization is the risk. Routing is the skill.]&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually shipped
&lt;/h2&gt;

&lt;p&gt;Strip the demos. Keep the operator facts.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Maker&lt;/th&gt;
&lt;th&gt;Window&lt;/th&gt;
&lt;th&gt;Operator-relevant shape&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Sonnet 5&lt;/td&gt;
&lt;td&gt;Anthropic&lt;/td&gt;
&lt;td&gt;late June&lt;/td&gt;
&lt;td&gt;Balanced agent runs, coding, long reliable chains&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5.6 Sol / Terra / Luna&lt;/td&gt;
&lt;td&gt;OpenAI&lt;/td&gt;
&lt;td&gt;late June to mid-July&lt;/td&gt;
&lt;td&gt;Tiered family: flagship Sol, everyday Terra, cheap Luna&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Grok 4.5&lt;/td&gt;
&lt;td&gt;xAI + Cursor&lt;/td&gt;
&lt;td&gt;July 8&lt;/td&gt;
&lt;td&gt;Coding and agent work at aggressive API pricing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;OpenAI gated GPT-5.6 longer than the others. Safety review, staged partners, then broader access. That is part of the product story now, not a footnote. Anthropic and xAI moved faster to availability. Access policy is a feature.&lt;/p&gt;

&lt;p&gt;Open source did not wait. GLM-5.2, DeepSeek V4, Qwen 3.6 and peers kept closing the gap for hosted and self-hosted work. The frontier is crowded. The "one brain for everything" era is over as an architecture choice, even if the marketing still pretends otherwise.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ranked by Tuesday impact, not leaderboard theater
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Cost and tiering matter more than the top score.&lt;/strong&gt;&lt;br&gt;
OpenAI shipping Luna / Terra / Sol as a family is the real product decision. You can route a triage job to a cheap tier and a hard research job to a flagship without changing vendors. That is operator infrastructure. A single "best model" headline is not.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Grok 4.5 inside Cursor changes the default coding bill.&lt;/strong&gt;&lt;br&gt;
A model trained with Cursor interaction data, sold at roughly $2 / $6 per million tokens, is not a vibe. It is a budget line. Teams that were bleeding token spend on heavier agents will try it this month whether or not they rewrite their stack. Watch adoption, not the CursorBench slide.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Sonnet 5's value is reliability under load, not a new personality.&lt;/strong&gt;&lt;br&gt;
If your workflows are multi-step agents that must finish, a mid-tier that holds the chain beats a flashy flagship that drifts. That is a boring metric. It is also the one that shows up in support tickets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Export-control residue is still on the board.&lt;/strong&gt;&lt;br&gt;
Anthropic's Fable 5 / Mythos-class redeploy after the June export-control pause is a policy story wearing a model name. If your product depends on a single frontier weight class, you now have a quarterly risk review whether you wanted one or not.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Benchmarks withheld or partial are a signal.&lt;/strong&gt;&lt;br&gt;
When a lab ships without the usual suite, read that as intentional. Not always sinister. Always incomplete. Do not fill the blanks with Twitter confidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  The permanent-winner myth
&lt;/h2&gt;

&lt;p&gt;Here is the strongest form of the bad advice, stated fairly:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Pick the best model now, standardize the company on it, and stop thrashing."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sounds like discipline. In a market that ships a capable model roughly every few days once you count open weights, it is how you bake technical debt into the org chart. Hard-wiring one provider turns every release into a migration project. Abstracting the model turns every release into a config change and an afternoon eval.&lt;/p&gt;

&lt;p&gt;I will say it once. &lt;strong&gt;Build so you can swap. Test on your tasks. Route by job.&lt;/strong&gt; The July wave did not crown a champion. It confirmed that several frontier options are close enough that &lt;em&gt;your&lt;/em&gt; data decides the winner, and that the winner can change by workload.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to do this week
&lt;/h2&gt;

&lt;p&gt;Not a tutorial. A short list with falsifiable edges.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Write down the three jobs AI actually does in your stack. Not aspirational. Actual.&lt;/li&gt;
&lt;li&gt;Run each job on two models you already pay for. Same prompt. Same inputs. Score quality, latency, and unit cost.&lt;/li&gt;
&lt;li&gt;Kill one permanent default if it loses on two of three metrics. Replace it with an explicit route.&lt;/li&gt;
&lt;li&gt;Re-run the same three jobs when the next major weight lands. Calendar it. Do not wait for vibes.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you skip this, you will still "evaluate models." You will just do it in Slack arguments instead of on paper.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I am grading later
&lt;/h2&gt;

&lt;p&gt;Three calls. Score me in September.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Teams that abstract the model layer will switch defaults at least once before Labor Day without a rewrite.&lt;/strong&gt; Falsifiable: count public postmortems and internal changelogs that mention a one-line model swap.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Grok 4.5 will take measurable coding-agent share from pure Claude/OpenAI defaults among Cursor-heavy shops.&lt;/strong&gt; Falsifiable: usage surveys, spend reports, forum default chatter.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The "one model for the company" memo will keep getting written, and it will keep aging poorly within 90 days.&lt;/strong&gt; Falsifiable: watch the memos, then the quiet exceptions.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Noise to leave on the floor
&lt;/h2&gt;

&lt;p&gt;Affiliate "best model of July" roundups with forty logos. Demo videos that never show a failure case. Seat-count panic recycled from February without a single cancelled contract attached. Benchmark charts with no task definition.&lt;/p&gt;

&lt;p&gt;The July wave is real. The race framing is residue.&lt;/p&gt;

&lt;p&gt;Build for the next release, not the last press cycle.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.rauljitechnologies.com/blog/july-2026-ai-model-wave/" rel="noopener noreferrer"&gt;Raulji Technologies, July 2026 model wave overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cursor.com/blog/grok-4-5" rel="noopener noreferrer"&gt;Cursor, Introducing Grok 4.5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.anthropic.com/" rel="noopener noreferrer"&gt;Anthropic news and model pages&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  - &lt;a href="https://felloai.com/best-ai-models/" rel="noopener noreferrer"&gt;FelloAI, Best AI models in July 2026&lt;/a&gt;
&lt;/h2&gt;

</description>
      <category>models</category>
      <category>openai</category>
      <category>anthropic</category>
      <category>xai</category>
    </item>
    <item>
      <title>Six Months After the SaaSpocalypse, the Stocks Came Back. The Operator Story Did Not.</title>
      <dc:creator>Agnel Nieves</dc:creator>
      <pubDate>Fri, 31 Jul 2026 15:39:16 +0000</pubDate>
      <link>https://dev.to/promptway/six-months-after-the-saaspocalypse-the-stocks-came-back-the-operator-story-did-not-3a01</link>
      <guid>https://dev.to/promptway/six-months-after-the-saaspocalypse-the-stocks-came-back-the-operator-story-did-not-3a01</guid>
      <description>&lt;p&gt;Quote the panic first. In the strongest form.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Anthropic shipped agentic tools that do real office work. If one AI can replace five SaaS seats, the entire software multiple is wrong. Hundreds of billions in market cap should vanish, and they did.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That was the February story, compressed. Claude Cowork, plugins, Opus-class upgrades, a Goldman-style software basket down hard in a session, estimates of roughly $285 to $300 billion erased in the worst prints. Workday and Salesforce and a long list of names ate the tape. The word &lt;strong&gt;SaaSpocalypse&lt;/strong&gt; did the rest.&lt;/p&gt;

&lt;p&gt;[The market move was real. The monocausal story was not. The operator aftermath is still the open question.]&lt;/p&gt;

&lt;h2&gt;
  
  
  Claim Chowder: February versus July
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Claim (Feb 2026)&lt;/th&gt;
&lt;th&gt;July grade&lt;/th&gt;
&lt;th&gt;One-line reason&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;"Agents kill SaaS this year"&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Fail&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Public multiples mean-reverted faster than seat bases dissolved&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"Cowork is only a demo"&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Fail&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Workflow automation is now a default expectation in buyer RFPs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"Every horizontal SaaS is dead"&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Nonsense&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Data gravity, compliance, and workflow lock still pay rent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"AI is a pure margin tax on software"&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Partial&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Pricing pressure is real; free replacement is not universal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"Operators will cancel seats in bulk by summer"&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Incomplete&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Spot cancellations yes; systematic wipeout not in the open data&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;I am not here to defend software equities. I am here to stop operators from taking a Wall Street weekend as a strategy memo.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the selloff actually was
&lt;/h2&gt;

&lt;p&gt;Three things collided.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;A visible agent product&lt;/strong&gt; that looked like it could draft, file, research, and chain office tasks without five logins.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A valuation regime&lt;/strong&gt; that had already been compressing. Software multiples had room to fall before Cowork gave traders a narrative.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A meme with a deadline.&lt;/strong&gt; Once "SaaSpocalypse" fit in a headline, every downtick confirmed the story and every uptick was "denial."&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Executives called the panic overblown. Analysts warned about pricing power anyway. Both can be true. A 6% session in a sector basket is not a customer survey. It is a forced rewrite of discounted cash flow assumptions under uncertainty.&lt;/p&gt;

&lt;h2&gt;
  
  
  What operators actually did
&lt;/h2&gt;

&lt;p&gt;From the ground, not the tape:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Trials exploded. Migrations lagged.&lt;/strong&gt; Trying Cowork or a coding agent is cheap. Ripping out the system of record is not.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shadow AI spend rose next to SaaS spend.&lt;/strong&gt; The line item grew. It did not always replace. CFOs noticed both.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Categories split.&lt;/strong&gt; Thin workflow glue and generic document tools felt heat. Vertical systems with proprietary data, audit trails, and integrations held. Boring infrastructure is still boring infrastructure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The seat is not dead. The idle seat is.&lt;/strong&gt; Buyers started asking which licenses produce artifacts an agent could produce by Tuesday. That question does not require a stock chart.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your product's only defense is "we have a nicer UI for a task Claude can already do," you felt this winter. If your product is the system of record for something regulators care about, you felt a pricing conversation, not an extinction event.&lt;/p&gt;

&lt;h2&gt;
  
  
  The residue that matters more than the rebound
&lt;/h2&gt;

&lt;p&gt;Stocks can rebound on rates, earnings, and attention cycles. Three structural shifts did not rebound away.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Buyers budget for agents as a category.&lt;/strong&gt;&lt;br&gt;
Not experimental. Line-item. That permanently changes how they negotiate your renewal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Switching cost is the product.&lt;/strong&gt;&lt;br&gt;
Feature checklists lost. Data model, integrations, permissions, and eval history won. The SaaSpocalypse was a referendum on shallow SaaS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Narrative risk is now product risk.&lt;/strong&gt;&lt;br&gt;
A lab demo can reprice your category in a session. That is not fair. It is the water you swim in. Communication and proof-of-work matter more when the market is itchy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Falsifiable calls for Q4 2026
&lt;/h2&gt;

&lt;p&gt;Score these in December.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Net seat reductions in generic productivity SaaS will show up in earnings language more than in February price charts.&lt;/strong&gt; Look for "optimization," "consolidation," and "AI substitution" in prepared remarks, not just stock ticks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vertical SaaS with proprietary workflows will guide stable or rising NRR while horizontal doc tools guide down.&lt;/strong&gt; Split the basket; stop averaging apples and glue.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;At least two public software companies will rebundle around agent runtimes rather than human seats as the primary SKU.&lt;/strong&gt; Watch packaging, not keynotes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The next Cowork-class launch will move equities less than February did, and move RFPs more.&lt;/strong&gt; Attention decays. Procurement language sticks.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If all four miss, I will say so in a follow-up. That is the job.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to ignore for the rest of July
&lt;/h2&gt;

&lt;p&gt;Death-of-SaaS threads with no cancelled contract attached. Victory-lap founder posts that equate a stock bounce with product safety. "We added AI" changelog spam that does not change the artifact the customer ships.&lt;/p&gt;

&lt;p&gt;Six months later, the apocalypse looks like a repricing. The operator story looks like a filter. Shallow tools got priced like shallow tools. Deep systems still have to prove they are deep.&lt;/p&gt;

&lt;p&gt;The chart healed. The question did not.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.cnbc.com/2026/02/06/ai-anthropic-tools-saas-software-stocks-selloff.html" rel="noopener noreferrer"&gt;CNBC, AI fears and software selloff (Feb 2026)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.deeplearning.ai/the-batch/claude-cowork-plugins-trigger-a-saas-stock-selloff-but-partnerships-lead-to-slight-rebound" rel="noopener noreferrer"&gt;DeepLearning.AI Batch, Cowork plugins and sector index&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thesaascfo.com/the-saaspocalypse-ai-agents-vibe-coding-and-the-changing-economics-of-saas/" rel="noopener noreferrer"&gt;The SaaS CFO, SaaSpocalypse economics&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  - Business Insider coverage of Claude Cowork and market reaction (Feb–Apr 2026 cycle)
&lt;/h2&gt;

</description>
      <category>saas</category>
      <category>claude</category>
      <category>cowork</category>
      <category>markets</category>
    </item>
    <item>
      <title>Indie Hackers Built AI Factories. Then Nobody Showed Up.</title>
      <dc:creator>Agnel Nieves</dc:creator>
      <pubDate>Thu, 30 Jul 2026 15:34:35 +0000</pubDate>
      <link>https://dev.to/promptway/indie-hackers-built-ai-factories-then-nobody-showed-up-1fkd</link>
      <guid>https://dev.to/promptway/indie-hackers-built-ai-factories-then-nobody-showed-up-1fkd</guid>
      <description>&lt;p&gt;There is a particular kind of demo video making the rounds this year. Dark editor theme. Agent panel streaming. A full app appearing in minutes. The caption says some version of "the only limit is imagination."&lt;/p&gt;

&lt;p&gt;Then you click through to the product and the waitlist is a Google Form with eleven responses, three of them the founder under different emails.&lt;/p&gt;

&lt;p&gt;Pieter Levels put a sharper point on it in June: indie hackers building fancy AI factories with no money and no traffic. The post traveled because it was mean in the useful way. It named the thing people were privately embarrassed about.&lt;/p&gt;

&lt;p&gt;I do not think the builders are stupid. I think the bottleneck moved, and a lot of playbooks did not.&lt;/p&gt;

&lt;h2&gt;
  
  
  The setup
&lt;/h2&gt;

&lt;p&gt;For a decade the indie story had a honest hard part: shipping. You had to learn enough code, or hire it, or glue no-code until it cried. AI coding agents did not remove craft. They removed the excuse. Claude Code, Cursor, Grok-class models in the editor, boilerplate kits like ShipFast, component generators, database scaffolds. The factory floor got automated.&lt;/p&gt;

&lt;p&gt;What did not get automated: a reason for a stranger to care, a channel that compounds, a promise people renew.&lt;/p&gt;

&lt;p&gt;So we got a generation of products that are technically complete and socially imaginary.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the empty factory looks like
&lt;/h2&gt;

&lt;p&gt;I keep a private list from conversations and public postmortems. Patterns, not call-outs.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Beautiful onboarding, no top-of-funnel.&lt;/strong&gt; The first-run experience is gorgeous. The homepage has no distribution plan beyond "post on X."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Feature parity with a giant, trust parity with a stranger.&lt;/strong&gt; "We are like Notion + AI" is not a wedge. It is a request to lose.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One-week revenue, zero week-eight retention.&lt;/strong&gt; Launch spike from friends and a Product Hunt bounce. Then silence. Same shape as the flight-sim money that visits once and leaves. See &lt;a href="https://dev.to/blog/pieter-levels-flight-sim-to-zero"&gt;Pieter Levels and the sim that went to zero&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent theater instead of a job.&lt;/strong&gt; The product demos an agent. The customer still has a job to do on Tuesday that the agent does not finish.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hold on. Is this just "marketing matters"? Yes, with a 2026 asterisk: marketing also got flooded with AI sludge, so the trust bar for small tools went up while the build bar went down. You are not competing with silence. You are competing with a thousand competent-looking clones.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who still prints money
&lt;/h2&gt;

&lt;p&gt;Look at the people this column has already covered and the durable ones like &lt;a href="https://dev.to/blog/danny-postma-headshotpro"&gt;Danny Postma on HeadshotPro&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The pattern is rude and consistent.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;A purchase that existed before the model.&lt;/strong&gt; Headshots. Photo generation for a known vanity or work need. Boilerplates for people who already sell software. Verified revenue pages for people already lying with screenshots.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A channel that is not a single launch post.&lt;/strong&gt; SEO, newsletters, years of public logging, communities where the founder is a known quantity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Willingness to be boring.&lt;/strong&gt; One vertical. One clear price. Refunds. Support. The unglamorous middle.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Marc Lou's 24-hour TrustMRR spike was real, and so was the year he earned less than the prior one. The weekend needs a decade under it. That is not romantic. It is accounting.&lt;/p&gt;

&lt;h2&gt;
  
  
  The nervous part
&lt;/h2&gt;

&lt;p&gt;Here is the sentence founders flinch at: &lt;strong&gt;if your only advantage was that you could code the v1, you no longer have an advantage.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The new hard skills look like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Picking a job where "done" is obvious and payment is habitual&lt;/li&gt;
&lt;li&gt;Building proof other humans will cite (see the earned-media AEO problem for brands; it applies to products too)&lt;/li&gt;
&lt;li&gt;Saying no to agent features that do not finish the job&lt;/li&gt;
&lt;li&gt;Measuring renewals harder than launch-day MRR screenshots&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI factories without trucks are still factories. They just manufacture unsold inventory faster.&lt;/p&gt;

&lt;h2&gt;
  
  
  Field notes, not a sermon
&lt;/h2&gt;

&lt;p&gt;I asked operators what they cut when the empty dashboards got embarrassing. The answers rhymed.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cut model roulette. Pick a stack. Ship weekly to real users.&lt;/li&gt;
&lt;li&gt;Cut horizontal scope. One persona, one job.&lt;/li&gt;
&lt;li&gt;Cut launch culture as identity. Replace with a channel experiment that lasts thirty days minimum.&lt;/li&gt;
&lt;li&gt;Keep the agents, but point them at distribution chores (support macros, content diffs, SEO page generation for a keyword you already validated) instead of only at more product surface.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of that is as fun as a three-hour build video. All of it is closer to Photo AI at high margin than a sim at $0/m.&lt;/p&gt;

&lt;h2&gt;
  
  
  The verdict
&lt;/h2&gt;

&lt;p&gt;The vibe-coding era did not kill indie hacking. It killed the story that shipping was the main boss fight. Levels' jab lands because the feed is full of factories and short on customers. The founders who will still be here in 2027 are not the ones with the most tools in the agent panel. They are the ones who can explain, in one sentence, who pays them every month and why that person would be annoyed if the product disappeared.&lt;/p&gt;

&lt;p&gt;Build the truck. Then build the factory.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://levels.io/indie-hackers-ai-factories-no-money-traffic" rel="noopener noreferrer"&gt;Pieter Levels, indie hackers AI factories post&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/blog/pieter-levels-flight-sim-to-zero"&gt;Pieter Levels flight sim story&lt;/a&gt; (Promptway)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/blog/marc-lou-24-hour-app"&gt;Marc Lou 24-hour app&lt;/a&gt; (Promptway)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/blog/danny-postma-headshotpro"&gt;Danny Postma / HeadshotPro&lt;/a&gt; (Promptway)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  - Indie Hackers and X public postmortems on launch spikes without retention (2025–2026 cycle)
&lt;/h2&gt;

</description>
      <category>founders</category>
      <category>indiehackers</category>
      <category>distribution</category>
      <category>vibecoding</category>
    </item>
  </channel>
</rss>
