<?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>Forem: Maxim Landolfi</title>
    <description>The latest articles on Forem by Maxim Landolfi (@themob000).</description>
    <link>https://forem.com/themob000</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3925794%2Fddc10f04-96de-44c4-84f5-4ecf5ead73b2.jpg</url>
      <title>Forem: Maxim Landolfi</title>
      <link>https://forem.com/themob000</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/themob000"/>
    <language>en</language>
    <item>
      <title>How I Built a Programmatic SEO Tool with 126K Pages Indexed in 30 Days (Built with AI Assistance)</title>
      <dc:creator>Maxim Landolfi</dc:creator>
      <pubDate>Mon, 11 May 2026 20:20:05 +0000</pubDate>
      <link>https://forem.com/themob000/how-i-built-a-programmatic-seo-tool-with-126k-pages-indexed-in-30-days-built-with-ai-assistance-464f</link>
      <guid>https://forem.com/themob000/how-i-built-a-programmatic-seo-tool-with-126k-pages-indexed-in-30-days-built-with-ai-assistance-464f</guid>
      <description>&lt;h1&gt;
  
  
  How I Built a Programmatic SEO Tool with 126K Pages Indexed in 30 Days (Built with AI Assistance)
&lt;/h1&gt;

&lt;p&gt;Last month I launched &lt;a href="https://www.gradientgen.com" rel="noopener noreferrer"&gt;GradientGen&lt;/a&gt; — a free animated mesh gradient generator built with Next.js. 30 days later, Google has indexed 126,000+ pages.&lt;/p&gt;

&lt;p&gt;I want to be completely transparent upfront: &lt;strong&gt;I built this almost entirely with AI assistance&lt;/strong&gt; — primarily Claude (Anthropic) for architecture decisions, code generation, and debugging, and v0.dev (Vercel) for UI components. I'm not a senior developer. I understand the code, I make the decisions, but AI wrote most of it.&lt;/p&gt;

&lt;p&gt;I'm sharing this because I think the "built with AI" part is just as interesting as the "126K pages indexed" part. Here's the full story.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is GradientGen?
&lt;/h2&gt;

&lt;p&gt;GradientGen is a free tool that generates animated mesh gradients, topography patterns, font pairings, color palettes, and contrast checkers. Every combination of colors produces a unique URL:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/mesh/ff0000-00ff00-0000ff&lt;/code&gt; — red, green, blue mesh gradient&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/font-pairing/inter-and-roboto-on-ffffff-and-000000&lt;/code&gt; — font pairing preview&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/topography/ff0000-00ff00/seed123456&lt;/code&gt; — topography pattern&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each URL is a fully rendered, interactive page with real CSS export functionality. The page is useful whether or not the user came from Google.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Development Process with AI
&lt;/h2&gt;

&lt;p&gt;I used &lt;strong&gt;Claude&lt;/strong&gt; as my primary development partner throughout the entire project. Not just for boilerplate — for everything:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Architecture decisions ("should I use ISR or SSR for this?")&lt;/li&gt;
&lt;li&gt;Debugging production errors from Coolify deployment logs&lt;/li&gt;
&lt;li&gt;SEO strategy ("how do I generate server-side related links so Google can crawl them?")&lt;/li&gt;
&lt;li&gt;Writing the pure JavaScript music theory engine&lt;/li&gt;
&lt;li&gt;Fixing TypeScript errors that blocked deployments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My workflow was essentially: I describe what I want, Claude explains the tradeoffs, we decide together, Claude writes the code, I review and understand it, we deploy.&lt;/p&gt;

&lt;p&gt;I also used &lt;strong&gt;v0.dev&lt;/strong&gt; for the initial UI scaffold — it generated the component structure and visual design in minutes, which I then refined with Claude.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I contributed:&lt;/strong&gt; product decisions, SEO strategy, infrastructure setup, domain registration, understanding and reviewing every piece of code before deploying it.&lt;/p&gt;

