<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Meet Modi — Engineering Blog</title>
    <link>https://blog.modimeet.com/blog</link>
    <description>Engineering write-ups by Meet Modi: race conditions, idempotency, LLM pipelines, payments, and the bugs in between.</description>
    <language>en</language>
    <lastBuildDate>Mon, 13 Jul 2026 00:00:00 GMT</lastBuildDate>
    <atom:link href="https://blog.modimeet.com/feed.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>The vector database was innocent</title>
      <link>https://blog.modimeet.com/blog/the-vector-database-was-innocent</link>
      <guid isPermaLink="true">https://blog.modimeet.com/blog/the-vector-database-was-innocent</guid>
      <pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate>
      <description>I built a RAG service over the OpenTelemetry docs, then pointed OpenTelemetry back at it to find out why answers took 16 seconds. It wasn&apos;t the LLM. It wasn&apos;t the vector search either.</description>
      <category>Observability</category>
      <category>SigNoz</category>
      <category>OpenTelemetry</category>
      <category>RAG</category>
    </item>
    <item>
      <title>A query that returned nothing nested inside it</title>
      <link>https://blog.modimeet.com/blog/a-query-that-returned-nothing-nested-inside-it</link>
      <guid isPermaLink="true">https://blog.modimeet.com/blog/a-query-that-returned-nothing-nested-inside-it</guid>
      <pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate>
      <description>The exact same logical query returned full nested data through the REST layer and empty shells through the service layer underneath it. Same fields requested. Same backend. One shorthand parameter that only one of the two actually understood.</description>
      <category>CMS</category>
      <category>API Integration</category>
      <category>Backend</category>
    </item>
    <item>
      <title>One field, three different envelopes, and a fix that made it worse</title>
      <link>https://blog.modimeet.com/blog/one-field-three-different-envelopes</link>
      <guid isPermaLink="true">https://blog.modimeet.com/blog/one-field-three-different-envelopes</guid>
      <pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate>
      <description>The same subscription-status field came back nested two levels deep, one level deep, or bare at the top, depending on account state. My fix didn&apos;t catch that. It added math on top of a check that was already wrong.</description>
      <category>API Design</category>
      <category>Data Modeling</category>
      <category>Debugging</category>
    </item>
    <item>
      <title>The redirect that forgot where you were going</title>
      <link>https://blog.modimeet.com/blog/the-redirect-that-forgot-where-you-were-going</link>
      <guid isPermaLink="true">https://blog.modimeet.com/blog/the-redirect-that-forgot-where-you-were-going</guid>
      <pubDate>Fri, 26 Jun 2026 00:00:00 GMT</pubDate>
      <description>A user clicked a link straight to a class recordings page. Their session had expired. They logged back in and landed on the dashboard home instead, three clicks away from where they started.</description>
      <category>Authentication</category>
      <category>Routing</category>
      <category>UX</category>
    </item>
    <item>
      <title>Three ways for a payment to finish, and my component only handled one</title>
      <link>https://blog.modimeet.com/blog/three-ways-for-a-payment-to-finish</link>
      <guid isPermaLink="true">https://blog.modimeet.com/blog/three-ways-for-a-payment-to-finish</guid>
      <pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate>
      <description>A payment flow has three exits: the user finishes it, the user closes the window, or the component that started it is already gone. Mine only handled the first one.</description>
      <category>Payments</category>
      <category>React</category>
      <category>State Management</category>
    </item>
    <item>
      <title>A lock made of CSS and a mutation observer</title>
      <link>https://blog.modimeet.com/blog/a-lock-made-of-css-and-a-mutation-observer</link>
      <guid isPermaLink="true">https://blog.modimeet.com/blog/a-lock-made-of-css-and-a-mutation-observer</guid>
      <pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate>
      <description>Say you&apos;re building a premium content gate. An overlay div is not a lock. It&apos;s a suggestion, and any browser&apos;s devtools can decline the suggestion in about four seconds.</description>
      <category>Frontend Security</category>
      <category>DOM</category>
      <category>UX Patterns</category>
    </item>
    <item>
      <title>An endpoint built to be called twice</title>
      <link>https://blog.modimeet.com/blog/an-endpoint-built-to-be-called-twice</link>
      <guid isPermaLink="true">https://blog.modimeet.com/blog/an-endpoint-built-to-be-called-twice</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <description>A reward endpoint has no way to tell a genuine retry from a genuinely repeated action. So we stopped pretending it could, and made it credit every call, on purpose.</description>
      <category>Distributed Systems</category>
      <category>API Design</category>
      <category>Backend</category>
    </item>
    <item>
      <title>The parameter that let you overwrite someone else&apos;s quiz</title>
      <link>https://blog.modimeet.com/blog/the-parameter-that-let-you-overwrite-someone-elses-quiz</link>
      <guid isPermaLink="true">https://blog.modimeet.com/blog/the-parameter-that-let-you-overwrite-someone-elses-quiz</guid>
      <pubDate>Fri, 29 May 2026 00:00:00 GMT</pubDate>
      <description>One internal caller needed to set a quiz&apos;s ID by hand. The public endpoint accepted the same parameter from anyone, and the storage layer used it as a primary key.</description>
      <category>Security</category>
      <category>API Design</category>
      <category>Backend</category>
    </item>
    <item>
      <title>Committing the balance, risking the ledger</title>
      <link>https://blog.modimeet.com/blog/committing-the-balance-risking-the-ledger</link>
      <guid isPermaLink="true">https://blog.modimeet.com/blog/committing-the-balance-risking-the-ledger</guid>
      <pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate>
      <description>I wrapped a balance update and an audit log write in one transaction because that&apos;s what consistency is supposed to look like. Then a log insert failed and rolled back a reward the user should have already had.</description>
      <category>Transactions</category>
      <category>Database</category>
      <category>Backend</category>
    </item>
    <item>
      <title>A referral credit that had to fire exactly once</title>
      <link>https://blog.modimeet.com/blog/a-referral-credit-that-had-to-fire-exactly-once</link>
      <guid isPermaLink="true">https://blog.modimeet.com/blog/a-referral-credit-that-had-to-fire-exactly-once</guid>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <description>One endpoint, hit three or four times during onboarding, sometimes before the user record even finished writing. It still had to pay out a referral bonus exactly once.</description>
      <category>Idempotency</category>
      <category>Mobile Backend</category>
      <category>Backend</category>
    </item>
    <item>
      <title>The reward that fired twice</title>
      <link>https://blog.modimeet.com/blog/the-reward-that-fired-twice</link>
      <guid isPermaLink="true">https://blog.modimeet.com/blog/the-reward-that-fired-twice</guid>
      <pubDate>Fri, 08 May 2026 00:00:00 GMT</pubDate>
      <description>A challenge creator got a bonus for winning. They also got it for winning again, on the same challenge, because a retry doesn&apos;t know it&apos;s a retry.</description>
      <category>Idempotency</category>
      <category>Backend</category>
      <category>Concurrency</category>
    </item>
    <item>
      <title>Building the quiz before anyone presses play</title>
      <link>https://blog.modimeet.com/blog/building-the-quiz-before-anyone-presses-play</link>
      <guid isPermaLink="true">https://blog.modimeet.com/blog/building-the-quiz-before-anyone-presses-play</guid>
      <pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate>
      <description>A student is enrolled in six classes. On a given day they open one, maybe two. We were generating all six anyway, and paying for five nobody would ever see.</description>
      <category>System Design</category>
      <category>LLM Cost</category>
      <category>Backend</category>
    </item>
    <item>
      <title>Ten were requested. The model decided otherwise.</title>
      <link>https://blog.modimeet.com/blog/ten-were-requested-the-model-decided-otherwise</link>
      <guid isPermaLink="true">https://blog.modimeet.com/blog/ten-were-requested-the-model-decided-otherwise</guid>
      <pubDate>Fri, 24 Apr 2026 00:00:00 GMT</pubDate>
      <description>A ten-question quiz request sometimes came back with eight questions, sometimes twelve, sometimes ten where two didn&apos;t have a correct answer among the options.</description>
      <category>LLM Output Validation</category>
      <category>Data Integrity</category>
      <category>Backend</category>
    </item>
    <item>
      <title>A dollar sign with two jobs</title>
      <link>https://blog.modimeet.com/blog/a-dollar-sign-with-two-jobs</link>
      <guid isPermaLink="true">https://blog.modimeet.com/blog/a-dollar-sign-with-two-jobs</guid>
      <pubDate>Fri, 17 Apr 2026 00:00:00 GMT</pubDate>
      <description>&quot;Solve $3x + 7 = 22$&quot; and &quot;a shirt costs $20&quot; use the same character to mean two different things. The renderer couldn&apos;t tell them apart, and neither could our regex on the first try.</description>
      <category>Text Sanitization</category>
      <category>LLM Output</category>
      <category>Rendering</category>
    </item>
    <item>
      <title>The question the model kept repeating</title>
      <link>https://blog.modimeet.com/blog/the-question-the-model-kept-repeating</link>
      <guid isPermaLink="true">https://blog.modimeet.com/blog/the-question-the-model-kept-repeating</guid>
      <pubDate>Fri, 10 Apr 2026 00:00:00 GMT</pubDate>
      <description>A student asked for more practice questions on the same topic four times in a row. The third batch had a question nearly identical to one from the first.</description>
      <category>LLM Prompting</category>
      <category>Quiz Generation</category>
      <category>Backend</category>
    </item>
    <item>
      <title>The quiz where the answer was always C</title>
      <link>https://blog.modimeet.com/blog/the-quiz-where-the-answer-was-always-c</link>
      <guid isPermaLink="true">https://blog.modimeet.com/blog/the-quiz-where-the-answer-was-always-c</guid>
      <pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate>
      <description>Across a batch of auto-generated quizzes, the correct answer kept landing in the same slot. Prompting the model to vary it helped. It didn&apos;t fix it.</description>
      <category>LLM Prompting</category>
      <category>Testing</category>
      <category>Backend</category>
    </item>
    <item>
      <title>Two doors into the same app, and only one of them remembered to turn the lights on</title>
      <link>https://blog.modimeet.com/blog/state-that-existed-only-sometimes</link>
      <guid isPermaLink="true">https://blog.modimeet.com/blog/state-that-existed-only-sometimes</guid>
      <pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate>
      <description>A page crashed reading state that should have existed. The bug: a Redux slice got registered in exactly one bootstrap path, and a second, equally valid path to the same page never went through it.</description>
      <category>Micro-Frontends</category>
      <category>Redux</category>
      <category>Frontend Architecture</category>
    </item>
    <item>
      <title>Idempotent isn&apos;t the same as honest</title>
      <link>https://blog.modimeet.com/blog/success-on-retry-meant-silence</link>
      <guid isPermaLink="true">https://blog.modimeet.com/blog/success-on-retry-meant-silence</guid>
      <pubDate>Wed, 18 Mar 2026 00:00:00 GMT</pubDate>
      <description>A user tapped accept twice and landed in a quiz flow that expected a fresh acceptance. The bug: calling accept a second time returned success silently, and success was the UI&apos;s cue to barge ahead.</description>
      <category>Idempotency</category>
      <category>Error Handling</category>
      <category>Backend</category>
    </item>
    <item>
      <title>The switch statement that blamed your Wi-Fi for a decision the server made on purpose</title>
      <link>https://blog.modimeet.com/blog/the-error-that-blamed-the-network</link>
      <guid isPermaLink="true">https://blog.modimeet.com/blog/the-error-that-blamed-the-network</guid>
      <pubDate>Wed, 11 Mar 2026 00:00:00 GMT</pubDate>
      <description>Users kept being told to check their internet connection. Their internet connection was fine. The bug: a switch statement built for 3 error codes was still running the show after the backend&apos;s real list grew to 6.</description>
      <category>Error Handling</category>
      <category>API Contracts</category>
      <category>Frontend</category>
    </item>
    <item>
      <title>One skipped transform, two unrelated crashes</title>
      <link>https://blog.modimeet.com/blog/two-names-for-one-field</link>
      <guid isPermaLink="true">https://blog.modimeet.com/blog/two-names-for-one-field</guid>
      <pubDate>Tue, 03 Mar 2026 00:00:00 GMT</pubDate>
      <description>A quiz report showed every answer as wrong. A carousel on the same page threw and took the whole surface down with it. Same root cause: a call site that skipped a step every other call site took for granted.</description>
      <category>API Contracts</category>
      <category>Defensive Coding</category>
      <category>Frontend</category>
    </item>
    <item>
      <title>The fallback branch that copied math it didn&apos;t understand</title>
      <link>https://blog.modimeet.com/blog/off-by-one-in-the-fallback-branch</link>
      <guid isPermaLink="true">https://blog.modimeet.com/blog/off-by-one-in-the-fallback-branch</guid>
      <pubDate>Tue, 24 Feb 2026 00:00:00 GMT</pubDate>
      <description>A results report marked three question types as wrong, every time, no exceptions. The bug: one branch subtracted 1 from an index. The fallback copied that subtraction without asking why it was there.</description>
      <category>Data Mapping</category>
      <category>Testing</category>
      <category>Frontend</category>
    </item>
  </channel>
</rss>
