<?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: Karthik</title>
    <description>The latest articles on DEV Community by Karthik (@karthik0757m).</description>
    <link>https://dev.to/karthik0757m</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%2F4150287%2F8cb8b9d0-730a-480a-a084-01ef59e70ca0.png</url>
      <title>DEV Community: Karthik</title>
      <link>https://dev.to/karthik0757m</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/karthik0757m"/>
    <language>en</language>
    <item>
      <title>Your Next Incident Shouldn’t Start From Zero: Building Recall</title>
      <dc:creator>Karthik</dc:creator>
      <pubDate>Tue, 29 Sep 2026 16:21:03 +0000</pubDate>
      <link>https://dev.to/karthik0757m/your-next-incident-shouldnt-start-from-zero-building-recall-1393</link>
      <guid>https://dev.to/karthik0757m/your-next-incident-shouldnt-start-from-zero-building-recall-1393</guid>
      <description>&lt;p&gt;An incident is resolved. The dashboard turns green. Someone writes a short summary, closes the ticket, and moves on.&lt;/p&gt;

&lt;p&gt;A few weeks later, another engineer sees similar symptoms. They search old tickets, scroll through chat messages, and ask whether anyone remembers what worked last time.&lt;/p&gt;

&lt;p&gt;The team has dealt with the problem before. Finding that experience—and deciding whether it still applies—is the difficult part.&lt;/p&gt;

&lt;p&gt;That gap is what we set out to explore with &lt;strong&gt;Recall&lt;/strong&gt;, our Incident Memory Command Center.&lt;/p&gt;

&lt;h2&gt;
  
  
  What We Wanted to Build
&lt;/h2&gt;

&lt;p&gt;We wanted an incident workspace that could carry useful experience from one investigation into the next:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Describe the current problem&lt;/li&gt;
&lt;li&gt;Retrieve relevant historical incidents&lt;/li&gt;
&lt;li&gt;Use historical context alongside fresh evidence&lt;/li&gt;
&lt;li&gt;Record what actually happened&lt;/li&gt;
&lt;li&gt;Preserve failed attempts and lessons learned&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The difficult part is deciding how that history applies.&lt;/p&gt;

&lt;p&gt;Two incidents can look similar and still have different causes. A previous fix is a clue, not permission to repeat it.&lt;/p&gt;

&lt;p&gt;That distinction shaped how we built Recall.&lt;/p&gt;

&lt;h2&gt;
  
  
  From Symptoms to a Working Hypothesis
&lt;/h2&gt;

&lt;p&gt;An investigation starts with the information an engineer already has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Affected service&lt;/li&gt;
&lt;li&gt;Environment&lt;/li&gt;
&lt;li&gt;Severity&lt;/li&gt;
&lt;li&gt;Symptoms&lt;/li&gt;
&lt;li&gt;Relevant logs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The backend saves the incident locally before requesting an analysis. If a provider call fails, the incident still exists, allowing the engineer to return to it later.&lt;/p&gt;

&lt;p&gt;Recall then asks &lt;strong&gt;Hindsight&lt;/strong&gt; for relevant historical context and sends the current evidence and retrieved memories to a model through &lt;strong&gt;Groq&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The response includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Suspected root cause&lt;/li&gt;
&lt;li&gt;Investigation steps&lt;/li&gt;
&lt;li&gt;Recommended actions&lt;/li&gt;
&lt;li&gt;Verification steps&lt;/li&gt;
&lt;li&gt;References to the historical sources used&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We deliberately frame the diagnosis as a &lt;strong&gt;hypothesis&lt;/strong&gt; because the engineer still needs to test it.&lt;/p&gt;

&lt;p&gt;For example, a previous incident might suggest that a connection pool caused a service slowdown. That makes pool utilization worth checking; it does not establish that today's slowdown has the same cause.&lt;/p&gt;

&lt;p&gt;Recall does not execute infrastructure commands. Its role is to help an engineer decide what to investigate next.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why We Used Two Kinds of Storage
&lt;/h2&gt;

&lt;p&gt;Recall uses two storage systems for different purposes.&lt;/p&gt;

&lt;h3&gt;
  
  
  SQLite
&lt;/h3&gt;

&lt;p&gt;SQLite holds the structured state of an investigation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Incident status&lt;/li&gt;
&lt;li&gt;Updates&lt;/li&gt;
&lt;li&gt;Saved analysis&lt;/li&gt;
&lt;li&gt;Recorded outcome&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It gives the application a concrete record to display and update.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hindsight
&lt;/h3&gt;

&lt;p&gt;Hindsight makes previous incident information available for retrieval across investigations.&lt;/p&gt;

&lt;p&gt;When an engineer records evidence or an outcome, Recall can send a readable incident document to the memory bank.&lt;/p&gt;

&lt;p&gt;That document includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Symptoms&lt;/li&gt;
&lt;li&gt;Actions taken&lt;/li&gt;
&lt;li&gt;Outcome&lt;/li&gt;
&lt;li&gt;Lessons learned&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also labels investigation updates as human-reported evidence, preserving the distinction between an observation and a model's interpretation.&lt;/p&gt;

&lt;p&gt;An investigation is more than its final fix.&lt;/p&gt;

&lt;p&gt;Knowing that a restart did not help can save the next engineer from repeating the same attempt without a reason.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Comparison View That Makes Memory Visible
&lt;/h2&gt;

