<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Miheer Gathibandhe</title>
    <description>The latest articles on DEV Community by Miheer Gathibandhe (@miheer_zip).</description>
    <link>https://dev.to/miheer_zip</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4228406%2F69d1c578-9ffb-4b16-a5b1-523527d40895.png</url>
      <title>DEV Community: Miheer Gathibandhe</title>
      <link>https://dev.to/miheer_zip</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/miheer_zip"/>
    <language>en</language>
    <item>
      <title>I Built SchemaCourt at the Flip the Switch Hackathon</title>
      <dc:creator>Miheer Gathibandhe</dc:creator>
      <pubDate>Thu, 05 Nov 2026 11:32:41 +0000</pubDate>
      <link>https://dev.to/miheer_zip/i-built-schemacourt-at-the-flip-the-switch-hackathon-52gh</link>
      <guid>https://dev.to/miheer_zip/i-built-schemacourt-at-the-flip-the-switch-hackathon-52gh</guid>
      <description>&lt;p&gt;During the Flip the Switch Hackathon, I worked on a problem that can happen pretty easily in data engineering but can cause serious issues later.&lt;/p&gt;

&lt;p&gt;Sometimes, a developer changes a field in a dataset, and everything seems fine. But another model that depends on that field might stop working correctly. The worst part is that these problems can go unnoticed and affect business reports.&lt;/p&gt;

&lt;p&gt;That's what made me build &lt;strong&gt;SchemaCourt&lt;/strong&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  What is SchemaCourt?
&lt;/h1&gt;

&lt;p&gt;SchemaCourt is a project that helps data teams find problems caused by schema changes and fix them before they affect reporting.&lt;/p&gt;

&lt;p&gt;For example, imagine a checkout service changes a field from &lt;code&gt;discount_cents&lt;/code&gt; to &lt;code&gt;promo_struct.discount_cents&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The service itself still works, but a revenue model that uses the old field might start returning &lt;code&gt;NULL&lt;/code&gt; values. This can affect revenue calculations without anyone immediately noticing.&lt;/p&gt;

&lt;p&gt;In my simulation, the affected revenue metric represents $17.2M across 100,000 rows of data.&lt;/p&gt;

&lt;h1&gt;
  
  
  How does it work?
&lt;/h1&gt;

&lt;p&gt;When SchemaCourt detects a schema change, it checks which models are affected and measures how much the change could impact the data.&lt;/p&gt;

&lt;p&gt;It then suggests a SQL fix that works with both the old and new data structures:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="n"&gt;COALESCE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;discount_cents&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;promo_struct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;discount_cents&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of applying the fix automatically, SchemaCourt shares the findings and proposed changes in a Switch Room.&lt;/p&gt;

&lt;p&gt;The data owner can review everything and approve the change before it is applied.&lt;/p&gt;

&lt;p&gt;After approval, SchemaCourt tests the fix against both the old and new data to make sure the results remain correct.&lt;/p&gt;

&lt;h1&gt;
  
  
  Using Switch
&lt;/h1&gt;

&lt;p&gt;I used Switch to make this process easier to follow and manage.&lt;/p&gt;

&lt;p&gt;The project uses a Telegram Switch Room where SchemaCourtBot shares the detected change, affected model, impact, and proposed SQL fix.&lt;/p&gt;

&lt;p&gt;The data owner can approve the change through a Wispr Flow voice interaction. Once approved, the workflow applies the fix and checks both versions of the data.&lt;/p&gt;

&lt;p&gt;I liked this part because it makes the process more than just an AI tool giving suggestions. The team can actually review what's happening and take responsibility for the final decision.&lt;/p&gt;

&lt;h1&gt;
  
  
  Testing the fix
&lt;/h1&gt;

&lt;p&gt;For testing, I used:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;100,000 rows of legacy data&lt;/li&gt;
&lt;li&gt;100,000 rows with the changed schema&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After applying the fix, the measured difference was &lt;strong&gt;$0.00&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This means the repaired model produced the expected revenue result for both versions of the data in my simulation.&lt;/p&gt;

&lt;h1&gt;
  
  
  What I learned
&lt;/h1&gt;

&lt;p&gt;Building SchemaCourt helped me understand how small changes in data can create bigger problems downstream.&lt;/p&gt;

&lt;p&gt;It also gave me a chance to explore how AI can be useful in data engineering without giving it complete control over important changes.&lt;/p&gt;

&lt;p&gt;I wanted to build something where AI helps find the problem and suggest a solution, but a human still gets to make the final decision.&lt;/p&gt;

&lt;p&gt;That was the main idea behind SchemaCourt, and it was a really interesting project to work on during the hackathon.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/miheergathibandhe/SchemaCourt" rel="noopener noreferrer"&gt;https://github.com/miheergathibandhe/SchemaCourt&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  HowISwitch #SwitchHackathon #DataEngineering #AI
&lt;/h1&gt;

</description>
      <category>data</category>
      <category>database</category>
      <category>dataengineering</category>
    </item>
  </channel>
</rss>
