<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Mohd Zaid — Engineering notes</title>
    <link>https://www.zaidfolio.space/notes</link>
    <description>Notes on backend systems, multi-tenant SaaS, auth, and AI products.</description>
    <language>en</language>
    <atom:link href="https://www.zaidfolio.space/notes/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>One missing WHERE clause away from a data leak</title>
      <link>https://www.zaidfolio.space/notes/postgres-rls-multi-tenancy</link>
      <guid>https://www.zaidfolio.space/notes/postgres-rls-multi-tenancy</guid>
      <description>Every multi-tenant app trusts developers to remember tenant_id on every query. Here's how to make Postgres enforce it instead, in about 15 lines of SQL.</description>
      <pubDate>Sun, 11 Oct 2026 00:00:00 GMT</pubDate>
      <category>Backend</category>
      <category>Security</category>
    </item>
    <item>
      <title>Your RAG demo works. Then someone uploads a 240-page PDF.</title>
      <link>https://www.zaidfolio.space/notes/rag-ingestion-pipeline</link>
      <guid>https://www.zaidfolio.space/notes/rag-ingestion-pipeline</guid>
      <description>Chat-with-your-docs is magic with a 2-page file and falls apart with a real one. The fix isn't a better model; it's the boring pipeline around it.</description>
      <pubDate>Fri, 09 Oct 2026 00:00:00 GMT</pubDate>
      <category>AI</category>
      <category>Backend</category>
    </item>
  </channel>
</rss>