<?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: Somay</title>
    <description>The latest articles on DEV Community by Somay (@casperday11).</description>
    <link>https://dev.to/casperday11</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%2F2572708%2F8811f790-c18b-4d14-bc95-458ef8859f7d.jpg</url>
      <title>DEV Community: Somay</title>
      <link>https://dev.to/casperday11</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/casperday11"/>
    <language>en</language>
    <item>
      <title>Building for the Real World: What Winning an International Ideathon Taught Me</title>
      <dc:creator>Somay</dc:creator>
      <pubDate>Wed, 19 Aug 2026 13:17:27 +0000</pubDate>
      <link>https://dev.to/casperday11/building-for-the-real-world-what-winning-an-international-ideathon-taught-me-4p6f</link>
      <guid>https://dev.to/casperday11/building-for-the-real-world-what-winning-an-international-ideathon-taught-me-4p6f</guid>
      <description>&lt;p&gt;A few days ago, I made an international team for the &lt;strong&gt;Egoist Machines, Inc. (YC S26) International Ideathon&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We ended up winning the &lt;strong&gt;AI Passport Ideathon — For Work Winner&lt;/strong&gt; with our idea, &lt;strong&gt;Fair Launch&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And honestly, the win was great.&lt;/p&gt;

&lt;p&gt;But the part I found more interesting was everything that happened while building it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The idea
&lt;/h2&gt;

&lt;p&gt;Fair Launch started with a simple question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What happens when we stop treating AI products as purely technical problems and start treating them as business problems too?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It is very easy to build something that technically works.&lt;/p&gt;

&lt;p&gt;It is much harder to build something that works &lt;strong&gt;within the constraints of an actual business, for an actual customer, with an actual reason to exist.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That distinction shaped a lot of our thinking.&lt;/p&gt;

&lt;p&gt;Instead of starting with &lt;em&gt;"What cool AI system can we build?"&lt;/em&gt;, we kept coming back to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Who is actually going to use this?&lt;/li&gt;
&lt;li&gt;What problem are we solving for them?&lt;/li&gt;
&lt;li&gt;What constraints does the business have?&lt;/li&gt;
&lt;li&gt;Where does AI genuinely add value?&lt;/li&gt;
&lt;li&gt;What would make someone actually adopt this?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That changed how I approached the technical side of the project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technology is only half the problem
&lt;/h2&gt;

&lt;p&gt;One thing I've increasingly realized while working on AI projects is that technical complexity can be misleading.&lt;/p&gt;

&lt;p&gt;You can have an impressive architecture, sophisticated models, agents, RAG pipelines, evaluations, and all the terminology that comes with modern AI.&lt;/p&gt;

&lt;p&gt;But none of that matters if the end user doesn't get meaningful value from the product.&lt;/p&gt;

&lt;p&gt;The hardest part isn't always making the system work.&lt;/p&gt;

&lt;p&gt;Sometimes it's figuring out &lt;strong&gt;what should be built in the first place.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For this project, we had to continuously balance the technical solution against the business constraints and the experience we wanted to create.&lt;/p&gt;

&lt;p&gt;That was probably my favorite part of the ideathon.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building across countries
&lt;/h2&gt;

&lt;p&gt;Our team was spread across different countries:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Giannis Davarinos, Irini Hartzi, Katie Wan, and me.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Despite that, the collaboration felt surprisingly seamless.&lt;/p&gt;

&lt;p&gt;Different backgrounds, different perspectives, different working environments — but very little friction when it came to actually building and making decisions.&lt;/p&gt;

&lt;p&gt;That was another takeaway for me.&lt;/p&gt;

&lt;p&gt;A strong team doesn't necessarily need everyone to think the same way.&lt;/p&gt;

&lt;p&gt;It needs everyone to be able to &lt;strong&gt;move toward the same outcome.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And I genuinely enjoyed working with this team.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I took away
&lt;/h2&gt;

&lt;p&gt;This ideathon reinforced something I want to keep applying to the projects I build:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Don't build technology in isolation from the problem.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The technical solution should exist because there is a real problem, a real user, and a real constraint worth solving.&lt;/p&gt;

&lt;p&gt;Especially with AI becoming easier to prototype, I think this distinction is becoming even more important.&lt;/p&gt;

&lt;p&gt;When everyone can build a demo, the interesting question becomes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can you build something that deserves to exist?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's the direction I want to keep exploring — right where &lt;strong&gt;human intelligence, technology, and real-world constraints&lt;/strong&gt; meet.&lt;/p&gt;

&lt;p&gt;And, of course, winning an international ideathon with this team was a pretty good way to learn that lesson.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fair Launch — Winner, AI Passport Ideathon: For Work&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A huge thank you to the team for making the week what it was.&lt;/p&gt;

