<?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: Dhairya</title>
    <description>The latest articles on DEV Community by Dhairya (@dhairya1890).</description>
    <link>https://dev.to/dhairya1890</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3833070%2Fc31d2428-1567-411e-889b-6a700d956ad9.jpeg</url>
      <title>DEV Community: Dhairya</title>
      <link>https://dev.to/dhairya1890</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dhairya1890"/>
    <language>en</language>
    <item>
      <title>DealClaw - Autonomous Sales Stratergist Agent</title>
      <dc:creator>Dhairya</dc:creator>
      <pubDate>Sun, 07 Jun 2026 15:26:22 +0000</pubDate>
      <link>https://dev.to/dhairya1890/dealclaw-autonomous-sales-stratergist-agent-2i1b</link>
      <guid>https://dev.to/dhairya1890/dealclaw-autonomous-sales-stratergist-agent-2i1b</guid>
      <description>&lt;h1&gt;
  
  
  How We Built an Autonomous Sales AI Agent with Groq, Gemini Embeddings, and Gmail in 12 Hours
&lt;/h1&gt;

&lt;p&gt;We built &lt;strong&gt;DealClaw&lt;/strong&gt; in a 12-hour hackathon — a sales intelligence platform where the AI doesn't just advise, it acts. Here's the full technical breakdown.&lt;/p&gt;




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

&lt;p&gt;CRMs like Salesforce and HubSpot store everything but surface nothing. A rep closing a $200k deal has no idea that 3 months ago, a different rep handled the exact same &lt;em&gt;"ROI projections are too optimistic"&lt;/em&gt; objection and won by sharing a Stripe case study. That institutional knowledge lives nowhere useful.&lt;/p&gt;

&lt;p&gt;We wanted to build the intelligence layer that mines past deals and makes every rep smarter in real time.&lt;/p&gt;




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



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Gmail / Slack / CRM export
        ↓
  Extraction (Groq)          raw text → structured JSON
        ↓
  Embedding (Gemini)         objections → 3072-dim vectors → Supabase pgvector
        ↓
  Agent (Groq)               deal context + retrieved memory → recommendations
        ↓
  Task execution (Groq + Gmail API)   drafts + sends emails autonomously
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  LLM: Groq with 3-Model Waterfall Fallback
&lt;/h2&gt;

&lt;p&gt;We use Groq for all inference — latency matters a lot when the agent is running mid-conversation. The fallback chain is a single file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;MODELS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;llama-3.3-70b-versatile&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;// primary — best quality&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;llama-3.1-8b-instant&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;     &lt;span class="c1"&gt;// first fallback — fast&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;gemma2-9b-it&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;             &lt;span class="c1"&gt;// last resort&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;groqComplete&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;system&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;max_tokens&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1024&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;lastError&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;model&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;MODELS&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;system&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;system&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;system&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;max_tokens&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;});&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;lastError&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`All Groq models failed: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;lastError&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the 70B model is rate-limited or down, requests fall through silently. Callers never see the model selection logic.&lt;/p&gt;




&lt;h2&gt;
  
  
  Retrieval-Augmented Agent Memory
&lt;/h2&gt;

&lt;p&gt;Every objection gets embedded when it's created and stored in Supabase with pgvector:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Gemini text-embedding-004 via REST (v1beta, 3072 dims)&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;getEmbedding&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;GEMINI_EMBED_URL&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;?key=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;GOOGLE_AI_API_KEY&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;parts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="nx"&gt;text&lt;/span&gt; &lt;span class="p"&gt;}]&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;}),&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()).&lt;/span&gt;&lt;span class="nx"&gt;embedding&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;values&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At query time, the agent embeds the current objection, runs cosine search, and injects the top matches into its system prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SIMILAR PAST OBJECTIONS RETRIEVED:
[1] Objection: ROI projections not substantiated.
    Response: Shared Stripe/Shopify case studies showing 3.2x ROI. Added 90-day success clause.
    → Deal outcome: won | Tags: roi, SaaS, won
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is what makes the recommendations specific instead of generic. The agent literally says &lt;em&gt;"in the Nexus Analytics deal, this exact objection was resolved by..."&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Extraction Pipeline
&lt;/h2&gt;

