<?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: Naazim Hussain</title>
    <description>The latest articles on DEV Community by Naazim Hussain (@naazim_hussain_7fbe686d11).</description>
    <link>https://dev.to/naazim_hussain_7fbe686d11</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%2F3237800%2F05065aa6-ee35-43a5-8615-993f43f13863.jpg</url>
      <title>DEV Community: Naazim Hussain</title>
      <link>https://dev.to/naazim_hussain_7fbe686d11</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/naazim_hussain_7fbe686d11"/>
    <language>en</language>
    <item>
      <title>How I Built an AI Decision Copilot to Help India Prepare for the 2026 El Niño Crisis</title>
      <dc:creator>Naazim Hussain</dc:creator>
      <pubDate>Fri, 10 Jul 2026 06:36:56 +0000</pubDate>
      <link>https://dev.to/naazim_hussain_7fbe686d11/how-i-built-an-ai-decision-copilot-to-help-india-prepare-for-the-2026-el-nino-crisis-2h1g</link>
      <guid>https://dev.to/naazim_hussain_7fbe686d11/how-i-built-an-ai-decision-copilot-to-help-india-prepare-for-the-2026-el-nino-crisis-2h1g</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Building an explainable AI platform that helps district administrators allocate resources and farmers make better crop decisions using Gemini, Vertex AI, BigQuery, and Google Cloud.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Climate disasters are not just weather events. They are decision problems.&lt;/p&gt;

&lt;p&gt;When forecasts predict a strong El Niño, governments do not simply need more data. They need answers to questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which districts will be affected first?&lt;/li&gt;
&lt;li&gt;Where should limited water resources be sent?&lt;/li&gt;
&lt;li&gt;Which crops are likely to fail?&lt;/li&gt;
&lt;li&gt;What should farmers sow instead?&lt;/li&gt;
&lt;li&gt;Why is the AI recommending this action?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Existing dashboards provide plenty of charts.&lt;/p&gt;

&lt;p&gt;Very few provide decisions.&lt;/p&gt;

&lt;p&gt;That became the motivation behind &lt;strong&gt;El Niño 2026 Decision Copilot&lt;/strong&gt;, an AI-powered decision intelligence platform built during the &lt;strong&gt;Google Cloud Gen AI Academy APAC Hackathon&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;India depends heavily on the monsoon.&lt;/p&gt;

&lt;p&gt;A severe El Niño can lead to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rainfall deficits&lt;/li&gt;
&lt;li&gt;Reservoir depletion&lt;/li&gt;
&lt;li&gt;Groundwater stress&lt;/li&gt;
&lt;li&gt;Crop failures&lt;/li&gt;
&lt;li&gt;Rising food prices&lt;/li&gt;
&lt;li&gt;Rural employment challenges&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The information already exists across dozens of government portals, weather services, satellite datasets, and agricultural reports.&lt;/p&gt;

&lt;p&gt;The challenge is that it is scattered.&lt;/p&gt;

&lt;p&gt;District collectors do not have time to manually combine:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Weather forecasts&lt;/li&gt;
&lt;li&gt;NDVI satellite imagery&lt;/li&gt;
&lt;li&gt;Reservoir levels&lt;/li&gt;
&lt;li&gt;Mandi prices&lt;/li&gt;
&lt;li&gt;Contingency plans&lt;/li&gt;
&lt;li&gt;Drought indicators&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Farmers face an even bigger challenge.&lt;/p&gt;

&lt;p&gt;Most need a simple answer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Given my district, should I plant the usual crop this season?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The Goal
&lt;/h2&gt;

&lt;p&gt;Instead of building another dashboard, I wanted to build an AI system that reasons over multiple data sources and produces explainable recommendations.&lt;/p&gt;

&lt;p&gt;The platform serves two audiences through the same intelligence engine.&lt;/p&gt;

&lt;h3&gt;
  
  
  District Administrators
&lt;/h3&gt;

&lt;p&gt;They receive:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;District risk scores&lt;/li&gt;
&lt;li&gt;Interactive risk maps&lt;/li&gt;
&lt;li&gt;Reservoir outlook&lt;/li&gt;
&lt;li&gt;Crop stress indicators&lt;/li&gt;
&lt;li&gt;Resource allocation recommendations&lt;/li&gt;
&lt;li&gt;AI-generated explanations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of simply showing that a district has high risk, the system explains &lt;strong&gt;why&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Farmers
&lt;/h3&gt;