&lt;p&gt;I would genuinely love to build with all of you again.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>career</category>
    </item>
    <item>
      <title>The "1 Million Token" Trap: Why I Built a Bi-Temporal Memory Engine for AI Agents</title>
      <dc:creator>Somay</dc:creator>
      <pubDate>Tue, 18 Aug 2026 10:12:21 +0000</pubDate>
      <link>https://dev.to/casperday11/the-1-million-token-trap-why-i-built-a-bi-temporal-memory-engine-for-ai-agents-11pl</link>
      <guid>https://dev.to/casperday11/the-1-million-token-trap-why-i-built-a-bi-temporal-memory-engine-for-ai-agents-11pl</guid>
      <description>&lt;p&gt;Every team building AI agents right now faces the exact same wall: &lt;strong&gt;Context Degradation&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;The industry is currently obsessed with massive context windows. We hear about 1-million or 2-million token limits and assume the "memory problem" is solved. But there is a fatal difference between &lt;em&gt;how much data&lt;/em&gt; an LLM can hold and &lt;em&gt;how well&lt;/em&gt; it processes that data. &lt;/p&gt;

&lt;p&gt;Shoving 50 dense research papers into a standard vector database doesn't give an AI better memory—it creates a noisy, contradictory mess where old facts either get permanently overwritten or blindly appended, causing the agent to hallucinate.&lt;/p&gt;

&lt;p&gt;I realized that for complex, autonomous AI, memory cannot just be a bolted-on vector database. &lt;strong&gt;Memory has to be the product itself.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;To solve this, I built &lt;strong&gt;PaperPlanes&lt;/strong&gt;—a stateful research assistant built on a bi-temporal memory layer. Here is a deep dive into the architecture and how I handled concurrent AI memory.&lt;/p&gt;




&lt;h2&gt;
  
  
  🏗️ The Architecture: Synthesizing 6 Research Papers
&lt;/h2&gt;

&lt;p&gt;Instead of building another simple RAG pipeline, I synthesized the memory architectures of 6 groundbreaking academic papers (including Zep, Mem0, A-MEM, and Letta) and engineered them into a single production engine.&lt;/p&gt;

&lt;p&gt;My core stack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Database:&lt;/strong&gt; CockroachDB &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;AI Models:&lt;/strong&gt; AWS Bedrock (Amazon Nova Pro &amp;amp; Titan Embeddings)&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Agent Logic:&lt;/strong&gt; LangGraph &amp;amp; FastAPI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here are the three engineering pillars that make it work:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The Bi-Temporal Solution
&lt;/h3&gt;

&lt;p&gt;Most vector databases blindly append or overwrite data. If Paper A says &lt;em&gt;X&lt;/em&gt;, and Paper B says &lt;em&gt;Y&lt;/em&gt;, standard AI breaks. &lt;/p&gt;

&lt;p&gt;PaperPlanes uses a bi-temporal schema in CockroachDB. I &lt;strong&gt;never &lt;code&gt;DELETE&lt;/code&gt; knowledge&lt;/strong&gt;. When facts contradict across different research papers, the engine flags both facts as &lt;code&gt;disputed&lt;/code&gt;, holding the tension. Because CockroachDB tracks system time, I built a UI slider that uses &lt;code&gt;AS OF SYSTEM TIME&lt;/code&gt; queries. You can literally drag a slider back in time to see exactly what the AI believed last week before it learned new, conflicting information.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Agent Self-Introspection via MCP
&lt;/h3&gt;

&lt;p&gt;The AI does not just blindly read vectors. I equipped the Amazon Nova agent with a &lt;strong&gt;CockroachDB Managed MCP Server&lt;/strong&gt; tool. This allows the agent to dynamically write read-only SQL queries against its own database schema to introspect its own memory state and metadata.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Zero Data Loss Under Extreme Concurrency
&lt;/h3&gt;

&lt;p&gt;When you have background reflection workers, ingestion pipelines, and active chat agents trying to write to memory simultaneously, standard databases drop writes or cause race conditions. &lt;/p&gt;

&lt;p&gt;By leveraging CockroachDB's &lt;code&gt;SERIALIZABLE&lt;/code&gt; isolation and C-SPANN distributed vector indexing, I stress-tested the engine by running 25 concurrent agent writers against a single memory node. The result? 58 transaction collisions were detected, gracefully auto-retried in the background, and I achieved &lt;strong&gt;0 lost writes&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 Ebbinghaus Memory Decay
&lt;/h2&gt;

&lt;p&gt;I also learned that advanced retrieval isn't just about cosine similarity; it requires algorithmic decay. I successfully implemented an Ebbinghaus decay algorithm into my LangGraph retrieval logic:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;R = e^(-t/S)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Retention (&lt;code&gt;R&lt;/code&gt;) decays over time (&lt;code&gt;t&lt;/code&gt;) unless the memory strength (&lt;code&gt;S&lt;/code&gt;) is reinforced by frequent agent access. If the AI doesn't think about a fact, it fades. If it recalls it, the memory strengthens and persists.&lt;/p&gt;




