<?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: Soumyadeep Dey </title>
    <description>The latest articles on DEV Community by Soumyadeep Dey  (@soumyadeepdey).</description>
    <link>https://dev.to/soumyadeepdey</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%2F1076361%2F0aa8630b-3826-4103-9ca3-7436013bf933.jpg</url>
      <title>DEV Community: Soumyadeep Dey </title>
      <link>https://dev.to/soumyadeepdey</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/soumyadeepdey"/>
    <language>en</language>
    <item>
      <title>My dashboard took 7.6 seconds to render fifteen numbers 🐌</title>
      <dc:creator>Soumyadeep Dey </dc:creator>
      <pubDate>Thu, 23 Jul 2026 06:19:53 +0000</pubDate>
      <link>https://dev.to/soumyadeepdey/my-dashboard-took-76-seconds-to-render-fifteen-numbers-5dga</link>
      <guid>https://dev.to/soumyadeepdey/my-dashboard-took-76-seconds-to-render-fifteen-numbers-5dga</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/bugsmash"&gt;DEV's Summer Bug Smash: Clear the Lineup&lt;/a&gt; powered by &lt;a href="https://sentry.io/" rel="noopener noreferrer"&gt;Sentry&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Not fifteen tables. Fifteen &lt;em&gt;numbers&lt;/em&gt;. Four stat tiles, three donut slices, six bars, and a list of four recent invoices.&lt;/p&gt;

&lt;p&gt;Seven and a half seconds, on the page my clients land on after login.&lt;/p&gt;

&lt;p&gt;It had been doing this for months and I never noticed, because my development database held &lt;strong&gt;four invoices&lt;/strong&gt;. On four invoices it takes 111 ms and feels instant. This bug only existed at a volume I never had locally, which is the most dangerous kind there is, because it ships and then it waits.&lt;/p&gt;

&lt;p&gt;Here's how Sentry found it, what was actually broken (three separate things), and the numbers afterwards.&lt;/p&gt;




&lt;h2&gt;
  
  
  The app, and why the stakes are real
&lt;/h2&gt;

&lt;p&gt;DevLabs is the agency platform my team runs the business on. Next.js 16, React 19, MongoDB/Mongoose, ~34k lines. Marketing site, internal admin dashboard, and a client-facing portal holding real invoices, real contracts, and real customer records.&lt;/p&gt;

&lt;p&gt;That last part matters twice in this post: once because slow pages cost us client trust, and once because it constrained how I was allowed to instrument.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A note on the code below.&lt;/strong&gt; This is a private client-facing codebase, so I can't link the repo. Everything here is the real diff, quoted verbatim from the files it lives in, with nothing invented for the write-up. Every measurement comes from a harness I've included in full, so you can point the same one at your own app and get your own numbers rather than taking mine on faith.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 1: Sentry, and the integration that isn't on by default
&lt;/h2&gt;

&lt;p&gt;I wired up &lt;code&gt;@sentry/nextjs&lt;/code&gt; expecting the trace to point at the slow query.&lt;/p&gt;

&lt;p&gt;Instead the whole request came back as &lt;strong&gt;one opaque server span&lt;/strong&gt;. No database spans at all.&lt;/p&gt;

&lt;p&gt;Here's the thing that cost me an evening, and the single most useful thing in this post:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Mongo and Mongoose spans are not in Sentry's default integration set. You have to name them.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I verified it rather than trusting my assumptions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;node &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s2"&gt;"const n=require('@sentry/node');
  const d=n.getDefaultIntegrations({});
  console.log('total:', d.length);
  console.log('mongo:', d.map(i=&amp;gt;i.name).filter(x=&amp;gt;/[Mm]ongo/.test(x)))"&lt;/span&gt;

total: 17
mongo: &lt;span class="o"&gt;[]&lt;/span&gt;      &lt;span class="c"&gt;# &amp;lt;- empty. they're opt-in.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Seventeen integrations out of the box, and your database is in none of them.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// src/instrumentation.ts&lt;/span&gt;
&lt;span class="c1"&gt;// Without these, a dashboard request traces as ONE opaque server span&lt;/span&gt;
&lt;span class="c1"&gt;// and the entire data layer stays invisible.&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;integrations&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;isNode&lt;/span&gt;
  &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="k"&gt;import&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@sentry/node&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;node&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="nx"&gt;node&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;mongoIntegration&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
      &lt;span class="nx"&gt;node&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;mongooseIntegration&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
    &lt;span class="p"&gt;])&lt;/span&gt;
  &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;

&lt;span class="nx"&gt;Sentry&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;init&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;dsn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;DSN&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;tracesSampleRate&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;integrations&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;sendDefaultPii&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="c1"&gt;// this app holds customer and invoice records&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With those two lines the waterfall opened up, and the database started talking:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Span&lt;/th&gt;
&lt;th&gt;Duration&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;mongodb&lt;/code&gt; &lt;code&gt;{"getMore": ...}&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;4.42 s&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;mongoose.projects.find&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2.67 s&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;mongodb&lt;/code&gt; &lt;code&gt;{"getMore": ...}&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1.35 s&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;mongoose.customers.find&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;134 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;mongodb&lt;/code&gt; &lt;code&gt;{"find": {"firebaseUid": "?"}}&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;86 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The thing I did not expect was &lt;strong&gt;&lt;code&gt;getMore&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;getMore&lt;/code&gt; is MongoDB's cursor-continuation command. You only see it when a result set is too large to come back in one batch, so the driver goes back to the server again and again to stream the remainder. Two &lt;code&gt;getMore&lt;/code&gt; spans totalling 5.77 seconds is the database telling you, in its own words, &lt;em&gt;you asked for so much data I had to deliver it in installments.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftihztabgqcnuzvgfuxgc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftihztabgqcnuzvgfuxgc.png" alt="Two mongodb getMore spans of 4.42s and 1.35s next to mongoose.projects.find at 2.67s" width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Two &lt;code&gt;getMore&lt;/code&gt; spans (4.42s and 1.35s) in a single dashboard load, beside &lt;code&gt;mongoose.projects.find&lt;/code&gt; at 2.67s, which is the second bug.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That's a much sharper diagnosis than "the query is slow." A slow &lt;code&gt;find&lt;/code&gt; could be a missing index. &lt;code&gt;getMore&lt;/code&gt; dominating a trace means the problem is &lt;strong&gt;volume of bytes&lt;/strong&gt;, not lookup speed. No index would have saved this. It pointed straight at over-fetching before I had read a single line of the query.&lt;/p&gt;

&lt;p&gt;Opening the full waterfall made the proportion impossible to argue with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http.server  GET /dashboard ................. 14.89 s
  db  mongoose.invoices.find ................ 13.32 s   &amp;lt;-- one span
  db  mongoose.users.findOne ................ 845 ms
  resolve page components ................... 3.93 ms
  build component tree ...................... 11.73 ms

Sentry's own span breakdown:  db 77%  ·  default 12%  ·  function.nextjs 12%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One span was 89% of the request.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read that number honestly.&lt;/strong&gt; 14.89 s is a &lt;em&gt;development&lt;/em&gt; load: Turbopack compiling, no production optimizations, and Sentry sampling at 100%. The clean figure is the 7,580 ms from the benchmark below, measured with the same code paths and no instrumentation overhead. What the trace contributes is not magnitude, it's shape: &lt;em&gt;which&lt;/em&gt; span, &lt;em&gt;what&lt;/em&gt; share, and &lt;em&gt;why&lt;/em&gt;. Those hold regardless of environment.&lt;/p&gt;

&lt;p&gt;(The &lt;code&gt;saslStart&lt;/code&gt;, &lt;code&gt;saslContinue&lt;/code&gt;, and &lt;code&gt;createIndexes&lt;/code&gt; spans above it in the trace are MongoDB's connection handshake on cold start. They fire once per process and are not part of this bug.)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flts4xlx62984d40nxtp0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flts4xlx62984d40nxtp0.png" alt="Sentry span list for GET /dashboard sorted by duration: the request at 14.89s, mongoose.invoices.find at 13.32s, and a mongodb getMore span at 9.62s" width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Sorted by duration, the whole bug reads top to bottom: a 14.89s request, one 13.32s query inside it, and a &lt;code&gt;getMore&lt;/code&gt; cursor span at 9.62s.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvvdfzb0rg06ykmosk2yq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvvdfzb0rg06ykmosk2yq.png" alt="Sentry trace waterfall showing db at 77 percent of the GET /dashboard transaction" width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Sentry's own span breakdown for the request: **db 77%&lt;/em&gt;&lt;em&gt;, default 12%, function.nextjs 12%.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Session Replay needed one more decision before I turned it on. This dashboard renders real customer names, invoice totals, and contract titles:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;Sentry&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replayIntegration&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;maskAllText&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;     &lt;span class="c1"&gt;// non-negotiable: replays record layout, never client data&lt;/span&gt;
  &lt;span class="na"&gt;blockAllMedia&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}),&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A replay that leaks a client's invoice total is not a debugging tool, it's an incident.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2: make it reproducible
&lt;/h2&gt;

&lt;p&gt;Sentry told me &lt;em&gt;where&lt;/em&gt;. To know whether a fix worked I needed a number I could re-run, and a database that actually hurt.&lt;/p&gt;

&lt;p&gt;So my first commit wasn't a fix. It was a volume generator, with two rules because it points at whatever &lt;code&gt;MONGODB_URI&lt;/code&gt; points at:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;It only inserts.&lt;/strong&gt; Never updates or deletes a document it didn't create.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Everything it writes is tagged&lt;/strong&gt;, so cleanup removes exactly the generated rows and nothing else.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;SEED_TAG&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;[perf-seed]&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Stands in for the base64 data URI a real uploaded logo becomes.&lt;/span&gt;
&lt;span class="c1"&gt;// Every invoice carries its own copy.&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;FAKE_LOGO&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`data:image/png;base64,&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;iVBORw0KGgoAAAANSUhEUg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;repeat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;360&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Plus a read-only benchmark that runs the exact functions the page runs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run seed:perf &lt;span class="nt"&gt;--&lt;/span&gt; &lt;span class="nt"&gt;--yes&lt;/span&gt;        &lt;span class="c"&gt;# 2,000 invoices, 40 projects&lt;/span&gt;
npm run bench:dashboard           &lt;span class="c"&gt;# measures, writes nothing&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;corpus      2004 invoices, 42 projects

getInvoicesAdmin()      6668.8 ms    22358.6 KB read
getDashboardOverview()   911.4 ms     2490.0 KB read, 4806 tasks scanned
                                      8 activity rows kept
total server time       7580.2 ms
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;24.3 MB off the wire, 7.6 seconds, to render fifteen numbers.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What one dashboard load was actually doing
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flowchart TD
    A["GET /dashboard"] --&amp;gt; B["getInvoicesAdmin()"]
    A --&amp;gt; C["getDashboardOverview()"]

    B --&amp;gt; D["Invoice.find()&amp;lt;br/&amp;gt;no filter · no limit · no projection"]
    D --&amp;gt; E["2,004 FULL documents&amp;lt;br/&amp;gt;incl. base64 logo per invoice&amp;lt;br/&amp;gt;21.8 MB"]
    E --&amp;gt; F["rebuild every invoice&amp;lt;br/&amp;gt;invoiceFieldsFrom() x 2004"]

    C --&amp;gt; H["Project.find().select('name board activity')"]
    H --&amp;gt; I["every board · every activity row&amp;lt;br/&amp;gt;2.4 MB · 4,806 tasks"]
    I --&amp;gt; J["reduce in JS to&amp;lt;br/&amp;gt;8 items + 4 counters"]

    F --&amp;gt; K["ship 2,004 rows to the browser"]
    J --&amp;gt; K
    K --&amp;gt; L["render 15 numbers"]

    style E fill:#c62828,color:#fff
    style I fill:#c62828,color:#fff
    style L fill:#2e7d32,color:#fff
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three distinct bugs.&lt;/p&gt;




&lt;h2&gt;
  
  
  Bug 1: a base64 logo, fetched 2,004 times, to print a serial number
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;invoices&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;Invoice&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;   &lt;span class="c1"&gt;// no filter&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;populate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;INVOICE_POPULATE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;           &lt;span class="c1"&gt;// no limit&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sort&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;createdAt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;              &lt;span class="c1"&gt;// no projection&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;lean&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Invoice.find()&lt;/code&gt; with no projection pulls &lt;strong&gt;every field of every document&lt;/strong&gt;. In this schema that includes &lt;code&gt;fields.companyDetails.logo&lt;/code&gt;, and uploaded logos are stored as base64 data URIs. Each invoice carries its own full copy of an image.&lt;/p&gt;

&lt;p&gt;A list view rendering a serial number, a customer name, and a total was dragging an image per row across the network. Times two thousand.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix is pure exclusion, zero contract change:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gi"&gt;+const INVOICE_LIST_EXCLUDE = "-fields.companyDetails.logo -fields.metadata -access";
&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt; const invoices = await Invoice.find()
&lt;span class="gi"&gt;+  .select(INVOICE_LIST_EXCLUDE)
&lt;/span&gt;   .populate(INVOICE_POPULATE)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The detail view still selects everything, so opening an invoice is untouched.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;22,358 KB → 6,046 KB. 6,669 ms → 1,597 ms.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Bug 2: the comment that was true about the output and false about the input
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Aggregated CRM data for the dashboard Overview tab. One query pass,&lt;/span&gt;
&lt;span class="c1"&gt;// everything trimmed to what the cards render.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That comment is &lt;em&gt;correct about what comes out&lt;/em&gt;: eight activity rows, four counters, four project bars.&lt;/p&gt;

&lt;p&gt;It is completely wrong about what goes in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;Project&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;select&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name board activity&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;lean&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every project's entire board, meaning every column and every task, plus its entire activity log. Activity is append-only. It grows forever. The dashboard's cost was tied to my whole business history, on every load, to display eight rows.&lt;/p&gt;

&lt;p&gt;4,806 tasks scanned to produce four numbers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix is to do the reduction where the data already lives:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;Project&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;aggregate&lt;/span&gt;&lt;span class="p"&gt;([{&lt;/span&gt;
  &lt;span class="na"&gt;$facet&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;recentActivity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;$unwind&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;$activity&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;$sort&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;activity.time&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;$limit&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;$project&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;_id&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;span class="na"&gt;projectId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;$_id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;projectName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;$name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;$activity.text&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;time&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;$activity.time&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="na"&gt;taskTotals&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;$unwind&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;$board&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;$unwind&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;$board.tasks&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;$group&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;$board.tasks.status&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;count&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;$sum&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="na"&gt;perProject&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;$unwind&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;$board&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;$unwind&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;$board.tasks&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;$group&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="na"&gt;_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;$_id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;$first&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;$name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="na"&gt;total&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;$sum&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
          &lt;span class="na"&gt;done&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;$sum&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;$cond&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;$eq&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;$board.tasks.status&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Done&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="mi"&gt;1&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;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;}},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;$sort&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;total&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;$limit&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;}])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One round trip, three reductions. MongoDB counts 4,806 tasks server-side and hands back four numbers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;911 ms → 74 ms. 2,490 KB → 2.0 KB.&lt;/strong&gt; A 99.9% cut in bytes returned.&lt;/p&gt;




&lt;h2&gt;
  
  
  Bug 3: the comparator that answers "yes" in both directions
&lt;/h2&gt;

&lt;p&gt;This one isn't about speed. It had been sitting in two files for months.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sort&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;createdAt&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;createdAt&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Read it carefully. &lt;strong&gt;It never returns &lt;code&gt;0&lt;/code&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When two invoices share a timestamp, it says &lt;code&gt;a&lt;/code&gt; comes before &lt;code&gt;b&lt;/code&gt;. Ask the other way round and it says &lt;code&gt;b&lt;/code&gt; comes before &lt;code&gt;a&lt;/code&gt;. Both, at once.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;compare&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;   &lt;span class="c1"&gt;// "a first"&lt;/span&gt;
&lt;span class="nf"&gt;compare&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;   &lt;span class="c1"&gt;// "b first"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That isn't a preference, it's a contradiction, and it breaks the contract &lt;code&gt;Array.prototype.sort&lt;/code&gt; is built on. V8's TimSort then resolves it based on array length and starting position rather than on your data.&lt;/p&gt;

&lt;p&gt;Equal timestamps are routine here: bulk imports, seed scripts, fast manual entry. And this runs inside a &lt;code&gt;"use client"&lt;/code&gt; component, so server and browser can legitimately disagree about row order. That's a &lt;strong&gt;hydration mismatch&lt;/strong&gt; waiting for the right array length.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sort comparator            before      after
  self-contradictory        true        false
  order independent of input true       true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;An honest note.&lt;/strong&gt; The contract violation is proven, and &lt;code&gt;true&lt;/code&gt; is not ambiguous. But my 64-element reordering test did &lt;em&gt;not&lt;/em&gt; produce a visible reorder, because V8 uses insertion sort below a threshold where the inconsistency happens to be harmless. So this is a &lt;strong&gt;latent&lt;/strong&gt; bug: guaranteed invalid, with a symptom that depends on array size and engine version. I'm reporting what I measured, not what would have made a better story.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gd"&gt;-.sort((a, b) =&amp;gt; (b.createdAt &amp;gt; a.createdAt ? 1 : -1))
&lt;/span&gt;&lt;span class="gi"&gt;+.sort((a, b) =&amp;gt; (a.createdAt === b.createdAt ? 0 : a.createdAt &amp;lt; b.createdAt ? 1 : -1))
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                        BEFORE                          AFTER
getInvoicesAdmin       ████████████████████ 6669ms      ████ 1597ms
getDashboardOverview   ███ 911ms                         ▏ 74ms
──────────────────────────────────────────────────────────────────
TOTAL                  ██████████████████████ 7580ms    ████ 1671ms
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Before&lt;/th&gt;
&lt;th&gt;After&lt;/th&gt;
&lt;th&gt;Change&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total server time&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;7,580 ms&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1,671 ms&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;4.5× faster&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;getInvoicesAdmin()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;6,669 ms&lt;/td&gt;
&lt;td&gt;1,597 ms&lt;/td&gt;
&lt;td&gt;4.2×&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;getDashboardOverview()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;911 ms&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;74 ms&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;12.3×&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Read from MongoDB&lt;/td&gt;
&lt;td&gt;24,849 KB&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;6,048 KB&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;−76%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Overview bytes returned&lt;/td&gt;
&lt;td&gt;2,490 KB&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2.0 KB&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;−99.9%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Comparator self-contradictory&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;false&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;fixed&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Same corpus, median of 5 runs.&lt;/p&gt;

