<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>whysooraj&#x27;s Portfolio - Celery</title>
    <subtitle>Portfolio showcasing projects and research.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://blog.sooraj.fun/tags/celery/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://blog.sooraj.fun/"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-04-11T00:00:00+00:00</updated>
    <id>https://blog.sooraj.fun/tags/celery/atom.xml</id>
    <entry xml:lang="en">
        <title>Project Snorlax</title>
        <published>2026-04-11T00:00:00+00:00</published>
        <updated>2026-04-11T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.sooraj.fun/projects/snorlax/"/>
        <id>https://blog.sooraj.fun/projects/snorlax/</id>
        
        <content type="html" xml:base="https://blog.sooraj.fun/projects/snorlax/">&lt;p&gt;An automated detective that filters out downstream log noise in microservices to isolate &quot;Patient Zero&quot; crash errors.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;why-it-exists&quot;&gt;Why it exists&lt;&#x2F;h3&gt;
&lt;p&gt;Built for a national hackathon in Mumbai. The premise was simple: reading server logs at 2 AM is miserable, and microservice cascades make it worse. We wanted to build something that hands developers the smoking gun, not a stack of haystacks.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;how-it-works&quot;&gt;How it works&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Ingests high-velocity JSON logs using &lt;strong&gt;Redis Streams&lt;&#x2F;strong&gt; as a high-speed buffer.&lt;&#x2F;li&gt;
&lt;li&gt;Employs local ML embeddings (&lt;strong&gt;Sentence-Transformers&lt;&#x2F;strong&gt;) to vectorize log texts.&lt;&#x2F;li&gt;
&lt;li&gt;Groups vectorized anomalies with &lt;strong&gt;DBSCAN clustering&lt;&#x2F;strong&gt; to isolate the root failure.&lt;&#x2F;li&gt;
&lt;li&gt;Sends the isolated root cause to an LLM for a clean, one-sentence diagnosis and suggested fix.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;what-happened&quot;&gt;What happened&lt;&#x2F;h3&gt;
&lt;p&gt;We took this to Mumbai, pitch-ready. The tech judges looked at it and declared: &quot;This won&#x27;t work in the real world.&quot; We didn&#x27;t win, and the critique humbled us. But instead of throwing the code away, I went back home, rewrote the ingestion workers, patched the clustering bottlenecks, and cleared the edge cases that would have broken it in production. It works now.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;what-i-d-change&quot;&gt;What I&#x27;d change&lt;&#x2F;h3&gt;
&lt;p&gt;If I did this again, I would swap DBSCAN for an incremental clustering algorithm to handle real-time streaming logs without periodically rebuilding the full vector database space.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;links&quot;&gt;Links&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;whysooraj&#x2F;snorlax&quot;&gt;GitHub&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
</feed>
