<?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: Pizza Cat</title>
    <description>The latest articles on DEV Community by Pizza Cat (@pizza_cat).</description>
    <link>https://dev.to/pizza_cat</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%2F3959436%2F5a526d49-a19e-451b-9873-197951d5744e.png</url>
      <title>DEV Community: Pizza Cat</title>
      <link>https://dev.to/pizza_cat</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pizza_cat"/>
    <language>en</language>
    <item>
      <title>The End of Vibe Coding: Why I Switched to Structured AI Workflows</title>
      <dc:creator>Pizza Cat</dc:creator>
      <pubDate>Thu, 11 Jun 2026 00:19:51 +0000</pubDate>
      <link>https://dev.to/pizza_cat/the-end-of-vibe-coding-why-i-switched-to-structured-ai-workflows-38j6</link>
      <guid>https://dev.to/pizza_cat/the-end-of-vibe-coding-why-i-switched-to-structured-ai-workflows-38j6</guid>
      <description>&lt;h1&gt;
  
  
  The End of Vibe Coding: Why I Switched to Structured AI Workflows
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;I spent 3 months "vibe coding" my SaaS. Then I realized I was spending more time fixing AI's mistakes than if I'd written it myself. Here's the system that changed everything.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;In early June 2026, two HN threads with a combined &lt;strong&gt;~1,300 comments&lt;/strong&gt; told me something had shifted.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thread 1&lt;/strong&gt; (~1,100 comments): &lt;em&gt;"What was your 'oh shit' moment with GenAI?"&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;Thread 2&lt;/strong&gt; (~230 comments): &lt;em&gt;"What tools have you made for yourself since AI?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Both threads had the same pattern: people started with unfiltered excitement ("I built a whole app in one weekend!"), then hit a wall ("I'm spending more time fixing its bugs than writing code from scratch").&lt;/p&gt;

&lt;p&gt;I know the feeling. I lived it.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Vibe Coding Trap
&lt;/h2&gt;

&lt;p&gt;When I started building &lt;a href="https://multipost.clb520.ccwu.cc" rel="noopener noreferrer"&gt;MultiPost&lt;/a&gt; — an AI-powered cross-platform content tool — I was deep in "vibe coding" mode:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Me: "Make it look better"
AI: *adds Tailwind, restyles everything*
Me: "Add a filter by date"
AI: *adds a date picker, breaks the layout*
Me: "Fix that bug where posts don't show"
AI: *fixes the filter, introduces a null pointer*
Me: "Okay now add a dark mode toggle"
AI: *regenerates half the component from scratch*

Three weeks later I had a working feature and zero understanding
of how any of it actually held together.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This was my daily rhythm for weeks. Fast output, slow cleanup. The ratio kept getting worse as the codebase grew.&lt;/p&gt;

&lt;p&gt;I was optimizing for &lt;strong&gt;speed of generation&lt;/strong&gt; instead of &lt;strong&gt;speed of delivery&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The "Oh Shit" Moment
&lt;/h2&gt;

&lt;p&gt;It came when I reviewed a feature I'd built entirely through unstructured AI sessions. The feature worked. But:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The code had &lt;strong&gt;3 different patterns&lt;/strong&gt; for the same thing (Auth0 token handling in one place, hardcoded keys in another)&lt;/li&gt;
&lt;li&gt;Error handling was inconsistent — some functions returned null, others threw, others returned Result types&lt;/li&gt;
&lt;li&gt;Database queries were scattered across the codebase instead of in a repository layer&lt;/li&gt;
&lt;li&gt;A security reviewer would have cried&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AI didn't do this maliciously. It did this because I asked it to "fix this" and "add that" without ever giving it a structural framework. Every session was a fresh context with no memory of architectural decisions from the previous one.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Fix: Structured AI Workflows
&lt;/h2&gt;

&lt;p&gt;I switched from "vibe coding" to what I call &lt;strong&gt;structured AI workflows&lt;/strong&gt;. The principle is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Don't ask AI to write code. Ask it to execute a plan that you've designed together.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here's the actual system I use:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Design Before Generate (15 minutes)
&lt;/h3&gt;

&lt;p&gt;Before I let AI write a single line of code for a feature:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Step 1: Describe the feature in plain English back to AI
Step 2: Ask AI to list the components, data flow, and edge cases
Step 3: I review the plan — fix the architecture BEFORE code exists
Step 4: Only then: "Implement component X as designed"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The key change: &lt;strong&gt;I'm reviewing a plan, not debugging code.&lt;/strong&gt; A plan review takes 2 minutes. Debugging generated code takes 30 minutes.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. One Concern Per Session
&lt;/h3&gt;

&lt;p&gt;This was my biggest mistake. I'd ask AI to "build the auth system" in one go — which means it generates auth UI, backend routes, database schema, and middleware all at once. Too much to review.&lt;/p&gt;

&lt;p&gt;Instead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Session 1: "Design the auth data model. Here are the constraints..."
Session 2: "Implement the auth API routes based on the data model from session 1"
Session 3: "Build the login page UI"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each session has one clear output that I can fully review in under 5 minutes.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Enforce Structure with Prompt Templates
&lt;/h3&gt;