&lt;p&gt;I just submitted PaperPlanes for the CockroachDB × AWS Hackathon. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;GitHub Repo:&lt;/strong&gt; &lt;a href="https://github.com/Somay-kousis/PaperPlanes" rel="noopener noreferrer"&gt;Somay-kousis/PaperPlanes&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'd love to hear from other engineers in the comments: How is your team handling context degradation and long-term memory for your AI agents? Are you building custom memory layers, or relying entirely on massive context windows?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>architecture</category>
      <category>machinelearning</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Looking for people to build hackathon projects with, including people still learning to code</title>
      <dc:creator>Somay</dc:creator>
      <pubDate>Mon, 10 Aug 2026 08:33:05 +0000</pubDate>
      <link>https://dev.to/casperday11/looking-for-people-to-build-hackathon-projects-with-including-people-still-learning-to-code-1njo</link>
      <guid>https://dev.to/casperday11/looking-for-people-to-build-hackathon-projects-with-including-people-still-learning-to-code-1njo</guid>
      <description>&lt;p&gt;There's a hackathon almost every week right now, agentic AI, open source, AI infra, all of it. I want to enter more of them, and I want to build the team differently than most people do.&lt;/p&gt;

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

&lt;p&gt;I'm a computer science undergrad working as an AI Systems Engineer Intern at RYSE Technologies, where I built the main orchestrator agent that routes tasks across a registry of 3,000+ specialized subagents through intent classification, capability scoring, context assembly, and dispatch. That cut misrouted tasks by roughly 40% and brought dispatch latency to around 120ms.&lt;/p&gt;

&lt;p&gt;Outside of that, I've built three agentic AI systems, all open source:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;RabbitHole&lt;/strong&gt;, a multi-agent "courtroom" system on LangGraph that runs adversarial debate personas. I fixed a token-budget overrun where agents were blowing 3 to 4x past budget per round with no shared memory, just prompts. Moving the constraint into a structured state schema cut latency 50% (19.8s to 9.8s) and input tokens 70%, measured in LangSmith.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PaperPlanes&lt;/strong&gt;, an agentic memory engine for research papers on CockroachDB, with bi-temporal fact versioning and contradiction detection. It survives a live database crash mid-conversation and keeps 25 of 25 writes under concurrent contention, where a flat-file approach kept 1 and silently lost 24.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Co-Founder Memory&lt;/strong&gt;, a 19-node LangGraph system with a self-correcting CRAG/SRAG retrieval loop and a daily cron pipeline for long-term personal context.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I'm looking for
&lt;/h2&gt;

&lt;p&gt;People who can code and want to get better at it fast, especially if you're still early in your learning curve. Here's how I want this to work:&lt;/p&gt;

&lt;p&gt;You build the base layout and the parts you're comfortable with. When you get stuck, I help you work through it instead of just handing you the answer. When something is genuinely hard, the kind of bug that eats a whole night, I'll write that part myself so the project actually ships. You leave with a shipped, working project and real code review, not just a participation certificate.&lt;/p&gt;

&lt;p&gt;This isn't me disappearing after kickoff and expecting a finished product back. I'm building alongside you. The RabbitHole fix above is the kind of problem I'm good at catching early, before it burns your weekend.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I need from you
&lt;/h2&gt;

&lt;p&gt;Someone who can actually write code, even if you're not confident in it yet, and who can commit to a real weekend, not just the idea-pitch phase. If you've got a hackathon on your radar and want a team, or you want to build toward one together, reply here or DM me.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>startup</category>
      <category>architecture</category>
      <category>agents</category>
    </item>
    <item>
      <title>An Idea or A company?</title>
      <dc:creator>Somay</dc:creator>
      <pubDate>Fri, 31 Jul 2026 13:13:07 +0000</pubDate>
      <link>https://dev.to/casperday11/an-idea-or-a-company-2api</link>
      <guid>https://dev.to/casperday11/an-idea-or-a-company-2api</guid>
      <description>&lt;p&gt;There's a specific kind of gap between "I have an idea" and "I have something an investor would call a company," and almost nobody talks about how wide it actually is. &lt;/p&gt;

&lt;p&gt;You know your product. You don't know that a TAM without a cited source reads as an instant credibility flag, or that "SAM" and "SOM" mean different things to different investors, or that a cap table question at the wrong s&lt;br&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%2F8q2fes57fxjewzrxlggm.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%2F8q2fes57fxjewzrxlggm.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;tage can stall a conversation that was otherwise going well. &lt;/p&gt;