&lt;p&gt;Raw email or call transcript → structured JSON in one shot:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;EXTRACTION_SYSTEM_PROMPT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`You are a sales intelligence extraction engine.
Return ONLY valid JSON matching this schema:
{
  "summary": "...",
  "stakeholders": [{ "name", "role", "seniority", "sentiment", "primary_concern" }],
  "objections": [{ "text", "category", "response_used" }],
  "commitments": ["..."]
}
Category must be one of: pricing | roi | timing | competitor | champion | technical | procurement`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We added post-parse validation — open-source models occasionally drift on enum fields:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;validateCategories&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;parsed&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;parsed&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;objections&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;parsed&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;objections&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;obj&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;category&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;VALID_CATEGORIES&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;category&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nx"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;category&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;technical&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;}));&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;parsed&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Autonomous Task Execution
&lt;/h2&gt;

&lt;p&gt;The most interesting feature. When you open a deal, the agent analyzes context and generates specific next actions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Send ROI case study to Linda Cho"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Linda raised ROI concerns in the last call. Past won deals show 100% resolution rate when sharing auditable case studies within 48 hours."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"email_client"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"priority"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"high"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"payload"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"to_name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Linda Cho"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"to_role"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"CFO"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"subject"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ROI data from similar deployments"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"context"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Address board approval concern with Stripe/Shopify examples"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When approved, the agent drafts a personalized email via Groq, sends it via Gmail API, and logs it as an interaction — all without the rep touching a keyboard.&lt;/p&gt;

&lt;p&gt;The Gmail send uses RFC 2822 encoding:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;sendEmail&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;subject&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;raw&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;`To: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;`Subject: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;subject&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;`MIME-Version: 1.0`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;encoded&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;Buffer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;raw&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;base64&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="se"&gt;\+&lt;/span&gt;&lt;span class="sr"&gt;/g&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;-&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="se"&gt;\/&lt;/span&gt;&lt;span class="sr"&gt;/g&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;_&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/=+$/&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;gmail&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;users&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;me&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;requestBody&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;raw&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;encoded&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  CRM Import — Flexible Field Mapping
&lt;/h2&gt;

&lt;p&gt;Sales teams export from different CRMs with different column names. We built a normaliser that maps any column name variation to our schema:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;findField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;row&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;candidates&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;keys&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;row&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;candidate&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;candidates&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;match&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;k&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;k&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toLowerCase&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;trim&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;candidate&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toLowerCase&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;match&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;row&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;match&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;company&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;findField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;row&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;company&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;account&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;account name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;organization&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;stage&lt;/span&gt;   &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;findField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;row&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;lead status&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;stage&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;deal stage&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;pipeline stage&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Supports &lt;strong&gt;CSV, Excel (.xlsx), JSON, XML, and PDF&lt;/strong&gt;. A HubSpot export and a Salesforce export both work without configuration.&lt;/p&gt;