&lt;p&gt;Farmers interact with a conversational AI.&lt;/p&gt;

&lt;p&gt;They can ask questions such as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Should I grow paddy this season?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Which crop is safer in my district?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The assistant retrieves official contingency plans, combines them with weather forecasts, and generates localized recommendations backed by citations.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Core Idea
&lt;/h2&gt;

&lt;p&gt;Rather than building one giant AI model, I designed the platform as a decision pipeline.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Data Sources
      ↓
Data Ingestion
      ↓
BigQuery
      ↓
Risk Model
      ↓
AI Agents
      ↓
Explainable Decisions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Everything flows through a single decision intelligence core.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;

&lt;p&gt;The platform runs entirely on Google Cloud.&lt;/p&gt;

&lt;h3&gt;
  
  
  Data Layer
&lt;/h3&gt;

&lt;p&gt;Multiple public datasets are collected continuously, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google Earth Engine&lt;/li&gt;
&lt;li&gt;OpenWeatherMap&lt;/li&gt;
&lt;li&gt;Agmarknet&lt;/li&gt;
&lt;li&gt;CWC reservoir reports&lt;/li&gt;
&lt;li&gt;CGWB groundwater data&lt;/li&gt;
&lt;li&gt;NRSC datasets&lt;/li&gt;
&lt;li&gt;ICAR-CRIDA contingency plans&lt;/li&gt;
&lt;li&gt;MGNREGA employment data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All datasets are standardized before being stored in BigQuery.&lt;/p&gt;

&lt;h3&gt;
  
  
  BigQuery as the Source of Truth
&lt;/h3&gt;

&lt;p&gt;BigQuery stores district-level information including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rainfall&lt;/li&gt;
&lt;li&gt;Weather forecasts&lt;/li&gt;
&lt;li&gt;Reservoir status&lt;/li&gt;
&lt;li&gt;Satellite vegetation indices&lt;/li&gt;
&lt;li&gt;Soil moisture&lt;/li&gt;
&lt;li&gt;Mandi prices&lt;/li&gt;
&lt;li&gt;Employment indicators&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every downstream component reads from BigQuery instead of directly querying external APIs.&lt;/p&gt;

&lt;p&gt;This keeps the architecture modular, scalable, and reproducible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building the Risk Model
&lt;/h2&gt;

&lt;p&gt;The first version uses &lt;strong&gt;BigQuery ML&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of training a black-box neural network, I intentionally chose an interpretable approach.&lt;/p&gt;

&lt;p&gt;The model combines features such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rainfall anomalies&lt;/li&gt;
&lt;li&gt;Forecast deficit&lt;/li&gt;
&lt;li&gt;NDVI&lt;/li&gt;
&lt;li&gt;Soil moisture&lt;/li&gt;
&lt;li&gt;Reservoir storage&lt;/li&gt;
&lt;li&gt;Groundwater stress&lt;/li&gt;
&lt;li&gt;Agricultural indicators&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The output is a district-level risk score.&lt;/p&gt;

&lt;p&gt;That score becomes the starting point for the AI agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Multiple AI Agents?
&lt;/h2&gt;

&lt;p&gt;A single prompt quickly becomes difficult to maintain.&lt;/p&gt;

&lt;p&gt;Instead, I divided responsibilities into specialized agents using Google's &lt;strong&gt;Agent Development Kit (ADK)&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Triage Agent
&lt;/h3&gt;

&lt;p&gt;Its responsibility is to answer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Which districts require attention first?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It ranks districts and explains the factors influencing each score.&lt;/p&gt;

&lt;h3&gt;
  
  
  Allocation Agent
&lt;/h3&gt;

&lt;p&gt;Once priorities are known, this agent decides how available resources should be distributed.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Water tankers&lt;/li&gt;
&lt;li&gt;Emergency funds&lt;/li&gt;
&lt;li&gt;Drought relief supplies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Unlike pure LLM reasoning, resource allocation is deterministic so recommendations remain consistent and auditable.&lt;/p&gt;

&lt;h3&gt;
  
  
  Farmer Advisory Agent
&lt;/h3&gt;

&lt;p&gt;This agent combines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;District data&lt;/li&gt;
&lt;li&gt;Weather forecasts&lt;/li&gt;
&lt;li&gt;Official contingency plans&lt;/li&gt;
&lt;li&gt;Retrieval-Augmented Generation (RAG)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Farmers receive localized advice supported by official documents instead of hallucinated responses.&lt;/p&gt;