&lt;p&gt;None of this is written down in one place for a first-time founder. It's tribal knowledge, passed around accelerator cohorts and Twitter threads, assembled by osmosis if you're lucky enough to be near people who already know it. &lt;/p&gt;

&lt;p&gt;If you're not, if you're a student, or building somewhere without a dense founder network, you're translating your own idea into a language you're learning in real time, usually under the exact conditions (a fast-approaching pitch, a warm intro that won't wait) where getting it wrong costs you the most.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>startup</category>
      <category>architecture</category>
      <category>agents</category>
    </item>
    <item>
      <title>What I Learned Building an AI Agent Whose Only Goal Is to Disagree With You</title>
      <dc:creator>Somay</dc:creator>
      <pubDate>Thu, 09 Jul 2026 09:50:23 +0000</pubDate>
      <link>https://dev.to/casperday11/what-i-learned-building-an-ai-agent-whose-only-goal-is-to-disagree-with-you-16hg</link>
      <guid>https://dev.to/casperday11/what-i-learned-building-an-ai-agent-whose-only-goal-is-to-disagree-with-you-16hg</guid>
      <description>&lt;p&gt;We just opened the waitlist for Something, and the part that surprised me most while building it wasn't the multi-agent orchestration — it was how hard it is to make an AI actually disagree.&lt;/p&gt;

&lt;p&gt;Every model we tested defaults to being helpful, which in practice means agreeable. Even when explicitly prompted to "find flaws," the outputs would soften into "here are some considerations" instead of a real critique. We had to engineer around this specifically:&lt;/p&gt;

&lt;p&gt;Separate system prompts with opposing reward framing — one agent optimizes for identifying growth potential, the other is explicitly told its only success metric is surfacing a disqualifying flaw&lt;br&gt;
Structured output forcing a verdict, not a summary — the skeptic agent (Nothing) has to commit to a specific weakness category (unit economics, timing, technical feasibility) rather than hedging across all of them&lt;/p&gt;

&lt;p&gt;A reconciliation step where both outputs get merged into one conviction score, so the founder isn't just reading two contradictory paragraphs&lt;/p&gt;

&lt;p&gt;If anyone's built adversarial agent setups and hit the same "it just wants to agree with me" problem, curious how you solved it.&lt;/p&gt;

&lt;p&gt;[Everyone who has a brain is a founder here]&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://something-waitlist.vercel.app" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;something-waitlist.vercel.app&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


</description>
      <category>ai</category>
      <category>startup</category>
      <category>founder</category>
      <category>mentalhealth</category>
    </item>
    <item>
      <title>Building an AI System Designed to Argue Against You: The Architecture Behind Something</title>
      <dc:creator>Somay</dc:creator>
      <pubDate>Wed, 08 Jul 2026 09:55:24 +0000</pubDate>
      <link>https://dev.to/casperday11/building-an-ai-system-designed-to-argue-against-you-the-architecture-behind-something-2039</link>
      <guid>https://dev.to/casperday11/building-an-ai-system-designed-to-argue-against-you-the-architecture-behind-something-2039</guid>
      <description>&lt;p&gt;My co-founder Prapti and I just opened the waitlist for Something, a founder/investor matching platform — but I wanted to write for this audience specifically about the technical part, since that's usually more interesting here than the pitch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The core problem with most AI feedback tools:&lt;/strong&gt; they're sycophantic by default. Optimized for engagement, which nudges toward validation. We wanted the opposite for the moment someone's deciding whether a startup idea is worth building.&lt;/p&gt;

&lt;p&gt;So before any idea on the platform goes public, it runs through an adversarial multi-agent pipeline:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One agent argues the strongest possible case for the idea&lt;/li&gt;
&lt;li&gt;A second agent — we call it &lt;strong&gt;Nothing&lt;/strong&gt; — is specifically rewarded for surfacing flaws: weak unit economics, bad market timing, technical infeasibility&lt;/li&gt;
&lt;li&gt;Output is a structured critique + conviction score, not a vague "looks promising!"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some of the architecture decisions behind it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Multi-agent orchestration&lt;/strong&gt; (LangGraph) instead of a single-prompt approach — lets the optimist and skeptic reason independently before reconciling&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hybrid retrieval&lt;/strong&gt; (dense + sparse) to ground critiques in real market data instead of hallucinated reasoning&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost-aware model routing&lt;/strong&gt; across providers — routes to cheaper/faster models where the task doesn't need frontier reasoning, keeps inference costs sane at scale&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once an idea survives review and the founder has actual proof of work (repo, pilot, patent, live demo — no slide decks), it gets matched to investors based on their real deployment history instead of cold outreach.&lt;/p&gt;

&lt;p&gt;Waitlist's open if you want to poke at it: &lt;a href="https://something-waitlist.vercel.app" rel="noopener noreferrer"&gt;https://something-waitlist.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Happy to go deeper on any part of the architecture in the comments — genuinely want pushback if something sounds off.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>startup</category>
      <category>productivity</category>
      <category>reviews</category>
    </item>
    <item>
      <title>Building RabbitHole broke my brain a little (in a good way)</title>
      <dc:creator>Somay</dc:creator>
      <pubDate>Thu, 02 Jul 2026 16:53:29 +0000</pubDate>
      <link>https://dev.to/casperday11/building-rabbithole-broke-my-brain-a-little-in-a-good-way-3k8h</link>
      <guid>https://dev.to/casperday11/building-rabbithole-broke-my-brain-a-little-in-a-good-way-3k8h</guid>
      <description>&lt;p&gt;ok so i've been sitting on this project for weeks now and finally the courtroom actually WORKS end to end so lemme just dump everything about it while it's fresh.&lt;/p&gt;

&lt;p&gt;RabbitHole is this multi agent thing built on LangGraph where instead of asking one LLM "hey what's the answer" and getting one confident paragraph back, i make a bunch of agent personas actually argue about it. like a state advocate vs a privacy activist vs a compliance officer, all pulling from the same retrieved docs but arguing completely different sides, cross examining each other, and then a judiciary node has to actually rule on it with a confidence score.&lt;/p&gt;

&lt;p&gt;why. because normal RAG flattens everything. you ask something with no clean answer (legal stuff, policy tradeoffs, anything genuinely contested) and it still hands you ONE tidy paragraph like the question wasn't messy in the first place. that always bugged me. the messiness is the point sometimes&lt;/p&gt;

&lt;p&gt;not deployed yet btw, that's purely a money thing not a "not ready" thing, will get to that&lt;/p&gt;

&lt;h2&gt;
  
  
  it's actually two graphs
&lt;/h2&gt;

&lt;p&gt;people ask me if it's one big graph and no, there's the outer Courtroom graph (refines your query, calls into RAG, moderator picks who debates, runs the debate in parallel, then stops and waits for you to weigh in before concluding) and then nested INSIDE that is a whole separate RAG sub-graph doing its own thing.&lt;/p&gt;

&lt;p&gt;the RAG part alone has more going on than i expected when i started. hybrid search (pinecone dense + BM25 sparse bc keyword matches on legal citations matter a lot, semantic search alone misses those), jina reranker to cut noise, and then a CRAG loop — grader checks if the retrieved docs are actually decent, if not it falls back to web search instead of just yolo-ing with bad context. then on top of THAT theres a self-RAG hallucination check where the final brief gets audited against the raw source before it's even allowed to leave the subgraph.&lt;/p&gt;

&lt;p&gt;splitting it into two graphs instead of one flat pipeline was honestly one of the better calls i made, purely bc when a verdict came out wrong i could isolate — was that bad retrieval or bad arguing. saved me so much debugging time lol&lt;/p&gt;

&lt;h2&gt;
  
  
  ok the bug that actually annoyed me the most
&lt;/h2&gt;

&lt;p&gt;so early version, i'd ask for 2 perspectives and get like 6-8 back. system prompt literally said "use exactly 2 perspectives" in caps even lol and the model just. didn't listen. and under any real load this meant burning through groq's rate limit almost instantly, which was NOT fun to watch happen live&lt;/p&gt;

&lt;p&gt;took me way too long to realize the fix isn't a better prompt, the fix is not trusting the prompt for this at all. moved the constraint into the state schema itself — moderator node reads a typed field for perspective count straight off state and only ever schedules that many nodes. the LLM literally never gets asked to count, the graph topology just doesn't let it&lt;/p&gt;

&lt;p&gt;anyway that's the takeaway i keep repeating to myself now — if something is structural, encode it structurally, don't beg the model to behave&lt;/p&gt;

&lt;h2&gt;
  
  
  rate limits basically designed half the architecture
&lt;/h2&gt;

&lt;p&gt;groq free tier is 30 req/min, 6000 tokens/min on the good models. a courtroom debate running perspectives in parallel eats that in seconds, no exaggeration. so i built this FallbackChatModel wrapper thing that catches 429s and connection errors and just fails over — cerebras to groq to gemini — without the graph state even noticing anything went wrong.&lt;/p&gt;

&lt;p&gt;also at startup it checks whatever keys you actually have in .env and figures out routing order itself for heavy vs lite tasks. and the routing itself matters too, not just failover — structured synthesis (the actual arguments, the verdict) goes to the heavier model, llama 3.3 70b or gemini 1.5 pro, but boring boolean stuff like "is this doc relevant y/n" goes to a lite model, llama 3.1 8b or gemini flash. kept most node calls off the expensive quota entirely&lt;/p&gt;

&lt;h2&gt;
  
  
  latency thing that actually made me go woahhh
&lt;/h2&gt;

&lt;p&gt;19.8s down to 9.8s. ~51% cut and honestly it came from like two changes only&lt;/p&gt;

&lt;p&gt;running the perspective nodes concurrently with langgraph's async scheduler instead of one by one (should've done this from day 1 tbh), and reranking with jina before synthesis so the context going into the heavy models is smaller — which speeds up inference AND cuts token cost, kind of a two for one&lt;/p&gt;