&lt;p&gt;One feature we particularly wanted was a &lt;strong&gt;with-memory versus without-memory comparison&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The application analyzes the same incident through two paths:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Using current evidence alone&lt;/li&gt;
&lt;li&gt;Using current evidence together with retrieved historical memory&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The results appear side by side.&lt;/p&gt;

&lt;p&gt;This lets us inspect what memory actually contributed.&lt;/p&gt;

&lt;p&gt;Did it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Suggest a more specific check?&lt;/li&gt;
&lt;li&gt;Surface an earlier failed attempt?&lt;/li&gt;
&lt;li&gt;Change the suspected cause?&lt;/li&gt;
&lt;li&gt;Provide useful historical context?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sometimes there may be no useful history to retrieve.&lt;/p&gt;

&lt;p&gt;That is a meaningful result too.&lt;/p&gt;

&lt;p&gt;The comparison is an inspection tool, not a benchmark proving that memory always produces a better answer. Model responses can vary, and a different answer is not automatically a more accurate one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building Around Imperfect AI Responses
&lt;/h2&gt;

&lt;p&gt;A useful AI interface needs more than a well-written prompt.&lt;/p&gt;

&lt;p&gt;We use &lt;strong&gt;Pydantic&lt;/strong&gt; to validate structured model responses before accepting them, and check cited source IDs against the memories actually supplied to the model.&lt;/p&gt;

&lt;p&gt;If a response fails validation or cites an unknown source, the application requests a correction.&lt;/p&gt;

&lt;p&gt;If that attempt also fails, it reports the failure instead of inventing a replacement diagnosis.&lt;/p&gt;

&lt;p&gt;Retrieved text and incident fields are treated as evidence rather than instructions.&lt;/p&gt;

&lt;p&gt;The application also flags selected risky action patterns for review.&lt;/p&gt;

&lt;p&gt;These checks can catch malformed output and certain unsupported claims, but they cannot prove that a diagnosis is correct.&lt;/p&gt;

&lt;p&gt;Verification still belongs in the incident workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Tech Stack
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;React&lt;/td&gt;
&lt;td&gt;Frontend&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tailwind CSS&lt;/td&gt;
&lt;td&gt;UI styling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FastAPI&lt;/td&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SQLite&lt;/td&gt;
&lt;td&gt;Local incident persistence&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Groq&lt;/td&gt;
&lt;td&gt;Model inference&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hindsight&lt;/td&gt;
&lt;td&gt;Operational memory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pydantic&lt;/td&gt;
&lt;td&gt;Request and response validation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Docker&lt;/td&gt;
&lt;td&gt;Containerization&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Render&lt;/td&gt;
&lt;td&gt;Deployment&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The interface brings together:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Incident overview&lt;/li&gt;
&lt;li&gt;Investigation workspace&lt;/li&gt;
&lt;li&gt;Memory comparison&lt;/li&gt;
&lt;li&gt;Memory explorer&lt;/li&gt;
&lt;li&gt;Learning journal&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What the Project Taught Us
&lt;/h2&gt;

&lt;p&gt;The most useful lesson was that adding memory involves more than saving text.&lt;/p&gt;

&lt;p&gt;The system needs to preserve context:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which environment an incident affected&lt;/li&gt;
&lt;li&gt;What was observed&lt;/li&gt;
&lt;li&gt;What was only suspected&lt;/li&gt;
&lt;li&gt;What was attempted&lt;/li&gt;
&lt;li&gt;Whether recovery was actually confirmed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also needs to handle failure honestly.&lt;/p&gt;

&lt;p&gt;A model response and a verified diagnosis are separate events.&lt;/p&gt;

&lt;p&gt;The interface needs to leave room for an engineer to question a suggestion, add contradictory evidence, and change direction.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Comes Next
&lt;/h2&gt;

&lt;p&gt;Recall is currently a &lt;strong&gt;hackathon prototype&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Our next steps include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Evaluating Recall with repeatable incident scenarios&lt;/li&gt;
&lt;li&gt;Inspecting whether retrieved history leads to more useful investigation steps&lt;/li&gt;
&lt;li&gt;Making the path from evidence to outcome easier to follow&lt;/li&gt;
&lt;li&gt;Improving the workflow when an incident is reopened&lt;/li&gt;
&lt;li&gt;Handling cases where an earlier hypothesis turns out to be wrong&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The question behind the project remains simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;When the next incident arrives, how much of the team's previous experience will still be available—and useful?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Recall is our attempt to make that experience easier to carry forward.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try Recall
&lt;/h2&gt;

&lt;p&gt;🔗 &lt;strong&gt;Live Demo:&lt;/strong&gt; YOUR_LIVE_DEMO_LINK&lt;/p&gt;

&lt;p&gt;💻 &lt;strong&gt;Source Code:&lt;/strong&gt; YOUR_GITHUB_LINK&lt;/p&gt;

&lt;h2&gt;
  
  
  Team
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tanmai Sutrave&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Abhay Kumar Mishra&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tannidi Durga Karthikeya&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;When an incident happens again, engineers shouldn't have to start from zero.&lt;/p&gt;

&lt;p&gt;Recall is our attempt to make previous incident experience easier to find, understand, question, and carry forward into the next investigation.&lt;/p&gt;

&lt;p&gt;How does your team find previous incident knowledge today?&lt;/p&gt;

&lt;p&gt;I'd love to hear what works—and where useful context gets lost.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devops</category>
      <category>react</category>
      <category>hackathon</category>
    </item>
  </channel>
</rss>