&lt;h2&gt;
  
  
  What We'd Do Differently
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Streaming responses&lt;/strong&gt; — Groq supports streaming but we used blocking calls. For the agent chat, streaming would make the UX feel much more alive.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smarter deduplication&lt;/strong&gt; — we deduplicate Gmail by message ID, but if the same email arrives via a forwarded thread, it gets re-imported. Content hashing would be more robust.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Async task execution&lt;/strong&gt; — currently tasks execute synchronously on the server. For long-running tasks (multiple emails), a queue (BullMQ or Supabase edge functions) would be cleaner.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Tech&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;LLM&lt;/td&gt;
&lt;td&gt;Groq (llama-3.3-70b, fallback chain)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Embeddings&lt;/td&gt;
&lt;td&gt;Gemini text-embedding-004 (3072 dims)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vector search&lt;/td&gt;
&lt;td&gt;Supabase pgvector&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;td&gt;Node.js + Express&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Frontend&lt;/td&gt;
&lt;td&gt;React 19 + Vite + Tailwind&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Email&lt;/td&gt;
&lt;td&gt;Gmail API (OAuth2)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hosting&lt;/td&gt;
&lt;td&gt;Render&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Dhairya1890/deals_agent" rel="noopener noreferrer"&gt;github.com/Dhairya1890/deals_agent&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Happy to answer questions about any part of the architecture.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>rag</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Guidewire DevTrails 2026 Hackathon Experience So Far...</title>
      <dc:creator>Dhairya</dc:creator>
      <pubDate>Sat, 28 Mar 2026 18:16:38 +0000</pubDate>
      <link>https://dev.to/dhairya1890/guidewire-devtrails-2026-hackathon-experience-so-far-43j1</link>
      <guid>https://dev.to/dhairya1890/guidewire-devtrails-2026-hackathon-experience-so-far-43j1</guid>
      <description>&lt;h2&gt;
  
  
  Building Trigr: 45 Days, One Market Crash, and a lot of DC Coins
&lt;/h2&gt;

&lt;h2&gt;
  
  
  A dev blog by Team AlooParatha — Guidewire DEVTrails 2025/2026
&lt;/h2&gt;




&lt;h2&gt;
  
  
  Day 0: Wait, We Are a Startup Now?
&lt;/h2&gt;

&lt;p&gt;Most hackathons start with a Discord announcement, a problem statement PDF,&lt;br&gt;
and 24 hours of caffeine. DEVTrails started with something different: a&lt;br&gt;
briefing that made us feel less like students and more like three people who&lt;br&gt;
just signed a lease on an office they cannot afford.&lt;/p&gt;

&lt;p&gt;The rules were simple. You are not a team. You are a startup. You have DC&lt;br&gt;
Coins, the in-universe currency of the hackathon. You spend coins to operate,&lt;br&gt;
to seek guidance, to protect yourself from events. You earn them by supporting&lt;br&gt;
other teams. And every week, something happens that you did not plan for.&lt;/p&gt;

&lt;p&gt;There are three of us on Team AlooParatha. We spent the first day arguing about&lt;br&gt;
what we were actually going to build.&lt;/p&gt;

&lt;p&gt;The problem space was InsurTech. And once we started looking at it, we could&lt;br&gt;
not unsee it.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem We Could Not Ignore
&lt;/h2&gt;

&lt;p&gt;India has over 12 million platform-based delivery workers. Swiggy. Zomato.&lt;br&gt;
Blinkit. Zepto. These are people working 10-hour days on two-wheelers, earning&lt;br&gt;
somewhere around Rs 4,000 to Rs 5,000 a week.&lt;/p&gt;

&lt;p&gt;Then the monsoon arrives.&lt;/p&gt;

&lt;p&gt;Three days of heavy rain in Mumbai means three days of no deliveries. No work.&lt;br&gt;
No pay. No recourse. No claim to file because there is no insurance to begin&lt;br&gt;
with. There is no product in India today built specifically for this gap.&lt;/p&gt;

&lt;p&gt;We called our product Trigr.&lt;/p&gt;

&lt;p&gt;The idea: workers pay a small weekly premium. When a verified external&lt;br&gt;
disruption hits their zone, a flood, severe AQI, a curfew, a city bandh,&lt;br&gt;
Trigr detects it automatically and sends a payout directly to their UPI.&lt;br&gt;
No paperwork. No claim filing. No waiting.&lt;/p&gt;

&lt;p&gt;We had our problem. We had our solution. Now we had to build it in 45 days&lt;br&gt;
while the hackathon tried to break us.&lt;/p&gt;