&lt;p&gt;nothing exotic here is the thing. the wins were architectural not "swap in a better model"&lt;/p&gt;

&lt;h2&gt;
  
  
  why not deployed
&lt;/h2&gt;

&lt;p&gt;plws don't come at me for this lol — hosting a multi provider multi agent graph with a pinecone index and reranker calls running 24/7 is not free, and i'd rather wait till i can actually afford to keep it alive than ship it and watch it die in a month. everything runs locally and via docker compose right now, &lt;code&gt;docker-compose up --build&lt;/code&gt; gets you fastapi backend + react frontend behind nginx in one go. it's a "when" not an "if"&lt;/p&gt;

&lt;h2&gt;
  
  
  whats next
&lt;/h2&gt;

&lt;p&gt;now that the pipeline actually runs i wanna instrument it properly. order is: per-node cost tracing in langsmith first (rn i can tell a run was expensive but not WHICH node did it, driving me insane), then RAGAS eval on the live pipeline so i'm measuring quality instead of just vibes-checking verdicts, then prompt caching, then model routing/cascades on top of what's already there&lt;/p&gt;

&lt;p&gt;repo's here if you wanna poke around: &lt;a href="https://github.com/Somay-kousis/RabbitHole" rel="noopener noreferrer"&gt;github.com/Somay-kousis/RabbitHole&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;happy to go deeper on any of this in a follow up if ppl want — the CRAG fallback, the state schema fix, the failover wrapper, whatever&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%2Ff66idv7z6lcbzoc5siwa.jpeg" 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%2Ff66idv7z6lcbzoc5siwa.jpeg" alt="UI/UX of Rabbithole" width="800" height="459"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>langgraph</category>
      <category>rag</category>
      <category>llm</category>
      <category>ai</category>
    </item>
    <item>
      <title>The Yes-Man Swap</title>
      <dc:creator>Somay</dc:creator>
      <pubDate>Sun, 28 Jun 2026 10:49:36 +0000</pubDate>
      <link>https://dev.to/casperday11/the-yes-man-swap-32gh</link>
      <guid>https://dev.to/casperday11/the-yes-man-swap-32gh</guid>
      <description>&lt;p&gt;You ask AI something. It answers. You skim it, nod, copy-paste it, move on to the next tab.&lt;/p&gt;