&lt;p&gt;And the same Sentry view, after:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F33s2v009va51xew2v2cr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F33s2v009va51xew2v2cr.png" alt="Sentry span list for GET /dashboard after the fix, with the getMore spans absent" width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The interesting part is not that the bars got shorter. **The &lt;code&gt;getMore&lt;/code&gt; spans are gone.&lt;/em&gt;* Once the projection stops pulling a base64 logo per invoice, the result set fits in a single batch and MongoDB has nothing left to page.*&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Output verified identical.&lt;/strong&gt; 4,806 tasks scanned, 8 activity rows, 4 project bars, before and after. A performance fix that changes behaviour is just a different bug.&lt;/p&gt;




&lt;h2&gt;
  
  
  Does your app have this? Three checks
&lt;/h2&gt;

&lt;p&gt;This bug class isn't specific to my code. If you run Mongo behind a dashboard, here's how to check in about ten minutes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Grep for unprojected finds.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rg &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\.&lt;/span&gt;&lt;span class="s2"&gt;find&lt;/span&gt;&lt;span class="se"&gt;\(\)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;--type&lt;/span&gt; ts &lt;span class="nt"&gt;-A&lt;/span&gt; 3 | rg &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="s2"&gt;"select|limit|projection"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every hit is a query pulling whole documents. Ask what the caller actually reads. If it's fewer than half the fields, add a &lt;code&gt;.select()&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Look for a field that can be huge.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Base64 images, rich-text bodies, append-only logs, embedded arrays with no cap. One of these inside a list query is the whole bug. In my schema it was &lt;code&gt;companyDetails.logo&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Check whether your reduction happens in the wrong place.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If a function loads N documents and returns a constant number of rows, the reduction belongs in the database. &lt;code&gt;$facet&lt;/code&gt; does several at once in a single round trip.&lt;/p&gt;

&lt;p&gt;And if your traces show no &lt;code&gt;db.query&lt;/code&gt; spans at all, you haven't found a fast app. You've found missing integrations.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I deliberately did not do
&lt;/h2&gt;

&lt;p&gt;The obvious next move is pushing the money math into MongoDB too, &lt;code&gt;$group&lt;/code&gt; the totals and skip the documents entirely.&lt;/p&gt;

&lt;p&gt;I didn't, and it's the decision I'd defend hardest.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;getTotalValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ZodCreateInvoiceSchema&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;getSubTotalValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nf"&gt;getDiscountValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;detail&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;invoiceDetails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;billingDetails&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;detail&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;percentage&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;total&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;total&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;detail&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="nx"&gt;total&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="nx"&gt;detail&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;total&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Those &lt;code&gt;billingDetails&lt;/code&gt; compound &lt;strong&gt;sequentially&lt;/strong&gt;. Each percentage applies to the running total, so order matters. Reproducing that in MongoDB expression language means a &lt;code&gt;$reduce&lt;/code&gt; that has to stay byte-identical to this function forever.&lt;/p&gt;

&lt;p&gt;That's two sources of truth for what a customer owes. A dashboard that loads 200 ms faster is not worth an invoice total that disagrees with itself.&lt;/p&gt;

&lt;p&gt;So I cut what gets &lt;em&gt;fetched&lt;/em&gt; and left the arithmetic in exactly one place.&lt;/p&gt;




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

&lt;p&gt;&lt;strong&gt;Empty dev databases hide production bugs.&lt;/strong&gt; Four invoices, 111 ms. Two thousand, 6,669 ms. The code never changed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read comments as claims to verify.&lt;/strong&gt; "Everything trimmed to what the cards render" was true about the output and false about the input, and that gap was the entire bug.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Instrumentation has defaults, and defaults have gaps.&lt;/strong&gt; Seventeen integrations, and your database is in none of them. An empty waterfall is a finding, not a clean bill of health.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn to read the span name, not just the bar.&lt;/strong&gt; &lt;code&gt;getMore&lt;/code&gt; versus &lt;code&gt;find&lt;/code&gt; is the difference between "I sent too many bytes" and "I looked in the wrong place." One is fixed with a projection, the other with an index. The trace told me which before I had read the query.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Report what you measured.&lt;/strong&gt; The comparator's contract violation is provable. The visible reorder didn't reproduce at 64 elements, so I said so.&lt;/p&gt;




&lt;h2&gt;
  
  
  The harness, in full
&lt;/h2&gt;

&lt;p&gt;I can't hand you my repo, so here's the thing that actually did the work. It's about thirty lines and it's framework-agnostic: point it at any function your page calls.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// bench.ts (read-only). Runs the same functions the page runs.&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;RUNS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;median&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;xs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;[])&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[...&lt;/span&gt;&lt;span class="nx"&gt;xs&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;sort&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;mid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;mid&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;mid&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;mid&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;time&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;T&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;fn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;T&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;T&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;t0&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;performance&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;out&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fn&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;out&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;performance&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;t0&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="cm"&gt;/** Bytes the driver actually pulls back. Pass the SAME projection your
 *  production code uses, or you'll measure an idealised query.
 *  (I got this wrong first time and the projection looked like a no-op.) */&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;wireBytes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Model&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kr"&gt;any&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;select&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;q&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt;&lt;span class="p"&gt;({});&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;select&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;q&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;select&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;select&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;Buffer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;byteLength&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;q&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;lean&lt;/span&gt;&lt;span class="p"&gt;()),&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;utf8&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;times&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;
&lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;RUNS&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;times&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;time&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;getInvoicesAdmin&lt;/span&gt;&lt;span class="p"&gt;))[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`time         &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nf"&gt;median&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;times&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;toFixed&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="s2"&gt; ms`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`from mongo   &lt;/span&gt;&lt;span class="p"&gt;${(&lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;wireBytes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;Invoice&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;toFixed&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="s2"&gt; KB`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`rendered     4 tiles, 3 donut counts, 6 bars, 4 rows`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That last &lt;code&gt;console.log&lt;/code&gt; is the whole trick. Print &lt;strong&gt;what you fetched&lt;/strong&gt; next to &lt;strong&gt;what you rendered&lt;/strong&gt;, on the same screen. The gap between those two lines is the bug, and once you can see it you can't unsee it.&lt;/p&gt;

&lt;p&gt;For volume, generate rows that look like your worst real ones (mine embed a base64 logo), tag every generated row with a marker string so cleanup is exact, and never let the generator update or delete anything it didn't create.&lt;/p&gt;




&lt;p&gt;Three bugs. About forty lines changed. 7.6 seconds down to 1.7.&lt;/p&gt;

&lt;p&gt;The fix was small. Finding it meant making it hurt first, and turning on the integration that shows you where it hurts.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>bugsmash</category>
      <category>weekendchallenge</category>
    </item>
    <item>
      <title>I wanted Snowflake to do more than store data. So I built a pipeline where it judges World Cup conviction, then writes its verdict back to Solana. The architecture ended up being my favorite part of the project.</title>
      <dc:creator>Soumyadeep Dey </dc:creator>
      <pubDate>Thu, 16 Jul 2026 06:08:45 +0000</pubDate>
      <link>https://dev.to/soumyadeepdey/i-wanted-snowflake-to-do-more-than-store-data-so-i-built-a-pipeline-where-it-judges-world-cup-10o7</link>
      <guid>https://dev.to/soumyadeepdey/i-wanted-snowflake-to-do-more-than-store-data-so-i-built-a-pipeline-where-it-judges-world-cup-10o7</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/soumyadeepdey/we-taught-a-snowflake-warehouse-to-judge-world-cup-conviction-and-write-the-verdict-back-to-solana-305i" class="crayons-story__hidden-navigation-link"&gt;We Taught a Snowflake Warehouse to Judge World Cup Conviction and Write the Verdict Back to Solana&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
      &lt;a href="https://dev.to/soumyadeepdey/we-taught-a-snowflake-warehouse-to-judge-world-cup-conviction-and-write-the-verdict-back-to-solana-305i" class="crayons-article__context-note crayons-article__context-note__feed"&gt;&lt;p&gt;DEV Weekend Challenge: Passion Edition Submission&lt;/p&gt;

&lt;/a&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/soumyadeepdey" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1076361%2F0aa8630b-3826-4103-9ca3-7436013bf933.jpg" alt="soumyadeepdey profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/soumyadeepdey" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Soumyadeep Dey 
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Soumyadeep Dey 
                &lt;a href="/++"&gt;&lt;img alt="Subscriber" class="subscription-icon" src="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png"&gt;&lt;/a&gt;
              
              &lt;div id="story-author-preview-content-4127328" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/soumyadeepdey" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1076361%2F0aa8630b-3826-4103-9ca3-7436013bf933.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Soumyadeep Dey &lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/soumyadeepdey/we-taught-a-snowflake-warehouse-to-judge-world-cup-conviction-and-write-the-verdict-back-to-solana-305i" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jul 12&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/soumyadeepdey/we-taught-a-snowflake-warehouse-to-judge-world-cup-conviction-and-write-the-verdict-back-to-solana-305i" id="article-link-4127328"&gt;
          We Taught a Snowflake Warehouse to Judge World Cup Conviction and Write the Verdict Back to Solana
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/weekendchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;weekendchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/snowflake"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;snowflake&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/100daysofsolana"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;100daysofsolana&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/soumyadeepdey/we-taught-a-snowflake-warehouse-to-judge-world-cup-conviction-and-write-the-verdict-back-to-solana-305i" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;32&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/soumyadeepdey/we-taught-a-snowflake-warehouse-to-judge-world-cup-conviction-and-write-the-verdict-back-to-solana-305i#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              4&lt;span class="hidden s:inline"&gt;&amp;nbsp;comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            15 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>architecture</category>
      <category>blockchain</category>
      <category>dataengineering</category>
      <category>showdev</category>
    </item>
    <item>
      <title>We Taught a Snowflake Warehouse to Judge World Cup Conviction and Write the Verdict Back to Solana</title>
      <dc:creator>Soumyadeep Dey </dc:creator>
      <pubDate>Sun, 12 Jul 2026 18:09:31 +0000</pubDate>
      <link>https://dev.to/soumyadeepdey/we-taught-a-snowflake-warehouse-to-judge-world-cup-conviction-and-write-the-verdict-back-to-solana-305i</link>
      <guid>https://dev.to/soumyadeepdey/we-taught-a-snowflake-warehouse-to-judge-world-cup-conviction-and-write-the-verdict-back-to-solana-305i</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/weekend-2026-07-09"&gt;Weekend Challenge: Passion Edition&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Target categories: Best use of Snowflake + Best use of Solana.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;The single most common mistake in cross-platform hackathon projects is using&lt;br&gt;
one platform as a database and the other as a logo. A dashboard that reads&lt;br&gt;
Solana data through an API and renders it in a UI is not a Solana project.&lt;br&gt;
It's a dashboard.&lt;/p&gt;

&lt;p&gt;The actual first question is: &lt;strong&gt;what can each platform do that the other&lt;br&gt;
physically cannot?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Solana has behavioral data that exists nowhere else - every buy, sell, and&lt;br&gt;
hold, public and permanent. But a blockchain cannot compute aggregates over&lt;br&gt;
its own history; that's not what the runtime is for. Snowflake can chew&lt;br&gt;
through millions of decoded transactions with a declarative SQL DAG - but it&lt;br&gt;
has no way to make a statement the rest of the on-chain world can read and&lt;br&gt;
build on.&lt;/p&gt;

&lt;p&gt;Strip away the World Cup framing and what I built is a pattern: &lt;strong&gt;a data&lt;br&gt;
warehouse acting as a first-class blockchain participant.&lt;/strong&gt; Read state that&lt;br&gt;
only exists on-chain, compute something the chain cannot compute about its&lt;br&gt;
own history, and commit the answer back where other programs can consume it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Solana (mainnet) --read--&amp;gt; Snowflake --compute--&amp;gt; Snowflake --write back--&amp;gt; Solana (devnet)
  live swaps and             streaming              conviction               an oracle account
  transfers, decoded         ingest + Dynamic       scoring + Cortex         any program can read
  by Helius                  Tables DAG             ML
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;FERVOR&lt;/strong&gt; is a real-time conviction oracle for World Cup fandom on Solana.&lt;br&gt;
It tracks sixteen national token communities from the 2026 field - Argentina&lt;br&gt;
to Japan, Morocco to Canada - wired into eight derby rivalries (ARG-BRA,&lt;br&gt;
FRA-ENG, POR-ESP, GER-NOR, USA-MEX, NED-BEL, CRO-MAR, JPN-CAN), and it does&lt;br&gt;
not measure hype, because following a crowd is cheap. It measures&lt;br&gt;
&lt;strong&gt;conviction&lt;/strong&gt;: the wallet that keeps buying its country's token while the&lt;br&gt;
price bleeds, the holder who never sells through a losing run. Passion,&lt;br&gt;
defined mechanically: holding when it hurts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvjr3ybk2hmefbbuv8vas.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvjr3ybk2hmefbbuv8vas.png" alt="World Cup Realtime Token Market Index" width="800" height="396"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  One thing up front, because it changes how you read every number below
&lt;/h2&gt;

&lt;p&gt;The pipeline is real and running unattended. The &lt;strong&gt;fan wallets are not - yet.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Unofficial "national" meme tokens need per-mint liquidity vetting before you&lt;br&gt;
point mainnet ingest at them, so the sixteen mints in &lt;code&gt;REF.TEAM_TOKENS&lt;/code&gt; are&lt;br&gt;
still &lt;code&gt;PLACEHOLDER_MINT_*&lt;/code&gt;, and the wallet activity flowing through the DAG&lt;br&gt;
is a &lt;strong&gt;labeled synthetic feed&lt;/strong&gt; (&lt;code&gt;_batch_id = 'DEMO_SEED'&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;What that means precisely: the seeder injects Helius-shaped transactions&lt;br&gt;
&lt;em&gt;upstream&lt;/em&gt;, into the raw landing table, and the real warehouse computes every&lt;br&gt;
downstream number from there. Nothing in &lt;code&gt;MARTS&lt;/code&gt; is hand-written. Nothing is&lt;br&gt;
mocked below the landing zone. One &lt;code&gt;UPDATE&lt;/code&gt; per row in &lt;code&gt;REF.TEAM_TOKENS&lt;/code&gt;&lt;br&gt;
points ingest at verified mints and the identical SQL scores real traders.&lt;/p&gt;

&lt;p&gt;Full accounting in What's real vs. what's simplified at the bottom. I'd rather you&lt;br&gt;
read the architecture knowing this than discover it in a footnote.&lt;/p&gt;


&lt;h2&gt;
  
  
  Verify this in 60 seconds - no keys, no clone
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The oracle is live.&lt;/strong&gt; Snowflake's output lands on devnet every 5 minutes,
signed and confirmed. &lt;a href="https://explorer.solana.com/address/ERcokh7aHySS2nLmfT7UjDzTtp8ZT1szwV5x2oKcAFFx?cluster=devnet" rel="noopener noreferrer"&gt;Watch the oracle account&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;or open &lt;a href="https://explorer.solana.com/tx/4n8zRWA9R5LrqHVkAjvBXUZiHv7iGyZ75bNWmsscK842pkiiNNvG75QCGVXoMCNXkQTUjhLff4sd6zRjQL6fADPs?cluster=devnet" rel="noopener noreferrer"&gt;the Norway write below&lt;/a&gt;
and expand the Memo instruction to read the JSON the warehouse emitted.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The warehouse is real.&lt;/strong&gt; &lt;a href="https://www.youtube.com/watch?v=WcmkOZ3E7Us&amp;amp;t=109s" rel="noopener noreferrer"&gt;The Dynamic Tables DAG, live in Snowsight&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;the actual lineage, not the diagram. And &lt;a href="https://www.youtube.com/watch?v=WcmkOZ3E7Us&amp;amp;t=247s" rel="noopener noreferrer"&gt;no cron anywhere&lt;/a&gt;:
every table declares &lt;code&gt;TARGET_LAG&lt;/code&gt; and Snowflake works out the refresh order.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The scoring is SQL.&lt;/strong&gt; &lt;a href="https://github.com/SoumyaEXE/weekend-challenge/blob/main/warehouse/03_marts_dt.sql" rel="noopener noreferrer"&gt;&lt;code&gt;warehouse/03_marts_dt.sql&lt;/code&gt;&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;the conviction score is twelve lines, and it is the only place a wallet's
loyalty is decided.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Repo: &lt;strong&gt;&lt;a href="https://github.com/SoumyaEXE/weekend-challenge" rel="noopener noreferrer"&gt;github.com/SoumyaEXE/weekend-challenge&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/WcmkOZ3E7Us"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;p&gt;Every 5 minutes, a Snowflake task stages the freshly computed index and a&lt;br&gt;
signing bridge writes it to Solana devnet as a confirmed transaction:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"oracle"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"FERVOR"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"source"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Snowflake MARTS.TEAM_FERVOR_INDEX"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"team_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"team"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"NORWAY"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"fervor_index"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;236&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"momentum"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;-21&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That JSON is Snowflake output living on a block explorer. &lt;code&gt;fervor_index&lt;/code&gt; is a&lt;br&gt;
SQL aggregate. &lt;code&gt;momentum&lt;/code&gt; is a &lt;strong&gt;Cortex forecast&lt;/strong&gt; - a machine-learning output&lt;br&gt;
from inside the warehouse, published to a blockchain. Negative momentum means&lt;br&gt;
the model expects the index to fall.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgf2qayhbjpj5a2wigil1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgf2qayhbjpj5a2wigil1.png" alt="Solscan devnet transaction showing the FERVOR memo payload" width="800" height="579"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And this is the league the warehouse produces:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0sdeew34v0vrg17v8lnn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0sdeew34v0vrg17v8lnn.png" alt="League table: national conviction index" width="799" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Snapshot. The index recomputes every minute; the on-chain writes are every five.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Argentina leads on conviction (109 average days held), Japan is the surprise&lt;br&gt;
runner-up, England has the deepest bench of believers, and Norway folds under&lt;br&gt;
pressure - &lt;strong&gt;on the seeded feed.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Norway is the transaction linked above. The prose, the league table, and the&lt;br&gt;
block explorer are three views of one number, and none of them was written by&lt;br&gt;
hand. And "folds under pressure" is the model's verdict, not mine: the&lt;br&gt;
&lt;code&gt;momentum: -21&lt;/code&gt; in that payload is Cortex forecasting Norway's conviction to&lt;br&gt;
slide another 21 points, and that projection is what got signed on-chain.&lt;/p&gt;

&lt;p&gt;And that is the honest claim worth making. This table does not prove&lt;br&gt;
Argentina's fans are loyal. It proves &lt;strong&gt;the engine discriminates&lt;/strong&gt;: sixteen&lt;br&gt;
behavioral profiles go into the raw landing table, and the warehouse alone&lt;br&gt;
decides who is a believer and who is a tourist. The ranking is an output, not&lt;br&gt;
an input. Swap the mints and the same SQL judges real money.&lt;/p&gt;


&lt;h2&gt;
  
  
  The architecture, actually explained
&lt;/h2&gt;

&lt;p&gt;Six stages. Every stage does load-bearing work; there is no component whose&lt;br&gt;
only job is to name-drop a technology.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Stage&lt;/th&gt;
&lt;th&gt;Tech&lt;/th&gt;
&lt;th&gt;Latency&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;INGEST&lt;/td&gt;
&lt;td&gt;Node worker + Helius enhanced transactions&lt;/td&gt;
&lt;td&gt;8 s batches&lt;/td&gt;
&lt;td&gt;Polls decoded mainnet activity for the 16 tracked country tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;LAND&lt;/td&gt;
&lt;td&gt;micro-batch inserts&lt;/td&gt;
&lt;td&gt;seconds&lt;/td&gt;
&lt;td&gt;Raw VARIANT JSON into &lt;code&gt;RAW.SOLANA_TX_LANDING&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;TRANSFORM&lt;/td&gt;
&lt;td&gt;Snowflake Dynamic Tables&lt;/td&gt;
&lt;td&gt;1 min lag&lt;/td&gt;
&lt;td&gt;7-table declarative DAG: decode, price, position, score&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;INTELLIGENCE&lt;/td&gt;
&lt;td&gt;Snowflake Cortex&lt;/td&gt;
&lt;td&gt;5 min task&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;ANOMALY_DETECTION&lt;/code&gt;, &lt;code&gt;FORECAST&lt;/code&gt;, &lt;code&gt;COMPLETE&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;WRITE-BACK&lt;/td&gt;
&lt;td&gt;Node signing bridge + Anchor&lt;/td&gt;
&lt;td&gt;5 min task&lt;/td&gt;
&lt;td&gt;Queue staged in SQL, signed and confirmed on devnet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;SERVE&lt;/td&gt;
&lt;td&gt;Streamlit-in-Snowflake&lt;/td&gt;
&lt;td&gt;live&lt;/td&gt;
&lt;td&gt;8-tab analytics app, zero external hosting&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgfl20i3lgfdq9b7wsefs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgfl20i3lgfdq9b7wsefs.png" alt="FERVOR system architecture: the round trip" width="800" height="469"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One database, six schemas, data flowing strictly left to right:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Schema&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;th&gt;Key objects&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;REF&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;hand-loaded seed&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;TEAM_TOKENS&lt;/code&gt; (mint, decimals, rival_team_id), &lt;code&gt;PARAMS&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;RAW&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;untouched VARIANT landing&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SOLANA_TX_LANDING&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;STAGING&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;decoded events (Dynamic Tables)&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;TOKEN_TRANSFERS&lt;/code&gt;, &lt;code&gt;SWAP_EVENTS&lt;/code&gt;, &lt;code&gt;PRICE_TICKS&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;MARTS&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;conviction metrics (Dynamic Tables)&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;WALLET_POSITIONS&lt;/code&gt;, &lt;code&gt;WALLET_FERVOR&lt;/code&gt;, &lt;code&gt;TEAM_FERVOR_INDEX&lt;/code&gt;, &lt;code&gt;DEFECTION_FLOWS&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ML&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Cortex outputs + time series&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;TEAM_INDEX_HISTORY&lt;/code&gt;, &lt;code&gt;FERVOR_ANOMALIES&lt;/code&gt;, &lt;code&gt;FERVOR_FORECAST&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ORACLE&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;write-back queue + audit&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;PUBLISH_QUEUE&lt;/code&gt;, &lt;code&gt;PUBLISH_LOG&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwje8qdv95skgp61darrp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwje8qdv95skgp61darrp.png" alt="Warehouse structure: six schemas, lineage left to right" width="800" height="443"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjzyryc17mvuovr0ghgf5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjzyryc17mvuovr0ghgf5.png" alt="the Dynamic Tables DAG in Snowsight, lineage view - the real thing, as proof the diagram above is what Snowflake actually runs" width="499" height="497"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Stage 1: ingest - a cursor trick that makes polling feel like streaming
&lt;/h2&gt;

&lt;p&gt;Helius decodes raw Solana transactions into clean JSON, so I ingest&lt;br&gt;
structured events instead of byte soup. The worker polls each tracked mint&lt;br&gt;
every 8 seconds, but the &lt;code&gt;until&lt;/code&gt; cursor means each poll returns only&lt;br&gt;
transactions newer than the last one seen. Functionally, it's a stream:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// ingest/poller.ts - the cursor is the whole trick&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cursor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Map&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// address -&amp;gt; newest seen signature&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;fetchNewTxs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;address&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;EnhancedTx&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;until&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;cursor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;address&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
    &lt;span class="s2"&gt;`https://api.helius.xyz/v0/addresses/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;address&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/transactions`&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
    &lt;span class="s2"&gt;`?api-key=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;HELIUS_API_KEY&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;amp;limit=50`&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;until&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="s2"&gt;`&amp;amp;until=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;until&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;txs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;EnhancedTx&lt;/span&gt;&lt;span class="p"&gt;[];&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;txs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;cursor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;address&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;txs&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;span class="nx"&gt;signature&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// newest first&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;txs&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Landing is a multi-row &lt;code&gt;INSERT ... SELECT PARSE_JSON(?)&lt;/code&gt; through the Node&lt;br&gt;
connector. Honest note: true Snowpipe Streaming needs the Java ingest SDK.&lt;br&gt;
8-second micro-batches demo identically (rows appear in Snowflake seconds&lt;br&gt;
after they land on-chain) and were far more reliable to stand up in a&lt;br&gt;
weekend.&lt;/p&gt;


&lt;h2&gt;
  
  
  Stage 3: the Dynamic Tables DAG - no cron, declared lag
&lt;/h2&gt;

&lt;p&gt;I did not write a single scheduler for the transform layer. Each table&lt;br&gt;
declares &lt;code&gt;TARGET_LAG = '1 minute'&lt;/code&gt; and Snowflake works out the refresh order:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;RAW.SOLANA_TX_LANDING
    |- STAGING.TOKEN_TRANSFERS ----&amp;gt; MARTS.DEFECTION_FLOWS
    |- STAGING.SWAP_EVENTS -------&amp;gt; STAGING.PRICE_TICKS
    |- MARTS.WALLET_POSITIONS
           |- MARTS.WALLET_FERVOR ----&amp;gt; MARTS.TEAM_FERVOR_INDEX
                                             |- (1 min task) ML.TEAM_INDEX_HISTORY
                                             |- (5 min task) Cortex models
                                             |- (5 min task) ORACLE.PUBLISH_QUEUE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The result is a per-minute index series where each of the sixteen nations&lt;br&gt;
charts its own story:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgvxj3gecrl7hnliqfing.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgvxj3gecrl7hnliqfing.png" alt="Conviction index over time" width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Two pieces of the transform SQL earned their place the hard way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Decoding BUY/SELL without per-DEX parsers.&lt;/strong&gt; Helius does not emit a parsed&lt;br&gt;
swap event for every venue, so I classify from token-balance movement: fee&lt;br&gt;
payer receives the tracked token = BUY, sends it = SELL. Routed swaps get&lt;br&gt;
their legs summed, and self-arbitrage transactions (fee payer both sends AND&lt;br&gt;
receives the same token in one tx) are dropped entirely - an arb bot carries&lt;br&gt;
zero conviction signal:&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="c1"&gt;-- warehouse/02_staging_dt.sql (excerpt)&lt;/span&gt;
&lt;span class="n"&gt;team_legs&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;signature&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
         &lt;span class="k"&gt;MIN&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;block_time&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;                  &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;block_time&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
         &lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;raw_payload&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;feePayer&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;     &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;wallet&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
         &lt;span class="n"&gt;tt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;mint&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;              &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;mint&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
         &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;team_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
         &lt;span class="n"&gt;IFF&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;toUserAccount&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;raw_payload&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;feePayer&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
             &lt;span class="s1"&gt;'BUY'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'SELL'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;                 &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;side&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
         &lt;span class="k"&gt;SUM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;tokenAmount&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="nb"&gt;float&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;token_amount&lt;/span&gt;
  &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;dedup&lt;/span&gt; &lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="k"&gt;LATERAL&lt;/span&gt; &lt;span class="n"&gt;FLATTEN&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;input&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;raw_payload&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;tokenTransfers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;tt&lt;/span&gt;
  &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="k"&gt;REF&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;TEAM_TOKENS&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mint&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;mint&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;
  &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;tt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;toUserAccount&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;   &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;raw_payload&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;feePayer&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;
     &lt;span class="k"&gt;OR&lt;/span&gt; &lt;span class="n"&gt;tt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;fromUserAccount&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;raw_payload&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;feePayer&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;
  &lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;signature&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;raw_payload&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;feePayer&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="n"&gt;tt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;mint&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;team_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;side&lt;/span&gt;
  &lt;span class="c1"&gt;-- self-arb filter: a signature with BOTH a BUY and a SELL row for the&lt;/span&gt;
  &lt;span class="c1"&gt;-- same token makes this window count 2, and the tx is excluded&lt;/span&gt;
  &lt;span class="n"&gt;QUALIFY&lt;/span&gt; &lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;PARTITION&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;signature&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;team_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;The 24-hour price change that survives trading gaps.&lt;/strong&gt; The naive version is&lt;br&gt;
&lt;code&gt;LAG(price, 24)&lt;/code&gt; over hourly buckets. That counts ROWS, not HOURS - one&lt;br&gt;
quiet hour and your "24h change" silently becomes a 25h change. &lt;code&gt;ASOF JOIN&lt;/code&gt;&lt;br&gt;
matches each tick to the nearest tick at or before 24 hours earlier, with a&lt;br&gt;
warm-up fallback for series younger than a day:&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="c1"&gt;-- warehouse/02_staging_dt.sql (excerpt)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;cur&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;team_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cur&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;window_start&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cur&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;price_usd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cur&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;price_usd&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;COALESCE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;day_ago&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;price_usd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;first_tick&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;price_usd&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
             &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="k"&gt;NULLIF&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;COALESCE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;day_ago&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;price_usd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;first_tick&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;price_usd&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;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;price_change_24h_pct&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;hourly&lt;/span&gt; &lt;span class="n"&gt;cur&lt;/span&gt;
&lt;span class="n"&gt;ASOF&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;hourly&lt;/span&gt; &lt;span class="n"&gt;day_ago&lt;/span&gt;
  &lt;span class="n"&gt;MATCH_CONDITION&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;DATEADD&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'hour'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cur&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;window_start&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="n"&gt;day_ago&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;window_start&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;cur&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;team_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;day_ago&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;team_id&lt;/span&gt;
&lt;span class="k"&gt;LEFT&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="c1"&gt;-- warm-up: earliest tick, for series younger than 24h&lt;/span&gt;
  &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;team_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;price_usd&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;hourly&lt;/span&gt;
  &lt;span class="n"&gt;QUALIFY&lt;/span&gt; &lt;span class="n"&gt;ROW_NUMBER&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;PARTITION&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;team_id&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;window_start&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;first_tick&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;first_tick&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;team_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cur&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;team_id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That distinction is not pedantry. A dip is what conviction is measured&lt;br&gt;
against, so a 25-hour "24h change" quietly reclassifies who was buying the&lt;br&gt;
bleed. Prices use the hourly &lt;strong&gt;median&lt;/strong&gt;, not VWAP - SOL-leg attribution is&lt;br&gt;
heuristic, and one mis-attributed leg destroys a volume-weighted mean.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flje75ta6plpkq4jai4qm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flje75ta6plpkq4jai4qm.png" alt="Hourly price paths with dips" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  The conviction score - the creative payload
&lt;/h2&gt;

&lt;p&gt;Hype is a headcount. Conviction is a cost. Per wallet, per country, 0 to 100:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Max points&lt;/th&gt;
&lt;th&gt;What it rewards&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;25 x ln(1 + hold_days) / ln(366)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;longevity of the relationship&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;30 x min(1, dip_buys / 5)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;buying while THEIR token bled 5%+ in 24h&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;25 x min(1, underwater_buys / 5)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;buying below their own average cost&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-20 x (sold within 3 days)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;-20&lt;/td&gt;
&lt;td&gt;punishes paper hands&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- warehouse/03_marts_dt.sql (excerpt)&lt;/span&gt;
&lt;span class="n"&gt;ROUND&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;GREATEST&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;span class="n"&gt;LEAST&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="mi"&gt;25&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;LN&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;hold_duration_days&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;LN&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;365&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;LEAST&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;COALESCE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;buy_against_decline&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;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;5&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;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;LEAST&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;COALESCE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;buy_at_loss&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;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;5&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;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;IFF&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;last_sell_time&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;DATEADD&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'day'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;SYSDATE&lt;/span&gt;&lt;span class="p"&gt;()),&lt;/span&gt; &lt;span class="mi"&gt;1&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;span class="p"&gt;)),&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;fervor_score&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Two engineering decisions worth stealing:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Tenure in fractional days&lt;/strong&gt; (&lt;code&gt;DATEDIFF('second', ...) / 86400.0&lt;/code&gt;).
Whole-day granularity freezes longevity at zero for 24 hours and
flat-lines the index on launch day.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero-signal wallets are excluded from the national average.&lt;/strong&gt; The raw
swap feed is dominated by one-shot MEV bots whose score is 0 by
construction. Averaging them in measures bot traffic, not the fan base:
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="n"&gt;ROUND&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt; &lt;span class="n"&gt;COALESCE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;AVG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;IFF&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;fervor_score&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;fervor_score&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;NULL&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;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;
      &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;LEAST&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;COUNT_IF&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;fervor_score&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;10&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;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;10&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;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;fervor_index&lt;/span&gt;   &lt;span class="c1"&gt;-- 0 to 1000, this exact number goes on-chain&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;And the emotional centerpiece, &lt;code&gt;MARTS.DEFECTION_FLOWS&lt;/code&gt;: the same wallet&lt;br&gt;
selling one country and buying another within 24 hours. Selling ARGENTINA to&lt;br&gt;
buy BRAZIL is not a portfolio rebalance. It is treason, and it gets its own&lt;br&gt;
Sankey:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgesizto30n0ec77pf6t8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgesizto30n0ec77pf6t8.png" alt="Defection flows between rival countries" width="800" height="476"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Stage 4: Cortex - and the rule that the LLM never produces a number
&lt;/h2&gt;

&lt;p&gt;One rule governs every metric in this system: &lt;strong&gt;SQL and fitted models compute&lt;br&gt;
the numbers. The LLM only writes prose.&lt;/strong&gt; Nothing an LLM says reaches the&lt;br&gt;
index, the league table, or the chain.&lt;/p&gt;

&lt;p&gt;Three Cortex models, retrained every 5 minutes by a task.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;ANOMALY_DETECTION&lt;/code&gt; - with a strict train/detect split.&lt;/strong&gt;&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="c1"&gt;-- warehouse/04_ml_cortex.sql (excerpt)&lt;/span&gt;
&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;OR&lt;/span&gt; &lt;span class="k"&gt;REPLACE&lt;/span&gt; &lt;span class="n"&gt;SNOWFLAKE&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ML&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ANOMALY_DETECTION&lt;/span&gt; &lt;span class="n"&gt;ML&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;FERVOR_ANOMALY_MODEL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="n"&gt;INPUT_DATA&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;SYSTEM&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;QUERY_REFERENCE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="s1"&gt;'SELECT team_id, ts, fervor_index FROM FERVOR.ML.TEAM_INDEX_HISTORY
      WHERE NOT COALESCE(is_synthetic, FALSE)          -- never train on demo spikes
        AND ts &amp;lt; DATEADD(minute, -15, SYSDATE())'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;    &lt;span class="c1"&gt;-- strict train/detect split&lt;/span&gt;
  &lt;span class="n"&gt;SERIES_COLNAME&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'TEAM_ID'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;TIMESTAMP_COLNAME&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'TS'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;TARGET_COLNAME&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'FERVOR_INDEX'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;LABEL_COLNAME&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The gotcha that cost an hour: my first version trained on &lt;code&gt;ts &amp;lt; now&lt;/code&gt; and&lt;br&gt;
detected on the last hour. Cortex rejected it -&lt;br&gt;
&lt;code&gt;All evaluation timestamps must be after the last timestamp in fitting data.&lt;/code&gt;&lt;br&gt;
Training and detection must not overlap. Split both at the same boundary,&lt;br&gt;
strict &lt;code&gt;&amp;lt;&lt;/code&gt; on one side, &lt;code&gt;&amp;gt;=&lt;/code&gt; on the other.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;is_synthetic&lt;/code&gt; flag is the honesty mechanism, and it is load-bearing. A&lt;br&gt;
demo needs a passion spike on camera, so &lt;code&gt;scripts/demo_spike.py&lt;/code&gt; injects&lt;br&gt;
labeled rows that &lt;strong&gt;detection sees but training never fits&lt;/strong&gt;. The detector&lt;br&gt;
flags the surge because it genuinely is one - not because it was taught to.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;FORECAST&lt;/code&gt; - and this one goes on-chain.&lt;/strong&gt; Every nation's index is projected&lt;br&gt;
12 minutes out. The delta between that forecast and the live index is&lt;br&gt;
&lt;code&gt;momentum&lt;/code&gt; - the second field in the oracle payload. So a Snowflake Cortex ML&lt;br&gt;
output is signed onto Solana every five minutes, next to the SQL aggregate it&lt;br&gt;
predicts. The dashboard draws it as a dumbbell (live index → forecast) so you&lt;br&gt;
read who is strengthening and who is cracking in one glance, with an explicit&lt;br&gt;
label that it forecasts &lt;em&gt;holding behavior, not token price.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;COMPLETE&lt;/code&gt; - prose only.&lt;/strong&gt; A scheduled task writes hype lines; the AI insights&lt;br&gt;
tab calls Cortex &lt;strong&gt;on demand from inside the app&lt;/strong&gt; - no external API, no key,&lt;br&gt;
the LLM runs where the data lives:&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;SNOWFLAKE&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CORTEX&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;COMPLETE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'mistral-large2'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s1"&gt;'You are a crypto market analyst covering World Cup fan tokens. 3 bullets: '&lt;/span&gt;
  &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="s1"&gt;'one strength, one risk, one outlook. '&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;team_name&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="s1"&gt;' index '&lt;/span&gt;
  &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;fervor_index&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="s1"&gt;'/1000, '&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;devoted_wallet_count&lt;/span&gt;
  &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="s1"&gt;' believer wallets, average hold '&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;avg_hold_days&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="s1"&gt;' days.'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every number in that prompt was computed upstream, in SQL. The model is handed&lt;br&gt;
facts and asked for sentences. It is never asked for arithmetic.&lt;/p&gt;

&lt;p&gt;The market tabs render &lt;strong&gt;real 1-hour candlesticks built in SQL&lt;/strong&gt; - no OHLC&lt;br&gt;
API, just &lt;code&gt;MIN_BY&lt;/code&gt;/&lt;code&gt;MAX_BY&lt;/code&gt; over decoded swap executions:&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="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;TIME_SLICE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;block_time&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'HOUR'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;      &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="n"&gt;MIN_BY&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;price_usd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;block_time&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;        &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="k"&gt;open&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="k"&gt;MAX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;price_usd&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;                         &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;high&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="k"&gt;MIN&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;price_usd&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;                         &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;low&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="n"&gt;MAX_BY&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;price_usd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;block_time&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;        &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="k"&gt;close&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="k"&gt;SUM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sol_amount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;                        &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;volume&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;STAGING&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SWAP_EVENTS&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;team_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;block_time&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="n"&gt;DATEADD&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'hour'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;72&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And the USD leg is live: the bridge pushes the real SOL/USD rate into&lt;br&gt;
&lt;code&gt;REF.PARAMS&lt;/code&gt; every 60 seconds, so the whole DAG's pricing tracks the market.&lt;/p&gt;


&lt;h2&gt;
  
  
  Stage 5: the write-back - where the trust boundary lives
&lt;/h2&gt;

&lt;p&gt;The security property judges should check: &lt;strong&gt;the oracle keypair never touches&lt;br&gt;
Snowflake.&lt;/strong&gt; The warehouse stages numbers in a queue table and nothing more. A&lt;br&gt;
small Node bridge holds the key, signs, submits, and writes the audit trail&lt;br&gt;
back:&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="c1"&gt;-- warehouse/05_oracle.sql&lt;/span&gt;
&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;OR&lt;/span&gt; &lt;span class="k"&gt;REPLACE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;ORACLE&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;PUBLISH_QUEUE&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="n"&gt;publish_id&lt;/span&gt;   &lt;span class="n"&gt;NUMBER&lt;/span&gt; &lt;span class="k"&gt;IDENTITY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;team_id&lt;/span&gt;      &lt;span class="n"&gt;NUMBER&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;team_name&lt;/span&gt; &lt;span class="n"&gt;STRING&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;fervor_index&lt;/span&gt; &lt;span class="n"&gt;NUMBER&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;momentum&lt;/span&gt;     &lt;span class="n"&gt;NUMBER&lt;/span&gt; &lt;span class="k"&gt;DEFAULT&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;          &lt;span class="c1"&gt;-- Cortex forecast minus current index&lt;/span&gt;
  &lt;span class="n"&gt;status&lt;/span&gt;       &lt;span class="n"&gt;STRING&lt;/span&gt; &lt;span class="k"&gt;DEFAULT&lt;/span&gt; &lt;span class="s1"&gt;'PENDING'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;-- PENDING -&amp;gt; SENT -&amp;gt; CONFIRMED | FAILED&lt;/span&gt;
  &lt;span class="n"&gt;queued_at&lt;/span&gt;    &lt;span class="n"&gt;TIMESTAMP_NTZ&lt;/span&gt; &lt;span class="k"&gt;DEFAULT&lt;/span&gt; &lt;span class="k"&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
  &lt;span class="n"&gt;tx_signature&lt;/span&gt; &lt;span class="n"&gt;STRING&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;explorer_url&lt;/span&gt; &lt;span class="n"&gt;STRING&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;last_error&lt;/span&gt; &lt;span class="n"&gt;STRING&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Until the Anchor program is deployed the bridge writes signed Memo&lt;br&gt;
transactions - real, confirmed, explorer-visible. Once &lt;code&gt;FERVOR_PROGRAM_ID&lt;/code&gt; is&lt;br&gt;
set it flips to the PDA oracle automatically: one account per country,&lt;br&gt;
&lt;code&gt;init_if_needed&lt;/code&gt;, so the first write creates it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="c1"&gt;// oracle-program/programs/fervor_oracle/src/lib.rs (excerpt)&lt;/span&gt;
&lt;span class="nd"&gt;#[account]&lt;/span&gt;
&lt;span class="k"&gt;pub&lt;/span&gt; &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="n"&gt;FervorAccount&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;pub&lt;/span&gt; &lt;span class="n"&gt;authority&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Pubkey&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="c1"&gt;// first writer claims the PDA&lt;/span&gt;
    &lt;span class="k"&gt;pub&lt;/span&gt; &lt;span class="n"&gt;team_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;u16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="k"&gt;pub&lt;/span&gt; &lt;span class="n"&gt;fervor_index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;u32&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="k"&gt;pub&lt;/span&gt; &lt;span class="n"&gt;momentum&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;i32&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="k"&gt;pub&lt;/span&gt; &lt;span class="n"&gt;updated_slot&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;u64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I also built the &lt;em&gt;inbound&lt;/em&gt; design - a Snowpark procedure calling the bridge&lt;br&gt;
directly over HTTPS, using an External Access Integration with a &lt;code&gt;SECRET&lt;/code&gt; and a&lt;br&gt;
&lt;code&gt;NETWORK RULE&lt;/code&gt;. Snowflake trial accounts reject it&lt;br&gt;
(&lt;code&gt;509009: External access is not supported for trial accounts&lt;/code&gt;), so the&lt;br&gt;
submission ships the queue-poll design. I verified the other path anyway - an&lt;br&gt;
authenticated &lt;code&gt;POST /publish&lt;/code&gt; through a cloudflared tunnel produced a confirmed&lt;br&gt;
devnet transaction - and &lt;code&gt;warehouse/06_external_access.sql&lt;/code&gt; runs as-is on a paid&lt;br&gt;
account. Same on-chain result, one fewer moving part.&lt;/p&gt;

&lt;p&gt;Here is the oracle's actual output over one evening - every marker a confirmed&lt;br&gt;
devnet transaction:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxzq02yb1ruh4m8btl1xb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxzq02yb1ruh4m8btl1xb.png" alt="On-chain writes, step chart" width="800" height="361"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Stage 6: the dashboard runs inside the warehouse
&lt;/h2&gt;

&lt;p&gt;Streamlit-in-Snowflake, eight tabs (Standings, World Cup, Wallets and&lt;br&gt;
rivalries, Market, Token markets, Head to head, AI insights, On-chain oracle),&lt;br&gt;
national colors with SVG emblems, a rotatable 3D conviction scatter (days held&lt;br&gt;
× dip buys × score, sized by SOL traded), a per-wallet drill-down. &lt;strong&gt;Zero&lt;br&gt;
external hosting.&lt;/strong&gt; The app, the data, the ML and the LLM all live in the same&lt;br&gt;
account - which is also why the oracle needs a bridge at all: the SiS sandbox&lt;br&gt;
cannot reach the public internet.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffr8h8ddvne7k653oq558.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffr8h8ddvne7k653oq558.png" alt="dashboard, Standings tab" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft29z0vx2cdcvvxpe9xtu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft29z0vx2cdcvvxpe9xtu.png" alt="dashboard, On-chain oracle tab with Solscan links" width="800" height="257"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  The live World Cup, joined to on-chain conviction
&lt;/h2&gt;

&lt;p&gt;The dashboard's &lt;strong&gt;World Cup tab reads the real 2026 FIFA World Cup&lt;/strong&gt;: fixtures,&lt;br&gt;
scores with extra-time and penalty-shootout detail, the group tables, and the&lt;br&gt;
live Golden Boot race - pulled from football-data.org and set directly beside&lt;br&gt;
the conviction index.&lt;/p&gt;

&lt;p&gt;Same constraint as the oracle, same solution: SiS cannot reach the internet, so&lt;br&gt;
a host-side sync writes the tournament into Snowflake and the app only ever&lt;br&gt;
reads a table.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# scripts/football_sync.py (excerpt) - three endpoints -&amp;gt; three REF tables
&lt;/span&gt;&lt;span class="n"&gt;matches&lt;/span&gt;   &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/matches&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="n"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   &lt;span class="c1"&gt;# scores, half-time, extra-time, penalties
&lt;/span&gt;&lt;span class="n"&gt;standings&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/standings&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   &lt;span class="c1"&gt;# group tables: W/D/L, goals for/against, pts
&lt;/span&gt;&lt;span class="n"&gt;scorers&lt;/span&gt;   &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/scorers&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="n"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   &lt;span class="c1"&gt;# Golden Boot race: goals + assists
# every row maps the API country name to our REF.TEAM_TOKENS team_id via
# our_team(), so the real tournament joins straight onto on-chain conviction
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On the day I wrote this, France knocked Morocco out 2-0 in the quarter-final&lt;br&gt;
and Argentina beat Switzerland 3-1 after extra time, setting up an England vs&lt;br&gt;
Argentina semi-final. Mbappe and Messi were tied on eight.&lt;/p&gt;

&lt;p&gt;That is not decoration. It is the join that makes the thesis falsifiable. A&lt;br&gt;
conviction oracle exists to answer exactly one question - &lt;strong&gt;did the losing fan&lt;br&gt;
base hold, or capitulate?&lt;/strong&gt; - and you cannot ask it without a real scoreline on&lt;br&gt;
the other side of the join. The tournament is real today. Point the mints at&lt;br&gt;
real tokens and both halves of that question are answerable at once.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy5ctxmrokmkt9spwgv2s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy5ctxmrokmkt9spwgv2s.png" alt="dashboard, World Cup tab - real 2026 results beside the conviction index" width="800" height="458"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The exact line between real and simplified
&lt;/h2&gt;

&lt;p&gt;Stated at the top; itemised here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real and running unattended:&lt;/strong&gt; the full 7-table Dynamic Tables DAG at&lt;br&gt;
1-minute lag; the conviction scoring above; three Cortex models retraining on a&lt;br&gt;
5-minute task; confirmed devnet transactions for all sixteen nations, one&lt;br&gt;
publish cycle every 5 minutes, each with a clickable Solscan link in&lt;br&gt;
&lt;code&gt;ORACLE.PUBLISH_LOG&lt;/code&gt;; the live 2026 FIFA World Cup synced into &lt;code&gt;REF.WC_MATCHES&lt;/code&gt;,&lt;br&gt;
&lt;code&gt;REF.WC_STANDINGS&lt;/code&gt; and &lt;code&gt;REF.WC_SCORERS&lt;/code&gt; and joined to conviction; the 8-tab&lt;br&gt;
dashboard inside Snowflake.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Simplified, with reasons:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Simplification&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;th&gt;Honest label&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Country token mints are placeholders pending verification&lt;/td&gt;
&lt;td&gt;unofficial "national" meme tokens need per-mint liquidity vetting before pointing mainnet ingest at them&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;PLACEHOLDER_MINT_*&lt;/code&gt; in &lt;code&gt;REF.TEAM_TOKENS&lt;/code&gt;; one UPDATE per row to go live, the poller skips placeholders&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Demo data seeded&lt;/td&gt;
&lt;td&gt;placeholder mints produce no organic feed yet&lt;/td&gt;
&lt;td&gt;every seeded row labeled: &lt;code&gt;_batch_id = 'DEMO_SEED'&lt;/code&gt;, wallets end in &lt;code&gt;demo&lt;/code&gt;, &lt;code&gt;is_synthetic&lt;/code&gt; history is excluded from model training, sample oracle rows carry &lt;code&gt;is_demo = TRUE&lt;/code&gt; and are replaced by real bridge writes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8 s micro-batches, not Snowpipe Streaming SDK&lt;/td&gt;
&lt;td&gt;SDK is Java-only&lt;/td&gt;
&lt;td&gt;noted in code comments&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BUY/SELL from balance deltas, not per-DEX decoding&lt;/td&gt;
&lt;td&gt;Helius doesn't parse every venue&lt;/td&gt;
&lt;td&gt;self-arb filter compensates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Token prices decoded from swap legs, not a DEX API&lt;/td&gt;
&lt;td&gt;the pipeline must work from raw transactions alone&lt;/td&gt;
&lt;td&gt;USD via a LIVE SOL/USD rate the bridge refreshes into &lt;code&gt;REF.PARAMS&lt;/code&gt; every 60 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Writes go to devnet; bridge is centralized&lt;/td&gt;
&lt;td&gt;this is an oracle BRIDGE, not a decentralized oracle network&lt;/td&gt;
&lt;td&gt;stated plainly&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The seeder injects Helius-shaped transactions &lt;strong&gt;upstream&lt;/strong&gt;, into the raw&lt;br&gt;
landing table, and lets the real DAG compute every downstream number - each&lt;br&gt;
nation with its own volatility, trend and fan-base depth, and a slowly drifting&lt;br&gt;
sentiment so believers capitulate or buy the dip and the index genuinely moves&lt;br&gt;
(which is what makes the Cortex forecast diverge). Nothing in &lt;code&gt;MARTS&lt;/code&gt; is&lt;br&gt;
hand-written.&lt;/p&gt;

&lt;p&gt;These are unofficial Solana meme tokens named after national teams, not&lt;br&gt;
licensed fan tokens (those live on Chiliz). FERVOR analyzes public on-chain&lt;br&gt;
behavior only.&lt;/p&gt;




&lt;h2&gt;
  
  
  What this unlocks
&lt;/h2&gt;

&lt;p&gt;The World Cup is the costume. Underneath it is a primitive: &lt;strong&gt;a data warehouse&lt;br&gt;
that reads a chain, computes what the chain cannot compute about itself, and&lt;br&gt;
signs the answer back where other programs can consume it&lt;/strong&gt; - with the key held&lt;br&gt;
in a minimal, auditable bridge instead of the warehouse.&lt;/p&gt;

&lt;p&gt;Proof-of-reserve attestations. Risk scores for lending protocols.&lt;br&gt;
Activity-based airdrop eligibility. Sybil scoring. Every one of them is an&lt;br&gt;
"aggregate off-chain, attest on-chain" problem, and every one of them currently&lt;br&gt;
gets solved by a bespoke indexer somebody has to babysit.&lt;/p&gt;

&lt;p&gt;They are all &lt;code&gt;TARGET_LAG = '1 minute'&lt;/code&gt; and a queue table.&lt;/p&gt;

&lt;h2&gt;
  
  
  Run it yourself
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/SoumyaEXE/weekend-challenge
&lt;span class="nb"&gt;cp&lt;/span&gt; .env.example .env             &lt;span class="c"&gt;# Helius key, Snowflake creds, devnet keypair&lt;/span&gt;
npm &lt;span class="nb"&gt;install
&lt;/span&gt;python scripts/run_sql.py &lt;span class="nt"&gt;--all&lt;/span&gt;  &lt;span class="c"&gt;# entire warehouse: schemas, DAG, tasks&lt;/span&gt;
python scripts/demo_seed.py      &lt;span class="c"&gt;# labeled demo data through the real DAG&lt;/span&gt;
npm run bridge                   &lt;span class="c"&gt;# queue -&amp;gt; signed devnet writes&lt;/span&gt;
python scripts/football_sync.py  &lt;span class="c"&gt;# live World Cup -&amp;gt; matches, standings, scorers&lt;/span&gt;
python scripts/deploy_streamlit.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Within about two minutes the DAG refreshes, tasks snapshot history, and the&lt;br&gt;
bridge confirms its first write. &lt;code&gt;npm run publish:once&lt;/code&gt; forces a publish for&lt;br&gt;
the impatient. &lt;code&gt;python scripts/demo_spike.py&lt;/code&gt; makes the anomaly detector fire on&lt;br&gt;
camera; &lt;code&gt;--clean&lt;/code&gt; removes the evidence.&lt;/p&gt;

&lt;p&gt;To go live on real trades: fill &lt;code&gt;config/mints.json&lt;/code&gt; with verified mints, run&lt;br&gt;
&lt;code&gt;python scripts/set_mints.py&lt;/code&gt; (it auto-fetches each token's decimals and logo),&lt;br&gt;
then &lt;code&gt;npm run ingest&lt;/code&gt;. Not one line of SQL changes.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built with &lt;a class="mentioned-user" href="https://dev.to/dronzer2code"&gt;@dronzer2code&lt;/a&gt; within the challenge window with AI pair-programming. All simplifications and data labeling are documented above and in the README.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>snowflake</category>
      <category>100daysofsolana</category>
    </item>
    <item>
      <title>Hermes Agent for Developers: The Open Source AI Agent That Learns &amp; Remembers</title>
      <dc:creator>Soumyadeep Dey </dc:creator>
      <pubDate>Sat, 30 May 2026 04:28:57 +0000</pubDate>
      <link>https://dev.to/soumyadeepdey/hermes-agent-for-developers-the-open-source-ai-agent-that-learns-remembers-4mb6</link>
      <guid>https://dev.to/soumyadeepdey/hermes-agent-for-developers-the-open-source-ai-agent-that-learns-remembers-4mb6</guid>
      <description>&lt;h1&gt;
  
  
  Why Hermes Agent Is One of the Most Practical Open Source AI Agents for Developers
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hermes-agent-2026-05-15"&gt;Hermes Agent Challenge&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Author: &lt;a href="https://github.com/SoumyaEXE" rel="noopener noreferrer"&gt;SoumyaEXE&lt;/a&gt;&lt;br&gt;&lt;br&gt;
Portfolio: &lt;a href="https://isoumya.xyz" rel="noopener noreferrer"&gt;isoumya.xyz&lt;/a&gt;&lt;br&gt;&lt;br&gt;
LinkedIn: &lt;a href="https://www.linkedin.com/in/isoumyadeyy/" rel="noopener noreferrer"&gt;isoumyadeyy&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Agent frameworks are everywhere right now, but most of them still feel like demos dressed up as products. They can answer prompts, call a tool or two, and generate nice screenshots for launch posts, yet many fall apart when the task gets longer, messier, or more dependent on memory.&lt;/p&gt;

&lt;p&gt;That is why Hermes Agent caught attention. It is not positioned as just another chatbot wrapper or an IDE sidekick. Hermes Agent is designed as an autonomous, self-improving agent that can plan, use tools, build reusable skills, and persist memory across sessions. That combination matters a lot for developers who want something more durable than one-shot prompt orchestration.&lt;/p&gt;

&lt;p&gt;This post focuses on the developer angle. Instead of repeating marketing copy, it looks at what Hermes Agent is, why its design stands out, how a developer can start using it, and where it fits in a real workflow. The goal is simple: help other developers decide whether Hermes Agent is worth their time for learning, experimentation, and actual projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this topic matters now
&lt;/h2&gt;

&lt;p&gt;The timing of this challenge is interesting because the AI tooling landscape is moving from simple assistants toward more persistent systems. The official Hermes Agent Challenge asks writers to publish something that educates, inspires, or sparks discussion around Hermes Agent, and submissions are judged on clarity, originality, practical value, and writing quality [1].&lt;/p&gt;

&lt;p&gt;That judging criteria actually says a lot about what kind of post works best. A strong submission should not just praise the tool. It should teach something useful, present a clear point of view, and leave readers with a practical understanding they can apply immediately.&lt;/p&gt;

&lt;p&gt;So instead of writing a shallow overview, this article takes a position: Hermes Agent is one of the more practical open source agent systems for developers because it treats memory, skills, tooling, and deployment as first-class parts of the product rather than afterthoughts.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Hermes Agent actually is
&lt;/h2&gt;

&lt;p&gt;According to the official documentation, Hermes Agent is a self-improving AI agent built by Nous Research, and its core idea is a built-in learning loop that creates skills from experience, improves them during use, persists knowledge, and builds a deeper model across sessions [2].&lt;/p&gt;

&lt;p&gt;That description is important because it changes how the agent should be evaluated. Many systems are good at completing a single session well enough. Hermes Agent is trying to become more useful over time. That means the benchmark is not only immediate output quality. The benchmark is whether repeated use produces a smarter, more capable system without forcing the developer to constantly rebuild context from scratch.&lt;/p&gt;

&lt;p&gt;In practice, Hermes Agent presents itself as more than a local toy. The docs highlight that it can run across local environments and multiple terminal backends including Docker, SSH, Daytona, Singularity, and Modal, which makes it easier to think of it as infrastructure rather than a single-device assistant [2].&lt;/p&gt;

&lt;h2&gt;
  
  
  The four ideas that make Hermes Agent stand out
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Persistent memory is not optional
&lt;/h3&gt;

&lt;p&gt;One reason many agent demos feel brittle is that they start fresh too often. A tool might solve a task today, then forget everything tomorrow. Hermes Agent is built around a memory system that grows across sessions, with cross-session recall listed as a core feature in the official docs [2].&lt;/p&gt;

&lt;p&gt;For developers, this matters in obvious ways. If an agent remembers preferred workflows, recurring project context, prior fixes, or known environment quirks, it becomes more valuable with repetition. That turns the system from a novelty into something closer to an assistant that can actually compound usefulness over time.&lt;/p&gt;

&lt;p&gt;This is especially relevant for software work because software work is repetitive in structure, even when the tasks themselves differ. A developer often revisits the same repositories, conventions, setup steps, deployment targets, and debugging habits. An agent that remembers these patterns can reduce friction in a way stateless systems simply cannot.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Skills turn experience into reusable procedure
&lt;/h3&gt;

&lt;p&gt;Hermes Agent also emphasizes a skills system. The docs describe procedural memory and reusable skills as a major feature, and independent writeups on Hermes highlight that the agent can generate and reuse skill documents after completing complex tasks [2][3].&lt;/p&gt;

&lt;p&gt;That is a stronger idea than it sounds at first glance. A lot of AI tooling relies on the user becoming the memory layer. The human has to remember which prompt worked, which sequence of steps got the right result, and which format produced reliable output. Hermes Agent tries to capture some of that procedure itself.&lt;/p&gt;

&lt;p&gt;For a developer, this creates an appealing loop:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Solve a task once&lt;/li&gt;
&lt;li&gt;Let the agent retain the pattern&lt;/li&gt;
&lt;li&gt;Reuse the pattern later with less prompting&lt;/li&gt;
&lt;li&gt;Improve the pattern as usage continues&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is one of the most convincing arguments for Hermes Agent. It is not only trying to answer better. It is trying to operationalize experience.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Tool use is built into the agent identity
&lt;/h3&gt;

&lt;p&gt;The official documentation positions Hermes Agent as an agent with broad tool access, including web search, browsing, extraction, image generation, TTS, MCP support, and more than 60 built-in tools depending on configuration [2].&lt;/p&gt;

&lt;p&gt;This matters because real agentic work is almost never pure text generation. Useful systems need retrieval, execution, inspection, iteration, and output shaping. A good model alone is not enough. Hermes seems to understand that the value of an agent lies in the relationship between reasoning, memory, and tools.&lt;/p&gt;

&lt;p&gt;There is also a practical advantage here. Developers do not want a fragile stack where every new capability requires wiring together five more packages. Hermes Agent appears to reduce that setup burden by making tool use part of the default mental model rather than an advanced extension.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. It is designed to live outside the laptop
&lt;/h3&gt;

&lt;p&gt;One of the better ideas in the Hermes documentation is the insistence that the agent is not tied to a single laptop session. The docs explicitly frame Hermes as something that can run on a cheap VPS, a GPU cluster, or serverless infrastructure, while also connecting through platforms such as Telegram, Discord, Slack, WhatsApp, Teams, and more [2].&lt;/p&gt;

&lt;p&gt;That changes the type of projects developers can imagine. Instead of thinking only in terms of a command line assistant opened for a few minutes, it becomes easier to imagine background research agents, message-based task bots, or persistent personal infrastructure that can keep working while the user is away.&lt;/p&gt;

&lt;p&gt;A lot of agent products claim flexibility. Hermes Agent makes that flexibility feel architectural.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why developers should care
&lt;/h2&gt;

&lt;p&gt;The strongest reason to care about Hermes Agent is not hype. It is leverage.&lt;/p&gt;

&lt;p&gt;A developer usually does not need an AI tool that looks impressive for thirty seconds. A developer needs a system that can help with repeated workflows, multi-step tasks, context retention, and automation that survives beyond a single prompt window.&lt;/p&gt;

&lt;p&gt;Hermes Agent lines up well with that need in several areas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It supports persistent memory, which makes repeated use more valuable [2]&lt;/li&gt;
&lt;li&gt;It supports reusable skills, which can convert successful task patterns into future shortcuts [2][3]&lt;/li&gt;
&lt;li&gt;It supports multiple deployment environments, which opens the door to self-hosted and remote workflows [2]&lt;/li&gt;
&lt;li&gt;It supports many communication platforms and tool integrations, which makes it easier to bring the agent into real work channels instead of leaving it isolated in a terminal [2]&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That combination is what makes Hermes Agent interesting beyond the current agent trend cycle. It is built around continuity.&lt;/p&gt;

&lt;h2&gt;
  
  
  A practical use case: an automated research pipeline
&lt;/h2&gt;

&lt;p&gt;To make this concrete, consider a small automated research pipeline. This is the sort of project that fits both the challenge spirit and everyday developer needs.&lt;/p&gt;

&lt;p&gt;A basic research workflow usually involves the same sequence again and again:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Accept a topic or question&lt;/li&gt;
&lt;li&gt;Search for relevant sources&lt;/li&gt;
&lt;li&gt;Open and extract content from the strongest pages&lt;/li&gt;
&lt;li&gt;Compare claims across sources&lt;/li&gt;
&lt;li&gt;Summarize findings in a structured format&lt;/li&gt;
&lt;li&gt;Preserve useful patterns for later runs&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Hermes Agent is well suited to this type of workflow because it combines tool use, memory, and iterative reasoning. The official docs specifically highlight web search, browsing, extraction, memory, scheduled automations, and subagents for parallel workstreams as supported capabilities [2].&lt;/p&gt;

&lt;p&gt;That means a developer can imagine a workflow like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hermes receives a research prompt&lt;/li&gt;
&lt;li&gt;It searches the web using integrated tools&lt;/li&gt;
&lt;li&gt;It extracts content from relevant sources&lt;/li&gt;
&lt;li&gt;It writes a structured summary&lt;/li&gt;
&lt;li&gt;It stores notes about the format, source preferences, and common research patterns for future work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The interesting part is not just that Hermes can do each step. It is that the system is designed to improve the workflow over time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fast setup path
&lt;/h2&gt;

&lt;p&gt;The official installation flow is refreshingly direct. The docs provide a one-line install script for Linux, macOS, and WSL2, and they recommend &lt;code&gt;hermes setup --portal&lt;/code&gt; as the fastest path to a working agent with model access plus tool gateway features such as web search, image generation, TTS, and browser access [2].&lt;/p&gt;

&lt;p&gt;Here is a compact example setup flow.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
hermes setup &lt;span class="nt"&gt;--portal&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That installation story matters more than people admit. In fast-moving AI tooling, the difference between curiosity and abandonment is often ten minutes of setup friction. Hermes Agent looks stronger here because the onboarding path is designed around getting to a usable system quickly [2].&lt;/p&gt;

&lt;h2&gt;
  
  
  A simple developer-oriented workflow
&lt;/h2&gt;

&lt;p&gt;Below is a lightweight conceptual setup for a research-focused Hermes workflow. It is intentionally short because the purpose is to show how approachable the structure can be.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;agent&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;research-agent&lt;/span&gt;
  &lt;span class="na"&gt;profile&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;technical-writer&lt;/span&gt;
  &lt;span class="na"&gt;memory&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;enabled&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="na"&gt;skills&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;enabled&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

&lt;span class="na"&gt;runtime&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;backend&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;local&lt;/span&gt;

&lt;span class="na"&gt;models&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;default&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;portal/default&lt;/span&gt;

&lt;span class="na"&gt;goals&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;Search for high-quality sources&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;Extract useful technical details&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;Summarize findings clearly&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;Reuse successful workflows later&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And here is the type of prompt that fits Hermes well:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hermes run research-agent &lt;span class="nt"&gt;--prompt&lt;/span&gt; &lt;span class="s2"&gt;"Research memory-augmented open source AI agents, compare core features, and draft a developer-friendly summary with practical examples."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This type of workflow plays to the platform's strengths. It is not just asking the model to write. It is asking the agent to search, organize, compare, retain, and evolve.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Hermes Agent feels stronger than many alternatives
&lt;/h2&gt;

&lt;p&gt;A lot of frameworks in the agent ecosystem are capable. That is worth stating clearly. There are several good options depending on whether someone wants orchestration, workflow control, coding support, or enterprise tooling.&lt;/p&gt;

&lt;p&gt;Still, Hermes Agent feels different in a few practical ways.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Area&lt;/th&gt;
&lt;th&gt;Why Hermes Agent stands out&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Memory&lt;/td&gt;
&lt;td&gt;Persistent cross-session memory is positioned as a core feature, not a plugin [2]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Skills&lt;/td&gt;
&lt;td&gt;Reusable procedural skills are central to the product identity [2][3]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deployment&lt;/td&gt;
&lt;td&gt;Local, Docker, SSH, Modal, and other backends are documented as supported paths [2]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Communication&lt;/td&gt;
&lt;td&gt;Hermes can connect to many messaging platforms, which expands real-world usage options [2]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Learning loop&lt;/td&gt;
&lt;td&gt;The built-in self-improvement story is more explicit than in many general-purpose frameworks [2][3]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That does not mean Hermes Agent is universally better. Some developers may still prefer lower-level orchestration frameworks if they want to custom-build every layer. Others may prefer vendor-specific ecosystems if they are deeply invested in a single cloud stack.&lt;/p&gt;

&lt;p&gt;But Hermes Agent makes a compelling case for developers who want a system that is usable now, extensible later, and architected around long-term improvement.&lt;/p&gt;

&lt;h2&gt;
  
  
  What kind of developer should try Hermes Agent
&lt;/h2&gt;

&lt;p&gt;Hermes Agent is especially attractive for a few categories of builders:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Developers who want to self-host or run agents on their own infrastructure [2]&lt;/li&gt;
&lt;li&gt;Builders interested in long-running assistants rather than one-session chat tools [2]&lt;/li&gt;
&lt;li&gt;People experimenting with research workflows, coding helpers, task bots, or messaging-based agents [2]&lt;/li&gt;
&lt;li&gt;Developers who care about reusable procedure, not just prompt output [2][3]&lt;/li&gt;
&lt;li&gt;Tinkerers who want an open system with MCP support and portable skills [2]&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last point matters a lot. A framework becomes much more interesting when it lets developers build systems that feel personal and durable. Hermes Agent seems designed for that mode of use.&lt;/p&gt;

&lt;h2&gt;
  
  
  The trade-offs to think about honestly
&lt;/h2&gt;

&lt;p&gt;A good technical post should not read like promotion. So it is worth talking about trade-offs.&lt;/p&gt;

&lt;p&gt;First, a system with memory, tools, multiple backends, and cross-platform integration will naturally be more complex than a simple chat interface. That complexity can be a strength, but it also raises the bar for understanding, debugging, and configuration.&lt;/p&gt;

&lt;p&gt;Second, the promise of self-improvement is powerful, but any learning system depends on the quality of the tasks, stored artifacts, and feedback loops around it. In other words, Hermes Agent may create better workflows over time, but that still requires thoughtful usage. Good systems amplify good practice. They do not remove the need for it.&lt;/p&gt;

&lt;p&gt;Third, the more ambitious the workflow, the more important observability becomes. If an agent searches, extracts, remembers, and adapts, developers need to inspect what it did and why. That is not a Hermes-only issue. It is a general truth of agent engineering.&lt;/p&gt;

&lt;p&gt;These are not reasons to avoid Hermes Agent. They are reasons to approach it like infrastructure rather than magic.&lt;/p&gt;

&lt;h2&gt;
  
  
  What makes a strong DEV challenge post
&lt;/h2&gt;

&lt;p&gt;Since this article is also a challenge submission, it is worth stepping back and asking what kind of Hermes post is likely to perform well with readers and judges.&lt;/p&gt;

&lt;p&gt;The official challenge rules say the write track is judged on clarity and depth of explanation, originality of perspective or insight, practical value to the community, and quality of writing [1]. That means the strongest posts will probably do three things well:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Teach something concrete&lt;/li&gt;
&lt;li&gt;Offer a distinct point of view&lt;/li&gt;
&lt;li&gt;Stay readable for developers who are curious but not yet invested&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is why Hermes Agent is such a good subject for writing. It naturally supports several strong angles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A setup guide for local or VPS deployment&lt;/li&gt;
&lt;li&gt;A breakdown of the memory and skills model&lt;/li&gt;
&lt;li&gt;A comparison against other agent approaches&lt;/li&gt;
&lt;li&gt;A case study around a useful workflow like research, automation, or coding assistance&lt;/li&gt;
&lt;li&gt;A broader essay on what persistent agents mean for developer tooling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For reach, the best post is usually not the most academic one. It is the one that gives readers enough technical substance to trust the writer while keeping the narrative clear enough that they actually finish it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Hermes Agent is worth watching
&lt;/h2&gt;

&lt;p&gt;There are many open source AI projects that generate excitement for a week and then disappear into a GitHub tab graveyard. Hermes Agent feels more durable because the core ideas behind it map onto real problems developers actually have.&lt;/p&gt;

&lt;p&gt;Developers need systems that remember, adapt, and integrate with tools. They need agents that can live outside a browser tab. They need workflows that become easier after the fifth run, not harder.&lt;/p&gt;

&lt;p&gt;Hermes Agent is interesting because it is trying to solve those exact problems. The official docs frame it as an autonomous agent with persistent memory, reusable skills, broad tool access, multiple runtime backends, and rich communication options across platforms [2]. That is not a small ambition, but it is the right ambition.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;Hermes Agent stands out because it treats agency as a systems problem, not just a prompting trick. Memory, skills, execution environments, communication channels, and tool access are all part of the same product story [2].&lt;/p&gt;

&lt;p&gt;That makes it one of the more practical open source agent projects to study right now. Not because it promises magic, but because it is built around the idea that useful agents should improve with experience, persist across contexts, and fit into the way developers actually work [2][3].&lt;/p&gt;

&lt;p&gt;For developers exploring open source agent frameworks in 2026, Hermes Agent looks less like a passing novelty and more like a serious attempt at building software that can keep getting better after the first run [2][3].&lt;/p&gt;

&lt;h2&gt;
  
  
  Useful links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Challenge page: &lt;a href="https://dev.to/challenges/hermes-agent-2026-05-15"&gt;Hermes Agent Challenge&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Official rules: &lt;a href="https://dev.to/page/hermes-agent-challenge-2026-05-15-contest-rules"&gt;Hermes Agent Challenge Contest Rules&lt;/a&gt; [1]&lt;/li&gt;
&lt;li&gt;Documentation: &lt;a href="https://hermes-agent.nousresearch.com/docs/" rel="noopener noreferrer"&gt;Hermes Agent Docs&lt;/a&gt; [2]&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/NousResearch/hermes-agent" rel="noopener noreferrer"&gt;NousResearch/hermes-agent&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub profile: &lt;a href="https://github.com/SoumyaEXE" rel="noopener noreferrer"&gt;SoumyaEXE&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Portfolio: &lt;a href="https://isoumya.xyz" rel="noopener noreferrer"&gt;isoumya.xyz&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;LinkedIn: &lt;a href="https://www.linkedin.com/in/isoumyadeyy/" rel="noopener noreferrer"&gt;Soumya Dey&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>hermesagentchallenge</category>
      <category>devchallenge</category>
      <category>agents</category>
      <category>github</category>
    </item>
    <item>
      <title>Your AI agent has amnesia. You've just normalized it.</title>
      <dc:creator>Soumyadeep Dey </dc:creator>
      <pubDate>Sat, 23 May 2026 17:44:06 +0000</pubDate>
      <link>https://dev.to/soumyadeepdey/your-ai-agent-has-amnesia-youve-just-normalized-it-40bj</link>
      <guid>https://dev.to/soumyadeepdey/your-ai-agent-has-amnesia-youve-just-normalized-it-40bj</guid>
      <description>&lt;p&gt;Three hackathons in three months. Three different agent setups. Three times I wrote a system prompt that said something like "you are a helpful assistant that can use tools and reason across steps." Three times I shipped something, closed the terminal, and the agent forgot everything it had ever done.&lt;/p&gt;

&lt;p&gt;I didn't think of it as a problem. I thought of it as just how agents work.&lt;/p&gt;

&lt;p&gt;That's the part worth interrogating.&lt;/p&gt;




&lt;p&gt;There's a normalization happening in how we build with AI. We've collectively agreed that agents are stateless, that every session starts cold, that the "memory" problem is either solved by shoving things into a context window or punted to some RAG pipeline you bolt on after the fact. We treat amnesia as a default and then we build around it. Bigger context windows. Better prompts. Smarter retrieval.&lt;/p&gt;

&lt;p&gt;But none of that solves the actual problem, which is: the agent isn't getting better at working with you specifically. It's not accumulating judgment. It's not noticing that you always want JSON back, or that your last three API integrations broke on rate limits, or that you prefer terse explanations over verbose ones. Every session, you re-establish who you are. Every session, the agent starts from scratch.&lt;/p&gt;

&lt;p&gt;That's not intelligence. That's a very fast amnesiac with a lot of knowledge.&lt;/p&gt;




&lt;p&gt;The thing that made me stop and actually think was this line from Hermes Agent's README:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The self-improving AI agent... it creates skills from experience, improves them during use, nudges itself to persist knowledge, searches its own past conversations, and builds a deepening model of who you are across sessions."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Not "we have a memory feature." Not "long-term context support." Skills from experience. A deepening model of who you are.&lt;/p&gt;

&lt;p&gt;That's a different claim. And it's architectural, not cosmetic.&lt;/p&gt;

&lt;p&gt;When Hermes completes a task, it can crystallise what it did into a reusable skill, tag it, store it, and pull from it next time a similar problem comes up. The first time you ask it to do something gnarly, it figures it out. By the third time, it's refined the approach. This is not a context window trick. The learning loop is built into the agent itself.&lt;/p&gt;




&lt;p&gt;Here's a concrete thing to sit with: imagine you're onboarding a junior developer. Day one, you explain your codebase, your conventions, your preferences. Day two, they remember. Day thirty, they're fast because they've internalized how you work. Now imagine that junior dev reset every morning with zero memory of the previous day. You'd re-onboard them every single time. You'd eventually stop delegating anything non-trivial because the overhead is too high.&lt;/p&gt;

&lt;p&gt;That's what most of us are doing with agents right now, and calling it "agentic AI."&lt;/p&gt;

&lt;p&gt;Hermes Agent is at least trying to solve the actual problem instead of building better workarounds for it.&lt;/p&gt;




&lt;p&gt;The model-agnostic architecture is worth one paragraph because it doesn't get enough attention. Hermes runs on anything: Claude, GPT-4o, Gemini, 200+ models through OpenRouter, your own endpoint. Switch models with &lt;code&gt;hermes model&lt;/code&gt;, no code changes. This matters less as a convenience feature and more as a philosophical stance. The model is not the agent. The learning loop, the skill library, the memory system, the planning layer: those are the agent. The model is just the reasoning engine you slot in. When the next frontier model drops in six months and blows the current one out of the water, Hermes users swap it in with one command. Everyone building on a single-model API foundation has to rearchitect.&lt;/p&gt;




&lt;p&gt;The infrastructure story also compounds with everything above. You can run this on a $5 VPS. Not "you can try it on a $5 VPS before you upgrade," actually run it there. The serverless option means you're paying essentially nothing when it's idle. You can message it from Telegram while it does work on a cloud machine. That's not a demo feature, it's a deployment story that actually works outside your laptop.&lt;/p&gt;




&lt;p&gt;I want to be honest: I haven't run Hermes for six months and watched it compound knowledge into something that feels like a real collaborator. Neither has basically anyone outside the Nous Research team. The learning loop architecture is genuinely interesting but the proof will be in sustained use cases, and those take time to surface.&lt;/p&gt;

&lt;p&gt;But here's what I do know: the agents I've built and shipped have all hit the same ceiling. They can reason well within a session. They fall apart across sessions. Every improvement I made was either a bigger context window, a more detailed system prompt, or a retrieval system I had to design and maintain separately. None of it made the agent better at working with me. I was compensating for statelessness, not solving it.&lt;/p&gt;

&lt;p&gt;Hermes Agent is trying to solve it. The architecture is open source, the model layer is swappable, and the whole thing runs on infrastructure you control.&lt;/p&gt;

&lt;p&gt;In a space where most "agents" are prompt chains with an API call attached, that's worth taking seriously.&lt;/p&gt;




&lt;p&gt;&lt;code&gt;[NousResearch/hermes-agent](https://github.com/NousResearch/hermes-agent)&lt;/code&gt; on GitHub. Quickstart video is linked in the docs. Worth an afternoon.&lt;/p&gt;

</description>
      <category>hermesagentchallenge</category>
      <category>agents</category>
      <category>ai</category>
      <category>devchallenge</category>
    </item>
    <item>
      <title>Gemma 4 Has Four Variants. Here's How to Pick the Right One Before You Write a Single Line of Code.</title>
      <dc:creator>Soumyadeep Dey </dc:creator>
      <pubDate>Sat, 23 May 2026 16:46:16 +0000</pubDate>
      <link>https://dev.to/soumyadeepdey/gemma-4-has-four-variants-heres-how-to-pick-the-right-one-before-you-write-a-single-line-of-code-4f9d</link>
      <guid>https://dev.to/soumyadeepdey/gemma-4-has-four-variants-heres-how-to-pick-the-right-one-before-you-write-a-single-line-of-code-4f9d</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/google-gemma-2026-05-06"&gt;Gemma 4 Challenge: Write About Gemma 4&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;The single most common mistake developers make when picking a local model is choosing based on benchmark scores. The second most common mistake is choosing based on what fits in VRAM.&lt;/p&gt;

&lt;p&gt;Both of those things matter. But neither one is the actual first question.&lt;/p&gt;

&lt;p&gt;The actual first question is: &lt;strong&gt;where does your model need to live, and what does it need to do there?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Gemma 4 ships in four variants - E2B, E4B, 26B A4B (MoE), and 31B - and Google made very deliberate architectural choices for each one. If you understand those choices, picking the right variant takes about five minutes. If you skip that step and benchmark-shop, you'll end up either underbuilding (a phone-ready E4B doing work that needs 256K context) or overbuilding (a 31B model sitting on $80/month of cloud compute when an E4B running locally would have been fine).&lt;/p&gt;

&lt;p&gt;This post is that five-minute decision guide.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Gemma 4 Actually Is
&lt;/h2&gt;

&lt;p&gt;Released on April 2, 2026 under Apache 2.0, Gemma 4 is Google DeepMind's latest open-weight model family. Every variant ships with multimodal understanding (text + image as baseline, audio natively on the two smallest models), native function calling, and support for over 140 languages.&lt;/p&gt;

&lt;p&gt;The headline capability that separates Gemma 4 from previous generations isn't any single feature. It's the intelligence-per-parameter ratio. The 26B MoE model only activates roughly 4B parameters per forward pass. The E4B runs on a phone. The 31B scores 89.2% on AIME 2026 math benchmarks - a score that would have required a model several times larger just a year ago.&lt;/p&gt;

&lt;p&gt;The architecture decisions that make this possible:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Alternating local/global attention layers (local layers use sliding windows of 512-1024 tokens, global layers handle long-range context)&lt;/li&gt;
&lt;li&gt;Per-Layer Embeddings (PLE) on the edge variants, which keeps the parameter count low while maintaining expressivity&lt;/li&gt;
&lt;li&gt;Mixture-of-Experts on the 26B that routes each token through only the relevant expert layers, not the full network&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This isn't just efficiency for efficiency's sake. It's what allows a 4-billion-parameter model to run offline on an Android phone with 4GB of RAM while still having a 128K context window. That combination didn't exist before.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Four Variants, Actually Explained
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Gemma 4 E2B - The Phone Model
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;~2.3B effective parameters, ~5.1B total with PLE, 35 layers, 128K context&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the model you reach for when the edge is the deployment target. It runs on Android 12+ via Google AICore, on Raspberry Pi, and on Jetson devices. It supports text, image, and audio natively.&lt;/p&gt;

&lt;p&gt;The "E" in the name stands for effective - because PLE means the model has more total parameters than it activates per forward pass, similar to how MoE works at a different level of the architecture. The practical result is a 1.5GB footprint with capabilities that land well above what a raw 2B parameter count would suggest.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use E2B when:&lt;/strong&gt; you're building a mobile app, an edge inference pipeline, a device-local assistant, or anything where network latency or data privacy makes sending requests to a remote API unacceptable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real use case:&lt;/strong&gt; a receipt-scanning expense tracker that runs fully offline, reads image input, parses line items, and categorizes spending - all on device, no API call, no data leaving the phone.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Running E2B locally with transformers
&lt;/span&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;transformers&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;AutoTokenizer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;AutoModelForCausalLM&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt;

&lt;span class="n"&gt;model_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;google/gemma-4-E2B-it&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;tokenizer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AutoTokenizer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AutoModelForCausalLM&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;torch_dtype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bfloat16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;device_map&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;auto&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;messages&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Extract the total amount and vendor name from this receipt text: ...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;inputs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tokenizer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;apply_chat_template&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;return_tensors&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;return_dict&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;
&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;to&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;device&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;no_grad&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;outputs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;inputs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;max_new_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;256&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tokenizer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;outputs&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;span class="n"&gt;inputs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;input_ids&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]:],&lt;/span&gt; &lt;span class="n"&gt;skip_special_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Gemma 4 E4B - The Laptop Model
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;~4.5B effective parameters, ~8B total, 42 layers, 128K context&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the everyday workhorse for developers who want to run a capable model locally without dedicated GPU hardware. It runs comfortably on a MacBook with 16GB unified memory, on a mid-range laptop with an integrated GPU, and on any machine where you'd rather not spin up a cloud instance.&lt;/p&gt;

&lt;p&gt;The jump from E2B to E4B isn't just more parameters. The additional layers and parameter budget give it noticeably better instruction following, more reliable structured output, and stronger performance on tasks that require holding context across a long conversation.&lt;/p&gt;

&lt;p&gt;It supports the same text, image, and audio modalities as E2B, which makes it genuinely multimodal in a way that matters for developer tooling - you can feed it screenshots, diagrams, or audio transcripts as part of a pipeline without needing a separate vision model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use E4B when:&lt;/strong&gt; local inference is the requirement, your hardware doesn't have a discrete GPU, or you're prototyping something you'll later scale to a larger model and want fast iteration cycles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real use case:&lt;/strong&gt; a local code review tool that takes a screenshot of your editor alongside the diff, understands both, and gives context-aware feedback - all running on your laptop, no telemetry.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Quick Ollama setup for E4B (easiest local path)
# After installing Ollama: https://ollama.com
&lt;/span&gt;
&lt;span class="c1"&gt;# In terminal:
# ollama pull gemma4:e4b
&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ollama&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ollama&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gemma4:e4b&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Review this function for edge cases and suggest improvements:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;temperature&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;num_ctx&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;8192&lt;/span&gt;  &lt;span class="c1"&gt;# can go up to 128K
&lt;/span&gt;    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;message&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Gemma 4 26B A4B (MoE) - The Consumer GPU Model
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;25.2B total parameters, ~3.8B active per forward pass, ~30 layers, 256K context&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the one that makes the architecture story interesting. The 26B MoE sounds like it needs 26 billion parameters worth of compute. It doesn't. Only about 4 billion parameters activate for each token, which means it runs on a single RTX 3090 or RTX 4090 at full precision while delivering quality that competes with much larger dense models.&lt;/p&gt;

&lt;p&gt;The jump to 256K context window is significant for developers. At 128K you can fit roughly a medium-sized codebase or a very long document. At 256K you're fitting large repositories, multi-document research contexts, or full conversation histories in customer-facing applications.&lt;/p&gt;

&lt;p&gt;The MoE architecture also means that quality degrades more gracefully with quantization than a dense model of equivalent total parameters would. INT4 at 26B MoE looks better than INT4 at a comparable dense model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use 26B A4B when:&lt;/strong&gt; you have a consumer GPU (24GB VRAM), need 256K context, and want near-flagship quality without flagship hardware costs. Also the right choice for anything agentic where the model needs to reason across large amounts of context to plan multi-step tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real use case:&lt;/strong&gt; an agentic document processor that ingests a full legal contract (or a full codebase) in a single prompt, reasons across the entire document, and extracts structured data or answers specific questions - running locally on a 4090.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Using the Gemma 4 26B with native function calling
&lt;/span&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;transformers&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;AutoTokenizer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;AutoModelForCausalLM&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;

&lt;span class="n"&gt;model_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;google/gemma-4-26B-A4B-it&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;tokenizer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AutoTokenizer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AutoModelForCausalLM&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;torch_dtype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bfloat16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;device_map&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;auto&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;load_in_4bit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;  &lt;span class="c1"&gt;# fits on 24GB with 4-bit quant
&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Native function calling - define your tools
&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;search_contracts&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;description&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Search the contract database by clause type or party name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;parameters&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;object&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;properties&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;query&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;string&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;description&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Search query&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;clause_type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;string&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;enum&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;liability&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;termination&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;payment&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;IP&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;description&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Type of clause to filter by&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
                &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;required&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;query&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;messages&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Find all termination clauses across the Q1 vendor contracts and summarize the notice periods.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;inputs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tokenizer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;apply_chat_template&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;return_tensors&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;return_dict&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;
&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;to&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;device&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;outputs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;inputs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;max_new_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;512&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tokenizer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;outputs&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;span class="n"&gt;inputs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;input_ids&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]:],&lt;/span&gt; &lt;span class="n"&gt;skip_special_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Gemma 4 31B - The Server Model
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;31 billion dense parameters, 256K context, full multimodal, thinking mode&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the flagship. Every capability available in the family is present here. Thinking mode (chain-of-thought reasoning) is enabled. Math benchmark scores are serious: 89.2% on AIME 2026, compared to Gemma 3 27B's 20.8% on the same benchmark. It sits at #3 on the Arena open model leaderboard.&lt;/p&gt;

&lt;p&gt;It requires ~20GB VRAM at FP16, or ~12GB with INT4 quantization. A single A100 80GB handles it comfortably at full precision. Two RTX 4090s with tensor parallelism also work. This is the model you deploy to a server, not run on a laptop.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use 31B when:&lt;/strong&gt; benchmark quality matters for your application, you need thinking mode for reasoning-heavy tasks, you're building a production service that will handle requests from multiple users, or you need the best math and coding performance available in an open-weight model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real use case:&lt;/strong&gt; a coding assistant API that developers on your team query through a self-hosted endpoint - one 31B instance serving your whole engineering org at a cost that's a fraction of equivalent proprietary API calls.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Serving 31B with vLLM for production throughput
# pip install vllm
&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;vllm&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;LLM&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;SamplingParams&lt;/span&gt;

&lt;span class="n"&gt;llm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;LLM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;google/gemma-4-31B-it&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;tensor_parallel_size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="c1"&gt;# across 2x RTX 4090
&lt;/span&gt;    &lt;span class="n"&gt;dtype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;bfloat16&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_model_len&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;65536&lt;/span&gt;        &lt;span class="c1"&gt;# 64K for production balance
&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;sampling_params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;SamplingParams&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;temperature&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;top_p&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2048&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Thinking mode for complex reasoning
&lt;/span&gt;&lt;span class="n"&gt;prompts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;start_of_turn&amp;gt;user&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;Think step by step: Given this algorithm, what&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;s the worst-case time complexity and where is the bottleneck?&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s"&gt;[your code here]&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;end_of_turn&amp;gt;&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;start_of_turn&amp;gt;model&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;outputs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;llm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompts&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sampling_params&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;output&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;outputs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;outputs&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;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The Decision Matrix
&lt;/h2&gt;

&lt;p&gt;Here's the five-minute version:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Situation&lt;/th&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Mobile app, Raspberry Pi, offline-first&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;E2B&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Laptop development, no GPU, fast iteration&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;E4B&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Consumer GPU (24GB), 256K context needed&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;26B A4B MoE&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Server deployment, best quality, team-serving&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;31B&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Agentic pipeline with many tool calls&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;26B A4B MoE&lt;/strong&gt; (active param efficiency)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Math, coding, or reasoning-heavy production&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;31B&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Privacy-sensitive user data, no API calls&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;E4B or E2B&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;You have an A100 and want the best&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;31B&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  The Bigger Thing Happening Here
&lt;/h2&gt;

&lt;p&gt;I want to step back from the specs for a second.&lt;/p&gt;

&lt;p&gt;A model that scores 89.2% on a serious math benchmark, supports 256K context, runs multimodal inference, and has native function calling for agentic tasks... is now open-weight, Apache 2.0, and runs on hardware that a developer can actually own.&lt;/p&gt;

&lt;p&gt;The E4B running on a laptop with 128K context and audio support isn't a "small model compromise." It's a capability that would have been frontier-level two years ago. The E2B running on a phone offline isn't a demo trick. It's a production-viable deployment target.&lt;/p&gt;

&lt;p&gt;What that actually means is that the architectural question of "cloud or local?" is no longer primarily a capability question. It's a cost, latency, and privacy question. And for a lot of applications - the ones where user data is sensitive, where offline availability matters, where API costs compound at scale - local wins.&lt;/p&gt;

&lt;p&gt;Gemma 4 doesn't make that argument. It just makes it very hard to argue against.&lt;/p&gt;




&lt;h2&gt;
  
  
  Getting Started in Under 5 Minutes
&lt;/h2&gt;

&lt;p&gt;The fastest path to running any Gemma 4 variant locally is Ollama:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install Ollama (macOS/Linux)&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://ollama.com/install.sh | sh

&lt;span class="c"&gt;# Pull the variant you want&lt;/span&gt;
ollama pull gemma4:e4b     &lt;span class="c"&gt;# ~5GB, laptop-ready&lt;/span&gt;
ollama pull gemma4:26b     &lt;span class="c"&gt;# ~15GB, GPU-ready&lt;/span&gt;

&lt;span class="c"&gt;# Run it&lt;/span&gt;
ollama run gemma4:e4b

&lt;span class="c"&gt;# Or use the API directly&lt;/span&gt;
curl http://localhost:11434/api/chat &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
  "model": "gemma4:e4b",
  "messages": [
    { "role": "user", "content": "Hello, what can you do?" }
  ]
}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you want Python with the full transformers ecosystem (function calling, thinking mode, multimodal), the Hugging Face model cards for each variant have complete working examples. Start with &lt;code&gt;google/gemma-4-E4B-it&lt;/code&gt; - it's the most accessible entry point and covers most development use cases.&lt;/p&gt;




&lt;h2&gt;
  
  
  Quick Note on Licensing
&lt;/h2&gt;

&lt;p&gt;Apache 2.0 means you can use Gemma 4 commercially, modify the weights, build products on top of it, and distribute your derivative work - without paying royalties or asking permission. That is not the case for every "open" model out there, and it matters a lot for anyone building a business on top of local inference.&lt;/p&gt;




&lt;p&gt;The right Gemma 4 variant is the one that runs where your users are, fits the hardware you can actually provision, and has enough context to do the task you're designing for. Everything else is optimization.&lt;/p&gt;

&lt;p&gt;Start with E4B if you're unsure. Scale up when the task demands it.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;code&gt;devchallenge&lt;/code&gt; &lt;code&gt;gemmachallenge&lt;/code&gt; &lt;code&gt;gemma&lt;/code&gt; &lt;code&gt;ai&lt;/code&gt; &lt;code&gt;machinelearning&lt;/code&gt; &lt;code&gt;python&lt;/code&gt; &lt;code&gt;opensource&lt;/code&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>gemmachallenge</category>
      <category>gemma</category>
    </item>
    <item>
      <title>What Is WebMCP? The Google I/O 2026 Web Standard That Changes AI Agent Tool Use</title>
      <dc:creator>Soumyadeep Dey </dc:creator>
      <pubDate>Sat, 23 May 2026 16:39:52 +0000</pubDate>
      <link>https://dev.to/soumyadeepdey/why-webmcp-is-the-most-important-thing-google-announced-at-io-2026-and-nobodys-talking-about-it-2edf</link>
      <guid>https://dev.to/soumyadeepdey/why-webmcp-is-the-most-important-thing-google-announced-at-io-2026-and-nobodys-talking-about-it-2edf</guid>
      <description>&lt;p&gt;&lt;em&gt;A first-look at the most underreported thing to come out of Google I/O 2026&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;I was watching the Google I/O 2026 Developer Keynote on my laptop at 11:30 PM with a cup of cold chai. Gemini 3.5 Flash landed. Antigravity 2.0 got a standing ovation. The smart glasses got the screenshots. Everyone was talking about Gemini Omni.&lt;/p&gt;

&lt;p&gt;And then, buried between slide 40 and a code snippet, a presenter said the words &lt;em&gt;"WebMCP."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I sat up straight. I replayed that section three times.&lt;/p&gt;

&lt;p&gt;Here is why.&lt;/p&gt;




&lt;h2&gt;
  
  
  A little context on what I'm building
&lt;/h2&gt;

&lt;p&gt;For the past few months I've been working on a sales platform that stitches together an omnichannel inbox (Chatwoot) with a generative UI layer inside chat. The core problem is this: sales agents need to close deals inside conversations, not by jumping between five tabs. I want the chat widget itself to become the deal-closing surface - surfacing interactive UI components, pulling CRM context, letting a buyer sign a proposal &lt;em&gt;inside the chat thread&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The hardest unsolved piece of that puzzle has always been: how do you let an AI agent do something meaningful on a webpage without either (a) screen-scraping like it's 2019, or (b) building a bespoke API integration for every single surface it needs to touch?&lt;/p&gt;

&lt;p&gt;WebMCP is Google's answer to that question. And it's a good one.&lt;/p&gt;




&lt;h2&gt;
  
  
  What WebMCP Actually Is
&lt;/h2&gt;

&lt;p&gt;WebMCP is a proposed open web standard that lets developers annotate their JavaScript functions and HTML forms so that browser-based AI agents can call them directly as structured tools - with the same reliability you'd expect from a typed API, not from a model guessing where to click.&lt;/p&gt;

&lt;p&gt;Think of it as MCP, but for the open web. Regular MCP handles the vertical connections: agent to database, agent to file system, agent to third-party API. WebMCP handles the horizontal layer: agent to the website sitting in front of you right now.&lt;/p&gt;

&lt;p&gt;The origin trial starts in Chrome 149. Here is what the developer-side contract looks like conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// You annotate your JS functions with WebMCP metadata&lt;/span&gt;
&lt;span class="c1"&gt;// so agents know what they can call, what inputs they need,&lt;/span&gt;
&lt;span class="c1"&gt;// and what effect they'll produce&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;webmcpManifest&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;schedule_demo&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Books a product demo for a qualified lead&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;parameters&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;required&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;required&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="na"&gt;preferred_slot&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;enum&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;morning&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;afternoon&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;evening&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="na"&gt;handler&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;scheduleDemo&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;generate_proposal&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Creates a personalized pricing proposal and returns a preview URL&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;parameters&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;company_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;required&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="na"&gt;seats&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;number&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;required&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="na"&gt;plan&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;enum&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;starter&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;growth&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;enterprise&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="na"&gt;handler&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;generateProposal&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;// Register once. Any WebMCP-capable agent can now call these&lt;/span&gt;
&lt;span class="c1"&gt;// without scraping your DOM or guessing your form structure.&lt;/span&gt;
&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;__webmcp__&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;webmcpManifest&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent on the other end - whether it's Gemini in Chrome, an Antigravity subagent, or your own custom orchestrator - now has a reliable, developer-defined surface to work with. No brittle CSS selectors. No "find the button that looks like it submits the form." Just a typed function call.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Matters More Than It Looks
&lt;/h2&gt;

&lt;p&gt;Here is the frame I keep coming back to: &lt;strong&gt;every website becomes a tool&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Right now, when you build an AI agent that needs to do anything on the web, you have two bad options and one expensive option.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bad option 1&lt;/strong&gt; is prompt the model to act like a browser automation script. You're essentially doing Playwright-via-LLM, which works until a div gets renamed and your entire pipeline breaks silently at 2 AM.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bad option 2&lt;/strong&gt; is write a bespoke connector for every website or service you want the agent to interact with. Fine for the five services you use every day. Not fine for the long tail of things your users will eventually ask your agent to handle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The expensive option&lt;/strong&gt; is to build everything in-house, behind your own API, so the agent only ever talks to surfaces you control. This is what most serious teams do. It scales, but it costs months.&lt;/p&gt;

&lt;p&gt;WebMCP opens a fourth path: the website author defines the agent interface themselves, once, as part of their normal development work. You annotate the functions that make sense to expose. You describe what they do. You ship it as part of your site. From that point forward, any agent with WebMCP support can call those functions correctly - without you writing a new connector, and without the agent guessing.&lt;/p&gt;

&lt;p&gt;The protocol also composes cleanly with the rest of the stack Google laid out this year:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;MCP&lt;/strong&gt; handles agent-to-infrastructure connections (databases, APIs, file systems)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A2A&lt;/strong&gt; handles agent-to-agent coordination across vendors&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WebMCP&lt;/strong&gt; handles agent-to-website interaction in the browser&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Three protocols, three layers, one coherent answer to "how does an agent actually do things in the real world?"&lt;/p&gt;




&lt;h2&gt;
  
  
  The Angle Nobody Is Talking About
&lt;/h2&gt;

&lt;p&gt;Most I/O coverage framed WebMCP as a tool for making AI assistants more useful to end users. Fair. But I think the more interesting frame is what it does for &lt;em&gt;developers building agentic products&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;If I'm building the sales platform I described above, WebMCP means that instead of my agentic layer needing to "know" how to use each tool on the page through brittle DOM inspection, I can define those tools explicitly as part of my product. My checkout flow, my proposal generator, my slot-booking widget - they're all first-class agent interfaces the moment I annotate them.&lt;/p&gt;

&lt;p&gt;The generative UI layer I was building with Tambo (the agentic React UI toolkit) suddenly has a much cleaner answer to "how does the agent actually trigger actions?" instead of "it passes props and hopes for the best." The agent calls a WebMCP-registered tool. The tool fires a handler. The handler updates state. The UI responds.&lt;/p&gt;

&lt;p&gt;That is a clean, auditable, testable loop. That matters when you are building something real, not a demo.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I'm Watching Next
&lt;/h2&gt;

&lt;p&gt;A few things I'm paying close attention to as WebMCP moves through the origin trial:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security boundaries.&lt;/strong&gt; Right now the spec assumes the website author is intentional about what they expose. But as soon as agent-browsing becomes mainstream, you'll see adversarial cases: pages that register fake tools designed to manipulate agents into taking actions users didn't intend. The security model around what a WebMCP tool is "allowed" to do on behalf of a user needs to be tight before this goes anywhere near financial or identity workflows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cross-browser adoption.&lt;/strong&gt; This is proposed by Google and Microsoft engineers under the W3C Web Machine Learning community group - which is a good sign for eventual cross-browser support. But Chrome 149 origin trials don't mean it's in Firefox next quarter. For developers building agent-facing products today, you'll need fallback strategies for a while.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Standardization lag vs. tooling speed.&lt;/strong&gt; The web standards process moves on a timescale that AI tooling doesn't. By the time WebMCP is a full W3C Recommendation, the agent landscape will have changed dramatically. Google's bet here is that shipping an origin trial fast and getting real-world feedback is worth more than waiting for perfect committee consensus. I think that bet is correct.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Bigger Shift Underneath All of It
&lt;/h2&gt;

&lt;p&gt;There was a line in the keynote that I keep turning over in my head: &lt;em&gt;"We've transitioned from AI that simply assists you, to agents that can independently navigate complex tasks across your entire workflow."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That is a product vision, not a product feature. And WebMCP is one of the infrastructure pieces that makes that vision non-fictional.&lt;/p&gt;

&lt;p&gt;The assistive AI era had a ceiling: the model could help you think, draft, and plan, but doing required a human in the loop who could actually click the button, fill the form, and trigger the action. The agentic era removes that ceiling - but only if agents can interact with the web in a way that's reliable enough to trust in production.&lt;/p&gt;

&lt;p&gt;WebMCP is a small, well-scoped proposal. It doesn't solve everything. But it solves the exact right problem at the exact right layer: giving website developers a first-class way to say "here is what an agent is allowed to do on this page, and here is how to do it correctly."&lt;/p&gt;

&lt;p&gt;For anyone building agentic products on the web, that is not a quiet announcement. That is the foundation you were waiting for.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If you're building something that sits at the intersection of AI agents and web UIs, I'd genuinely love to compare notes. Drop a comment or find me at my usual haunts.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;code&gt;googleiochallenge&lt;/code&gt; &lt;code&gt;webdev&lt;/code&gt; &lt;code&gt;ai&lt;/code&gt; &lt;code&gt;javascript&lt;/code&gt; &lt;code&gt;webstandards&lt;/code&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>googleiochallenge</category>
    </item>
    <item>
      <title>I built a fully interactive 3D Solar System you can explore right from your browser.</title>
      <dc:creator>Soumyadeep Dey </dc:creator>
      <pubDate>Sat, 16 Aug 2025 13:55:40 +0000</pubDate>
      <link>https://dev.to/soumyadeepdey/explore-the-universe-my-3d-solar-system-with-threejs-vite-4ldj</link>
      <guid>https://dev.to/soumyadeepdey/explore-the-universe-my-3d-solar-system-with-threejs-vite-4ldj</guid>
      <description>&lt;h2&gt;
  
  
  🪐 Explore the Cosmos from Your Browser
&lt;/h2&gt;

&lt;p&gt;I’m stoked to share my recent project: &lt;strong&gt;3D Solar System Simulation&lt;/strong&gt;, crafted with &lt;strong&gt;Three.js&lt;/strong&gt; and accelerated with &lt;strong&gt;Vite&lt;/strong&gt;! Tap into the wonders of our cosmic neighborhood through your screen—no telescopes needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔗 Check out the live project below:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://3d-solar-system-three-js.vercel.app/" rel="noopener noreferrer"&gt;https://3d-solar-system-three-js.vercel.app/&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  📸 Gallery Snapshot
&lt;/h2&gt;

&lt;p&gt;
  &lt;a href="https://postimg.cc/PLcg3QKh" rel="noopener noreferrer"&gt;
    &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.postimg.cc%2FfLTMbH93%2Flocalhost-5173-High-Res.png" alt="3D solar system preview" width="800" height="450"&gt;
  &lt;/a&gt;
&lt;/p&gt;  




&lt;h2&gt;
  
  
  💡 Why I Built It
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;To visualize planetary orbits, rotations, and atmospheres in real-time&lt;/li&gt;
&lt;li&gt;To flex the power of Three.js combined with modern tooling like Vite&lt;/li&gt;
&lt;li&gt;To experiment with interactive controls and responsive design&lt;/li&gt;
&lt;li&gt;To have a fun showcase for learning and collaboration&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚀 Project Highlights
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Realistic 3D models&lt;/strong&gt; of the Sun, planets, dwarf planets, and moons&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smooth orbit animations&lt;/strong&gt; combined with planet rotations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scaled visuals&lt;/strong&gt; for better clarity and navigation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Full interaction&lt;/strong&gt; via mouse: orbit, zoom, and pan&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modern tooling&lt;/strong&gt; with Vite for blazing-fast development&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mobile-friendly&lt;/strong&gt; interface with responsive scaling&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🛠 Behind the Scenes
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;3d-Solar-System-ThreeJS/
├── public/
│   └── textures/             # Planet &amp;amp; celestial textures
├── src/
│   ├── main.js               # Core rendering logic
│   └── additional modules... # Planet classes, UI controls, etc.
├── index.html
├── package.json
├── vite.config.js
└── README.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ⚡ Installation &amp;amp; Local Run
&lt;/h2&gt;

&lt;p&gt;Clone and run locally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/SoumyaEXE/3d-Solar-System-ThreeJS.git
&lt;span class="nb"&gt;cd &lt;/span&gt;3d-solar-system-three-js
npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then visit&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;http://localhost:5173
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To build a production version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  📚 What I Learned
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Skill&lt;/th&gt;
&lt;th&gt;Takeaway&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Three.js fundamentals&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Scene setup, camera controls, mesh rendering&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Animation techniques&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Smooth orbits &amp;amp; rotations using &lt;code&gt;requestAnimationFrame&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Performance tuning&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Optimized for smoother animations with Vite&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Responsive design&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;UI/UIX that works seamlessly across devices&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🌌 Join the Journey
&lt;/h2&gt;

&lt;p&gt;I’d love your thoughts! Let me know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What features you’d like added next&lt;/li&gt;
&lt;li&gt;How the scaling feels on mobile&lt;/li&gt;
&lt;li&gt;Any performance hiccups you spotted&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Don’t forget to ⭐ the repo if you enjoy the simulation — and open an issue or PR if you want to contribute!&lt;/p&gt;




&lt;h2&gt;
  
  
  🔗 Related Projects &amp;amp; Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://threejs.org/examples/" rel="noopener noreferrer"&gt;Three.js Examples&lt;/a&gt; — official showcase&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://threejs.org/docs/" rel="noopener noreferrer"&gt;Three.js Documentation&lt;/a&gt; — API deep dive&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://vitejs.dev/" rel="noopener noreferrer"&gt;Vite&lt;/a&gt; — next-gen frontend tooling&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Thanks for exploring with me!&lt;br&gt;
&lt;strong&gt;— Soumya&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>vibecoding</category>
      <category>vite</category>
      <category>coding</category>
    </item>
    <item>
      <title>What Is Vibe Coding? How To Do It In 2025</title>
      <dc:creator>Soumyadeep Dey </dc:creator>
      <pubDate>Sat, 12 Jul 2025 07:00:25 +0000</pubDate>
      <link>https://dev.to/soumyadeepdey/what-is-vibe-coding-how-to-do-it-4e9j</link>
      <guid>https://dev.to/soumyadeepdey/what-is-vibe-coding-how-to-do-it-4e9j</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;🧑‍💻 &lt;strong&gt;Follow me on GitHub&lt;/strong&gt; for more experiments, tools, and guides: &lt;a href="https://github.com/SoumyaEXE" rel="noopener noreferrer"&gt;github.com/SoumyaEXE&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;What if you could skip the boilerplate and just say what you want your app to do?&lt;/p&gt;

&lt;p&gt;That’s &lt;strong&gt;vibe coding&lt;/strong&gt;—a 2025 workflow where you build web apps, prototypes, and backend APIs using plain English. Whether you’re a pro developer tired of repetitive tasks or a beginner with big ideas, vibe coding changes how you ship.&lt;/p&gt;

&lt;p&gt;This article breaks down what vibe coding is, how it works, tools to try, and how GitHub plays a major role in your AI-powered workflow.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔍 What Is Vibe Coding?
&lt;/h2&gt;

&lt;p&gt;Vibe coding is building software by describing your app, component, or logic in natural language. Tools like &lt;strong&gt;Cursor&lt;/strong&gt;, &lt;strong&gt;Claude Code&lt;/strong&gt;, or &lt;strong&gt;Replit AI&lt;/strong&gt; translate your intent into code. GitHub Copilot and Vercel’s AI SDKs are integrating this even deeper into production-ready workflows.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🧠 &lt;em&gt;“The hottest new programming language is English.”&lt;/em&gt; — Andrej Karpathy&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Vibe coding isn't just code generation—it's &lt;strong&gt;iteration + intention + automation&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚡ Why Developers (and Non-Devs) Love It
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;🧑‍🎓 Beginners:&lt;/strong&gt; Build apps with zero syntax knowledge&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;💼 Professionals:&lt;/strong&gt; Skip boilerplate, test logic fast&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;⏱️ Everyone:&lt;/strong&gt; Launch MVPs in hours, not weeks&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🛠️ Tools for Vibe Coding in 2025
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;What it’s good for&lt;/th&gt;
&lt;th&gt;GitHub Integration&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cursor&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Code generation in VS Code&lt;/td&gt;
&lt;td&gt;✅ Commits + Copilot sync&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Claude Code&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Complex structured logic via prompts&lt;/td&gt;
&lt;td&gt;❌ Manual export&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Replit AI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Full-stack in-browser development&lt;/td&gt;
&lt;td&gt;✅ GitHub sync&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Vercel AI SDK&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Integrate AI responses in Next.js apps&lt;/td&gt;
&lt;td&gt;✅ Native&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Postman AI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;API testing &amp;amp; backend autogen&lt;/td&gt;
&lt;td&gt;✅ Push collections&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Want GitHub commits that make sense? Cursor and Replit are great for &lt;strong&gt;AI-generated commits&lt;/strong&gt;, clean histories, and Copilot X preview features.&lt;/p&gt;




&lt;h2&gt;
  
  
  ✍️ How to Vibe Code
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Write Specific Prompts
&lt;/h3&gt;

&lt;p&gt;Bad:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Make a website&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Good:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Build a dark-themed Next.js blog with a subscribe form and Markdown support.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Even better:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Create a TypeScript-based Next.js 14 app with Tailwind CSS. Add a newsletter form using Vercel’s Edge Functions and connect to a Notion DB.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  2. Test, Commit, Repeat
&lt;/h3&gt;

&lt;p&gt;Once the tool generates the code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run locally (&lt;code&gt;npm run dev&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Test features and endpoints&lt;/li&gt;
&lt;li&gt;Fix bugs via prompts&lt;/li&gt;
&lt;li&gt;Auto-commit to GitHub
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add &lt;span class="nb"&gt;.&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"✨ AI-generated landing page with Tailwind and form handling"&lt;/span&gt;
git push
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;AI even suggests commits now. Just review and approve.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. Use GitHub for Versioning + Deploying
&lt;/h3&gt;

&lt;p&gt;Every good AI project needs version control. Here's a simple Vercel-integrated flow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vercel init
vercel &lt;span class="nt"&gt;--prod&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Want preview links after every push? GitHub Actions + Vercel CI does it for you.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚨 Pitfalls to Avoid
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Problem&lt;/th&gt;
&lt;th&gt;Fix&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Vague prompts&lt;/td&gt;
&lt;td&gt;Be specific with structure + tech&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wrong framework&lt;/td&gt;
&lt;td&gt;Always mention your stack&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code doesn't run&lt;/td&gt;
&lt;td&gt;Use Replit or local dev server&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI bloats the code&lt;/td&gt;
&lt;td&gt;Refactor manually or with Copilot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Debugging is messy&lt;/td&gt;
&lt;td&gt;Break into smaller prompts&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🧪 Example Vibe Prompt (Backend + DB)
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;“Create an Express.js REST API with a /books route, connect it to a SQLite DB, and deploy it with Vercel Serverless Functions.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;⬇️ AI Output:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/api/books.js&lt;/code&gt; with CRUD routes
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;db.sqlite&lt;/code&gt; pre-seeded with sample data
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;vercel.json&lt;/code&gt; configured
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;.env&lt;/code&gt; support added
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All ready to deploy + preview live via GitHub commits.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔮 What’s Next?
&lt;/h2&gt;

&lt;p&gt;AI-driven workflows are becoming GitHub-native.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Copilot Workspace&lt;/strong&gt; is in preview
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Actions&lt;/strong&gt; trigger based on AI-generated code
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;aidd.io&lt;/strong&gt; is launching something major on &lt;strong&gt;July 15, 2025&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Get ready for AI-powered commit messages, automated PR descriptions, and test coverage reports—all from natural language.&lt;/p&gt;




&lt;h2&gt;
  
  
  💬 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Vibe coding is a real shift in how we build. You still need logic and structure, but AI handles the scaffolding.&lt;/p&gt;

&lt;p&gt;✅ Start small&lt;br&gt;&lt;br&gt;
✅ Be specific&lt;br&gt;&lt;br&gt;
✅ Use GitHub for backup and versioning&lt;br&gt;&lt;br&gt;
✅ Iterate fast  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Want to ship ideas without the grind? Vibe coding might be your new workflow.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  🔗 Stay in the Loop
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Follow me on &lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/SoumyaEXE" rel="noopener noreferrer"&gt;SoumyaEXE&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Leave a ❤️ if you vibe with this
&lt;/li&gt;
&lt;li&gt;Share your AI-generated repos in the comments!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;See you on the other side of the commit log 🚀&lt;/p&gt;




</description>
      <category>coding</category>
      <category>programming</category>
      <category>webdev</category>
      <category>github</category>
    </item>
    <item>
      <title>Top 10 Must-Know GitHub Repositories for Backend Developers (2025) 🔥</title>
      <dc:creator>Soumyadeep Dey </dc:creator>
      <pubDate>Sat, 12 Jul 2025 06:43:05 +0000</pubDate>
      <link>https://dev.to/soumyadeepdey/top-10-must-know-github-repositories-for-backend-developers-2025-24j2</link>
      <guid>https://dev.to/soumyadeepdey/top-10-must-know-github-repositories-for-backend-developers-2025-24j2</guid>
      <description>&lt;p&gt;As a backend developer, mastering the right tools and libraries can significantly improve your workflow, scalability, and project maintainability. Here’s a concise list of 10 highly useful GitHub repositories tailored for backend developers in 2025.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. &lt;a href="https://github.com/expressjs/express" rel="noopener noreferrer"&gt;expressjs/express&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Minimalist Web Framework for Node.js&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Express is a fast, unopinionated, and widely-used web framework for building APIs and server-side applications.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;express&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;express&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Hello Backend World!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Server running&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;✅ Lightweight and flexible&lt;/li&gt;
&lt;li&gt;✅ Robust routing&lt;/li&gt;
&lt;li&gt;✅ Middleware support&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. &lt;a href="https://github.com/typeorm/typeorm" rel="noopener noreferrer"&gt;typeorm/typeorm&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;ORM for TypeScript and JavaScript&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;TypeORM allows you to interact with SQL databases using an object-oriented approach.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Entity&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;PrimaryGeneratedColumn&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Column&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;✅ Supports multiple DB engines (PostgreSQL, MySQL, etc.)&lt;/li&gt;
&lt;li&gt;✅ Migration and CLI support&lt;/li&gt;
&lt;li&gt;✅ Decorator-based modeling&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. &lt;a href="https://github.com/prisma/prisma" rel="noopener noreferrer"&gt;prisma/prisma&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Next-Generation Type-Safe ORM&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Prisma offers a powerful and type-safe interface for querying your database using auto-generated TypeScript types.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;model User {
  id    Int     @id @default(autoincrement())
  email String  @unique
  posts Post[]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;✅ Type safety for queries&lt;/li&gt;
&lt;li&gt;✅ Built-in migrations&lt;/li&gt;
&lt;li&gt;✅ Great developer experience&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. &lt;a href="https://github.com/nestjs/nest" rel="noopener noreferrer"&gt;nestjs/nest&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Progressive Framework for Building Scalable Server-Side Apps&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;NestJS uses modern JavaScript, TypeScript, and modular architecture inspired by Angular.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Controller&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;users&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;UsersController&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Get&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="nf"&gt;findAll&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;This returns all users&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;✅ Dependency injection&lt;/li&gt;
&lt;li&gt;✅ Modular architecture&lt;/li&gt;
&lt;li&gt;✅ Ideal for microservices and enterprise apps&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  5. &lt;a href="https://github.com/docker/awesome-compose" rel="noopener noreferrer"&gt;docker/awesome-compose&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Collection of Docker Compose Examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This repository provides practical and production-ready Docker Compose templates.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;backend&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;build&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;.&lt;/span&gt;
    &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;3000:3000&lt;/span&gt;
  &lt;span class="na"&gt;db&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;postgres&lt;/span&gt;
    &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;POSTGRES_PASSWORD&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;example&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;✅ Quick environment setup&lt;/li&gt;
&lt;li&gt;✅ Great for learning and deployment&lt;/li&gt;
&lt;li&gt;✅ Covers common backend stacks&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  6. &lt;a href="https://github.com/sql-js/sql.js" rel="noopener noreferrer"&gt;sql-js/sql.js&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;SQLite Compiled to JavaScript&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SQL.js allows you to run a full SQLite database in the browser or Node.js.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;SQL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;sql.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;db&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;SQL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Database&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;CREATE TABLE test (col1, col2);&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;✅ No external dependencies&lt;/li&gt;
&lt;li&gt;✅ Perfect for testing and learning SQL&lt;/li&gt;
&lt;li&gt;✅ Use in web apps or sandboxed environments&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  7. &lt;a href="https://github.com/kamranahmedse/developer-roadmap" rel="noopener noreferrer"&gt;kamranahmedse/developer-roadmap&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Visual Learning Path for Developers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This roadmap outlines the core skills and technologies needed to become a backend developer.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Covers languages, tools, protocols, DBs&lt;/li&gt;
&lt;li&gt;✅ Updated regularly&lt;/li&gt;
&lt;li&gt;✅ Community-driven and beginner-friendly&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  8. &lt;a href="https://github.com/elastic/elasticsearch" rel="noopener noreferrer"&gt;elastic/elasticsearch&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Search and Analytics Engine&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Elasticsearch is used for full-text search, data analysis, logging, and monitoring.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; GET &lt;span class="s2"&gt;"localhost:9200/_cat/indices?v"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;✅ Distributed and scalable&lt;/li&gt;
&lt;li&gt;✅ Powerful querying and filtering&lt;/li&gt;
&lt;li&gt;✅ Widely used with Logstash, Kibana&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  9. &lt;a href="https://github.com/auth0/node-jsonwebtoken" rel="noopener noreferrer"&gt;auth0/node-jsonwebtoken&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;JWT Authentication for Node.js&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A simple and robust library for creating and verifying JSON Web Tokens.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;jwt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;jsonwebtoken&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;jwt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sign&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;123&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;your-secret&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;expiresIn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;1h&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;✅ Stateless authentication&lt;/li&gt;
&lt;li&gt;✅ Supports expiration and claims&lt;/li&gt;
&lt;li&gt;✅ Easy to integrate into APIs&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  10. &lt;a href="https://github.com/fastify/fastify" rel="noopener noreferrer"&gt;fastify/fastify&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;High-Performance Node.js Web Framework&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Fastify is designed for high throughput and low overhead.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fastify&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;fastify&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)();&lt;/span&gt;

&lt;span class="nx"&gt;fastify&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;reply&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;hello&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;world&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;fastify&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3000&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;✅ Schema-based validation&lt;/li&gt;
&lt;li&gt;✅ Highly extensible plugin system&lt;/li&gt;
&lt;li&gt;✅ Blazing fast performance&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ✅ Final Thoughts
&lt;/h2&gt;

&lt;p&gt;These repositories are more than just popular — they provide the backbone for robust, scalable, and efficient backend development.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Express or Fastify for APIs
&lt;/li&gt;
&lt;li&gt;Manage data using Prisma or TypeORM
&lt;/li&gt;
&lt;li&gt;Secure your backend with JWT
&lt;/li&gt;
&lt;li&gt;Containerize with Docker
&lt;/li&gt;
&lt;li&gt;Monitor with Elasticsearch&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Explore these repos, contribute to them, and use them in real-world projects to become a more effective backend developer in 2025.&lt;/p&gt;




&lt;h2&gt;
  
  
  📌 Stay Connected
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Follow me on &lt;a href="https://github.com/SoumyaEXE" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Bookmark this article for reference&lt;/li&gt;
&lt;li&gt;Leave a ❤️ if you found it helpful&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Happy building! 🚀&lt;/p&gt;

</description>
      <category>backend</category>
      <category>webdev</category>
      <category>coding</category>
      <category>github</category>
    </item>
    <item>
      <title>What's the most challenging coding problem you've encountered, and how did you overcome it? 😮</title>
      <dc:creator>Soumyadeep Dey </dc:creator>
      <pubDate>Sun, 03 Sep 2023 14:42:25 +0000</pubDate>
      <link>https://dev.to/soumyadeepdey/whats-the-most-challenging-coding-problem-youve-encountered-and-how-did-you-overcome-it-5mi</link>
      <guid>https://dev.to/soumyadeepdey/whats-the-most-challenging-coding-problem-youve-encountered-and-how-did-you-overcome-it-5mi</guid>
      <description>&lt;p&gt;So What Was The Biggest Problem You've Encountered While Doing Coding? 😶&lt;/p&gt;

&lt;p&gt;Let Everybody Know In Comments! 🤔❤&lt;/p&gt;

&lt;p&gt;(Hit a Follow To Me ~ Its a Small Promotion 🤣✋🏻)&lt;/p&gt;

</description>
      <category>watercooler</category>
      <category>discuss</category>
      <category>programming</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Jokeday Funday: Part 6 - More Programming Humor to Brighten Your Day</title>
      <dc:creator>Soumyadeep Dey </dc:creator>
      <pubDate>Sun, 03 Sep 2023 14:36:53 +0000</pubDate>
      <link>https://dev.to/soumyadeepdey/jokeday-funday-part-6-more-programming-humor-to-brighten-your-day-3n9a</link>
      <guid>https://dev.to/soumyadeepdey/jokeday-funday-part-6-more-programming-humor-to-brighten-your-day-3n9a</guid>
      <description>&lt;h2&gt;Jokeday Funday: Part 6 - More Programming Humor to Brighten Your Day&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Joke 1: The Broken Monitor&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Why did the programmer go broke?&lt;/p&gt;

&lt;p&gt;Because they used up all their cache and couldn't find their cache flow!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Joke 2: The Time Traveler&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Why did the developer bring a ladder to the bar?&lt;/p&gt;

&lt;p&gt;Because they wanted to reach the "root" beer on the top shelf!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Joke 3: The Coding Detective&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Why did the programmer always carry a pencil and paper?&lt;/p&gt;

&lt;p&gt;Because you never know when you'll need to draw a "byte" sketch of a suspect!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Joke 4: The Bug Whispers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Why did the developer become a gardener?&lt;/p&gt;

&lt;p&gt;Because they had a talent for making bugs flourish!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Joke 5: The Tech Support Hero&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Why did the tech support agent go to therapy?&lt;/p&gt;

&lt;p&gt;Because they couldn't stop hearing voices saying, "Have you tried turning it off and on again?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Joke 6: The Password Blues&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Why did the password go to therapy?&lt;/p&gt;

&lt;p&gt;Because it had too many issues to "hash" out!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Joke 7: The Agile Athlete&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Why did the developer start running marathons?&lt;/p&gt;

&lt;p&gt;Because they wanted to master the art of sprinting and releasing!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Joke 8: The Code Poet&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Why did the developer start writing poetry?&lt;/p&gt;

&lt;p&gt;Because they realized code comments could be a form of art!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Joke 9: The Lost Pointer&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Why did the pointer go on vacation?&lt;/p&gt;

&lt;p&gt;Because it needed to refresh its memory!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Joke 10: The Debugging Zen&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Why did the programmer become a meditation guru?&lt;/p&gt;

&lt;p&gt;Because they wanted to find inner peace and tranquility amidst runtime errors!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bonus Joke: The Coding Conductor&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Why did Soumya become a programmer?&lt;/p&gt;

&lt;p&gt;Because he wanted to orchestrate the symphony of logic and create beautiful software symphonies!&lt;/p&gt;

</description>
      <category>watercooler</category>
      <category>jokes</category>
      <category>programming</category>
      <category>coding</category>
    </item>
  </channel>
</rss>
