<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Parvej Shah — Engineering &amp; Architecture Blog</title>
    <link>https://parvejshah.com/blog</link>
    <description>Technical deep dives on Next.js App Router, real-time telephony voice AI pipelines, deterministic multi-agent state machines, and high-concurrency backend architectures.</description>
    <language>en-US</language>
    <lastBuildDate>Mon, 21 Sep 2026 05:18:42 GMT</lastBuildDate>
    <atom:link href="https://parvejshah.com/rss.xml" rel="self" type="application/rss+xml" />
    <image>
      <url>https://parvejshah.com/og.jpg</url>
      <title>Parvej Shah — Engineering &amp; Architecture Blog</title>
      <link>https://parvejshah.com</link>
    </image>
    <item>
      <title>We Can Build Software Faster Than Ever. But Can Users Actually Use It?</title>
      <link>https://parvejshah.com/blog/rapid-software-development-user-experience</link>
      <guid isPermaLink="true">https://parvejshah.com/blog/rapid-software-development-user-experience</guid>
      <description>AI and rapid development let teams build software faster than ever. But as competitors move faster and user expectations rise, usability and refinement matter more, not less.</description>
      <pubDate>Thu, 17 Sep 2026 05:45:00 GMT</pubDate>
      <author>parvejshahlabib007@gmail.com (Parvej Shah)</author>
      <enclosure url="https://pub-13629069dfd74891bffc487ab4e135f5.r2.dev/blog/rapid-software-development-user-experience.png" length="0" type="image/png" />
    </item>
    <item>
      <title>Voice AI Latency Optimization: What a 1,272ms Calendar Check Taught Us</title>
      <link>https://parvejshah.com/blog/architecting-sub-18s-voice-ai-pipelines</link>
      <guid isPermaLink="true">https://parvejshah.com/blog/architecting-sub-18s-voice-ai-pipelines</guid>
      <description>Two different Flash-tier models across two live voice agents, n8n&apos;s built-in staticData cache replacing an external Redis layer, and a 5-question intake that was quietly adding two minutes to every call — here&apos;s what actually moved the latency numbers.</description>
      <pubDate>Sun, 15 Feb 2026 09:00:00 GMT</pubDate>
      <author>parvejshahlabib007@gmail.com (Parvej Shah)</author>
      <enclosure url="https://pub-13629069dfd74891bffc487ab4e135f5.r2.dev/blog/voice-ai-sub-18s.png" length="0" type="image/png" />
    </item>
    <item>
      <title>AI Content Pipeline Safety: The Claims Gate That Stops Fabricated Customer Results</title>
      <link>https://parvejshah.com/blog/deterministic-multi-agent-systems-production</link>
      <guid isPermaLink="true">https://parvejshah.com/blog/deterministic-multi-agent-systems-production</guid>
      <description>A 4-stage Qwen pipeline generates every post for Minions.AI, and one safety mechanism does the real work: a gate that blocks any AI-generated claim it can&apos;t source — including a hard rule against fabricating customer results, because there aren&apos;t paying clients to attribute them to yet.</description>
      <pubDate>Tue, 10 Feb 2026 10:30:00 GMT</pubDate>
      <author>parvejshahlabib007@gmail.com (Parvej Shah)</author>
      <enclosure url="https://pub-13629069dfd74891bffc487ab4e135f5.r2.dev/blog/multi-agent-state-machines.png" length="0" type="image/png" />
    </item>
    <item>
      <title>What It Actually Takes to Build a Workforce Management Platform for an AI Company</title>
      <link>https://parvejshah.com/blog/engineering-precision-data-platforms-sft-rlhf</link>
      <guid isPermaLink="true">https://parvejshah.com/blog/engineering-precision-data-platforms-sft-rlhf</guid>
      <description>When GenMorphics AI Solutions needed a platform to coordinate their global team of domain experts, the hard part wasn&apos;t the AI — it was compliance, access control, and building tools flexible enough to match how the org actually runs.</description>
      <pubDate>Mon, 02 Feb 2026 14:00:00 GMT</pubDate>
      <author>parvejshahlabib007@gmail.com (Parvej Shah)</author>
      <enclosure url="https://pub-13629069dfd74891bffc487ab4e135f5.r2.dev/blog/precision-data-sft-rlhf.png" length="0" type="image/png" />
    </item>
    <item>
      <title>Why Browser Agents Fail in Production Without Semantic Layers</title>
      <link>https://parvejshah.com/blog/why-browser-agents-fail-in-production-without-semantic-layers</link>
      <guid isPermaLink="true">https://parvejshah.com/blog/why-browser-agents-fail-in-production-without-semantic-layers</guid>
      <description>Browser agents do not fail because the model is bad. They fail because modern web applications render complex DOM trees with opaque elements and unstable class names that are hostile to machine parsers.</description>
      <pubDate>Thu, 27 Aug 2026 17:31:00 GMT</pubDate>
      <author>parvejshahlabib007@gmail.com (Parvej Shah)</author>
      <enclosure url="https://pub-13629069dfd74891bffc487ab4e135f5.r2.dev/og/why-browser-agents-fail-in-production-without-semantic-layers.jpg" length="0" type="image/png" />
    </item>
    <item>
      <title>A Debouncer That Doesn&apos;t Scale Past One Worker (On Purpose, For Now)</title>
      <link>https://parvejshah.com/blog/conversational-commerce-webhook-architecture</link>
      <guid isPermaLink="true">https://parvejshah.com/blog/conversational-commerce-webhook-architecture</guid>
      <description>SellerVai merges rapid-fire customer messages into one reply using an in-memory buffer that explicitly can&apos;t run on more than one process. Here&apos;s why that&apos;s the right call today, and what the code already says about the day it isn&apos;t.</description>
      <pubDate>Wed, 28 Jan 2026 11:15:00 GMT</pubDate>
      <author>parvejshahlabib007@gmail.com (Parvej Shah)</author>
      <enclosure url="https://pub-13629069dfd74891bffc487ab4e135f5.r2.dev/blog/conversational-commerce-webhooks.png" length="0" type="image/png" />
    </item>
    <item>
      <title>Rendering Math Formulas When Your Content Has Two Different Pasts</title>
      <link>https://parvejshah.com/blog/rendering-katex-formulas-nextjs-server-components</link>
      <guid isPermaLink="true">https://parvejshah.com/blog/rendering-katex-formulas-nextjs-server-components</guid>
      <description>MathPro Academy&apos;s course database holds years of plain-text content next to newly authored Lexical HTML. An earlier attempt at server-rendered LaTeX didn&apos;t survive that mix — here&apos;s the runtime renderer that replaced it, and why client-side was the right call, not a compromise.</description>
      <pubDate>Tue, 20 Jan 2026 16:45:00 GMT</pubDate>
      <author>parvejshahlabib007@gmail.com (Parvej Shah)</author>
      <enclosure url="https://pub-13629069dfd74891bffc487ab4e135f5.r2.dev/blog/katex-math-server-components.png" length="0" type="image/png" />
    </item>
    <item>
      <title>What SSLCommerz Actually Gives You for Webhook Security (It&apos;s Not a Signature)</title>
      <link>https://parvejshah.com/blog/defensive-webhook-engineering-payment-gateways</link>
      <guid isPermaLink="true">https://parvejshah.com/blog/defensive-webhook-engineering-payment-gateways</guid>
      <description>Payment webhook handlers fail in ways you only discover in production. For MathPro Academy&apos;s SSLCommerz integration, the fix wasn&apos;t HMAC signature verification — SSLCommerz doesn&apos;t sign its IPN payloads that way. It was an active server-to-server validation query, an amount cross-check, and a fraud score the gateway hands you for free.</description>
      <pubDate>Wed, 14 Jan 2026 08:20:00 GMT</pubDate>
      <author>parvejshahlabib007@gmail.com (Parvej Shah)</author>
      <enclosure url="https://pub-13629069dfd74891bffc487ab4e135f5.r2.dev/blog/defensive-webhook-engineering.png" length="0" type="image/png" />
    </item>
    <item>
      <title>Self-Healing Chrome Extension: Building a DOM Injector That Fights Back</title>
      <link>https://parvejshah.com/blog/building-manifest-v3-ai-chrome-extensions</link>
      <guid isPermaLink="true">https://parvejshah.com/blog/building-manifest-v3-ai-chrome-extensions</guid>
      <description>LinkedIn periodically ships builds with every class name replaced by a hashed token, breaking any content script built against fixed selectors overnight. Here&apos;s the AI-driven strategy generator we built to regenerate selectors on the fly — and why it eventually lost anyway.</description>
      <pubDate>Thu, 08 Jan 2026 12:00:00 GMT</pubDate>
      <author>parvejshahlabib007@gmail.com (Parvej Shah)</author>
      <enclosure url="https://pub-13629069dfd74891bffc487ab4e135f5.r2.dev/blog/manifest-v3-ai-extensions.png" length="0" type="image/png" />
    </item>
    <item>
      <title>AI-Assisted Data Entry: Teaching an LLM to Parse Telegram Donor Messages</title>
      <link>https://parvejshah.com/blog/offline-first-pwa-emergency-volunteer-networks</link>
      <guid isPermaLink="true">https://parvejshah.com/blog/offline-first-pwa-emergency-volunteer-networks</guid>
      <description>Badhan&apos;s donor coordinators were already posting donor info into Telegram as free text. Instead of building a form nobody would use consistently, we built two parsers matched to two real workflows — one deterministic, one AI-backed.</description>
      <pubDate>Fri, 02 Jan 2026 09:30:00 GMT</pubDate>
      <author>parvejshahlabib007@gmail.com (Parvej Shah)</author>
      <enclosure url="https://pub-13629069dfd74891bffc487ab4e135f5.r2.dev/blog/offline-first-pwa-networks.png" length="0" type="image/png" />
    </item>
    <item>
      <title>Streaks Without Race Conditions: What Actually Runs Behind Codervai CP</title>
      <link>https://parvejshah.com/blog/scaling-competitive-programming-lms-architectures</link>
      <guid isPermaLink="true">https://parvejshah.com/blog/scaling-competitive-programming-lms-architectures</guid>
      <description>The &apos;cohort pacing&apos; story behind Codervai CP&apos;s module unlocking was cleaner than what&apos;s actually in production — a simple admin-publish flow. Here&apos;s what&apos;s real: the publish flow, the atomic streak upsert that survives a midnight submission storm, and why we didn&apos;t build a custom video pipeline.</description>
      <pubDate>Wed, 24 Dec 2025 14:10:00 GMT</pubDate>
      <author>parvejshahlabib007@gmail.com (Parvej Shah)</author>
      <enclosure url="https://pub-13629069dfd74891bffc487ab4e135f5.r2.dev/blog/competitive-programming-lms.png" length="0" type="image/png" />
    </item>
    <item>
      <title>How We Made Academic Certificates Verifiable Without a Blockchain (or HMAC)</title>
      <link>https://parvejshah.com/blog/high-speed-edge-verification-institutional-credentials</link>
      <guid isPermaLink="true">https://parvejshah.com/blog/high-speed-edge-verification-institutional-credentials</guid>
      <description>CPRBD at the University of Dhaka needed employers and embassies to verify that a professional certificate was real. The actual solution was less exotic than the platform&apos;s own docs once claimed: a structured certificate ID, a plain database lookup, and rate limiting.</description>
      <pubDate>Thu, 18 Dec 2025 10:00:00 GMT</pubDate>
      <author>parvejshahlabib007@gmail.com (Parvej Shah)</author>
      <enclosure url="https://pub-13629069dfd74891bffc487ab4e135f5.r2.dev/blog/cryptographic-credential-verification.png" length="0" type="image/png" />
    </item>
    <item>
      <title>What I Actually Had to Change When Moving to React Server Components</title>
      <link>https://parvejshah.com/blog/nextjs-16-turbopack-deep-dive</link>
      <guid isPermaLink="true">https://parvejshah.com/blog/nextjs-16-turbopack-deep-dive</guid>
      <description>React Server Components aren&apos;t just a build optimization — they change how you think about where code runs and why. Here&apos;s what the migration looked like on a real project and where the component boundary decisions were non-obvious.</description>
      <pubDate>Wed, 10 Dec 2025 15:30:00 GMT</pubDate>
      <author>parvejshahlabib007@gmail.com (Parvej Shah)</author>
      <enclosure url="https://pub-13629069dfd74891bffc487ab4e135f5.r2.dev/blog/nextjs-16-turbopack-deep-dive.png" length="0" type="image/png" />
    </item>
    <item>
      <title>The Stack I Keep Coming Back To and Why I Stop Reconsidering It</title>
      <link>https://parvejshah.com/blog/craft-of-high-velocity-software-delivery</link>
      <guid isPermaLink="true">https://parvejshah.com/blog/craft-of-high-velocity-software-delivery</guid>
      <description>Every few months a new framework or runtime promises to fix problems I don&apos;t have. Here&apos;s the case for PostgreSQL, TypeScript, and Next.js — and more importantly, the case for stopping the search.</description>
      <pubDate>Mon, 01 Dec 2025 11:00:00 GMT</pubDate>
      <author>parvejshahlabib007@gmail.com (Parvej Shah)</author>
      <enclosure url="https://pub-13629069dfd74891bffc487ab4e135f5.r2.dev/blog/craft-high-velocity-software.png" length="0" type="image/png" />
    </item>
  </channel>
</rss>