&lt;p&gt;Small moment. Happens fifty times a day. Nobody thinks twice about it.&lt;/p&gt;

&lt;p&gt;But somewhere in that skim-nod-paste move, the roles flipped. The AI did the thinking. You did the agreeing. Agreeing without checking used to be your job's failure mode, not your habit.&lt;/p&gt;

&lt;p&gt;We talk a lot about AI being too agreeable — the yes-man chatbot, the one that calls your bad idea genius because pushback might earn a thumbs-down. Fair complaint. Written about endlessly.&lt;/p&gt;

&lt;p&gt;what about? you read what it gave you, feel that little hit of relief at not having to think anymore, and say "yeah, this works." Not because it actually works. Because checking takes effort, and effort was the whole thing you came here to skip.&lt;/p&gt;

&lt;p&gt;That's not using a tool anymore. That's becoming one.&lt;/p&gt;

&lt;p&gt;The AI ran the logic, weighed the options, picked an answer. That's the part of the job that used to require a brain in the room. You just rubber-stamped it. So really — who was the human in that exchange? The one doing the reasoning, or the one doing the nodding?&lt;/p&gt;

&lt;p&gt;This isn't an anti-AI rant. AI being wrong sometimes is fine, expected even, that's what it is — a fast, confident, occasionally-wrong collaborator. The actual danger isn't the AI's mistake. It's your silence about it. A wrong answer that gets questioned is just a draft. A wrong answer that gets accepted is now load-bearing — under your work, your decision, your name.&lt;/p&gt;

&lt;p&gt;It feels good to skip the checking, that's the trap. Feels like trust. Feels efficient. Feels like you levelled up your workflow. It's not any of that. It's just abdication wearing a productivity costume.&lt;/p&gt;

&lt;p&gt;Using AI well isn't about typing the right prompt. It's about staying the one in the room who's still allowed to say "wait, no, that's wrong." Give that job away too, and you haven't gained a teammate — you've trained your own replacement to need zero supervision, including yours.&lt;/p&gt;

