<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Wonsuk Choi</title>
    <link>https://wonsukchoi.com/en/blog</link>
    <description>Thoughts on building products, AI, and growing without paid acquisition.</description>
    <language>en</language>
    <atom:link href="https://wonsukchoi.com/rss.xml" rel="self" type="application/rss+xml"/>
    <lastBuildDate>Tue, 04 Aug 2026 19:15:26 GMT</lastBuildDate>
    
    <item>
      <title>Sovereignty Through Ownership: Why It Matters More Now</title>
      <link>https://wonsukchoi.com/en/blog/sovereignty-through-ownership</link>
      <guid isPermaLink="true">https://wonsukchoi.com/en/blog/sovereignty-through-ownership</guid>
      <description>Every platform you depend on can change its terms, raise its prices, or shut down tomorrow. The antidote isn&apos;t diversification, it&apos;s ownership. Here&apos;s what I learned running a portfolio of sites, a personal AI agent, and 130+ cron jobs on hardware I control.</description>
      <pubDate>Sun, 02 Aug 2026 23:38:16 GMT</pubDate>
    </item>
    <item>
      <title>Supabase Cost: One Project vs. Many — What Running 13 Sites Taught Me</title>
      <link>https://wonsukchoi.com/en/blog/supabase-cost-shared-vs-per-tenant</link>
      <guid isPermaLink="true">https://wonsukchoi.com/en/blog/supabase-cost-shared-vs-per-tenant</guid>
      <description>Supabase&apos;s pricing tiers aren&apos;t the real cost lever — how many projects your architecture needs is. Here&apos;s the shared-vs-per-tenant tradeoff from running 13 sites on 5 Supabase projects.</description>
      <pubDate>Thu, 30 Jul 2026 00:04:16 GMT</pubDate>
    </item>
    <item>
      <title>Hermes: My Personal AI Agent, and What It Actually Automates</title>
      <link>https://wonsukchoi.com/en/blog/running-hermes-ai-ops-agent</link>
      <guid isPermaLink="true">https://wonsukchoi.com/en/blog/running-hermes-ai-ops-agent</guid>
      <description>A markdown vault synced across devices, a cron-scheduled agent that runs weekly reflections on my own journal, and the line between script-only jobs and ones that need a real LLM. Here&apos;s what&apos;s actually running, and what it&apos;s caught.</description>
      <pubDate>Sun, 05 Jul 2026 12:52:46 GMT</pubDate>
    </item>
    <item>
      <title>How I Added 13 Languages to My Next.js Site Without Wrecking SEO</title>
      <link>https://wonsukchoi.com/en/blog/nextjs-multilingual-i18n-seo</link>
      <guid isPermaLink="true">https://wonsukchoi.com/en/blog/nextjs-multilingual-i18n-seo</guid>
      <description>I built 13-language support into Next.js App Router for UX, not SEO. Here&apos;s the full setup: typed translations, ISR, hreflang, noindex strategy, and what actually happened to traffic.</description>
      <pubDate>Sun, 07 Jun 2026 17:59:27 GMT</pubDate>
    </item>
    <item>
      <title>Coolify vs Vercel: I Moved 8 Projects — Here&apos;s the Real Cost Difference (2026)</title>
      <link>https://wonsukchoi.com/en/blog/coolify-vs-vercel-real-cost</link>
      <guid isPermaLink="true">https://wonsukchoi.com/en/blog/coolify-vs-vercel-real-cost</guid>
      <description>I moved 8 apps from Vercel to Coolify — from $50+/mo to $30/mo. Full cost breakdown, what you actually give up, and who should stick with Vercel.</description>
      <pubDate>Sun, 07 Jun 2026 17:48:34 GMT</pubDate>
    </item>
    <item>
      <title>My AI Coding Workflow in 2026: What I Actually Use and What I Skip</title>
      <link>https://wonsukchoi.com/en/blog/ai-coding-workflow-2026</link>
      <guid isPermaLink="true">https://wonsukchoi.com/en/blog/ai-coding-workflow-2026</guid>
      <description>I run more than 10 production apps as one developer. Here&apos;s how AI fits into my actual daily workflow: the tools, the patterns, what moved the needle, and what I stopped using.</description>
      <pubDate>Wed, 13 May 2026 17:34:29 GMT</pubDate>
    </item>
    <item>
      <title>Type-Safe Next.js App Router: Server Actions, Params, and Error Handling That Actually Scale</title>
      <link>https://wonsukchoi.com/en/blog/type-safe-nextjs-app-router</link>
      <guid isPermaLink="true">https://wonsukchoi.com/en/blog/type-safe-nextjs-app-router</guid>
      <description>App Router introduced async params, server actions, and new patterns for forms and mutations — and TypeScript support for all of it has sharp edges. Here are the patterns I use to keep things type-safe without fighting the framework.</description>
      <pubDate>Wed, 13 May 2026 08:41:08 GMT</pubDate>
    </item>
    <item>
      <title>Supabase Multi-Tenancy: Schema, RLS, JWT Claims, and Production Gotchas</title>
      <link>https://wonsukchoi.com/en/blog/supabase-multi-tenancy-production</link>
      <guid isPermaLink="true">https://wonsukchoi.com/en/blog/supabase-multi-tenancy-production</guid>
      <description>How to build multi-tenant SaaS on a single Supabase database — covering tenant_id schema design, RLS policies with JWT claims, middleware tenant resolution, and the production gotchas that cost the most time.</description>
      <pubDate>Wed, 13 May 2026 08:38:50 GMT</pubDate>
    </item>
    <item>
      <title>Building a Knowledge Base Chat with Supabase and Claude</title>
      <link>https://wonsukchoi.com/en/blog/knowledge-base-chat-supabase-claude</link>
      <guid isPermaLink="true">https://wonsukchoi.com/en/blog/knowledge-base-chat-supabase-claude</guid>
      <description>A complete walkthrough of building a RAG-based knowledge base chat: pgvector schema, embedding models, the retrieval function, chunking strategy, and the Claude prompt pattern — including the gotchas that cause silent failures.</description>
      <pubDate>Thu, 30 Apr 2026 01:35:00 GMT</pubDate>
    </item>
    <item>
      <title>How I Built a Personal AI That Knows My Entire Business</title>
      <link>https://wonsukchoi.com/en/blog/personal-ai-knowledge-base</link>
      <guid isPermaLink="true">https://wonsukchoi.com/en/blog/personal-ai-knowledge-base</guid>
      <description>I built an AI that can represent me accurately on my personal site — not with RAG or vector search, but with a simpler pattern that works better at this scale. Here&apos;s the architecture, the tradeoffs, and what building a real knowledge base about yourself actually involves.</description>
      <pubDate>Wed, 29 Apr 2026 21:34:11 GMT</pubDate>
    </item>
    <item>
      <title>Running 7 Products as One Developer: What I Delegate to AI</title>
      <link>https://wonsukchoi.com/en/blog/running-7-products-solo-ai-delegation</link>
      <guid isPermaLink="true">https://wonsukchoi.com/en/blog/running-7-products-solo-ai-delegation</guid>
      <description>The bottleneck in running multiple products solo isn&apos;t hours — it&apos;s attention. Here&apos;s what I actually delegate to AI across seven live products, what I don&apos;t, and what the real productivity gain looks like.</description>
      <pubDate>Wed, 29 Apr 2026 21:34:11 GMT</pubDate>
    </item>
    <item>
      <title>Supabase RLS in Production: jwt.claims, Tenant Isolation &amp; the Silent Failures</title>
      <link>https://wonsukchoi.com/en/blog/supabase-rls-production-patterns</link>
      <guid isPermaLink="true">https://wonsukchoi.com/en/blog/supabase-rls-production-patterns</guid>
      <description>Battle-tested RLS from 7 production Supabase apps. Covers jwt.claims patterns that actually work, multi-tenant isolation without policy sprawl, and the silent data leaks most developers only find in prod.</description>
      <pubDate>Wed, 29 Apr 2026 21:31:00 GMT</pubDate>
    </item>
    <item>
      <title>AI SEO in 2026: What&apos;s Actually Working vs What&apos;s Hype</title>
      <link>https://wonsukchoi.com/en/blog/ai-seo-2026-whats-working</link>
      <guid isPermaLink="true">https://wonsukchoi.com/en/blog/ai-seo-2026-whats-working</guid>
      <description>AI SEO is real and it matters — but most advice about it is wrong. Here&apos;s what&apos;s actually moving the needle across my sites in 2026: the signals that work, the tactics that don&apos;t, and what I actually do.</description>
      <pubDate>Wed, 29 Apr 2026 21:20:22 GMT</pubDate>
    </item>
    <item>
      <title>How to Get Freelance Clients as a Developer Without Running Ads</title>
      <link>https://wonsukchoi.com/en/blog/freelance-clients-without-ads</link>
      <guid isPermaLink="true">https://wonsukchoi.com/en/blog/freelance-clients-without-ads</guid>
      <description>Most advice about getting freelance clients involves spending money on ads or cold-pitching strangers. Here&apos;s what actually worked for me: the channels, the positioning, and the specific moves that bring in inbound work.</description>
      <pubDate>Wed, 29 Apr 2026 21:14:49 GMT</pubDate>
    </item>
    <item>
      <title>Next.js App Router Caching: How v15 Changed the Defaults and What Actually Breaks</title>
      <link>https://wonsukchoi.com/en/blog/nextjs-app-router-caching</link>
      <guid isPermaLink="true">https://wonsukchoi.com/en/blog/nextjs-app-router-caching</guid>
      <description>Next.js v15 silently changed all caching defaults. Here&apos;s how the 4 caches work, what breaks without warning, and the patterns I use in every production app.</description>
      <pubDate>Wed, 29 Apr 2026 21:11:43 GMT</pubDate>
    </item>
    <item>
      <title>Why Your Website Needs Multiple Languages — And How to Build It Right</title>
      <link>https://wonsukchoi.com/en/blog/multilingual-seo-i18n-guide</link>
      <guid isPermaLink="true">https://wonsukchoi.com/en/blog/multilingual-seo-i18n-guide</guid>
      <description>Multi-language websites unlock SEO traffic most sites never see. Here&apos;s the full picture: why it matters, how to implement it technically, and the infrastructure decision that most developers get wrong.</description>
      <pubDate>Thu, 23 Apr 2026 19:28:54 GMT</pubDate>
    </item>
    <item>
      <title>llms.txt: Why Static Files Go Stale Immediately (And What to Use Instead)</title>
      <link>https://wonsukchoi.com/en/blog/llms-txt-ai-seo</link>
      <guid isPermaLink="true">https://wonsukchoi.com/en/blog/llms-txt-ai-seo</guid>
      <description>Most llms.txt files go stale on publish. Here&apos;s the dynamic approach I switched to and what actually matters for AI search visibility in 2026.</description>
      <pubDate>Thu, 23 Apr 2026 19:07:06 GMT</pubDate>
    </item>
    <item>
      <title>Building a Multi-Tenant SaaS on a Single Supabase Database</title>
      <link>https://wonsukchoi.com/en/blog/multi-tenant-saas-single-supabase-database</link>
      <guid isPermaLink="true">https://wonsukchoi.com/en/blog/multi-tenant-saas-single-supabase-database</guid>
      <description>How I run seven branded sites — one Next.js codebase, one Supabase project. A practical walkthrough of hostname resolution, feature flags, data isolation with RLS, and tenant-aware routing.</description>
      <pubDate>Tue, 21 Apr 2026 17:26:40 GMT</pubDate>
    </item>
    <item>
      <title>How I Built a Personal Ops Dashboard with Next.js, Supabase, and AI</title>
      <link>https://wonsukchoi.com/en/blog/personal-ops-dashboard-nextjs-supabase</link>
      <guid isPermaLink="true">https://wonsukchoi.com/en/blog/personal-ops-dashboard-nextjs-supabase</guid>
      <description>A look inside the private Next.js dashboard I built to manage 13 live sites — site status monitoring, personal AI, offline-capable notes, multi-tenant architecture, and more.</description>
      <pubDate>Tue, 21 Apr 2026 17:21:53 GMT</pubDate>
    </item>
    <item>
      <title>How to Migrate React to Next.js in 2026: CRA, Vite &amp; Custom Webpack Guide</title>
      <link>https://wonsukchoi.com/en/blog/migrate-react-to-nextjs</link>
      <guid isPermaLink="true">https://wonsukchoi.com/en/blog/migrate-react-to-nextjs</guid>
      <description>Step-by-step migration for CRA, Vite, and custom webpack: routing, SSR, data fetching, images, and the gotchas most guides skip.</description>
      <pubDate>Mon, 20 Apr 2026 21:25:02 GMT</pubDate>
    </item>
  </channel>
</rss>