&lt;h2&gt;
  
  
  Building It
&lt;/h2&gt;

&lt;p&gt;We will not go into the full architecture here, that is for another day.&lt;/p&gt;

&lt;p&gt;What we will say is that Trigr has multiple moving parts working together:&lt;br&gt;
an engine that handles income verification and weekly pricing, a system that&lt;br&gt;
monitors external disruptions and fires automated triggers, an intelligence&lt;br&gt;
layer that handles risk and fraud, and dashboards built for three different&lt;br&gt;
types of users.&lt;/p&gt;

&lt;p&gt;Every design decision came back to one question: what does a delivery worker&lt;br&gt;
in Dharavi actually need when it is raining and he cannot work? The answer&lt;br&gt;
is not a claims form. It is money in his UPI before the day is over.&lt;/p&gt;




&lt;h2&gt;
  
  
  Phase 1 Submissions. Then the Market Crashed.
&lt;/h2&gt;

&lt;p&gt;We were three days from Phase 1 submission. The README was almost done.&lt;br&gt;
The demo was almost working. We were, in the language of startup founders&lt;br&gt;
everywhere, almost there.&lt;/p&gt;

&lt;p&gt;Then this arrived in our feed:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"500 delivery partners. Fake GPS. Real payouts. A coordinated fraud ring&lt;br&gt;
just drained a platform's liquidity pool and yours is next."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The Market Crash event. A challenge injected mid-hackathon by the Guidewire&lt;br&gt;
team. We had 24 hours to respond.&lt;/p&gt;

&lt;p&gt;We stopped. We held our Phase 1 plans. We got on a call and started from&lt;br&gt;
scratch on the problem.&lt;/p&gt;

&lt;p&gt;We will not detail our solution here, but the core challenge was this: how&lt;br&gt;
do you protect genuine workers from being caught in the crossfire while&lt;br&gt;
making sure fraudsters do not get through? Getting that balance right was&lt;br&gt;
the hardest design problem we faced in the entire hackathon.&lt;/p&gt;

&lt;p&gt;We updated the README. We submitted Phase 1.&lt;/p&gt;




&lt;h2&gt;
  
  
  What DEVTrails Actually Is
&lt;/h2&gt;

&lt;p&gt;Here is the thing about this hackathon that no description quite captures:&lt;br&gt;
it does not let you coast.&lt;/p&gt;

&lt;p&gt;Normal hackathons have a problem statement, a deadline, and a demo. DEVTrails&lt;br&gt;
has DC Coins that simulate startup funding. You spend coins to keep operating,&lt;br&gt;
to get mentorship, to protect yourself from market events. You earn them by&lt;br&gt;
supporting other teams in the ecosystem.&lt;/p&gt;

&lt;p&gt;The Market Crash was not the only curveball. Quizzes dropped mid-phase.&lt;br&gt;
Challenges appeared that forced us to rethink assumptions baked into our&lt;br&gt;
product weeks earlier. Every time we thought we had things locked, something&lt;br&gt;
arrived that made us go back to first principles.&lt;/p&gt;

&lt;p&gt;This is what building a real product actually feels like. The requirements&lt;br&gt;
do not freeze at kick-off. The market does not wait for you to finish your&lt;br&gt;
README.&lt;/p&gt;

&lt;p&gt;We are a 3-person team. We are a startup. We have completed Phase 1.&lt;/p&gt;




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

&lt;p&gt;The grind continues. More updates from the Trigr journey coming soon.&lt;/p&gt;