&lt;h2&gt;
  
  
  Scaling Beyond a Prototype
&lt;/h2&gt;

&lt;p&gt;The original hackathon prototype focused on 23 high-risk districts.&lt;/p&gt;

&lt;p&gt;Scaling nationwide turned out to be far more challenging than building the AI itself.&lt;/p&gt;

&lt;p&gt;The platform now covers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;763 districts&lt;/strong&gt; across India&lt;/li&gt;
&lt;li&gt;Weather forecasts for every district&lt;/li&gt;
&lt;li&gt;Nationwide satellite vegetation data&lt;/li&gt;
&lt;li&gt;Reservoir coverage through regional aggregation&lt;/li&gt;
&lt;li&gt;Hundreds of district contingency plans indexed for retrieval&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Expanding reliable public datasets was significantly harder than writing prompts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Explainability Was a Requirement
&lt;/h2&gt;

&lt;p&gt;One principle guided every feature.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Never ask users to trust the AI blindly.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Every recommendation answers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why?&lt;/li&gt;
&lt;li&gt;Which data was used?&lt;/li&gt;
&lt;li&gt;Which document supports the recommendation?&lt;/li&gt;
&lt;li&gt;Which factors increased the risk score?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For government decision-making, transparency is often more valuable than model complexity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technology Stack
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Google Cloud
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;BigQuery&lt;/li&gt;
&lt;li&gt;BigQuery ML&lt;/li&gt;
&lt;li&gt;Vertex AI&lt;/li&gt;
&lt;li&gt;Vertex AI Search&lt;/li&gt;
&lt;li&gt;Cloud Run&lt;/li&gt;
&lt;li&gt;Firebase Hosting&lt;/li&gt;
&lt;li&gt;Cloud Storage&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  AI
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Gemini 2.5 Flash&lt;/li&gt;
&lt;li&gt;Vertex AI Search&lt;/li&gt;
&lt;li&gt;Retrieval-Augmented Generation (RAG)&lt;/li&gt;
&lt;li&gt;Agent Development Kit (ADK)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Backend
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;FastAPI&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Frontend
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;Vite&lt;/li&gt;
&lt;li&gt;React Leaflet&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Challenges
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Public Data Is Not Standardized
&lt;/h3&gt;

&lt;p&gt;Every source uses different schemas, update frequencies, and district identifiers.&lt;/p&gt;

&lt;p&gt;A significant portion of the project involved cleaning, validating, and reconciling datasets before any AI processing could begin.&lt;/p&gt;

&lt;h3&gt;
  
  
  Explainability
&lt;/h3&gt;

&lt;p&gt;Government users need confidence in every recommendation.&lt;/p&gt;

&lt;p&gt;Every output had to include evidence rather than relying on confidence scores.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scaling RAG
&lt;/h3&gt;

&lt;p&gt;District contingency plans vary significantly in formatting and quality.&lt;/p&gt;

&lt;p&gt;Building an automated indexing pipeline was necessary to move beyond a small proof of concept.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd Improve Next
&lt;/h2&gt;

&lt;p&gt;There are several areas I would continue developing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Retrain the risk model using nationwide datasets&lt;/li&gt;
&lt;li&gt;Automate ingestion using Cloud Scheduler and Cloud Functions&lt;/li&gt;
&lt;li&gt;Add multilingual support for Indian regional languages&lt;/li&gt;
&lt;li&gt;Strengthen authentication between administrator and farmer workflows&lt;/li&gt;
&lt;li&gt;Expand the knowledge base with additional government guidelines&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Building AI for public-sector decision making is very different from building a chatbot.&lt;/p&gt;

&lt;p&gt;The hardest problems were not prompt engineering.&lt;/p&gt;

&lt;p&gt;They were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data quality&lt;/li&gt;
&lt;li&gt;Explainability&lt;/li&gt;
&lt;li&gt;Deterministic reasoning&lt;/li&gt;
&lt;li&gt;Trustworthy recommendations&lt;/li&gt;
&lt;li&gt;Integrating multiple systems into one coherent workflow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Large language models become far more useful when they serve as the reasoning layer instead of the entire application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;🌐 &lt;strong&gt;Live Demo&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://climate-resilience-in.web.app" rel="noopener noreferrer"&gt;https://climate-resilience-in.web.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🎥 &lt;strong&gt;Demo Video&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/U0Voa4h71II" rel="noopener noreferrer"&gt;https://youtu.be/U0Voa4h71II&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are building AI systems for climate resilience, agriculture, disaster management, or public-sector decision intelligence, I would love to hear your thoughts and feedback.&lt;/p&gt;

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

