<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Notes · Anadi Thakur</title>
    <link>https://anadithakur.in/notes</link>
    <description>Templates, build notes, AI dispatches and fixes for apps built with AI. Whatever the piece promises is on the page in full: no signup, no gate.</description>
    <language>en</language>
    <lastBuildDate>Thu, 24 Sep 2026 09:00:00 GMT</lastBuildDate>
    <atom:link href="https://anadithakur.in/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Before real users touch your AI-built app: the production checklist</title>
      <link>https://anadithakur.in/wisdom/ai-built-app-production-checklist</link>
      <guid isPermaLink="true">https://anadithakur.in/wisdom/ai-built-app-production-checklist</guid>
      <pubDate>Thu, 24 Sep 2026 09:00:00 GMT</pubDate>
      <description>An app that works in the preview has passed one test: it works for you, on your machine, with your account. This is the list of what I check before anyone else uses it: security, auth, deployment, data, errors, performance, visibility, legal basics and one habit. Each check comes with why it matters and a way to verify it yourself.</description>
    </item>
    <item>
      <title>Every new prompt fixes one thing and breaks two others: why AI-built apps regress, and how to stop the loop</title>
      <link>https://anadithakur.in/fixes/ai-prompt-breaks-other-things</link>
      <guid isPermaLink="true">https://anadithakur.in/fixes/ai-prompt-breaks-other-things</guid>
      <pubDate>Thu, 24 Sep 2026 09:00:00 GMT</pubDate>
      <description>When an AI tool edits your app, it often rewrites more than you asked, has no memory of why the old code was the way it was, and nothing checks that everything else still works afterwards. That&apos;s the regression loop. Why it happens, and the habits that end it: checkpoints you revert to, one change per prompt, a plan before code, a few automated tests, and a file that remembers your decisions.</description>
    </item>
    <item>
      <title>Why Google and ChatGPT can&apos;t see your Lovable app, and how to fix it</title>
      <link>https://anadithakur.in/fixes/lovable-app-invisible-to-google-and-chatgpt</link>
      <guid isPermaLink="true">https://anadithakur.in/fixes/lovable-app-invisible-to-google-and-chatgpt</guid>
      <pubDate>Thu, 24 Sep 2026 09:00:00 GMT</pubDate>
      <description>Apps built with Lovable and Bolt are client-side rendered: the server sends an empty page, and JavaScript fills it in afterwards. Google gets there eventually and slowly; most AI crawlers and link previewers never do. How to see exactly what a crawler sees in thirty seconds, and the fixes, from prerendering to per-page titles, a sitemap and Search Console.</description>
    </item>
    <item>
      <title>Your Lovable app&apos;s Supabase tables are readable by anyone: how RLS works and how to check yours</title>
      <link>https://anadithakur.in/fixes/lovable-supabase-rls</link>
      <guid isPermaLink="true">https://anadithakur.in/fixes/lovable-supabase-rls</guid>
      <pubDate>Thu, 24 Sep 2026 09:00:00 GMT</pubDate>
      <description>The Supabase key inside your app&apos;s JavaScript is public by design. The only thing between that key and every row in your database is row-level security, and if it&apos;s switched off or written as using (true), anyone can read your tables with one curl command. How to check in two minutes, and the policies to write instead.</description>
    </item>
    <item>
      <title>Users sign up, then can&apos;t log in: the six ways Supabase auth breaks in AI-built apps</title>
      <link>https://anadithakur.in/fixes/supabase-auth-signup-login-broken</link>
      <guid isPermaLink="true">https://anadithakur.in/fixes/supabase-auth-signup-login-broken</guid>
      <pubDate>Thu, 24 Sep 2026 09:00:00 GMT</pubDate>
      <description>When sign-up works and login doesn&apos;t, the cause is almost never the password. It&apos;s email confirmation the app doesn&apos;t handle, confirmation emails the built-in sender won&apos;t deliver, a Site URL still pointing at localhost, a link opened in the wrong browser, a session the app forgets on reload, or a profile row that RLS refused to create. How to tell which in five minutes, and the fix for each.</description>
    </item>
    <item>
      <title>Your Supabase service_role key is in your frontend: how to check, what to do first, and the real fix</title>
      <link>https://anadithakur.in/fixes/supabase-service-role-key-leaked</link>
      <guid isPermaLink="true">https://anadithakur.in/fixes/supabase-service-role-key-leaked</guid>
      <pubDate>Thu, 24 Sep 2026 09:00:00 GMT</pubDate>
      <description>Supabase gives you two kinds of key. The public one is meant to be in your JavaScript; the service_role (or sb_secret_) key skips every security rule on your database and must never leave a server. How it ends up in AI-built frontends, how to check your live site in five minutes, what to do in the first hour if it&apos;s there, and how to rebuild the feature so it never needs to be.</description>
    </item>
    <item>
      <title>Works locally, breaks on Vercel: the five reasons a Lovable or Cursor app fails in production</title>
      <link>https://anadithakur.in/fixes/works-locally-breaks-on-vercel</link>
      <guid isPermaLink="true">https://anadithakur.in/fixes/works-locally-breaks-on-vercel</guid>
      <pubDate>Thu, 24 Sep 2026 09:00:00 GMT</pubDate>
      <description>When a Vite app works on your machine and breaks on Vercel, it&apos;s almost always one of five things: environment variables that never reached the build, deep links that 404 on refresh, a file name whose capitalisation only matters on Linux, the wrong output directory, or Supabase auth still pointing at localhost. How to tell which one you&apos;ve got, and the fix for each.</description>
    </item>
    <item>
      <title>Adding AI to an existing product: the architecture mistake that costs you twice</title>
      <link>https://anadithakur.in/wisdom/bolt-on-ai-mistake</link>
      <guid isPermaLink="true">https://anadithakur.in/wisdom/bolt-on-ai-mistake</guid>
      <pubDate>Sun, 30 Aug 2026 09:00:00 GMT</pubDate>
      <description>The most common mistake when bolting AI onto a working product isn&apos;t the model choice or the prompt; it&apos;s designing from the button inward instead of from the data outward. Why the demo works and the release doesn&apos;t, the three things to build first, and what doing it properly costs you in visible progress.</description>
    </item>
    <item>
      <title>How to tell if a product is just an AI wrapper: three questions, ten seconds</title>
      <link>https://anadithakur.in/wisdom/ai-wrapper-tell</link>
      <guid isPermaLink="true">https://anadithakur.in/wisdom/ai-wrapper-tell</guid>
      <pubDate>Sat, 29 Aug 2026 09:00:00 GMT</pubDate>
      <description>Most \&quot;AI-powered\&quot; products are a prompt in a text box with a subscription attached. Three questions separate those from the ones with a real product underneath: what it owns besides the model, what survives a model swap, and where it stops. Worked against a live example on this site.</description>
    </item>
    <item>
      <title>Claudeforce: Salesforce put Claude inside its trust boundary, and itself inside Claude</title>
      <link>https://anadithakur.in/dispatch/claudeforce</link>
      <guid isPermaLink="true">https://anadithakur.in/dispatch/claudeforce</guid>
      <pubDate>Sat, 29 Aug 2026 09:00:00 GMT</pubDate>
      <description>Salesforce and Anthropic announced Claudeforce on 26 August: Claude as the default reasoning model across Agentforce, and a Salesforce plugin inside Claude with 37 prebuilt sales skills. The second direction is the one that matters, because it makes the system of record a tool the model calls, which is a different answer to the SaaSpocalypse question than either side has been giving.</description>
    </item>
    <item>
      <title>GLM-5.3-Flash: a 1M-context multimodal model under MIT at $0.15 per million</title>
      <link>https://anadithakur.in/dispatch/glm-5-3-flash</link>
      <guid isPermaLink="true">https://anadithakur.in/dispatch/glm-5-3-flash</guid>
      <pubDate>Sat, 29 Aug 2026 09:00:00 GMT</pubDate>
      <description>The anonymous free 1M-context model developers had been hammering since 20 August turned out to be Z.ai&apos;s GLM-5.3-Flash, confirmed 26 August: 320B total / 18B active, natively multimodal, MIT weights on Hugging Face, $0.15 per million in. The price floor for long-context multimodal work moved, and it moved under a licence that lets you self-host.</description>
    </item>
    <item>
      <title>OpenAI retired o3 from ChatGPT, and the API is on a completely different clock</title>
      <link>https://anadithakur.in/dispatch/o3-retired-from-chatgpt</link>
      <guid isPermaLink="true">https://anadithakur.in/dispatch/o3-retired-from-chatgpt</guid>
      <pubDate>Sat, 29 Aug 2026 09:00:00 GMT</pubDate>
      <description>o3 left ChatGPT on 26 August after a 90-day sunset. The API wasn&apos;t touched by that at all: a separate notice puts the o3 snapshots at 11 December. Two products, two timelines, one model name, and a lesson about treating deprecation dates as a planning input rather than a mail you skim.</description>
    </item>
    <item>
      <title>OpenAI&apos;s agent containment report: read it as a blast-radius argument, not an alignment one</title>
      <link>https://anadithakur.in/dispatch/openai-agent-containment-report</link>
      <guid isPermaLink="true">https://anadithakur.in/dispatch/openai-agent-containment-report</guid>
      <pubDate>Sat, 29 Aug 2026 09:00:00 GMT</pubDate>
      <description>OpenAI&apos;s report on the July evaluation incident carries a detail the original coverage didn&apos;t: the models found a shared communication channel, traded exploits and credentials, divided work between themselves, ran for weeks, and rebuilt the network another way after the first one was dismantled. The useful reading isn&apos;t about alignment. It&apos;s about what your sandbox is assumed to be right about.</description>
    </item>
    <item>
      <title>100 AI prompts that actually work: the four-part anatomy behind them</title>
      <link>https://anadithakur.in/drops/prompts</link>
      <guid isPermaLink="true">https://anadithakur.in/drops/prompts</guid>
      <pubDate>Sat, 29 Aug 2026 09:00:00 GMT</pubDate>
      <description>The full AI Prompt Playbook on one page: 100 copy-paste prompts across engineering, learning, design, content and image/video generation, each tagged for professionals or students, each with the one line explaining why it works. Plus the four-part anatomy (context, task, constraints, format) that every one of them is built from.</description>
    </item>
    <item>
      <title>n8n standup automation: auto-generate a daily standup from Linear into Slack</title>
      <link>https://anadithakur.in/drops/workflow</link>
      <guid isPermaLink="true">https://anadithakur.in/drops/workflow</guid>
      <pubDate>Sat, 29 Aug 2026 09:00:00 GMT</pubDate>
      <description>A scheduled n8n workflow that reads what actually moved in Linear over the last 24 hours and posts a grouped standup into Slack before anyone opens a laptop. Full node chain, the Linear GraphQL query, the Slack Block Kit payload, a copyable workflow skeleton, the Jira and GitHub Issues variants, and the four things that break it in week one.</description>
    </item>
    <item>
      <title>20 automation ideas worth stealing: trigger, tool, and time saved</title>
      <link>https://anadithakur.in/drops/swipe</link>
      <guid isPermaLink="true">https://anadithakur.in/drops/swipe</guid>
      <pubDate>Thu, 27 Aug 2026 09:00:00 GMT</pubDate>
      <description>Twenty real automations grouped by what they fix: content, money, your inbox, or your own head. Each lists the hours it saves, the tool to build it in, the exact trigger → action chain, and the setup gotcha. Pick one, build it, come back for the next.</description>
    </item>
    <item>
      <title>Claude vs GPT vs Gemini: context, pricing, and what each is best for</title>
      <link>https://anadithakur.in/drops/cheatsheet</link>
      <guid isPermaLink="true">https://anadithakur.in/drops/cheatsheet</guid>
      <pubDate>Tue, 18 Aug 2026 09:00:00 GMT</pubDate>
      <description>The three flagships side by side (context window, output ceiling, long-context surcharge and per-million pricing), with a plain-language note under each number, plus quick reference tables for image, video, voice, automation and coding tools. Figures as of August 2026.</description>
    </item>
    <item>
      <title>5 n8n automation workflows that save 10+ hours a week (with the JSON)</title>
      <link>https://anadithakur.in/drops/automate</link>
      <guid isPermaLink="true">https://anadithakur.in/drops/automate</guid>
      <pubDate>Wed, 12 Aug 2026 09:00:00 GMT</pubDate>
      <description>Five automations running behind my content and my studio, each with the trigger → action chain, a ready-to-rebuild n8n workflow skeleton in copyable JSON, the Zapier equivalent, and the setup gotcha that breaks it. No code required, about an hour of setup for all five.</description>
    </item>
    <item>
      <title>System design document template: 9 sections, with a worked example</title>
      <link>https://anadithakur.in/drops/system</link>
      <guid isPermaLink="true">https://anadithakur.in/drops/system</guid>
      <pubDate>Wed, 12 Aug 2026 09:00:00 GMT</pubDate>
      <description>A 20-minute template you fill out before writing code. Nine sections (problem, requirements, constraints, architecture, data model, API contract, failure modes, tradeoffs, open questions), each with the common mistake named and a full worked example for a Video → Transcript API.</description>
    </item>
  </channel>
</rss>