&lt;p&gt;And if you are a delivery worker in anywhere in India wondering when the next monsoon&lt;br&gt;
payout is coming, we are working on it.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Team AlooParatha. Building Trigr at Guidewire DEVTrails 2025/2026.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Massive shoutout to the Guidewire team for building something that actually&lt;br&gt;
teaches you what startup culture feels like, not just what it looks like&lt;br&gt;
on a slide.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>guidwire</category>
      <category>devtrails</category>
      <category>hackathon</category>
      <category>dev</category>
    </item>
    <item>
      <title>New Claude Model</title>
      <dc:creator>Dhairya</dc:creator>
      <pubDate>Thu, 19 Mar 2026 04:09:34 +0000</pubDate>
      <link>https://dev.to/dhairya1890/new-claude-model-j19</link>
      <guid>https://dev.to/dhairya1890/new-claude-model-j19</guid>
      <description>&lt;p&gt;The AI space doesn’t slow down—and Anthropic just dropped a new Claude model that’s worth paying attention to. But instead of hype, let’s break down what actually matters for developers, builders, and students trying to use it in real projects.&lt;/p&gt;

&lt;p&gt;🚀 What’s New?&lt;/p&gt;

&lt;p&gt;The latest Claude model focuses on three major upgrades:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Better Reasoning (Finally Useful for Real Tasks)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Claude has significantly improved its ability to:&lt;/p&gt;

&lt;p&gt;Follow multi-step logic&lt;/p&gt;

&lt;p&gt;Handle complex instructions&lt;/p&gt;

&lt;p&gt;Stay consistent across long conversations&lt;/p&gt;

&lt;p&gt;This isn’t just benchmark improvement—it actually reduces the number of times you need to “fix” the model mid-task.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Larger Context Window (Game-Changer)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;One of Claude’s strongest advantages continues to grow:&lt;/p&gt;

&lt;p&gt;Can process very large inputs (like full codebases, PDFs, or docs)&lt;/p&gt;

&lt;p&gt;Maintains context better over long interactions&lt;/p&gt;

&lt;p&gt;👉 This is huge if you're building:&lt;/p&gt;

&lt;p&gt;AI note summarizers&lt;/p&gt;

&lt;p&gt;Repo analyzers (like your README generator idea 👀)&lt;/p&gt;

&lt;p&gt;Document-based Q&amp;amp;A tools&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;More Reliable Outputs&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Compared to earlier versions:&lt;/p&gt;

&lt;p&gt;Less hallucination (still not zero)&lt;/p&gt;

&lt;p&gt;More structured responses&lt;/p&gt;

&lt;p&gt;Better formatting for code and explanations&lt;/p&gt;

&lt;p&gt;This means fewer guardrails needed in your app.&lt;/p&gt;

&lt;p&gt;🧠 Where Claude Actually Shines&lt;/p&gt;

&lt;p&gt;From a developer perspective, Claude is especially strong in:&lt;/p&gt;

&lt;p&gt;• Code Understanding (Not Just Generation)&lt;/p&gt;

&lt;p&gt;It’s really good at:&lt;/p&gt;

&lt;p&gt;Reading large codebases&lt;/p&gt;

&lt;p&gt;Explaining logic clearly&lt;/p&gt;

&lt;p&gt;Refactoring messy code&lt;/p&gt;

&lt;p&gt;👉 If you’ve ever struggled to understand solutions (like in DSA), Claude can actually teach, not just output answers.&lt;/p&gt;

&lt;p&gt;• Long-Form Content Tasks&lt;/p&gt;

&lt;p&gt;Claude performs very well in:&lt;/p&gt;

&lt;p&gt;Writing documentation&lt;/p&gt;

&lt;p&gt;Summarizing research papers&lt;/p&gt;

&lt;p&gt;Generating structured notes&lt;/p&gt;

&lt;p&gt;This aligns perfectly with:&lt;/p&gt;

&lt;p&gt;AI notes-making tools&lt;/p&gt;

&lt;p&gt;Study assistants&lt;/p&gt;

&lt;p&gt;Knowledge extraction systems&lt;/p&gt;

&lt;p&gt;• Safety + Control&lt;/p&gt;

&lt;p&gt;Anthropic focuses heavily on alignment:&lt;/p&gt;

&lt;p&gt;More predictable outputs&lt;/p&gt;