&lt;p&gt;Is this "real" development? I think so. The decisions are mine. The understanding is mine. The product is mine. AI is just a very fast, very capable coding partner.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js 15&lt;/strong&gt; with App Router&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TypeScript&lt;/strong&gt; — strict mode&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tailwind CSS&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployed on Hetzner VPS&lt;/strong&gt; via Coolify (self-hosted PaaS)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero external APIs&lt;/strong&gt; — all generation is pure JavaScript math&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Core SEO Idea
&lt;/h2&gt;

&lt;p&gt;Most programmatic SEO fails because pages are thin — templates with variables swapped in. My approach: every page is a &lt;strong&gt;working tool&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When someone visits &lt;code&gt;/mesh/ff0000-00ff00-0000ff&lt;/code&gt;, they get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A live animated gradient they can interact with&lt;/li&gt;
&lt;li&gt;Real-time CSS export&lt;/li&gt;
&lt;li&gt;Color names and hex codes&lt;/li&gt;
&lt;li&gt;Related gradients for exploration&lt;/li&gt;
&lt;li&gt;Contextual description of the palette&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The page is useful whether or not the user came from Google. That's the test I apply to every page.&lt;/p&gt;

&lt;h2&gt;
  
  
  URL Structure
&lt;/h2&gt;

&lt;p&gt;Colors are hexadecimal — 16,777,216 possible values per color slot. With 2-6 colors per gradient, the combination space is essentially infinite:&lt;/p&gt;

&lt;p&gt;/mesh/[hex1]-[hex2]-[hex3]-[hex4]&lt;br&gt;
/topography/[hex1]-[hex2]-[hex3]/seed[number]&lt;br&gt;
/font-pairing/[font1]-and-[font2]-on-[bg]-and-[text]&lt;br&gt;
/palette/[hex1]-[hex2]-[hex3]-[hex4]-[hex5]&lt;br&gt;
/contrast/[hex1]-[hex2]&lt;/p&gt;

&lt;p&gt;Each one is a valid, functional, unique page.&lt;/p&gt;
&lt;h2&gt;
  
  
  How I Got 126K Pages Indexed in 30 Days
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1. XML Sitemap at Scale
&lt;/h3&gt;

&lt;p&gt;Dynamic sitemap with &lt;code&gt;app/sitemap.ts&lt;/code&gt; — carefully selected color combinations representing the full color space systematically, not randomly.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;sitemap&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; &lt;span class="nx"&gt;MetadataRoute&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Sitemap&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;urls&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;generateSitemapUrls&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;urls&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;lastModified&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
    &lt;span class="na"&gt;changeFrequency&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;monthly&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;priority&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;}))&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Server-Side Internal Linking
&lt;/h3&gt;

&lt;p&gt;Every page shows 12 related gradients generated &lt;strong&gt;deterministically&lt;/strong&gt; from the current page's colors — seeded by the hex codes so the same URL always produces the same related links.&lt;/p&gt;

&lt;p&gt;This was a key insight Claude helped me with: the related links need to be rendered &lt;strong&gt;server-side&lt;/strong&gt; so Google sees them without executing JavaScript. Originally they were generated client-side after mount — Google couldn't follow them.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// lib/generate-related-links.ts — runs on the server&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;generateRelatedLinks&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;hexCodes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;[]):&lt;/span&gt; &lt;span class="nx"&gt;MatrixLink&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;rand&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;pseudoRandomGenerator&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;hexCodes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;-&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;links&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;MatrixLink&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;
  &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// generate 12 deterministic related color combinations&lt;/span&gt;
    &lt;span class="c1"&gt;// ...&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;links&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates a web of interconnected pages — Google crawls one and finds 12 more, each with 12 more.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Rich Unique Metadata for Every Page
&lt;/h3&gt;