</description>
      <category>ai</category>
      <category>hackathon</category>
      <category>googlecloud</category>
      <category>learning</category>
    </item>
    <item>
      <title>What Building Anamnesis Taught Me About Giving AI a Memory</title>
      <dc:creator>Naazim Hussain</dc:creator>
      <pubDate>Sat, 04 Jul 2026 10:53:29 +0000</pubDate>
      <link>https://dev.to/naazim_hussain_7fbe686d11/what-building-anamnesis-taught-me-about-giving-ai-a-memory-1lnc</link>
      <guid>https://dev.to/naazim_hussain_7fbe686d11/what-building-anamnesis-taught-me-about-giving-ai-a-memory-1lnc</guid>
      <description>&lt;p&gt;&lt;em&gt;How Cognee turned a pile of medical PDFs into a living clinical memory graph, and why "storage" and "memory" turned out to be completely different problems.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The problem that started it all
&lt;/h3&gt;

&lt;p&gt;A patient walks into a clinic. Behind them: years of blood reports, prescriptions, discharge summaries, imaging scans. In front of them: a doctor who has maybe four minutes to reconstruct that entire history before making a decision that affects the next one.&lt;/p&gt;

&lt;p&gt;That's not a data problem. Every one of those documents is sitting in some folder, some PDF, some scanned image. The information &lt;em&gt;exists&lt;/em&gt;. What's missing is the connection between it: the fact that the kidney function flagged in March relates to the medication started in January, which was prescribed because of a diagnosis made the previous year. A filing cabinet doesn't know that. Neither does a database that just stores rows.&lt;/p&gt;

&lt;p&gt;That distinction, between storing information and &lt;em&gt;remembering&lt;/em&gt; it, is the whole thesis behind Anamnesis, the project I built for wemakedevs.org's Cognee hackathon ("The Hangover Part AI: Where's My Context?"). And it's the reason I built it on &lt;a href="https://github.com/topoteretes/cognee" rel="noopener noreferrer"&gt;Cognee&lt;/a&gt; instead of a conventional RAG pipeline.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why RAG wasn't enough
&lt;/h3&gt;

&lt;p&gt;Most "AI over your documents" tools follow the same recipe: chunk the text, embed it, stuff the closest chunks into a prompt when someone asks a question. That works fine for FAQ bots. It falls apart for clinical history, because clinical facts aren't independent, they're relational. A lab value only means something in the context of the medication that might be causing it and the diagnosis that explains why the medication was prescribed in the first place. Flat vector similarity search doesn't reason about relationships; it just finds text that &lt;em&gt;sounds&lt;/em&gt; related.&lt;/p&gt;

&lt;p&gt;What Anamnesis actually needed was a &lt;em&gt;memory&lt;/em&gt;: something that ingests new facts, connects them to what's already known, revises itself when new information contradicts old information, and lets old information decay or retire without being deleted outright. That's a different shape of problem than search, and it turns out Cognee had already built the primitives for exactly that shape.&lt;/p&gt;

&lt;h3&gt;
  
  
  Four verbs, one memory lifecycle
&lt;/h3&gt;