&lt;p&gt;Less random behavior&lt;/p&gt;

&lt;p&gt;Better adherence to instructions&lt;/p&gt;

&lt;p&gt;This matters when you're building user-facing apps.&lt;/p&gt;

&lt;p&gt;⚠️ Where It’s Still Not Perfect&lt;/p&gt;

&lt;p&gt;Let’s be real:&lt;/p&gt;

&lt;p&gt;Still hallucinates in edge cases&lt;/p&gt;

&lt;p&gt;Can be overly verbose sometimes&lt;/p&gt;

&lt;p&gt;Not always the fastest model&lt;/p&gt;

&lt;p&gt;👉 So you still need:&lt;/p&gt;

&lt;p&gt;Validation layers&lt;/p&gt;

&lt;p&gt;Prompt engineering&lt;/p&gt;

&lt;p&gt;Possibly hybrid systems (Claude + other models)&lt;/p&gt;

&lt;p&gt;🛠️ Practical Use Cases You Can Build&lt;/p&gt;

&lt;p&gt;If you're a student or dev, here are high-impact ideas:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Repo → README Generator&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Feed a GitHub repo → generate clean documentation&lt;br&gt;
(You literally asked about this recently—Claude is perfect here.)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;AI Study Assistant&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Upload PDFs&lt;/p&gt;

&lt;p&gt;Get summaries + questions&lt;/p&gt;

&lt;p&gt;Generate revision notes&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Code Debugging Assistant&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Paste buggy code&lt;/p&gt;

&lt;p&gt;Get step-by-step reasoning&lt;/p&gt;

&lt;p&gt;Understand why something failed&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Hackathon Projects&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Claude is especially useful for:&lt;/p&gt;

&lt;p&gt;Rapid prototyping&lt;/p&gt;

&lt;p&gt;Explaining complex logic to judges&lt;/p&gt;

&lt;p&gt;Generating structured outputs&lt;/p&gt;

&lt;p&gt;💡 My Take (No Hype)&lt;/p&gt;

&lt;p&gt;Claude isn’t just “another LLM.”&lt;/p&gt;

&lt;p&gt;It’s becoming:&lt;/p&gt;

&lt;p&gt;A thinking + reading model, not just a “text generator.”&lt;/p&gt;

&lt;p&gt;If you’re building anything involving:&lt;/p&gt;

&lt;p&gt;Large inputs&lt;/p&gt;

&lt;p&gt;Understanding over generation&lt;/p&gt;

&lt;p&gt;Clean explanations&lt;/p&gt;

&lt;p&gt;…it’s honestly one of the best tools right now.&lt;/p&gt;

&lt;p&gt;🔚 Final Thoughts&lt;/p&gt;

&lt;p&gt;If you're serious about:&lt;/p&gt;

&lt;p&gt;Cracking internships&lt;/p&gt;

&lt;p&gt;Building meaningful AI projects&lt;/p&gt;

&lt;p&gt;Actually understanding code instead of copying it&lt;/p&gt;

&lt;p&gt;Then learning how to use models like Claude properly is a skill in itself.&lt;/p&gt;

&lt;p&gt;Not prompt engineering hacks.&lt;/p&gt;

&lt;p&gt;But:&lt;/p&gt;

&lt;p&gt;Structuring problems&lt;/p&gt;

&lt;p&gt;Feeding the right context&lt;/p&gt;

&lt;p&gt;Validating outputs&lt;/p&gt;

&lt;p&gt;If you want, I can help you:&lt;/p&gt;

&lt;p&gt;Build a project using Claude&lt;/p&gt;

&lt;p&gt;Compare Claude vs GPT for your use cases&lt;/p&gt;

&lt;p&gt;Design something hackathon-ready&lt;/p&gt;

&lt;p&gt;Just tell me 👍&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>machinelearning</category>
      <category>news</category>
    </item>
  </channel>
</rss>