&lt;p&gt;No two pages have the same title or description:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;generateMetadata&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;params&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;colorNames&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;hexCodes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;hex&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;getNearestColorName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`#&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;hex&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;seoName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;getProgrammaticSeoName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`#&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;hexCodes&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;seoName&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; Mesh Gradient for #&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;hexCodes&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;toUpperCase&lt;/span&gt;&lt;span class="p"&gt;()}&lt;/span&gt;&lt;span class="s2"&gt; | GradientGen`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`Create a visually striking &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;seoName&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; mesh gradient. 
    Blending &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;colorNames&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;, &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="s2"&gt;, ideal for UI/UX, branding, and design.`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Fast Infrastructure
&lt;/h3&gt;

&lt;p&gt;Google crawl budget is influenced by server speed. My VPS responds in ~106ms average.&lt;/p&gt;

&lt;p&gt;The tradeoff: ISR caching millions of files hit inode limits on my VPS. The fix — a nightly cron job Claude helped me write:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Clears ISR cache every night at 3:00 AM&lt;/span&gt;
0 3 &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; find /path/to/.next/server/app/ &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-delete&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What the Data Shows After 30 Days
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;126,000+ pages indexed&lt;/strong&gt; by Google&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;682 impressions&lt;/strong&gt; in Google Search Console&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;6 clicks&lt;/strong&gt; (positioning is still low — this is normal for month 1)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;106ms&lt;/strong&gt; average server response time&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;100% OK (200)&lt;/strong&gt; responses&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The queries generating impressions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hex color codes (&lt;code&gt;#f6e7b2&lt;/code&gt;, &lt;code&gt;6e6708&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Font names (&lt;code&gt;monsieur la doulaise&lt;/code&gt;, &lt;code&gt;biz udmincho&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Brand queries (&lt;code&gt;gradientgen&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Exactly the long-tail keywords I was targeting.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Didn't Work
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Bing IndexNow batch mode&lt;/strong&gt; — pushed all URLs in batches, Microsoft Webmaster flagged it as excessive load. Disabled it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;cacheMaxMemorySize: 0&lt;/code&gt;&lt;/strong&gt; — tried to prevent ISR cache buildup this way, caused client-side errors. Cron job is more reliable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest Reflections on Building with AI
&lt;/h2&gt;

&lt;p&gt;Building with AI is genuinely different from traditional development. Some honest observations:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What AI is great at:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Writing boilerplate and repetitive code instantly&lt;/li&gt;
&lt;li&gt;Explaining why something doesn't work&lt;/li&gt;
&lt;li&gt;Suggesting architectural patterns I wouldn't have known&lt;/li&gt;
&lt;li&gt;Debugging cryptic error messages from deployment logs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What AI struggles with:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keeping track of complex interdependencies across many files&lt;/li&gt;
&lt;li&gt;Sometimes generates code that looks right but has subtle TypeScript errors&lt;/li&gt;
&lt;li&gt;Can be overconfident about solutions that don't work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The real skill is knowing what to ask.&lt;/strong&gt; Having a clear mental model of what you want to build, breaking it into logical pieces, and knowing when the AI's suggestion is wrong — that's still the human's job.&lt;/p&gt;

&lt;p&gt;I don't think "built with AI" means "anyone can do it without effort." It means the barrier to building real products has dropped significantly. Which I think is a good thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Waiting for Google to position the indexed pages for color queries&lt;/li&gt;
&lt;li&gt;Building backlinks through design tool directories&lt;/li&gt;
&lt;li&gt;Launching &lt;strong&gt;Chordamo&lt;/strong&gt; — same programmatic SEO approach, for music chord progressions (12 keys × 8 modes × 28 genres × 6 chord options = 16,128 unique pages)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Questions Welcome
&lt;/h2&gt;

&lt;h2&gt;
  
  
  I'm happy to answer questions about any technical or SEO aspect in the comments.
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://www.gradientgen.com" rel="noopener noreferrer"&gt;GradientGen&lt;/a&gt; is completely free — no account required.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