&lt;p&gt;I stopped typing one-off prompts. Every session starts with a structured template:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CONTEXT: [what we're building, decisions made so far]
TASK: [single, specific output]
CONSTRAINTS: [tech stack, patterns to follow, things to avoid]
OUTPUT FORMAT: [expected delivery — code block, diagram, plain text]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This alone cut my "fix AI's mistakes" time by &lt;strong&gt;~60%&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. The "Review Gate" Practice
&lt;/h3&gt;

&lt;p&gt;After every implementation session, before accepting the code:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Does it match the plan?&lt;/strong&gt; (If not, reject — don't fix inline)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Are error paths handled?&lt;/strong&gt; (If not, ask for them specifically)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is it consistent with existing code?&lt;/strong&gt; (Same patterns, same conventions)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This sounds like a lot. It takes &lt;strong&gt;3-5 minutes&lt;/strong&gt; per session and saves &lt;strong&gt;hours&lt;/strong&gt; of later debugging.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Before and After (Real Code)
&lt;/h2&gt;

&lt;p&gt;Here's what a typical piece of vibe-coded auth logic looked like in my codebase — three different sessions, three different patterns:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gd"&gt;- // Session 1: "Add auth check here"
- function getUserId(req) {
-   const token = req.headers.authorization?.split(' ')[1]
-   return token ? jwt.verify(token, process.env.SECRET).sub : null
- }
- 
- // Session 2: "Also add auth here"
- const requireAuth = (req, res, next) =&amp;gt; {
-   try {
-     const user = jwt.verify(req.cookies.token, 'hardcoded-secret-123')
-     req.user = user
-     next()
-   } catch { res.sendStatus(401) }
- }
- 
- // Session 3: "Fix the auth bug"
- async function getUser(req) {
-   if (!req.headers['x-auth']) return { error: 'no auth' }
-   const result = await db.query(`SELECT * FROM users WHERE token = '${req.headers['x-auth']}'`)
-   return result.rows[0]
- }
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three approaches. Three error-handling styles. A hardcoded secret. A SQL injection waiting to happen. All doing "the same thing" because each session had no memory of the last.&lt;/p&gt;

&lt;p&gt;After applying the structured workflow (one concern per session, review gate between each):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gi"&gt;+ // repository/auth.js — single source of truth, one pattern
+ 
+ export function verifyToken(token) {
+   try {
+     return jwt.verify(token, process.env.AUTH_SECRET)
+   } catch {
+     return null
+   }
+ }
+ 
+ export function requireAuth(req, res, next) {
+   const token = req.cookies.token ?? req.headers.authorization?.split(' ')[1]
+   const payload = verifyToken(token)
+   if (!payload) return res.status(401).json({ error: 'unauthorized' })
+   req.userId = payload.sub
+   next()
+ }
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One file. One pattern. One error-handling strategy. The AI wrote both versions — the difference was whether I gave it a structure to work within.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real Numbers: Before vs After
&lt;/h2&gt;

&lt;p&gt;For &lt;a href="https://multipost.clb520.ccwu.cc" rel="noopener noreferrer"&gt;MultiPost&lt;/a&gt; specifically:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Vibe Coding&lt;/th&gt;
&lt;th&gt;Structured Workflows&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Time to feature completion&lt;/td&gt;
&lt;td&gt;4-6 hours&lt;/td&gt;
&lt;td&gt;3-4 hours&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code review reject rate&lt;/td&gt;
&lt;td&gt;~40%&lt;/td&gt;
&lt;td&gt;~10%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Post-deploy bugs per feature&lt;/td&gt;
&lt;td&gt;3-5&lt;/td&gt;
&lt;td&gt;0-1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Time spent debugging per week&lt;/td&gt;
&lt;td&gt;8+ hours&lt;/td&gt;
&lt;td&gt;2-3 hours&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The interesting part: &lt;strong&gt;structured workflows are actually faster overall&lt;/strong&gt;, even though they feel slower in the moment. The upfront planning time pays for itself in avoided debugging.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Flow Difference
&lt;/h3&gt;

&lt;p&gt;Here's what the two approaches look like side by side:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;VIBE CODING:
  "Build feature X" → AI writes 500 lines → Deploy → Bug → Debug → Patch → Repeat
  │                      │                        │
  └── You skip design    └── 1 huge chunk         └── 30 min to find the issue

STRUCTURED WORKFLOW:
  "Design feature X" → Review plan → "Implement component 1" → Review → "Implement 2" → Review → Ship
  │                     │            │                          │
  └── 2 min plan        └── 2 min    └── small, reviewable      └── 3 min, catches bugs early
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The vibe coding path &lt;em&gt;feels&lt;/em&gt; faster because you see output immediately. The structured path &lt;em&gt;is&lt;/em&gt; faster because you almost never backtrack.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bigger Pattern
&lt;/h2&gt;

&lt;p&gt;Looking at that ~230-comment HN thread, multiple people independently came to the same conclusion:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Most of the tools I write now are bridges to various SaaS products that have APIs but no CLIs."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"I made a harness to discipline AI output. The opposite of vibe coding. Using it daily."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"&lt;a href="https://github.com/obra/superpowers" rel="noopener noreferrer"&gt;Superpowers&lt;/a&gt; guides the model to use careful, methodical approaches. Great for multi-step planning."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The community is self-organizing around the same insight: &lt;strong&gt;AI is a powerful junior engineer. Junior engineers need structure to produce quality work.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Use Now
&lt;/h2&gt;

&lt;p&gt;I ended up building a CLI called &lt;a href="https://chengster68.gumroad.com/l/seswre" rel="noopener noreferrer"&gt;Content Bridge&lt;/a&gt; to enforce this exact workflow. It's literally this article turned into a tool — you write a plan, review it, implement one component at a time, and the CLI enforces the structure so you don't have to remember the rules.&lt;/p&gt;

&lt;p&gt;But you don't need any tool to start. You can begin today with one change:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before your next AI session, spend 2 minutes writing down what you want it to produce. Not how — what. Review that plan before generating anything.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The generation is the easy part. The structure is the work.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;What's your approach? Have you hit the same vibe coding trap? Drop your workflow (or horror story) in the comments — I read all of them.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>webdev</category>
      <category>saas</category>
    </item>
    <item>
      <title>The $11B Bet That Says Everything We Know About LLMs Might Be Wrong</title>
      <dc:creator>Pizza Cat</dc:creator>
      <pubDate>Sun, 07 Jun 2026 03:47:21 +0000</pubDate>
      <link>https://dev.to/pizza_cat/the-11b-bet-that-says-everything-we-know-about-llms-might-be-wrong-1poi</link>
      <guid>https://dev.to/pizza_cat/the-11b-bet-that-says-everything-we-know-about-llms-might-be-wrong-1poi</guid>
      <description>&lt;h1&gt;
  
  
  The $11B Bet That Says Everything We Know About LLMs Might Be Wrong
&lt;/h1&gt;

&lt;p&gt;Last week, a company that doesn't have a product, doesn't have a website, and is barely two months old raised &lt;strong&gt;$11 billion&lt;/strong&gt; — the largest seed round in European history.&lt;/p&gt;

&lt;p&gt;The company is called &lt;strong&gt;Ineffable Intelligence&lt;/strong&gt;. The founder is &lt;strong&gt;David Silver&lt;/strong&gt; — the man behind AlphaGo and AlphaZero at DeepMind. The valuation is &lt;strong&gt;$51 billion&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And here's the part that stopped me: &lt;strong&gt;they're not building another LLM.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bet
&lt;/h2&gt;

&lt;p&gt;Every major AI company today — OpenAI, Anthropic, Google — is playing the same game:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Scrape as much human text as possible from the internet&lt;/li&gt;
&lt;li&gt;Train a massive transformer to predict the next token&lt;/li&gt;
&lt;li&gt;Use RLHF to make it sound helpful and harmless&lt;/li&gt;
&lt;li&gt;Scale up and pray for emergent capabilities&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Silver's thesis is that this entire paradigm is a dead end. Not a slowdown. A dead end.&lt;/p&gt;

&lt;p&gt;His argument: language models learn from &lt;strong&gt;static human data&lt;/strong&gt;. They're a compressed snapshot of what we already know. They can mimic reasoning, but they never actually &lt;em&gt;interact&lt;/em&gt; with the world. They've never tried something, failed, adjusted, and tried again.&lt;/p&gt;

&lt;p&gt;Real intelligence doesn't come from memorizing human text. It comes from &lt;strong&gt;acting in an environment and learning from the consequences&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If Silver is right, the entire "scale is all you need" school of thought is wrong. Bigger models, more data, more compute — eventually hits diminishing returns. The path to real AI isn't a bigger transformer. It's a fundamentally different architecture.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The $11B Question
&lt;/h2&gt;

&lt;p&gt;The investors — Sequoia, Lightspeed, Google, NVIDIA, DST Global, the UK sovereign fund — are betting $11B that Silver is right.&lt;/p&gt;

&lt;p&gt;But this is a moonshot, and everyone knows it. Silver's approach — training AI purely through reinforcement learning in continuous environments — has never been demonstrated at scale. AlphaGo and AlphaZero worked beautifully in the constrained world of board games. The real world is infinitely messier.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The skeptics say:&lt;/strong&gt; "We've had RL for decades and it hasn't produced anything close to GPT-4. Why would this be different?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The believers say:&lt;/strong&gt; "Because nobody has tried it at this scale with this much compute."&lt;/p&gt;

&lt;p&gt;Both are valid. That's why it's a $11B bet, not a $11M sure thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Means for Builders
&lt;/h2&gt;

&lt;p&gt;This is the part I actually care about. Does this change anything for someone building products on top of AI today?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Yes, but not in the way you'd expect.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The LLM era is not the final form of AI
&lt;/h3&gt;

&lt;p&gt;If you're building a business that depends entirely on API access to GPT or Claude, it's worth asking: what happens if the underlying paradigm shifts in 3-5 years?&lt;/p&gt;

&lt;p&gt;This doesn't mean stop building. It means &lt;strong&gt;build abstractions&lt;/strong&gt;. Your product shouldn't be coupled to one model provider. Your value prop shouldn't be "we use GPT-5." It should be "we solve X problem."&lt;/p&gt;

&lt;h3&gt;
  
  
  2. "Scale is all you need" is being questioned at the highest level
&lt;/h3&gt;

&lt;p&gt;The fact that $11B flowed to an anti-LLM thesis tells you that even the biggest investors are not fully confident in the current path. They're placing a hedge — and that hedge is a $51B company.&lt;/p&gt;

&lt;p&gt;If you've been feeling like the "just scale it" narrative was too simplistic, you're not alone. The industry is quietly admitting the same thing.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. For indie developers: this doesn't change your game
&lt;/h3&gt;

&lt;p&gt;Whether AI runs on transformers or reinforcement learning doesn't matter for the tools you're building today. What matters is: &lt;strong&gt;can you solve a real user problem?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The AI layer is becoming a commodity either way. The winners in the next wave won't be the ones with the best model — they'll be the ones with the best product and the best distribution.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bigger Picture
&lt;/h2&gt;

&lt;p&gt;This isn't just about David Silver. It's a signal that the industry is entering what I'd call a &lt;strong&gt;post-scaling era&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For the last 5 years, the playbook was simple: take a transformer, make it bigger, feed it more data, get better results. That playbook is showing cracks. GPT-5 hasn't shipped. The gap between GPT-4 and GPT-4.5 was noticeably smaller than GPT-3 to GPT-4. Diminishing returns are real.&lt;/p&gt;

&lt;p&gt;The industry is splitting into three paths:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Path&lt;/th&gt;
&lt;th&gt;Who&lt;/th&gt;
&lt;th&gt;Thesis&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;A — Keep scaling&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;OpenAI, Anthropic, Google&lt;/td&gt;
&lt;td&gt;More compute, more data, more modalities&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;B — Start over&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Silver, Ineffable Intelligence&lt;/td&gt;
&lt;td&gt;RL from first principles, different architecture&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;C — Build on top&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Everyone else&lt;/td&gt;
&lt;td&gt;Model layer is a commodity; product and distribution win&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;As product builders, Path C is where we live. And that's fine — because the most valuable companies of the last 10 years weren't the ones that built the infrastructure. They were the ones that built on top of it.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;What do you think — is Silver's bet visionary or delusional? I go back and forth every time I think about it. Drop a comment, I read all of them.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;---&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I'm a solo developer building &lt;a href="https://multipost.ccwu.cc" rel="noopener noreferrer"&gt;MultiPost&lt;/a&gt; — a content repurposing tool for indie hackers who write on multiple platforms. I write about AI trends, SaaS development, and what it's actually like trying to get to $500 MRR as a solo founder.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>startup</category>
      <category>funding</category>
    </item>
    <item>
      <title>Why a Chinese indie hacker built yet another content repurposing tool</title>
      <dc:creator>Pizza Cat</dc:creator>
      <pubDate>Sat, 06 Jun 2026 09:07:01 +0000</pubDate>
      <link>https://dev.to/pizza_cat/why-a-chinese-indie-hacker-built-yet-another-content-repurposing-tool-1ja5</link>
      <guid>https://dev.to/pizza_cat/why-a-chinese-indie-hacker-built-yet-another-content-repurposing-tool-1ja5</guid>
      <description>&lt;h1&gt;
  
  
  Why a Chinese indie hacker built yet another content repurposing tool
&lt;/h1&gt;

&lt;p&gt;I'm a full-stack developer from China. I make SaaS tools for the global market.&lt;/p&gt;

&lt;p&gt;I have 4 hours a day. That's it. Full-time job takes the rest.&lt;/p&gt;

&lt;p&gt;This is the story of why I built MultiPost — a content repurposing tool that currently has &lt;strong&gt;$0 MRR&lt;/strong&gt; and &lt;strong&gt;zero paying users&lt;/strong&gt;. And why I'm sharing everything.&lt;/p&gt;




&lt;h2&gt;
  
  
  The pain that started it
&lt;/h2&gt;

&lt;p&gt;I write on Dev.to, Twitter, and soon LinkedIn.&lt;/p&gt;

&lt;p&gt;Each platform has its own culture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dev.to wants technical depth&lt;/li&gt;
&lt;li&gt;Twitter needs short punchy threads&lt;/li&gt;
&lt;li&gt;LinkedIn prefers professional storytelling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you write one post and copy-paste it everywhere, it fails on every platform. If you rewrite for each platform, you spend 3x the time.&lt;/p&gt;

&lt;p&gt;I don't have 3x the time. I have &lt;strong&gt;one hour&lt;/strong&gt; for content.&lt;/p&gt;

&lt;p&gt;So I did what developers do: I looked for a tool.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I found (and why I didn't buy)
&lt;/h2&gt;

&lt;p&gt;Here's what the market looks like:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;th&gt;Problem&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cue&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Schedule across platforms&lt;/td&gt;
&lt;td&gt;No AI rewriting&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SocialEcho&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI content repurposing&lt;/td&gt;
&lt;td&gt;Too expensive for my scale&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Buffer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Social media management&lt;/td&gt;
&lt;td&gt;The new AI features are promising but locked behind high tiers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;RepostEngine&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;YouTube → 10 platforms&lt;/td&gt;
&lt;td&gt;Single-direction (video-only)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;None of them did exactly what I needed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Take &lt;strong&gt;one piece of content&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Rewrite it for &lt;strong&gt;each platform's format&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Let me &lt;strong&gt;edit before posting&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;At a price that makes sense for a solo dev&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I built it.&lt;/p&gt;




&lt;h2&gt;
  
  
  MultiPost: what it does
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;A content repurposing tool that rewrites your posts for different platforms — not translates, &lt;strong&gt;rewrites&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Input: one blog post / tweet / thread&lt;/li&gt;
&lt;li&gt;Output: platform-optimized versions for Dev.to, Twitter, LinkedIn, and more&lt;/li&gt;
&lt;li&gt;AI-powered but human-editable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The MVP took me 3 weeks. I work on it in the evenings after my day job.&lt;/p&gt;




&lt;h2&gt;
  
  
  The honest numbers
&lt;/h2&gt;

&lt;p&gt;Here's where we stand today:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Users:        0 (well, 2 — me and a friend)
MRR:          $0
Status:       Live at multipost.ccwu.cc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;$0 MRR. I'm sharing this because the indie hacker community taught me that &lt;strong&gt;transparency builds trust&lt;/strong&gt;, and trust is the only asset you have when you start from zero.&lt;/p&gt;

&lt;p&gt;Marc Lou (ShipFast) once posted a Stripe screenshot showing $0 MRR weeks after launch. That gave me more courage than any "how I made $100K in 30 days" post ever did.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I'm going to share here
&lt;/h2&gt;

&lt;p&gt;From today, I'll document this journey publicly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Build logs&lt;/strong&gt; — features I built, bugs I fixed, users I (tried to) get&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Numbers&lt;/strong&gt; — good or bad&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mistakes&lt;/strong&gt; — I'll make plenty&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lessons&lt;/strong&gt; — what works and what doesn't for a Chinese dev trying to go global&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're an indie hacker, a solo dev, or someone who thinks "I can't start because I don't have enough time" — I want to show you what's possible with 4 hours a day.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I'm writing this in English
&lt;/h2&gt;

&lt;p&gt;Someone asked me: "Why not write in Chinese? The audience is huge."&lt;/p&gt;

&lt;p&gt;Two reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;I want to earn USD&lt;/strong&gt; — building for the global market means being where the customers are&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chinese devs need representation&lt;/strong&gt; — there are thousands of developers in China building amazing things, but almost nobody tells their story in English&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I'm not a native English speaker. Some sentences will sound weird. That's okay. Building in public isn't about perfect grammar — it's about being real.&lt;/p&gt;




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

&lt;p&gt;In the next post, I'll share the week 1 data: how I'm approaching cold start, who I'm reaching out to, and what the first user feedback looks like (if I get any).&lt;/p&gt;

&lt;p&gt;If you're building something similar, or you've gone through the $0 → $1 journey — I'd love to hear your story in the comments.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Building @MultiPost — content repurposing for the solo creator. Follow for build logs, honest numbers, and lessons from a Chinese indie hacker.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>indiehacker</category>
      <category>saas</category>
      <category>buildinpublic</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Every AI Content Sounds the Same Now. Here's Why That's a $100B Problem.</title>
      <dc:creator>Pizza Cat</dc:creator>
      <pubDate>Thu, 04 Jun 2026 00:01:24 +0000</pubDate>
      <link>https://dev.to/pizza_cat/every-ai-content-sounds-the-same-now-heres-why-thats-a-100b-problem-305g</link>
      <guid>https://dev.to/pizza_cat/every-ai-content-sounds-the-same-now-heres-why-thats-a-100b-problem-305g</guid>
      <description>&lt;p&gt;&lt;em&gt;Building MultiPost — an AI content distribution tool with a built-in humanization layer. Find me on &lt;a href="https://indiehackers.com" rel="noopener noreferrer"&gt;Indie Hackers&lt;/a&gt; as pizzacat.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>indiehacker</category>
      <category>content</category>
      <category>writing</category>
    </item>
    <item>
      <title>Building an AI-Powered SaaS with Nuxt 3 + Supabase: Full Architecture Breakdown</title>
      <dc:creator>Pizza Cat</dc:creator>
      <pubDate>Mon, 01 Jun 2026 03:14:50 +0000</pubDate>
      <link>https://dev.to/pizza_cat/building-an-ai-powered-saas-with-nuxt-3-supabase-full-architecture-breakdown-56ol</link>
      <guid>https://dev.to/pizza_cat/building-an-ai-powered-saas-with-nuxt-3-supabase-full-architecture-breakdown-56ol</guid>
      <description>&lt;p&gt;Last week I built an AI-powered content repurposing tool called MultiPost. You write one article, it generates platform-optimized versions for Twitter, LinkedIn, Dev.to, Reddit, and Indie Hackers.&lt;/p&gt;

&lt;p&gt;The product works. The AI engine cost ~¥0.01 per conversion. The whole thing went from zero to deployed in ~48 hours.&lt;/p&gt;

&lt;p&gt;But this post isn't about the product. It's about &lt;strong&gt;how&lt;/strong&gt; it works under the hood — the architecture decisions, the AI prompt design, and the deployment tricks I learned along the way.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Architecture at a Glance
&lt;/h2&gt;

&lt;p&gt;Here's the full stack:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Frontend (Nuxt 3 SSR)
  ├── / → Landing Page
  ├── /convert → AI Conversion UI
  ├── /dashboard → Conversion History
  └── /settings → Account + Dev.to Integration

Server (Nuxt + H3)
  ├── /api/convert → DeepSeek AI Conversion
  ├── /api/history → Supabase CRUD
  ├── /api/devto → Dev.to Publish Proxy
  └── /api/auth → Supabase Auth Helpers

Database (Supabase)
  ├── profiles → User profiles
  ├── conversions → AI conversion history
  └── usage → Usage tracking

Deployment (Netlify)
  └── CNAME → multipost.clb520.ccwu.cc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Key decision&lt;/strong&gt;: I used Nuxt 3 server routes (H3) for all API endpoints — no separate backend. This means frontend and API are deployed as a single artifact. For a solo dev building a Micro-SaaS, this is a massive productivity win.&lt;/p&gt;




&lt;h2&gt;
  
  
  The AI Engine: Prompt Design That Actually Works
&lt;/h2&gt;

&lt;p&gt;The heart of the app is the conversion engine. Here's the flow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Input Article (markdown text)
  → DeepSeek Chat API (single prompt, no chain)
  → JSON Response with 5 platform variants
  → Parse → Validate → Display in Tabs
  → User Edits → Copy or Publish
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Why DeepSeek (not Claude or GPT-4)
&lt;/h3&gt;

&lt;p&gt;Three reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Cost&lt;/strong&gt;: ¥0.001 ≈ $0.00014 per 1K tokens. A full conversion costs ~¥0.01.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chinese developer friendly&lt;/strong&gt;: API registration and billing work with Chinese payment methods. No Stripe requirement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quality&lt;/strong&gt;: For content rewriting (not creative generation), DeepSeek matches GPT-4 at 1/30th the cost.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;At $0.0014 per conversion, even at 1000 conversions/month, the AI cost is $1.40. This makes the $19/month pricing viable with 90%+ margins.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Prompt Architecture
&lt;/h3&gt;

&lt;p&gt;Single-prompt design, not chain-of-thought:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"system"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"You are a content repurposing expert..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"messages"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"role"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"user"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"content"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Convert this article for 5 platforms.&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s2"&gt;Article:&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;{input}&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s2"&gt;Return JSON: { twitter: { tweets: [string] }, linkedin: { text: string }, devto: { markdown: string }, reddit: { text: string }, indiehackers: { text: string } }"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"response_format"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"json_object"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Key lessons learned:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;JSON mode is non-negotiable&lt;/strong&gt;. Without &lt;code&gt;response_format: json_object&lt;/code&gt;, the model occasionally adds explanatory text that breaks parsing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Platform-specific context matters more than word count limits&lt;/strong&gt;. Telling the model "Twitter wants a hook in every tweet" produces better results than "write 7 tweets under 280 chars."&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Example-driven prompts beat instruction-only prompts&lt;/strong&gt;. The v1 prompt was pure instructions. v2 included one example conversion. Output quality jumped significantly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Temperature = 0.7 for creative rewrites, 0.3 for technical content&lt;/strong&gt;. Technical articles stay closer to the source. Marketing content gets more variation.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Robust Parsing
&lt;/h3&gt;

&lt;p&gt;DeepSeek's JSON mode is good but not perfect. Occasionally you get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Escape character issues in code blocks&lt;/li&gt;
&lt;li&gt;Truncated responses (token limit hit)&lt;/li&gt;
&lt;li&gt;Missing keys in the JSON&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The fix: a &lt;code&gt;safeParse()&lt;/code&gt; function that validates each platform variant and falls back to the raw input for any that fail:&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="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;safeParse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;json&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;ConversionResult&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;try&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;parsed&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;json&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;platforms&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;twitter&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;linkedin&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;devto&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;reddit&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;indiehackers&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;result&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;const&lt;/span&gt; &lt;span class="nx"&gt;platform&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;platforms&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;platform&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;parsed&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;platform&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="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;rawInput&lt;/span&gt; &lt;span class="p"&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;result&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;fallbackToRaw&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;input&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;h2&gt;
  
  
  Supabase: Database + Auth in One
&lt;/h2&gt;

&lt;p&gt;Supabase does double duty — authentication and data storage. Here's the schema:&lt;/p&gt;

&lt;h3&gt;
  
  
  Tables
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- Profiles (auto-created on signup)&lt;/span&gt;
&lt;span class="k"&gt;create&lt;/span&gt; &lt;span class="k"&gt;table&lt;/span&gt; &lt;span class="n"&gt;profiles&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="n"&gt;uuid&lt;/span&gt; &lt;span class="k"&gt;references&lt;/span&gt; &lt;span class="n"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;users&lt;/span&gt; &lt;span class="k"&gt;primary&lt;/span&gt; &lt;span class="k"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;email&lt;/span&gt; &lt;span class="nb"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;full_name&lt;/span&gt; &lt;span class="nb"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;created_at&lt;/span&gt; &lt;span class="nb"&gt;timestamp&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="n"&gt;now&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;-- Conversion history&lt;/span&gt;
&lt;span class="k"&gt;create&lt;/span&gt; &lt;span class="k"&gt;table&lt;/span&gt; &lt;span class="n"&gt;conversions&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="n"&gt;uuid&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="n"&gt;gen_random_uuid&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;primary&lt;/span&gt; &lt;span class="k"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;user_id&lt;/span&gt; &lt;span class="n"&gt;uuid&lt;/span&gt; &lt;span class="k"&gt;references&lt;/span&gt; &lt;span class="n"&gt;profiles&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="n"&gt;input_title&lt;/span&gt; &lt;span class="nb"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;input_content&lt;/span&gt; &lt;span class="nb"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="k"&gt;output&lt;/span&gt; &lt;span class="n"&gt;jsonb&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;-- stores all 5 platform versions&lt;/span&gt;
  &lt;span class="n"&gt;created_at&lt;/span&gt; &lt;span class="nb"&gt;timestamp&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="n"&gt;now&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;-- Usage tracking&lt;/span&gt;
&lt;span class="k"&gt;create&lt;/span&gt; &lt;span class="k"&gt;table&lt;/span&gt; &lt;span class="k"&gt;usage&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="n"&gt;user_id&lt;/span&gt; &lt;span class="n"&gt;uuid&lt;/span&gt; &lt;span class="k"&gt;references&lt;/span&gt; &lt;span class="n"&gt;profiles&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;primary&lt;/span&gt; &lt;span class="k"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;conversion_count&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;period_start&lt;/span&gt; &lt;span class="nb"&gt;timestamp&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="n"&gt;now&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;-- RPC for atomic increment&lt;/span&gt;
&lt;span class="k"&gt;create&lt;/span&gt; &lt;span class="k"&gt;or&lt;/span&gt; &lt;span class="k"&gt;replace&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;increment_usage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user_id&lt;/span&gt; &lt;span class="n"&gt;uuid&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;returns&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="err"&gt;$$&lt;/span&gt;
  &lt;span class="k"&gt;update&lt;/span&gt; &lt;span class="k"&gt;usage&lt;/span&gt;
  &lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="n"&gt;conversion_count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;conversion_count&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
  &lt;span class="k"&gt;where&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;user_id&lt;/span&gt;
  &lt;span class="n"&gt;returning&lt;/span&gt; &lt;span class="n"&gt;conversion_count&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;$$&lt;/span&gt; &lt;span class="k"&gt;language&lt;/span&gt; &lt;span class="k"&gt;sql&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  RLS Gotcha
&lt;/h3&gt;

&lt;p&gt;The biggest Supabase issue I hit: &lt;strong&gt;RLS without explicit GRANTs causes silent 500 errors&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For &lt;code&gt;anon&lt;/code&gt; role (pre-auth), you need:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;GRANT&lt;/span&gt; &lt;span class="k"&gt;USAGE&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="k"&gt;SCHEMA&lt;/span&gt; &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;TO&lt;/span&gt; &lt;span class="n"&gt;anon&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;GRANT&lt;/span&gt; &lt;span class="k"&gt;ALL&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="k"&gt;ALL&lt;/span&gt; &lt;span class="n"&gt;TABLES&lt;/span&gt; &lt;span class="k"&gt;IN&lt;/span&gt; &lt;span class="k"&gt;SCHEMA&lt;/span&gt; &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;TO&lt;/span&gt; &lt;span class="n"&gt;authenticated&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Without this, Supabase returns a generic 500 error that tells you nothing useful. I spent an hour debugging this.&lt;/p&gt;




&lt;h2&gt;
  
  
  Deployment: The Cloudflare Lesson
&lt;/h2&gt;

&lt;p&gt;Originally I targeted Cloudflare Pages. Then my Pages got blocked due to an API token leak (rotated immediately, but Cloudflare's abuse detection flagged it).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The workaround&lt;/strong&gt;: Netlify.&lt;/p&gt;

&lt;p&gt;Deployment flow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run build
npx netlify deploy &lt;span class="nt"&gt;--prod&lt;/span&gt; &lt;span class="nt"&gt;--dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;.output/public
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Netlify handles Nuxt 3 SSR out of the box. Server routes work without any adapter configuration.&lt;/p&gt;

&lt;p&gt;Then I pointed &lt;code&gt;multipost.clb520.ccwu.cc&lt;/code&gt; at Netlify via a CNAME record. The trick with SSL was: &lt;strong&gt;turn off Cloudflare proxy → let Netlify auto-provision Let's Encrypt → turn proxy back on&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I'd Do Differently
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Start with a landing page, not the full product&lt;/strong&gt;. I did this ✓. The landing page validated the idea before I wrote a line of product code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Token rotation before GitHub push&lt;/strong&gt;. This is how I lost Cloudflare Pages. Rotate all tokens before the first commit, not after.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Supabase RLS from day one&lt;/strong&gt;. Add GRANT permissions to your migration script immediately. Don't wait for the 500 error.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Monorepo &amp;gt; separate repos&lt;/strong&gt;. Frontend, API, and database all in one Nuxt 3 project means one deploy command. For a solo dev, this is faster.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Price higher&lt;/strong&gt;. I started at $19/month. After seeing what people actually pay for tools like Content Snare ($29) and Senja ($39), $19 feels low.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  The Numbers
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Time to first deploy&lt;/td&gt;
&lt;td&gt;~48 hours&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI model&lt;/td&gt;
&lt;td&gt;DeepSeek Chat&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI cost per conversion&lt;/td&gt;
&lt;td&gt;¥0.01 (~$0.0014)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Infrastructure cost/month&lt;/td&gt;
&lt;td&gt;$0 (Netlify free + Supabase free)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code size&lt;/td&gt;
&lt;td&gt;~800 lines Vue, ~200 lines API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Database&lt;/td&gt;
&lt;td&gt;Supabase (3 tables, 1 RPC)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;If you're building a Nuxt 3 SaaS and have questions about the architecture, AI integration, or deployment — drop a comment. I'll share whatever I can.&lt;/p&gt;

&lt;p&gt;And if you want to try MultiPost for your own content distribution: &lt;strong&gt;&lt;a href="https://multipost.clb520.ccwu.cc" rel="noopener noreferrer"&gt;multipost.clb520.ccwu.cc&lt;/a&gt;&lt;/strong&gt; — free tier available, no credit card needed.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built with Nuxt 3, Supabase, DeepSeek. Deployed on Netlify. Written by a solo dev who hates copy-pasting.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>nuxt</category>
      <category>supabase</category>
      <category>architecture</category>
      <category>ai</category>
    </item>
    <item>
      <title>MultiPost Dev.to Integration is Live! 🎉</title>
      <dc:creator>Pizza Cat</dc:creator>
      <pubDate>Sun, 31 May 2026 11:09:30 +0000</pubDate>
      <link>https://dev.to/pizza_cat/multipost-devto-integration-is-live-3pn6</link>
      <guid>https://dev.to/pizza_cat/multipost-devto-integration-is-live-3pn6</guid>
      <description>&lt;p&gt;Good news! MultiPost now supports one-click publishing to Dev.to!&lt;/p&gt;

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

&lt;p&gt;MultiPost is an AI-powered content repurposing tool. You write once, and it generates platform-optimized versions for Twitter, LinkedIn, Dev.to, Reddit, and Indie Hackers.&lt;/p&gt;

&lt;h2&gt;
  
  
  What just happened?
&lt;/h2&gt;

&lt;p&gt;This article was published directly from the MultiPost converter using the new Dev.to API integration. No copy-paste, no manual reformatting.&lt;/p&gt;

&lt;p&gt;Tech stack: Nuxt 3 + Supabase + DeepSeek AI + Netlify&lt;/p&gt;

&lt;p&gt;If you are a solo developer creating content, this tool saves hours of manual distribution work.&lt;/p&gt;

&lt;p&gt;Check it out: &lt;a href="https://multipost-saas.netlify.app" rel="noopener noreferrer"&gt;https://multipost-saas.netlify.app&lt;/a&gt;&lt;/p&gt;

</description>
      <category>vue</category>
      <category>cloudflare</category>
      <category>indiehacker</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>I Was Spending 10 Hours a Week Copy-Pasting Content. Here's What I Learned Building the Fix.</title>
      <dc:creator>Pizza Cat</dc:creator>
      <pubDate>Sat, 30 May 2026 06:28:22 +0000</pubDate>
      <link>https://dev.to/pizza_cat/i-was-spending-10-hours-a-week-copy-pasting-content-heres-what-i-learned-building-the-fix-11fm</link>
      <guid>https://dev.to/pizza_cat/i-was-spending-10-hours-a-week-copy-pasting-content-heres-what-i-learned-building-the-fix-11fm</guid>
      <description>&lt;h1&gt;
  
  
  I Was Spending 10 Hours a Week Copy-Pasting Content. Here's What I Learned Building the Fix.
&lt;/h1&gt;

&lt;p&gt;Thursday night, 11:47 PM.&lt;/p&gt;

&lt;p&gt;I had just finished writing a tutorial about Vue 3 + Cloudflare Workers. Good content. Solid code examples. The kind of thing that should get me eyes.&lt;/p&gt;

&lt;p&gt;Then I spent the next &lt;strong&gt;52 minutes&lt;/strong&gt; doing this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Copy the article to Dev.to — need to add frontmatter, fix the code block formatting, rewrite the intro to be shorter&lt;/li&gt;
&lt;li&gt;Copy a thread version to Twitter — 280 char limit, break into 7 tweets, make each one a hook&lt;/li&gt;
&lt;li&gt;Copy to LinkedIn — professional tone, line breaks every 2-3 sentences, no code blocks&lt;/li&gt;
&lt;li&gt;Copy to Reddit — conversational, shorter, don't sound like a salesman&lt;/li&gt;
&lt;li&gt;Copy to Indie Hackers — narrative style, add the "I'm a solo dev" angle&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Same content. Five different formats. Zero value added.&lt;/p&gt;

&lt;p&gt;I did the math: over the last 3 months, &lt;strong&gt;that's 130 hours&lt;/strong&gt;. Hours I could have spent building product, talking to users, or — you know — sleeping.&lt;/p&gt;

&lt;p&gt;And the worst part? I wasn't even doing it well. The LinkedIn version looked like a Dev.to article. The Reddit post got removed by AutoMod for "promotion." The Twitter thread had a typo in tweet #3 that I didn't catch until 2 days later.&lt;/p&gt;

&lt;p&gt;This is the part nobody tells you about being a solo creator:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Writing the content is 30% of the work. Distributing it is the other 70%.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And most of us pretend that 70% doesn't exist. We post to one platform, maybe two, and tell ourselves "the algorithm is broken" when nobody reads it.&lt;/p&gt;

&lt;p&gt;But here's the thing I realized: &lt;strong&gt;the problem isn't that we're lazy. The problem is that the tools don't exist.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There's no "write once, publish everywhere" for indie developers. Not really. The enterprise tools are $500/month and designed for marketing teams. The free tools are half-baked and don't understand code.&lt;/p&gt;

&lt;p&gt;So I decided to build it.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;MultiPost&lt;/strong&gt; — write once, AI repurposes for every platform.&lt;/p&gt;

&lt;p&gt;You write a blog post, a tutorial, or even just a thought. MultiPost generates platform-optimized versions — Twitter thread, LinkedIn post, Dev.to article, Reddit post, Indie Hackers story — in the time it takes you to make coffee.&lt;/p&gt;

&lt;p&gt;The AI doesn't just reformat. It understands that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Twitter needs a hook every 280 characters and a thread structure&lt;/li&gt;
&lt;li&gt;LinkedIn needs professional tone, paragraph spacing, storytelling&lt;/li&gt;
&lt;li&gt;Dev.to needs proper frontmatter, code blocks, a technical audience voice&lt;/li&gt;
&lt;li&gt;Reddit needs to sound like a human, not a marketer&lt;/li&gt;
&lt;li&gt;Indie Hackers needs narrative, numbers, the "solo founder" angle&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One article. Five versions. Three minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Here's What I Learned Building Day 1
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Start with distribution, not product
&lt;/h3&gt;

&lt;p&gt;I built the &lt;strong&gt;landing page before the actual tool&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;A lot of developers will hate this advice. "Ship first!" "MVP!" "Move fast!"&lt;/p&gt;

&lt;p&gt;But here's the truth: I built a 6-component landing page with an email signup form in ~2 hours. If nobody signs up, I just saved myself weeks of building something nobody wants.&lt;/p&gt;

&lt;p&gt;The rule I set: &lt;strong&gt;100 email signups or I pivot.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No marketing team. No ads. Just a landing page and organic content.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. The pricing tells the story
&lt;/h3&gt;

&lt;p&gt;Free → $19/month → $49/month.&lt;/p&gt;

&lt;p&gt;$19 is "I'm a serious creator." $49 is "I'm making money from content."&lt;/p&gt;

&lt;p&gt;I didn't invent these numbers. I looked at what Indie Hackers and creators actually pay for tools like this. Content Snare? $29/month. Senja? $39/month. Castmagic? $49/month.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The solo creator market has a very clear price ceiling: $49/month.&lt;/strong&gt; Above that, you're selling to agencies, not individuals.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. AI changes the build equation
&lt;/h3&gt;

&lt;p&gt;This landing page + API endpoint took ~2 hours. With AI assistance.&lt;/p&gt;

&lt;p&gt;Two years ago, that would have been a full day — writing CSS, debugging the form, setting up the database, configuring the deployment.&lt;/p&gt;

&lt;p&gt;The AI didn't write everything. But it wrote enough that I could focus on the decisions that actually matter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What problem am I solving?&lt;/li&gt;
&lt;li&gt;Who is this for?&lt;/li&gt;
&lt;li&gt;Is the messaging clear?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Code is cheap in 2026. Clarity is expensive.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Tech Stack (Brief Version)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Frontend: Nuxt 3 + TailwindCSS → Cloudflare Pages
Backend: Nuxt Server API → Cloudflare Workers  
Database: Supabase
AI: Claude API (coming when I build the engine)
Payments: Stripe (eventually)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Why Nuxt 3? Because I can write frontend and API routes in the same project, and deploy both to Cloudflare Pages with a single build command.&lt;/p&gt;

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

&lt;p&gt;I'm building this entirely in public.&lt;/p&gt;

&lt;p&gt;If this resonates:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Drop your email&lt;/strong&gt; at the landing page — early access gets 50% lifetime&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Follow me on Twitter/X&lt;/strong&gt; — I post daily build updates&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reply with your workflow&lt;/strong&gt; — what platform gives you the best ROI? What's the most painful part of distribution?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I ship the AI engine next week.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;P.S. The irony of repurposing this article across 5 platforms using a tool that doesn't exist yet is not lost on me. I'll let you know how long the manual version takes.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>vue</category>
      <category>cloudflare</category>
      <category>indiehacker</category>
      <category>buildinpublic</category>
    </item>
  </channel>
</rss>