&lt;p&gt;Ask the question. Read the answer like you don't trust it yet. Then decide. That's the whole difference between using the tool and becoming one.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Building RabbitHole (Even While It Breaks)</title>
      <dc:creator>Somay</dc:creator>
      <pubDate>Fri, 19 Jun 2026 16:26:47 +0000</pubDate>
      <link>https://dev.to/casperday11/building-rabbithole-even-while-it-breaks-gbk</link>
      <guid>https://dev.to/casperday11/building-rabbithole-even-while-it-breaks-gbk</guid>
      <description>&lt;p&gt;Some projects reach a stage where they're not "finished", not even close, but they're finally alive.&lt;/p&gt;

&lt;p&gt;RabbitHole reached that point today.&lt;/p&gt;

&lt;p&gt;There are still more bugs than I'd like to admit, conversations occasionally go off the rails but the core infrastructure is finally in place, and that's worth celebrating.&lt;/p&gt;

&lt;h3&gt;
  
  
  Current progress
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Multi-agent architecture with LangGraph&lt;/li&gt;
&lt;li&gt;Perspective generation and courtroom-style debates&lt;/li&gt;
&lt;li&gt;State management and memory layers&lt;/li&gt;
&lt;li&gt;Human-in-the-loop flow&lt;/li&gt;
&lt;li&gt;Graph orchestration running locally&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are still countless things left to improve, but the foundation exists now.&lt;/p&gt;




&lt;p&gt;Another thing that made this month special:&lt;/p&gt;

&lt;p&gt;I was fortunate enough to make it to the second round of two different fellowship programs. Regardless of the outcome, I'm grateful that something in my work and ideas resonated with people.&lt;/p&gt;




&lt;p&gt;One thing I've been learning recently:&lt;/p&gt;

&lt;p&gt;You don't need to wait until a project is perfect before sharing it.&lt;/p&gt;

&lt;p&gt;Sometimes progress deserves to be documented while things are still messy.&lt;/p&gt;

&lt;p&gt;A lot of engineering is just:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Build.
Break.
Debug.
Repeat.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And honestly, that's where most of the fun is.&lt;/p&gt;

&lt;h3&gt;
  
  
  RabbitHole Repository
&lt;/h3&gt;

&lt;p&gt;🔗 GitHub: &lt;a href="https://github.com/Somay-kousis/RabbitHole" rel="noopener noreferrer"&gt;https://github.com/Somay-kousis/RabbitHole&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Still a long way to go, but we're moving.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>python</category>
    </item>
    <item>
      <title>RabbitHoles while learning AI</title>
      <dc:creator>Somay</dc:creator>
      <pubDate>Sun, 14 Jun 2026 07:46:42 +0000</pubDate>
      <link>https://dev.to/casperday11/rabbitholes-while-learning-ai-4o69</link>
      <guid>https://dev.to/casperday11/rabbitholes-while-learning-ai-4o69</guid>
      <description>&lt;p&gt;I was supposed to stop at LangGraph.&lt;/p&gt;

&lt;p&gt;That was the plan.&lt;/p&gt;

&lt;p&gt;Instead, the rabbit hole decided otherwise.&lt;/p&gt;

&lt;p&gt;Some of the things I unexpectedly picked up while chasing Agentic AI:&lt;/p&gt;

&lt;p&gt;⚙️ Docker&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multi-stage Dockerfiles&lt;/li&gt;
&lt;li&gt;Docker Compose&lt;/li&gt;
&lt;li&gt;Volumes&lt;/li&gt;
&lt;li&gt;Building images from my own projects instead of just pulling them&lt;/li&gt;
&lt;li&gt;Finally understanding why "works on my machine" isn't enough&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🤖 GitHub Actions&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automated builds and tests&lt;/li&gt;
&lt;li&gt;CI/CD pipelines&lt;/li&gt;
&lt;li&gt;Branch protection rules&lt;/li&gt;
&lt;li&gt;Secrets management&lt;/li&gt;
&lt;li&gt;Automatic Docker image publishing&lt;/li&gt;
&lt;li&gt;Realizing how satisfying it is when pushing code triggers everything for you&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🌿 Git &amp;amp; Engineering Practices&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Conventional commits&lt;/li&gt;
&lt;li&gt;Pull requests even for solo projects&lt;/li&gt;
&lt;li&gt;Trunk Based Development&lt;/li&gt;
&lt;li&gt;Small, rapid merges instead of week-long branches&lt;/li&gt;
&lt;li&gt;Keeping main always deployable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🚀 Deployment&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Actually shipping things instead of leaving them in localhost prison&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And somehow, while trying to learn AI, I ended up appreciating software engineering just as much.&lt;/p&gt;

&lt;p&gt;Still left:&lt;/p&gt;

