<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>whysooraj&#x27;s Portfolio - FastAPI</title>
    <subtitle>Portfolio showcasing projects and research.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://blog.sooraj.fun/tags/fastapi/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/fastapi/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>
    <entry xml:lang="en">
        <title>Amphan Quantum</title>
        <published>2026-03-25T00:00:00+00:00</published>
        <updated>2026-03-25T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.sooraj.fun/projects/amphan/"/>
        <id>https://blog.sooraj.fun/projects/amphan/</id>
        
        <content type="html" xml:base="https://blog.sooraj.fun/projects/amphan/">&lt;p&gt;AI-powered decision support system leveraging Quantum Approximate Optimization Algorithms (QAOA) to solve complex cyclone evacuation routing.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;why-it-exists&quot;&gt;Why it exists&lt;&#x2F;h3&gt;
&lt;p&gt;Born in a high-stress, 40-hour quantum hackathon hosted by SRM University AP. Cyclone evacuations are high-stakes graph problems where classical routers clog up; we turned to quantum math to see if we could map safety routes through the noise.&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;Formulates evacuation routing as a Quadratic Unconstrained Binary Optimization (QUBO) problem.&lt;&#x2F;li&gt;
&lt;li&gt;Executes variational circuits using &lt;strong&gt;QAOA&lt;&#x2F;strong&gt; (via Qiskit) to find low-congestion path assignments.&lt;&#x2F;li&gt;
&lt;li&gt;Connects the quantum backend to a &lt;strong&gt;FastAPI&lt;&#x2F;strong&gt; middleware that parses route data.&lt;&#x2F;li&gt;
&lt;li&gt;Visualizes real-world safety paths dynamically using a &lt;strong&gt;React + Leaflet&lt;&#x2F;strong&gt; map interface.&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 had 40 hours, a shared whiteboard, and a lot of caffeine. It was my second big quantum project, and we spent the first half just wrestling with Qiskit state vectors and the second half building a UI to make the quantum math look alive. We ran out of time, but the code compiled, the qubits converged on a route, and the maps actually loaded.&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;Currently, the QUBO matrix scales quadratically with graph nodes. I&#x27;d implement graph decomposition beforehand so we can run the algorithm on actual coastal cities without melting local classical simulators.&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;Amphan&quot;&gt;GitHub&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
</feed>