&lt;p&gt;Cognee organizes memory around four operations, and mapping Anamnesis onto them was the core design exercise of the whole build:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;remember()&lt;/code&gt;&lt;/strong&gt;: A clinician uploads a blood report, a prescription, a discharge summary. Anamnesis runs it through Gemini's vision-based OCR to pull out structured entities (diagnoses, medications, precise lab values with units), then commits those entities to the patient's Cognee graph. This isn't "save the file," it's "extract the facts and let them become nodes and edges that connect to everything already known about this patient."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;recall()&lt;/code&gt;&lt;/strong&gt;: When a doctor asks "why is kidney function declining?", Anamnesis doesn't search documents, it traverses the graph. The answer comes back with a traceable evidence chain: which document, which date, which exact snippet supports each claim. This traceability mattered more than almost anything else in the build. A clinician will never trust an answer they can't audit down to the source.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;improve()&lt;/code&gt;&lt;/strong&gt; (Cognee's &lt;code&gt;memify()&lt;/code&gt;): Medicine is not append-only. When a clinician marks a condition as "ruled out" or a medication as "discontinued," that correction has to propagate through the graph, not just get logged as a new fact sitting next to the old, now-wrong one. &lt;code&gt;improve()&lt;/code&gt; restructures the relationships so the graph reflects the corrected understanding. This is the operation that makes the memory feel less like a log and more like an evolving belief system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;forget()&lt;/code&gt;&lt;/strong&gt;: When the same blood report type gets uploaded twice for the same date, Anamnesis doesn't want two contradictory copies of the same fact living in the graph forever. &lt;code&gt;forget()&lt;/code&gt; intelligently retires the duplicate or superseded information while preserving the historical record: memory that can prune itself without becoming amnesia.&lt;/p&gt;

&lt;p&gt;Building around these four verbs, instead of hand-rolling my own retrieval and update logic, is what let a solo hackathon build produce something that behaves less like a chatbot wrapper and more like an actual second brain for a patient's chart.&lt;/p&gt;

&lt;h3&gt;
  
  
  The architecture decision that mattered most
&lt;/h3&gt;

&lt;p&gt;Patient data is PHI. Anamnesis runs entirely on &lt;strong&gt;self-hosted, open-source Cognee&lt;/strong&gt;: a GCP VM running the open-source stack behind Caddy/TLS, backed by Postgres+pgvector for vectors and an embedded Kuzu graph store, with every API call authenticated and every byte of patient data staying inside infrastructure I control. Nothing patient-related ever touches a third-party managed data store. That constraint is also why the hackathon track fit: "Best Use of Open Source" isn't a checkbox here, it's the actual architecture.&lt;/p&gt;

&lt;p&gt;(Yes, all data used anywhere in the build is synthetic. Real PHI doesn't touch this system until compliance work, signed BAAs, a security review, a real retention/deletion policy, is actually done. That's a gate, not a formality, and it's true in the code, not just in this post.)&lt;/p&gt;

&lt;h3&gt;
  
  
  What "memory" actually bought me
&lt;/h3&gt;

&lt;p&gt;The unlock, in practice, showed up in small moments during testing. Ask "what changed since the last consultation?" and the answer isn't a document dump, it's a diff over the graph, phrased the way a colleague would phrase it. Correct a diagnosis and the &lt;em&gt;next&lt;/em&gt; query about that diagnosis already reflects the correction, without re-ingesting anything. Upload a duplicate report and the system quietly resolves the conflict instead of presenting two contradictory truths side by side.&lt;/p&gt;

&lt;p&gt;None of that requires cleverness on my part. It requires trusting the memory primitives to do their job, and designing the product to expose them rather than hide them. Anamnesis has a live operations panel showing every &lt;code&gt;remember&lt;/code&gt;/&lt;code&gt;recall&lt;/code&gt;/&lt;code&gt;improve&lt;/code&gt;/&lt;code&gt;forget&lt;/code&gt; call as it happens, because the whole point was to prove the memory is real, not a black box.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where this goes next
&lt;/h3&gt;

&lt;p&gt;The hackathon build (Phases 0 to 4: infra, Remember, Recall, Improve, Forget against a single demo patient) is done and live. It's now becoming a real product: multi-tenant clinics, real clinician rosters, hardened security, because the underlying bet held up under a week of building. Clinical software should behave like a memory, not a filing cabinet. Every upload should make the system &lt;em&gt;more&lt;/em&gt; useful, not just &lt;em&gt;bigger&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;That's the difference between storing a patient's story and remembering it. Cognee is what made the second one possible.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Live app:&lt;/strong&gt; &lt;a href="https://anamnesisai.vercel.app" rel="noopener noreferrer"&gt;anamnesisai.vercel.app&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Demo video:&lt;/strong&gt; &lt;a href="https://youtu.be/IH7V3kgMxo8" rel="noopener noreferrer"&gt;youtu.be/IH7V3kgMxo8&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Code:&lt;/strong&gt; &lt;a href="https://github.com/Naazimsnh02/Anamnesis" rel="noopener noreferrer"&gt;github.com/Naazimsnh02/Anamnesis&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Built with:&lt;/strong&gt; &lt;a href="https://github.com/topoteretes/cognee" rel="noopener noreferrer"&gt;Cognee&lt;/a&gt; (self-hosted), Next.js, Clerk, Gemini, Postgres/Kuzu&lt;/p&gt;

</description>
      <category>ai</category>
      <category>architecture</category>
      <category>llm</category>
      <category>rag</category>
    </item>
  </channel>
</rss>