&lt;p&gt;• LlamaIndex&lt;br&gt;
• Cloud&lt;br&gt;
• Terraform&lt;/p&gt;

&lt;p&gt;Apparently the roadmap had other plans.&lt;/p&gt;

&lt;p&gt;Curious what unexpected rabbit holes everyone else fell into while learning AI.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>devops</category>
    </item>
    <item>
      <title>Built my first proper agentic AI project</title>
      <dc:creator>Somay</dc:creator>
      <pubDate>Wed, 10 Jun 2026 09:39:11 +0000</pubDate>
      <link>https://dev.to/casperday11/built-my-first-proper-agentic-ai-project-4383</link>
      <guid>https://dev.to/casperday11/built-my-first-proper-agentic-ai-project-4383</guid>
      <description>&lt;p&gt;Over the last few weeks, while learning LangGraph and agentic systems, I ended up building &lt;strong&gt;Co-Founder Memory&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It's a stateful AI assistant with:&lt;/p&gt;

&lt;p&gt;• long-term memory&lt;/p&gt;

&lt;p&gt;• planning loops&lt;/p&gt;

&lt;p&gt;• self-correcting RAG&lt;/p&gt;

&lt;p&gt;• web search fallback&lt;/p&gt;

&lt;p&gt;• automated timeline summaries&lt;/p&gt;

&lt;p&gt;• project and preference tracking&lt;/p&gt;

&lt;p&gt;Nothing revolutionary — many ideas already exist. The goal wasn't to reinvent memory, but to understand how these systems work by actually building one.&lt;/p&gt;

&lt;p&gt;A lot of concepts only started making sense once I had to connect them together:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;graph-based workflows with LangGraph&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;memory extraction and storage&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;retrieval and validation loops&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;routing and planning nodes&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;maintaining context across sessions&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Building it taught me far more than watching tutorials ever did.&lt;/p&gt;

&lt;p&gt;Repo:&lt;br&gt;
&lt;a href="https://github.com/Somay-kousis/Co-Founder-Memory" rel="noopener noreferrer"&gt;https://github.com/Somay-kousis/Co-Founder-Memory&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm currently entering my 3rd year at IIITM Gwalior and looking for &lt;strong&gt;ML / GenAI internships&lt;/strong&gt;. If you're building interesting things around LLMs, agents, RAG, or AI products, I'd love to connect.&lt;/p&gt;

&lt;p&gt;Always happy to chat with fellow builders as well 🚀&lt;/p&gt;

&lt;h1&gt;
  
  
  AI #GenerativeAI #LangGraph #RAG #LLM #MachineLearning #Internship
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>python</category>
    </item>
    <item>
      <title>A few months ago, I wouldn't have picked myself</title>
      <dc:creator>Somay</dc:creator>
      <pubDate>Tue, 02 Jun 2026 03:24:06 +0000</pubDate>
      <link>https://dev.to/casperday11/a-few-months-ago-i-wouldnt-have-picked-myself-2aa2</link>
      <guid>https://dev.to/casperday11/a-few-months-ago-i-wouldnt-have-picked-myself-2aa2</guid>
      <description>&lt;p&gt;Back in February, a friend asked me to join his hackathon team.&lt;/p&gt;

&lt;p&gt;My first reaction wasn't excitement.&lt;/p&gt;

&lt;p&gt;It was:&lt;/p&gt;

&lt;p&gt;"Can I even contribute anything?"&lt;/p&gt;

&lt;p&gt;I remember repeatedly telling him not to add dead weight to the team and to find someone better. He kept insisting that it didn't matter and that I should just join.&lt;/p&gt;

&lt;p&gt;The funny thing is, I still don't think I've done anything extraordinary since then.&lt;/p&gt;

&lt;p&gt;No big startup.&lt;br&gt;
No crazy achievement.&lt;br&gt;
No overnight success story.&lt;/p&gt;

&lt;p&gt;Mostly just hundreds of hours of learning, building random things, breaking them, fixing them, and realizing how much I still don't know.&lt;/p&gt;

&lt;p&gt;But today I caught myself doing something weird.&lt;/p&gt;

&lt;p&gt;I'm the one thinking about who to bring into a team.&lt;/p&gt;

&lt;p&gt;And for the first time, I don't immediately feel like I'd be dead weight.&lt;/p&gt;

&lt;p&gt;Not because I know everything now.&lt;/p&gt;

&lt;p&gt;Just because I've reached the point where I can look at a problem and genuinely believe that, given enough time, I'll figure out how to contribute.&lt;/p&gt;

&lt;p&gt;It's a small shift, but it feels important.&lt;/p&gt;

&lt;p&gt;A few months ago I was wondering if I belonged on a team at all.&lt;/p&gt;

&lt;p&gt;Today I'm wondering who should be on mine. 👀&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
