<?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: Agastya Khati</title>
    <description>The latest articles on DEV Community by Agastya Khati (@agastya_khati_f72c89077c8).</description>
    <link>https://dev.to/agastya_khati_f72c89077c8</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%2F3438795%2F951ecff6-9e76-4c21-9c8e-3f79b6c4ecdc.jpg</url>
      <title>DEV Community: Agastya Khati</title>
      <link>https://dev.to/agastya_khati_f72c89077c8</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/agastya_khati_f72c89077c8"/>
    <language>en</language>
    <item>
      <title>Credexia: AI-Powered Loan Compliance Built with Google Gemini</title>
      <dc:creator>Agastya Khati</dc:creator>
      <pubDate>Wed, 04 Mar 2026 04:05:01 +0000</pubDate>
      <link>https://dev.to/agastya_khati_f72c89077c8/credexia-ai-powered-loan-compliance-built-with-google-gemini-5a4c</link>
      <guid>https://dev.to/agastya_khati_f72c89077c8/credexia-ai-powered-loan-compliance-built-with-google-gemini-5a4c</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/mlh-built-with-google-gemini-02-25-26"&gt;Built with Google Gemini: Writing Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Building Credexia: How Gemini Became My 48-Hour Co-Founder
&lt;/h1&gt;

&lt;h2&gt;
  
  
  The Event
&lt;/h2&gt;

&lt;p&gt;I built Credexia at the LMA Edge Hackathon, where the theme was loan market innovation. The challenge was to modernize how banks handle loan servicing after the trade is signed. While trading platforms have gone digital, post-closing operations are still stuck in Excel hell. I had 48 hours to change that.&lt;/p&gt;

&lt;p&gt;The LMA ecosystem has tools for drafting loans and platforms for price discovery, but there is a massive white space in between. Banks can agree on trades and sign loans digitally, yet post-closing servicing and settlement remain fragmented. Excel sheets, endless email chains, manual data re-entry, broken reconciliation. Liquidity is not blocked by lack of capital. It is blocked by operational friction.&lt;/p&gt;

&lt;p&gt;My goal was to build the Operating System for Loans. A unified platform connecting covenant monitoring, trade settlement, and cash distribution in real time.&lt;/p&gt;

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

&lt;p&gt;Credexia is a unified desktop platform covering three critical loan lifecycle stages in one dashboard. It is built on Next.js 16 with React 19, TypeScript 5.8, and styled with Tailwind CSS 4, MUI 7, and Framer Motion for animations.&lt;/p&gt;

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

&lt;p&gt;See Credexia in action:&lt;br&gt;


  &lt;iframe src="https://www.youtube.com/embed/3GrR22gW9SU"&gt;
  &lt;/iframe&gt;


&lt;br&gt;
&lt;a href="https://youtu.be/3GrR22gW9SU?si=aFDLldcB2vOJYxK8" rel="noopener noreferrer"&gt;https://youtu.be/3GrR22gW9SU?si=aFDLldcB2vOJYxK8&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Live Website
&lt;/h2&gt;

&lt;p&gt;Try the platform:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://credexia.vercel.app/" rel="noopener noreferrer"&gt;https://credexia.vercel.app/&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  GitHub Repository
&lt;/h2&gt;

&lt;p&gt;View the code:&lt;br&gt;


&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/kris70lesgo" rel="noopener noreferrer"&gt;
        kris70lesgo
      &lt;/a&gt; / &lt;a href="https://github.com/kris70lesgo/Credexia" rel="noopener noreferrer"&gt;
        Credexia
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Credexia&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;A Next.js + Supabase + Ethers-powered platform for blockchain-verified loan covenant monitoring, OCR-driven data extraction, and portfolio analytics.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;AI-assisted chat for covenant guidance (Gemini)&lt;/li&gt;
&lt;li&gt;OCR-backed document intake with fallback parsing&lt;/li&gt;
&lt;li&gt;Covenant calculations (Debt/EBITDA, ICR, current ratio)&lt;/li&gt;
&lt;li&gt;Polygon Amoy sealing for compliance events&lt;/li&gt;
&lt;li&gt;Dashboard for loans, uploads, reports, and trade utilities&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Stack&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Next.js 16, TypeScript, Tailwind&lt;/li&gt;
&lt;li&gt;Supabase (auth, DB, storage)&lt;/li&gt;
&lt;li&gt;Ethers.js for Polygon interactions&lt;/li&gt;
&lt;li&gt;Google Gemini for AI responses and parsing&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Prerequisites&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Node 18+ and npm&lt;/li&gt;
&lt;li&gt;Supabase project with SUPABASE_URL and service key&lt;/li&gt;
&lt;li&gt;Polygon Amoy RPC endpoint and funded deployer key&lt;/li&gt;
&lt;li&gt;Gemini API key for AI features&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Setup&lt;/h2&gt;

&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Install deps: npm install&lt;/li&gt;
&lt;li&gt;Copy .env.local.example to .env.local (if present) and set:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;SUPABASE_URL=
SUPABASE_SERVICE_ROLE_KEY=
SUPABASE_ANON_KEY=
GEMINI_API_KEY=
POLYGON_RPC_URL=
BLOCKCHAIN_PRIVATE_KEY=
API_KEY=                  # optional API auth
ALLOWED_ORIGINS=*         # comma-separated list in prod
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ol start="3"&gt;
&lt;li&gt;Run dev server: npm run dev&lt;/li&gt;
&lt;li&gt;Optional: compile contracts: npx hardhat compile&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Scripts&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;npm run dev – start Next.js dev server&lt;/li&gt;
&lt;li&gt;npm…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/kris70lesgo/Credexia" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;




&lt;h3&gt;
  
  
  Monitoring
&lt;/h3&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.amazonaws.com%2Fuploads%2Farticles%2Fm7ry2y8if4crszyhnijh.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.amazonaws.com%2Fuploads%2Farticles%2Fm7ry2y8if4crszyhnijh.png" alt=" "&gt;&lt;/a&gt;&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.amazonaws.com%2Fuploads%2Farticles%2Fg1an2dghdfekhnd4spdk.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.amazonaws.com%2Fuploads%2Farticles%2Fg1an2dghdfekhnd4spdk.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tracks financial covenants like Debt/EBITDA and ESG covenants like Carbon Emissions. Users upload a PDF financial report. AI extracts values and calculates compliance. A traffic light system shows status: Green for Safe, Amber for Warning, Red for Breach. If an ESG covenant is breached, the interest rate automatically adjusts according to loan terms.&lt;/p&gt;

&lt;h3&gt;
  
  
  TradeClear
&lt;/h3&gt;

&lt;p&gt;Digitizes the transfer of loan ownership. Users upload a Notice of Assignment PDF. AI extracts Seller, Buyer, and Trade Amount. After approval, the Ownership Register updates instantly. This removes manual ledger updates entirely.&lt;/p&gt;

&lt;h3&gt;
  
  
  AgentFlow
&lt;/h3&gt;

&lt;p&gt;Automates the Payment Waterfall. It distributes borrower payments across lender banks, enforces zero rounding error, assigns any remainder to the Agent Bank, and generates SWIFT-ready CSV in seconds.&lt;/p&gt;

&lt;h3&gt;
  
  
  Global State
&lt;/h3&gt;

&lt;p&gt;All three modules share a Global State. If ownership changes in TradeClear, AgentFlow instantly reflects the new owner without a page reload. This is managed through an in-memory global singleton with hot-reload safety, though this would need Redis or a database for true production multi-instance deployment.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Gemini Powered Everything
&lt;/h2&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.amazonaws.com%2Fuploads%2Farticles%2F7fbekc57nvfbkahxpvte.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.amazonaws.com%2Fuploads%2Farticles%2F7fbekc57nvfbkahxpvte.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I used Gemini at every layer of the stack. Not as a helper. As a co-builder. The AI layer centers on Google Gemini 2.5 Flash with a 4-tier fallback system: Gemini 2.5 Flash, Gemini 2.5 Pro, Gemini 1.5 Flash, and Gemini 1.5 Pro. OCR.space serves as a raw text backup when needed. A confidence gate at 60% ensures that if AI confidence drops below this threshold, the user must confirm before proceeding.&lt;/p&gt;

&lt;h3&gt;
  
  
  Document Understanding
&lt;/h3&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.amazonaws.com%2Fuploads%2Farticles%2Fb2lugse2bniijz8ejz43.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.amazonaws.com%2Fuploads%2Farticles%2Fb2lugse2bniijz8ejz43.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The core feature is PDF ingestion. A credit analyst uploads Q4 financials. Gemini extracts the numbers, calculates ratios, and flags breaches. The extraction targets totalDebt and ebitda fields with confidence scoring. When confidence is low or parsing fails, an OCR fallback path activates.&lt;/p&gt;

&lt;p&gt;The first extraction test I ran returned a Debt/EBITDA ratio of 47x. The real number was 4.7x. Gemini had misread a table cell. That single failure taught me why finance demands confidence gates and deterministic logic. I rebuilt the extraction layer with strict validation and the 60% confidence threshold.&lt;/p&gt;

&lt;h3&gt;
  
  
  Code Generation
&lt;/h3&gt;

&lt;p&gt;I wrote maybe 40% of the React components myself. The rest came from Gemini prompts. The traffic light dashboard, the upload flow, the audit log interface. I would describe what I needed, iterate twice, and have production-ready code. The marketing landing page with animated hero, the login authentication flow, the portfolio dashboard with analytics cards, the loan tables, the document intake with OCR processing, the compliance reporting, the trade workflow UI, and the AI agent orchestration view all benefited from Gemini-generated code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Blockchain Integration
&lt;/h3&gt;

&lt;p&gt;I used Gemini to write the Solidity contracts for Polygon Amoy testnet. The CovenantRegistry.sol contract handles SHA-256 covenant sealing. Each compliance event gets a txHash for immutable audit trails. When I hit the "private key fiasco" at 3 AM, where my .env key had an extra character, Ethereum keys must be exactly 64 hex characters, Gemini debugged the error message with me. I also implemented a demo mode using FNV-1a hash simulation when the network fails, ensuring the demo never crashes regardless of API failure.&lt;/p&gt;

&lt;h3&gt;
  
  
  Trade Clearing Architecture
&lt;/h3&gt;

&lt;p&gt;The trade module has 7 sub-routes forming a complete lifecycle: upload, parse, validate, owners, approve, confirm, and events. This supports partial ownership transfers between banks. The in-memory trade state singleton prevents loss during Next.js hot reload, though production would need a persistent store.&lt;/p&gt;

&lt;h3&gt;
  
  
  Payment Waterfall Precision
&lt;/h3&gt;

&lt;p&gt;The waterfall distributes cash to syndicate members by ownership share. Floating-point remainder always assigns to Agent Bank to ensure exact totals. This handles fractional splits and guarantees perfect totals, solving the zero-variance requirement that took six hours to perfect. Not because the math is hard. Because financial systems demand perfection.&lt;/p&gt;

&lt;h3&gt;
  
  
  AI Chat Assistant
&lt;/h3&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.amazonaws.com%2Fuploads%2Farticles%2Fbg5qm5uvor8hpjvyzx2p.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.amazonaws.com%2Fuploads%2Farticles%2Fbg5qm5uvor8hpjvyzx2p.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I built a covenant guidance chatbot powered by Gemini. It answers questions about loan covenants, risk analysis, debt-to-EBITDA calculations, document uploads, OCR extraction, blockchain verification, and portfolio insights.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Pitch Deck
&lt;/h3&gt;

&lt;p&gt;Yes, I even used Nano Banana, Gemini's image generation, for the pitch deck visuals. The LMA judges saw AI-generated diagrams explaining AI-powered compliance. Meta, but effective. Gemini helped structure the narrative and create visuals that made institutional infrastructure feel tangible.&lt;br&gt;


&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__cover"&gt;
          &lt;a href="https://docs.google.com/presentation/d/14Yo6o3cjmI9mG06GeovLxeXFwecfI5bO/edit?usp=sharing&amp;amp;amp%3Bouid=115740250615114808651&amp;amp;amp%3Brtpof=true&amp;amp;amp%3Bsd=true" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-us.googleusercontent.com%2Fdocs%2FAHkbwyJgFgqqkc-8_dklbzyKj0_EhgBLhSLXfG1HGYE-tYSM01Ru-hWP3sL19CVW4wySg26k82sXBWT3-h_3bGaNWyHUkWQ6Aca3Zh3F%3Dw1200-h630-p" height="auto" class="m-0"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://docs.google.com/presentation/d/14Yo6o3cjmI9mG06GeovLxeXFwecfI5bO/edit?usp=sharing&amp;amp;amp%3Bouid=115740250615114808651&amp;amp;amp%3Brtpof=true&amp;amp;amp%3Bsd=true" rel="noopener noreferrer" class="c-link"&gt;
            Credexia_ Reinventing Trust, Transparency, and Automation in Loan Markets.pptx - Google Slides
          &lt;/a&gt;
        &lt;/h2&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fssl.gstatic.com%2Fdocs%2Fpresentations%2Fimages%2Ffavicon-2023q4.ico"&gt;
          docs.google.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;




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

&lt;p&gt;The frontend runs on Next.js 16 App Router with 18 API routes covering loans, chat, OCR, parsing, extraction, covenant calculations, blockchain sealing, compliance events, portfolio data, uploads, waterfalls, and the full trade lifecycle.&lt;/p&gt;

&lt;p&gt;All business logic is implemented as pure functions with deterministic outputs. The covenant engine in particular has no side effects, calculating Debt/EBITDA ratios, Interest Coverage Ratios, and Current Ratios with strict mathematical precision.&lt;/p&gt;

&lt;p&gt;Database and authentication use Supabase with Postgres and Storage. The blockchain layer uses Ethers.js 6 with Hardhat 3 for smart contract development. Smart contracts are written in Solidity and deployed to Polygon Amoy testnet.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  AI Needs Guardrails
&lt;/h3&gt;

&lt;p&gt;My first extraction failure taught me that finance cannot tolerate hallucination. The 47x versus 4.7x error led to the confidence gate system and deterministic validation layers. Every AI output gets verified before it touches a financial calculation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Model Names Are Chaos
&lt;/h3&gt;

&lt;p&gt;I spent two hours debugging 404 errors before realizing "gemini-2.5-flash" and "gemini-2.5-flash-preview" are different endpoints. The 4-tier fallback system was born from necessity, not planning. Incorrect model names caused API failures that required the retry logic I implemented.&lt;/p&gt;

&lt;h3&gt;
  
  
  Simulation Beats Broken Reality
&lt;/h3&gt;

&lt;p&gt;OCR on messy financial tables failed constantly. Rather than fight it, I built demo-friendly PDFs with clean formatting and a manual override. The demo worked. The architecture was real. Resilient architecture means the app never crashes during demo regardless of API failure.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Last Mile Is Process, Not Math
&lt;/h3&gt;

&lt;p&gt;Getting the payment waterfall to sum to exactly 100% with no rounding errors took six hours. Not because the math is hard. Because financial systems require perfection. The operational friction in fintech is not about complex calculations. It is about ensuring those calculations are auditable, deterministic, and zero-error.&lt;/p&gt;

&lt;h3&gt;
  
  
  Schema Drift Happens Fast
&lt;/h3&gt;

&lt;p&gt;Frontend expected fields that did not exist in Supabase. I adapted the frontend to the database rather than migrating the database mid-hackathon. This pragmatic approach preserved velocity when time was critical.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Worked and What Didn't
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What Worked
&lt;/h3&gt;

&lt;p&gt;Speed. I prototyped a full-stack fintech platform in 48 hours because Gemini accelerated every decision. Multi-modal document understanding. The ability to throw a PDF at an API and get structured JSON back feels like magic when it works. The traffic light UI gave instant risk visibility across the portfolio. Honest error handling meant no silent failures. Users see real confidence and validation errors.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Friction
&lt;/h3&gt;

&lt;p&gt;Inconsistency. Same prompt, different results across model versions. Structured output sometimes ignored my schema. Financial tables in PDFs remain a hard problem. I needed OCR.space as a backup for messy scans. The messy financial tables broke OCR repeatedly, requiring the demo-friendly PDF approach.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I Needed
&lt;/h3&gt;

&lt;p&gt;Better documentation on model capabilities. Clearer error messages when context windows overflow. Native support for financial table extraction without custom preprocessing. More predictable structured output formatting for financial data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who This Is For
&lt;/h2&gt;

&lt;p&gt;Credexia serves Credit Risk Analysts, Loan Agency Teams, Syndicated Loan Traders, Treasury Operations, ESG Compliance Teams, and Audit &amp;amp; Regulatory Teams. Eventually it will serve rating agencies, regulators, and institutional investors. This is not consumer SaaS. This is institutional infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Business Model
&lt;/h2&gt;

&lt;p&gt;Monetization can happen through per-loan subscription, per-document processing fees, per-settlement fees, compliance enterprise licenses, ESG pricing modules, and audit trail services.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;Credexia is not a hackathon toy. It is institutional infrastructure. I am adding real-time ESG covenant monitoring, expanding to trade settlement workflows, and building out the audit trail for regulatory compliance.&lt;/p&gt;

&lt;p&gt;Gemini got me from idea to working demo in 48 hours. The next 48 days are about making it production-grade. The architecture is real. The global state works. The blockchain sealing provides immutable audit trails. The payment waterfall guarantees zero variance. The AI extraction learns from every validation.&lt;/p&gt;

&lt;p&gt;The foundation is built. Now it is time to scale.&lt;/p&gt;




&lt;p&gt;Built with Next.js, Supabase, Polygon, and Google Gemini.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>geminireflections</category>
      <category>gemini</category>
    </item>
    <item>
      <title>Bridgy: Helping Overwhelmed Communities Choose the Right Tool, Not Another Tool</title>
      <dc:creator>Agastya Khati</dc:creator>
      <pubDate>Mon, 02 Mar 2026 04:32:18 +0000</pubDate>
      <link>https://dev.to/agastya_khati_f72c89077c8/bridgy-helping-overwhelmed-communities-choose-the-right-tool-not-another-tool-1p5p</link>
      <guid>https://dev.to/agastya_khati_f72c89077c8/bridgy-helping-overwhelmed-communities-choose-the-right-tool-not-another-tool-1p5p</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/weekend-2026-02-28"&gt;DEV Weekend Challenge: Community&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Community
&lt;/h2&gt;

&lt;p&gt;A few months ago, a friend reached out to him late at night.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Do you know any tool that can actually help with this? I’ve been searching for an hour and now I’m more overwhelmed than when I started.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The friend was a college student. Smart, capable, constantly juggling assignments, exams, and expectations.&lt;br&gt;&lt;br&gt;
He also had ADHD.&lt;/p&gt;

&lt;p&gt;The problem wasn’t a lack of tools it was the opposite.&lt;/p&gt;

&lt;p&gt;Productivity apps. ADHD planners. Focus tools. Study systems. Recommendation threads. Endless “best apps” lists.&lt;/p&gt;

&lt;p&gt;Each search added another decision.&lt;br&gt;&lt;br&gt;
Each decision increased the cognitive load.&lt;/p&gt;

&lt;p&gt;By the time the search ended, nothing had been chosen and the overwhelm had only grown.&lt;/p&gt;

&lt;p&gt;The person reading that message understood immediately.&lt;/p&gt;

&lt;p&gt;He is part of the same overlapping communities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a &lt;strong&gt;college student&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;a &lt;strong&gt;developer&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;someone living with &lt;strong&gt;ADHD&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In these communities, the hardest part is often not execution it’s &lt;strong&gt;starting&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
And starting means choosing. Choosing means evaluating options. And evaluating options is exhausting when your brain is already overloaded.&lt;/p&gt;

&lt;p&gt;What actually helped wasn’t finding &lt;em&gt;another&lt;/em&gt; tool.&lt;/p&gt;

&lt;p&gt;What helped was when someone narrowed the field and said:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Based on what you’re dealing with &lt;em&gt;right now&lt;/em&gt;, start here.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Bridgy is built for that moment.&lt;/p&gt;


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

&lt;p&gt;&lt;strong&gt;Bridgy&lt;/strong&gt; is a transparent, rule based resource matching web app designed to reduce decision paralysis not add to it.&lt;/p&gt;

&lt;p&gt;Instead of asking users to browse endlessly, Bridgy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Accepts &lt;strong&gt;natural language input&lt;/strong&gt; or a &lt;strong&gt;simple 3 question guided flow&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Interprets context (community, problem, urgency)&lt;/li&gt;
&lt;li&gt;Matches users to &lt;strong&gt;2–3 curated resources&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Explains &lt;em&gt;why&lt;/em&gt; each resource was selected&lt;/li&gt;
&lt;li&gt;Suggests &lt;strong&gt;one concrete next action&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;no black-box recommendations
&lt;/li&gt;
&lt;li&gt;no scraping
&lt;/li&gt;
&lt;li&gt;no tracking
&lt;/li&gt;
&lt;li&gt;no stored personal data
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every recommendation is &lt;strong&gt;deterministic and explainable&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;AI is used only to understand language and rewrite explanations empathetically never to decide what resources are shown.&lt;/p&gt;


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

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


  &lt;iframe src="https://www.youtube.com/embed/YGYWH7Turbk"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;




&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repository&lt;/strong&gt;&lt;br&gt;&lt;br&gt;


&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/kris70lesgo" rel="noopener noreferrer"&gt;
        kris70lesgo
      &lt;/a&gt; / &lt;a href="https://github.com/kris70lesgo/bridgy" rel="noopener noreferrer"&gt;
        bridgy
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Bridgy&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Transparent, rule-based resource matching for neurodivergent minds.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Bridgy helps people with ADHD, autism, dyslexia, anxiety, depression, and related conditions find the right tools and support — without black-box algorithms, data collection, or tracking. Every recommendation is deterministic and explainable.&lt;/p&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Table of Contents&lt;/h2&gt;
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/kris70lesgo/bridgy#overview" rel="noopener noreferrer"&gt;Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kris70lesgo/bridgy#features" rel="noopener noreferrer"&gt;Features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kris70lesgo/bridgy#tech-stack" rel="noopener noreferrer"&gt;Tech Stack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kris70lesgo/bridgy#project-structure" rel="noopener noreferrer"&gt;Project Structure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kris70lesgo/bridgy#how-it-works" rel="noopener noreferrer"&gt;How It Works&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kris70lesgo/bridgy#getting-started" rel="noopener noreferrer"&gt;Getting Started&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kris70lesgo/bridgy#environment-variables" rel="noopener noreferrer"&gt;Environment Variables&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kris70lesgo/bridgy#pages--routes" rel="noopener noreferrer"&gt;Pages &amp;amp; Routes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kris70lesgo/bridgy#data-model" rel="noopener noreferrer"&gt;Data Model&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kris70lesgo/bridgy#scoring-engine" rel="noopener noreferrer"&gt;Scoring Engine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kris70lesgo/bridgy#ai-integration" rel="noopener noreferrer"&gt;AI Integration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kris70lesgo/bridgy#design-system" rel="noopener noreferrer"&gt;Design System&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kris70lesgo/bridgy#scripts" rel="noopener noreferrer"&gt;Scripts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Overview&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Bridgy is a &lt;strong&gt;static-first&lt;/strong&gt;, &lt;strong&gt;privacy-first&lt;/strong&gt; web app. Users describe what they need — either by answering a short guided questionnaire or typing freely — and Bridgy matches them to a curated set of 32+ resources using a fully transparent, deterministic scoring engine.&lt;/p&gt;

&lt;p&gt;There is no backend database, no user accounts, no analytics, and no data sent to third parties beyond an optional LLM call to parse free-text input. The entire matching logic lives in client-side code that anyone can read.&lt;/p&gt;…&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/kris70lesgo/bridgy" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;



&lt;p&gt;&lt;br&gt;&lt;br&gt;
The full codebase is open and readable.&lt;br&gt;&lt;br&gt;&lt;br&gt;
All matching logic, scoring rules, and data models live in the repository.&lt;/p&gt;




&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Architecture Philosophy
&lt;/h3&gt;

&lt;p&gt;Bridgy is intentionally:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Static-first&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Privacy-first&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Explainable by design&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;no backend database&lt;/li&gt;
&lt;li&gt;no user accounts&lt;/li&gt;
&lt;li&gt;no analytics&lt;/li&gt;
&lt;li&gt;no stored user data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The app works fully even without an API key.&lt;/p&gt;




&lt;h3&gt;
  
  
  Tech Stack
&lt;/h3&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;Technology&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Framework&lt;/td&gt;
&lt;td&gt;Next.js 16 (App Router)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Language&lt;/td&gt;
&lt;td&gt;TypeScript (strict)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UI&lt;/td&gt;
&lt;td&gt;React 19&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Styling&lt;/td&gt;
&lt;td&gt;Tailwind CSS v4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Icons&lt;/td&gt;
&lt;td&gt;Lucide React&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LLM Gateway&lt;/td&gt;
&lt;td&gt;OpenRouter (GLM-4.5 → Gemini 2.0 Flash fallback)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deployment&lt;/td&gt;
&lt;td&gt;Vercel&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  How Bridgy Works
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;User Input&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Guided mode (community → problem → urgency)
&lt;/li&gt;
&lt;li&gt;OR free-text natural language&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Intent Parsing&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free text is parsed into structured intent using GLM-4.5
&lt;/li&gt;
&lt;li&gt;Falls back to Gemini 2.0 Flash
&lt;/li&gt;
&lt;li&gt;If no API key exists, a keyword-based local parser runs instead&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Deterministic Scoring&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Community match: +3
&lt;/li&gt;
&lt;li&gt;Problem match: +3
&lt;/li&gt;
&lt;li&gt;Urgency match: +1
&lt;/li&gt;
&lt;li&gt;Human support (when requested): +2
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Same input always produces the same ranked output.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Transparent Results&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;2–3 matched resources&lt;/li&gt;
&lt;li&gt;“Why this?” explanations&lt;/li&gt;
&lt;li&gt;One clear next action&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Why These Decisions Matter
&lt;/h3&gt;

&lt;p&gt;Bridgy deliberately avoids:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;web scraping&lt;/li&gt;
&lt;li&gt;live search&lt;/li&gt;
&lt;li&gt;user tracking&lt;/li&gt;
&lt;li&gt;black-box AI recommendations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For people who are already overwhelmed, &lt;strong&gt;trust and clarity matter more than clever automation&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Every design decision was made to reduce cognitive load not increase it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;Technology has done a great job building tools &lt;em&gt;for&lt;/em&gt; communities.&lt;/p&gt;

&lt;p&gt;It has done a much worse job helping people &lt;strong&gt;navigate between them&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Bridgy is a small attempt to bridge that gap not by adding more options, but by helping someone take &lt;strong&gt;one clear step forward&lt;/strong&gt; when everything feels like too much.&lt;/p&gt;

&lt;p&gt;Sometimes, that’s enough to change the direction of a day.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Copilot Sherlock : Governed Incident Investigation CLI</title>
      <dc:creator>Agastya Khati</dc:creator>
      <pubDate>Sun, 15 Feb 2026 16:14:19 +0000</pubDate>
      <link>https://dev.to/agastya_khati_f72c89077c8/copilot-sherlock-governed-incident-investigation-cli-59mn</link>
      <guid>https://dev.to/agastya_khati_f72c89077c8/copilot-sherlock-governed-incident-investigation-cli-59mn</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/github-2026-01-21"&gt;GitHub Copilot CLI Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Copilot Sherlock — Governed Incident Investigation CLI
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;AI proposes. Humans decide. The system verifies.&lt;/strong&gt;&lt;/p&gt;




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

&lt;p&gt;I built &lt;strong&gt;Sherlock&lt;/strong&gt;, a CLI-based incident investigation system that demonstrates how to use &lt;strong&gt;GitHub Copilot CLI inside a real production-style workflow&lt;/strong&gt;, not just as a code generator or chat assistant.&lt;/p&gt;

&lt;p&gt;Sherlock turns &lt;strong&gt;raw production evidence&lt;/strong&gt; (logs, metrics, deployments) into a &lt;strong&gt;governed, auditable incident decision&lt;/strong&gt; with a strict lifecycle:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI performs bounded reasoning&lt;/li&gt;
&lt;li&gt;Humans explicitly decide (ACCEPT / MODIFY / REJECT)&lt;/li&gt;
&lt;li&gt;The system enforces authority and lifecycle rules&lt;/li&gt;
&lt;li&gt;Outcomes are recorded as append-only organizational memory&lt;/li&gt;
&lt;li&gt;All artifacts are cryptographically verifiable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;AI never decides. Humans always decide.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is not an AI demo.&lt;br&gt;
It’s an &lt;strong&gt;incident lifecycle system with AI inside it&lt;/strong&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  The 90-Second Pitch
&lt;/h2&gt;

&lt;p&gt;Most incident tools do one of two things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Give you AI suggestions with no governance&lt;/li&gt;
&lt;li&gt;Give you checklists with no intelligence&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sherlock separates &lt;strong&gt;intelligence from authority&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI proposes multiple competing hypotheses with evidence and confidence&lt;/li&gt;
&lt;li&gt;Humans approve or reject the outcome&lt;/li&gt;
&lt;li&gt;The system enforces lifecycle gates, memory isolation, and execution rules&lt;/li&gt;
&lt;li&gt;Every decision is immutable and externally verifiable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are &lt;strong&gt;no feedback loops&lt;/strong&gt;, &lt;strong&gt;no auto-approval&lt;/strong&gt;, and &lt;strong&gt;no adaptive behavior&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This is what production-grade AI assistance looks like.&lt;/p&gt;


&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Video Walkthrough (Full End-to-End Run)
&lt;/h3&gt;

&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/iAQ5psknt8A"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;h3&gt;
  
  
  GitHub Repository
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/kris70lesgo/sherlock-demo" rel="noopener noreferrer"&gt;https://github.com/kris70lesgo/sherlock-demo&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  One-Command Demo
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./run-demo.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This executes the &lt;strong&gt;entire incident lifecycle&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Evidence normalization and trust validation&lt;/li&gt;
&lt;li&gt;Scope reduction (thousands of log lines → a few signals)&lt;/li&gt;
&lt;li&gt;AI hypothesis reasoning using &lt;strong&gt;GitHub Copilot CLI&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Mandatory human governance (ACCEPT / MODIFY / REJECT)&lt;/li&gt;
&lt;li&gt;Organizational memory write (append only, read only)&lt;/li&gt;
&lt;li&gt;Operational integration (Slack / JIRA simulation)&lt;/li&gt;
&lt;li&gt;Cryptographic provenance and trust report generation&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Fresh Incident IDs
&lt;/h3&gt;

&lt;p&gt;To avoid append-only memory conflicts, you can run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./sherlock investigate INC-999
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Copilot Auth vs Offline Mode
&lt;/h2&gt;

&lt;p&gt;Sherlock uses &lt;strong&gt;GitHub Copilot CLI&lt;/strong&gt; for Phase 3 reasoning when authenticated.&lt;/p&gt;

&lt;p&gt;If Copilot is not authenticated, Sherlock &lt;strong&gt;falls back to an offline post-mortem generator&lt;/strong&gt; so the demo still completes.&lt;/p&gt;

&lt;p&gt;To authenticate Copilot:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh auth login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  My Experience with GitHub Copilot CLI
&lt;/h2&gt;

&lt;p&gt;Copilot CLI was used as a &lt;strong&gt;reasoning engine&lt;/strong&gt;, not as an authority.&lt;/p&gt;

&lt;p&gt;Specifically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Copilot generates &lt;strong&gt;multi-hypothesis RCAs&lt;/strong&gt; from scoped evidence&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Each hypothesis includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Evidence FOR&lt;/li&gt;
&lt;li&gt;Evidence AGAINST&lt;/li&gt;
&lt;li&gt;Confidence contribution&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Confidence is budgeted and uncertainty is explicit&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Hypotheses can be ruled out with justification&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Crucially:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Copilot &lt;strong&gt;cannot finalize anything&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;It cannot approve itself&lt;/li&gt;
&lt;li&gt;It cannot modify governance rules&lt;/li&gt;
&lt;li&gt;Its output is preserved even when rejected&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The most valuable aspect of Copilot CLI here wasn’t speed  it was &lt;strong&gt;structured reasoning under constraints&lt;/strong&gt;.&lt;br&gt;
Once those constraints were clear, Copilot became a reliable component in a larger system instead of a black box.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;Sherlock demonstrates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to use Copilot CLI &lt;strong&gt;inside a production workflow&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;How to prevent AI feedback loops&lt;/li&gt;
&lt;li&gt;How to enforce human authority mechanically&lt;/li&gt;
&lt;li&gt;How to make AI output externally verifiable&lt;/li&gt;
&lt;li&gt;How to integrate AI without letting it run the system&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most tools ask you to trust them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sherlock gives you a way to verify them.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That’s the difference between a demo and a product.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Language: Bash + Python&lt;/li&gt;
&lt;li&gt;Interface: CLI (interactive and non-interactive modes)&lt;/li&gt;
&lt;li&gt;Architecture: 7 phase, strictly isolated pipeline&lt;/li&gt;
&lt;li&gt;Status: Frozen, validated, demo ready&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks for checking it out.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
      <category>cli</category>
      <category>githubcopilot</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Agastya Khati</dc:creator>
      <pubDate>Sun, 01 Feb 2026 03:49:52 +0000</pubDate>
      <link>https://dev.to/agastya_khati_f72c89077c8/-a53</link>
      <guid>https://dev.to/agastya_khati_f72c89077c8/-a53</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/paimon_573760ccaa1b3492b4" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3471220%2Fa188e842-2518-463a-b0a7-b65214425aaf.png" alt="paimon_573760ccaa1b3492b4"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/paimon_573760ccaa1b3492b4/3d-first-portfolio-built-with-antigravity-1hmm" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;3D-First Portfolio Built with Antigravity&lt;/h2&gt;
      &lt;h3&gt;Paimon ・ Jan 31&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#devchallenge&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#googleaichallenge&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#portfolio&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#gemini&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>devchallenge</category>
      <category>googleaichallenge</category>
      <category>portfolio</category>
      <category>gemini</category>
    </item>
    <item>
      <title>Building a Portfolio with Gemini - New Year, New You Portfolio Challenge</title>
      <dc:creator>Agastya Khati</dc:creator>
      <pubDate>Sat, 31 Jan 2026 13:50:57 +0000</pubDate>
      <link>https://dev.to/agastya_khati_f72c89077c8/building-a-portfolio-with-gemini-new-year-new-you-portfolio-challenge-314m</link>
      <guid>https://dev.to/agastya_khati_f72c89077c8/building-a-portfolio-with-gemini-new-year-new-you-portfolio-challenge-314m</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/new-year-new-you-google-ai-2025-12-31"&gt;New Year, New You Portfolio Challenge Presented by Google AI&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  About Me
&lt;/h2&gt;

&lt;p&gt;This project started with a simple question:&lt;/p&gt;

&lt;p&gt;What happens when you stop treating AI as a tool that writes code, and start treating it as a creative and technical collaborator?&lt;br&gt;
I wanted to explore how far modern Google AI tools specifically &lt;strong&gt;Gemini 3&lt;/strong&gt; and &lt;strong&gt;Antigravity&lt;/strong&gt; could take an idea when used for &lt;em&gt;thinking, designing, iterating, and refining&lt;/em&gt;, not just generating snippets.&lt;/p&gt;

&lt;p&gt;This portfolio is the result of that exploration.&lt;/p&gt;

&lt;p&gt;It’s not meant to be flashy for the sake of it. It’s meant to show how clarity, motion, and structure can emerge naturally when ideas are shaped collaboratively with AI from the very first layout decision to the final animation timing.&lt;/p&gt;


&lt;h2&gt;
  
  
  Portfolio
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Video Walkthrough
&lt;/h3&gt;

&lt;p&gt;To better showcase the motion, flow, and animation details, here’s a short walkthrough of the portfolio.&lt;/p&gt;

&lt;p&gt;This video highlights:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The hero intro animation&lt;/li&gt;
&lt;li&gt;Scroll-based reveals and transitions&lt;/li&gt;
&lt;li&gt;Micro-interactions and motion pacing&lt;/li&gt;
&lt;li&gt;Overall visual flow and structure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/o5Cqg9tsrzU"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note on presentation&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;While the portfolio is fully deployed on Google Cloud Run, embedding it directly inside a DEV post limits viewport size and affects animation timing.&lt;/p&gt;

&lt;p&gt;To preserve the intended experience, a short video walkthrough is included below, along with a direct link to view the portfolio in a full browser window.&lt;/p&gt;


&lt;div class="ltag__cloud-run"&gt;
  &lt;iframe height="600px" src="https://port-709587781727.us-central1.run.app/"&gt;
  &lt;/iframe&gt;
&lt;/div&gt;


&lt;p&gt;Live Portfolio:&lt;br&gt;&lt;br&gt;
&lt;a href="https://port-709587781727.us-central1.run.app/" rel="noopener noreferrer"&gt;https://port-709587781727.us-central1.run.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;--labels dev-tutorial=devnewyear2026&lt;/p&gt;




&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;This portfolio was built through an &lt;strong&gt;AI-assisted vibe-coding workflow&lt;/strong&gt; powered by &lt;strong&gt;Gemini 3&lt;/strong&gt; and &lt;strong&gt;Google Antigravity&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Rather than starting with rigid wireframes or a fixed specification, the process focused on &lt;em&gt;momentum&lt;/em&gt; — letting ideas evolve quickly while keeping the system coherent.&lt;/p&gt;

&lt;h3&gt;
  
  
  Gemini 3 as a Creative and Technical Partner
&lt;/h3&gt;

&lt;p&gt;Gemini 3 was used throughout development as a reasoning and design partner.&lt;/p&gt;

&lt;p&gt;Instead of asking it to “write code,” I used Gemini to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Explore multiple animation approaches before choosing one
&lt;/li&gt;
&lt;li&gt;Reason about motion pacing and visual hierarchy
&lt;/li&gt;
&lt;li&gt;Design section flow and narrative structure
&lt;/li&gt;
&lt;li&gt;Stress-test interaction ideas conceptually
&lt;/li&gt;
&lt;li&gt;Refine micro-interactions and transitions
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Gemini helped answer questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How long should an intro animation last before it feels slow?&lt;/li&gt;
&lt;li&gt;How do you guide attention without overwhelming the user?&lt;/li&gt;
&lt;li&gt;Where should motion stop so content can breathe?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This kind of feedback loop made it possible to move fast &lt;strong&gt;without losing intention&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Hero Intro Animation
&lt;/h3&gt;

&lt;p&gt;One of the clearest examples of Gemini’s impact is the &lt;strong&gt;hero intro animation&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of dropping the user into a static page, the portfolio opens with a carefully paced sequence:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The hero content begins subtly scaled down and centered
&lt;/li&gt;
&lt;li&gt;It fades in and scales up smoothly
&lt;/li&gt;
&lt;li&gt;The layout then transitions into its natural position
&lt;/li&gt;
&lt;li&gt;Supporting elements appear in a controlled, staggered flow
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This animation was iterated multiple times using Gemini to evaluate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Timing curves
&lt;/li&gt;
&lt;li&gt;Ease functions
&lt;/li&gt;
&lt;li&gt;Entry order
&lt;/li&gt;
&lt;li&gt;Emotional impact vs. speed
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result is an intro that feels cinematic but restrained designed to set tone, not steal attention.&lt;/p&gt;




&lt;h3&gt;
  
  
  Antigravity as the Execution Engine
&lt;/h3&gt;

&lt;p&gt;While Gemini helped shape ideas, &lt;strong&gt;Antigravity&lt;/strong&gt; made execution fluid.&lt;br&gt;
Antigravity allowed rapid iteration across:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Component structure
&lt;/li&gt;
&lt;li&gt;Animation tuning
&lt;/li&gt;
&lt;li&gt;Layout refinements
&lt;/li&gt;
&lt;li&gt;Refactors without breaking flow
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of working file by file, Antigravity made it possible to think &lt;em&gt;system-wide&lt;/em&gt;  adjusting animation logic, layout, and styling together while maintaining consistency.&lt;/p&gt;

&lt;p&gt;This kept the creative momentum high without sacrificing technical cleanliness.&lt;/p&gt;




&lt;h3&gt;
  
  
  Tech Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Next.js (App Router)&lt;/li&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;Tailwind CSS&lt;/li&gt;
&lt;li&gt;GSAP for complex timeline animations&lt;/li&gt;
&lt;li&gt;Framer Motion for scroll-based reveals and micro-interactions&lt;/li&gt;
&lt;li&gt;Radix UI / shadcn for accessible primitives&lt;/li&gt;
&lt;li&gt;Deployed on Google Cloud Run&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What I’m Most Proud Of
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Flow
&lt;/h3&gt;

&lt;p&gt;Nothing in this portfolio is abrupt.&lt;br&gt;
Sections don’t “appear.”&lt;br&gt;&lt;br&gt;
They arrive.&lt;br&gt;
Animations guide the eye instead of competing for attention, creating a calm, readable experience that still feels alive.&lt;/p&gt;




&lt;h3&gt;
  
  
  Animation Discipline
&lt;/h3&gt;

&lt;p&gt;Motion is used sparingly and purposefully:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GSAP handles moments that require precision and choreography
&lt;/li&gt;
&lt;li&gt;Framer Motion handles moments that should feel natural and responsive
&lt;/li&gt;
&lt;li&gt;CSS handles everything that doesn’t need JavaScript
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This balance keeps performance high and interactions smooth.&lt;/p&gt;




&lt;h3&gt;
  
  
  AI as an Enabler, Not a Gimmick
&lt;/h3&gt;

&lt;p&gt;There’s no visible chatbot.&lt;br&gt;&lt;br&gt;
No AI button.&lt;br&gt;
Yet AI is present in every decision.&lt;br&gt;
Gemini and Antigravity didn’t replace creativity they &lt;strong&gt;amplified it&lt;/strong&gt;. They made it possible to explore more ideas, discard weaker ones faster, and refine the strongest concepts with confidence.&lt;/p&gt;




&lt;h2&gt;
  
  
  Closing Thought
&lt;/h2&gt;

&lt;p&gt;This project isn’t about a portfolio.&lt;br&gt;
It’s about possibility.&lt;br&gt;
It’s about what happens when developers stop asking AI to &lt;em&gt;do the work&lt;/em&gt; and start asking it to &lt;em&gt;think with them&lt;/em&gt;.&lt;br&gt;
Gemini 3 and Antigravity didn’t just help build this site they shaped how it came to life.&lt;br&gt;
And that’s the most exciting part.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>googleaichallenge</category>
      <category>portfolio</category>
      <category>gemini</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Agastya Khati</dc:creator>
      <pubDate>Fri, 30 Jan 2026 05:47:37 +0000</pubDate>
      <link>https://dev.to/agastya_khati_f72c89077c8/-586j</link>
      <guid>https://dev.to/agastya_khati_f72c89077c8/-586j</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/shobhit_kapoor_666e8b9160" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3704868%2F04c65932-e51f-4607-85de-6d2871aa77d6.png" alt="shobhit_kapoor_666e8b9160"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/shobhit_kapoor_666e8b9160/a-macos-inspired-operating-system-portfolio-built-using-antigravity-12bg" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;A macOS-Inspired Operating System Portfolio Built using Antigravity&lt;/h2&gt;
      &lt;h3&gt;Shobhit Kapoor ・ Jan 30&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#devchallenge&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#googleaichallenge&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#portfolio&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#gemini&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>devchallenge</category>
      <category>googleaichallenge</category>
      <category>portfolio</category>
      <category>gemini</category>
    </item>
    <item>
      <title>From RFQ Emails to Winning Proposals: Building Tendr</title>
      <dc:creator>Agastya Khati</dc:creator>
      <pubDate>Sun, 14 Dec 2025 17:11:09 +0000</pubDate>
      <link>https://dev.to/agastya_khati_f72c89077c8/from-rfq-emails-to-winning-proposals-building-tendr-3pg4</link>
      <guid>https://dev.to/agastya_khati_f72c89077c8/from-rfq-emails-to-winning-proposals-building-tendr-3pg4</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/xano-2025-11-20"&gt;Xano AI-Powered Backend Challenge&lt;/a&gt;: **Full-Stack, AI-First Application&lt;/em&gt;**&lt;/p&gt;




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

&lt;p&gt;I built &lt;strong&gt;Tendr&lt;/strong&gt;, an &lt;strong&gt;AI-powered proposal management system for contractors&lt;/strong&gt; designed around a clean, scalable backend architecture.&lt;/p&gt;

&lt;p&gt;Contractors typically receive RFQs (Requests for Quote) as unstructured emails. They then manually extract requirements, estimate pricing, draft proposals, track revisions, and monitor outcomes. This process is slow, inconsistent, and extremely difficult to scale or audit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tendr solves this problem by combining AI-driven automation with a production-grade backend built on Xano.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of treating AI as a black box, Tendr focuses on &lt;strong&gt;structuring the entire workflow&lt;/strong&gt; from RFQ ingestion to proposal delivery with clear data models, secure APIs, and auditable lifecycle tracking.&lt;/p&gt;

&lt;p&gt;The application allows users to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Securely authenticate and manage B2B-style accounts&lt;/li&gt;
&lt;li&gt;Parse RFQ emails using AI to extract structured project data&lt;/li&gt;
&lt;li&gt;Track RFQs through a defined pipeline
&lt;em&gt;(Received → Parsed → Pricing → Drafted → Sent → Won / Lost)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Generate and manage proposals with centralized pricing rules&lt;/li&gt;
&lt;li&gt;View timelines, analytics, and historical activity backed by a normalized database&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The frontend is intentionally lightweight.&lt;br&gt;&lt;br&gt;
The core goal of this project is to demonstrate &lt;strong&gt;how Xano can be used to turn AI-generated backend logic into a scalable, maintainable system&lt;/strong&gt;, not just a prototype.&lt;/p&gt;


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

&lt;p&gt;&lt;strong&gt;Live Application:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://tendr-ashen.vercel.app/" rel="noopener noreferrer"&gt;https://tendr-ashen.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source Code:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/kris70lesgo/Tendr" rel="noopener noreferrer"&gt;https://github.com/kris70lesgo/Tendr&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Demo Video:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;


  &lt;iframe src="https://www.youtube.com/embed/Elchjlzy6lI"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;




&lt;h2&gt;
  
  
  AI-Assisted Backend Generation
&lt;/h2&gt;

&lt;p&gt;I started by using Xano’s AI and database assistants to generate an &lt;strong&gt;initial backend scaffold&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Example prompt:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Design a scalable backend for a contractor proposal management system with authentication, RFQ ingestion, AI email parsing, proposal generation, pricing rules, timelines, and analytics. Normalize the database and expose secure APIs.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This produced:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An initial database schema&lt;/li&gt;
&lt;li&gt;CRUD APIs for RFQs, proposals, pricing rules, and timeline events&lt;/li&gt;
&lt;li&gt;Basic function stacks for request handling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While this AI-generated backend was functional, it was &lt;strong&gt;not production-ready&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
The schema needed normalization, the APIs lacked ownership enforcement, and the logic was too linear to scale.&lt;/p&gt;

&lt;p&gt;This is where &lt;strong&gt;human refinement&lt;/strong&gt; became critical.&lt;/p&gt;




&lt;h2&gt;
  
  
  How I Refined the AI-Generated Backend in Xano
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1️⃣ Database Design &amp;amp; Normalization
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Before (AI-generated):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Overloaded tables&lt;/li&gt;
&lt;li&gt;Weak separation between RFQs, proposals, and historical events&lt;/li&gt;
&lt;li&gt;Limited support for analytics and auditing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;After (Human-refined):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clear, normalized tables:

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;rfq&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;proposal&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pricing_rule&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;timeline_event&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;event_log&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;account&lt;/code&gt; and &lt;code&gt;user&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Explicit relationships between users, accounts, RFQs, and proposals&lt;/li&gt;

&lt;li&gt;Timeline and event logging to track every state transition&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;This design makes it easy to add analytics, reporting, and future automation without rewriting core logic.&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.amazonaws.com%2Fuploads%2Farticles%2F2r6kc2wf1dyngugxwtpy.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.amazonaws.com%2Fuploads%2Farticles%2F2r6kc2wf1dyngugxwtpy.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&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.amazonaws.com%2Fuploads%2Farticles%2F1m72yeqj5g4cf0ioemwz.png" alt=" "&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  2️⃣ API Structure &amp;amp; Security
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generic CRUD endpoints&lt;/li&gt;
&lt;li&gt;Minimal authorization logic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;After:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Token-based authentication using Xano’s auth system&lt;/li&gt;
&lt;li&gt;Ownership checks on all user-scoped endpoints&lt;/li&gt;
&lt;li&gt;Clear API group separation:

&lt;ul&gt;
&lt;li&gt;Authentication&lt;/li&gt;
&lt;li&gt;Members &amp;amp; Accounts&lt;/li&gt;
&lt;li&gt;RFQs&lt;/li&gt;
&lt;li&gt;Proposals&lt;/li&gt;
&lt;li&gt;Pricing Rules&lt;/li&gt;
&lt;li&gt;Timeline Events&lt;/li&gt;
&lt;li&gt;Event Logs&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Each API group has a single responsibility, making the backend easier to reason about and safer to expose to a frontend.&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.amazonaws.com%2Fuploads%2Farticles%2Fb4fa22vehwvlqprfunsb.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.amazonaws.com%2Fuploads%2Farticles%2Fb4fa22vehwvlqprfunsb.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&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.amazonaws.com%2Fuploads%2Farticles%2Fxb85hfss3iot6nzc6hlh.png" alt=" "&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  3️⃣ Logic Refactoring &amp;amp; Maintainability
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Long, linear function stacks&lt;/li&gt;
&lt;li&gt;Repeated validation and persistence logic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;After:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Modular, reusable function stacks&lt;/li&gt;
&lt;li&gt;Clear separation of concerns:

&lt;ul&gt;
&lt;li&gt;Input validation&lt;/li&gt;
&lt;li&gt;Data persistence&lt;/li&gt;
&lt;li&gt;AI processing&lt;/li&gt;
&lt;li&gt;Response formatting&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;This refactor significantly improved readability and made future changes safer.&lt;/p&gt;




&lt;h3&gt;
  
  
  4️⃣ Production Signals Added
&lt;/h3&gt;

&lt;p&gt;To move beyond a prototype, the backend includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Secure authentication and role-aware accounts&lt;/li&gt;
&lt;li&gt;Centralized pricing rules editable without frontend changes&lt;/li&gt;
&lt;li&gt;Timeline events for every RFQ and proposal state change&lt;/li&gt;
&lt;li&gt;Event logs for observability and debugging&lt;/li&gt;
&lt;li&gt;Input validation and structured error handling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These features turn AI-powered workflows into &lt;strong&gt;reliable backend infrastructure&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  My Experience with Xano
&lt;/h2&gt;

&lt;p&gt;Xano’s biggest strength is that it allows &lt;strong&gt;AI to accelerate backend development without removing architectural control&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;What stood out most:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Database Assistant for rapid schema iteration&lt;/li&gt;
&lt;li&gt;Visual API and function stacks for complex workflows&lt;/li&gt;
&lt;li&gt;Built-in authentication and account management&lt;/li&gt;
&lt;li&gt;Clean integration with a Next.js frontend&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of fighting generated code, I could &lt;strong&gt;refine and harden it into a maintainable backend&lt;/strong&gt; exactly what this challenge is about.&lt;/p&gt;




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

&lt;p&gt;Tendr demonstrates how:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI jumpstarts backend development&lt;/li&gt;
&lt;li&gt;Human judgment makes it production-ready&lt;/li&gt;
&lt;li&gt;Xano provides the tooling to bridge that gap cleanly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The focus of this project is not just AI output, but &lt;strong&gt;structure, scalability, and long-term maintainability&lt;/strong&gt; and Xano excels at enabling that.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>xanochallenge</category>
      <category>ai</category>
      <category>backend</category>
    </item>
    <item>
      <title>MedHack - your health companion</title>
      <dc:creator>Agastya Khati</dc:creator>
      <pubDate>Sat, 25 Oct 2025 08:24:31 +0000</pubDate>
      <link>https://dev.to/agastya_khati_f72c89077c8/medhack-4pdl</link>
      <guid>https://dev.to/agastya_khati_f72c89077c8/medhack-4pdl</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/auth0-2025-10-08"&gt;Auth0 for AI Agents Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;MedHack is an AI-powered health assistance platform designed to make basic &lt;strong&gt;medical guidance&lt;/strong&gt; and &lt;strong&gt;personalized nutrition planning&lt;/strong&gt; accessible to everyone—especially in environments where professional healthcare is difficult to reach, expensive, or confusing to navigate.&lt;/p&gt;

&lt;p&gt;The application has two core AI agents:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MedScan Diagnostic Agent&lt;/strong&gt;&lt;br&gt;
This agent analyzes medical images such as X-rays, CT scans, MRIs, and even photos of skin rashes or visible injuries. It helps users understand what might be happening in their body before they reach a doctor.&lt;br&gt;
It does not replace medical professionals—it simply provides early clarity, reduces anxiety, and helps users ask better questions when they do seek treatment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Diet Planner Agent&lt;/strong&gt;&lt;br&gt;
Instead of generating generic diet charts, this agent works interactively.&lt;br&gt;
It asks about age, activity, preferences, medical conditions, routine, and even budget.&lt;br&gt;
Then it produces a personalized weekly meal plan with calorie targets, macronutrient breakdowns, grocery list, and ongoing chat-based adjustments.&lt;br&gt;
The structured plan can then be downloaded as a PDF or emailed directly to the user.&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Live Demo&lt;/strong&gt;&lt;/em&gt;: &lt;a href="https://med-hack.vercel.app/" rel="noopener noreferrer"&gt;https://med-hack.vercel.app/&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Github Repo&lt;/em&gt;&lt;/strong&gt; : &lt;a href="https://github.com/kris70lesgo/Medhack" rel="noopener noreferrer"&gt;https://github.com/kris70lesgo/Medhack&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Watch the video for the live demonstration of medhack &lt;br&gt;


  &lt;iframe src="https://www.youtube.com/embed/q7nSmOY2_j4"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick Overview
&lt;/h2&gt;

&lt;p&gt;1) Landing Page / Home Section&lt;br&gt;
AI-powered personal health assistant combining diagnosis + nutrition planning&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.amazonaws.com%2Fuploads%2Farticles%2Fuytxodp3ian397vsojk7.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.amazonaws.com%2Fuploads%2Farticles%2Fuytxodp3ian397vsojk7.png" alt=" "&gt;&lt;/a&gt;&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.amazonaws.com%2Fuploads%2Farticles%2Fsd35xsz6cnlg4a313542.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.amazonaws.com%2Fuploads%2Farticles%2Fsd35xsz6cnlg4a313542.png" alt=" "&gt;&lt;/a&gt;&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.amazonaws.com%2Fuploads%2Farticles%2Fne645lcw2glgsppm4c98.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.amazonaws.com%2Fuploads%2Farticles%2Fne645lcw2glgsppm4c98.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2) MedScan&lt;br&gt;
User uploads an X-ray, skin image, or medical report for analysis.&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.amazonaws.com%2Fuploads%2Farticles%2Fvf4n5dn1w920jgeyyxlu.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.amazonaws.com%2Fuploads%2Farticles%2Fvf4n5dn1w920jgeyyxlu.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3) Diet Planner &lt;br&gt;
User provides age, weight, dietary preferences, medical conditions, and goals.&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.amazonaws.com%2Fuploads%2Farticles%2Fo2gh5e49n8rgv89amtiy.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.amazonaws.com%2Fuploads%2Farticles%2Fo2gh5e49n8rgv89amtiy.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Smart Dialogue Screen&lt;br&gt;
Agent asks clarifying questions to tailor the plan precisely.&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.amazonaws.com%2Fuploads%2Farticles%2F35ojgevy7rm3owxtdyxx.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.amazonaws.com%2Fuploads%2Farticles%2F35ojgevy7rm3owxtdyxx.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;7-Day Diet Plan Preview&lt;br&gt;
A complete, structured 7-day meal plan is generated instantly&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.amazonaws.com%2Fuploads%2Farticles%2Fkedvej4xiflomhcktf1m.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.amazonaws.com%2Fuploads%2Farticles%2Fkedvej4xiflomhcktf1m.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;PDF Download&lt;br&gt;
Plan can be securely downloaded as a formatted PDF&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.amazonaws.com%2Fuploads%2Farticles%2Fw8vlx5tz14otzl7zt7ct.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.amazonaws.com%2Fuploads%2Farticles%2Fw8vlx5tz14otzl7zt7ct.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Email integration &lt;br&gt;
The final plan is also delivered via email for convenience&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.amazonaws.com%2Fuploads%2Farticles%2Fd59tgiyptixvlqocbgku.jpg" 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.amazonaws.com%2Fuploads%2Farticles%2Fd59tgiyptixvlqocbgku.jpg" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Auth0 Roles and actions &lt;br&gt;
Role-based access differentiates free and premium feature access.&lt;br&gt;
Automated role assignment ensures smooth and secure onboarding&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.amazonaws.com%2Fuploads%2Farticles%2Fmxy73dvrp5pq0xedcot8.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.amazonaws.com%2Fuploads%2Farticles%2Fmxy73dvrp5pq0xedcot8.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Problem
&lt;/h2&gt;

&lt;p&gt;Healthcare guidance today is fragmented and inefficient:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;People rely on Google searching symptoms, which often leads to confusion and anxiety.&lt;/li&gt;
&lt;li&gt;Diet plans online are generic, not personalized to health conditions, goals, or daily routines.&lt;/li&gt;
&lt;li&gt;Consulting doctors or nutritionists is expensive and often requires waiting time.&lt;/li&gt;
&lt;li&gt;Medical reports, scans, or images like rashes or fractures are difficult to interpret without expert help.&lt;/li&gt;
&lt;li&gt;There is no unified platform that combines medical insight + lifestyle guidance in a personalized, easy way.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As a result, many individuals end up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Making unhealthy food decisions&lt;/li&gt;
&lt;li&gt;Misinterpreting their symptoms&lt;/li&gt;
&lt;li&gt;Or completely ignoring health advice because it feels overwhelming.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Solution : MedHack: Your AI Health Companion
&lt;/h2&gt;

&lt;p&gt;MedHack provides instant, personalized, and actionable health guidance in one place.&lt;/p&gt;
&lt;h3&gt;
  
  
  1) MedScan — AI-Based Medical Understanding
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Upload X-rays, reports, or skin images&lt;/li&gt;
&lt;li&gt;AI analyzes the condition and explains it in simple words&lt;/li&gt;
&lt;li&gt;Provides possible causes and recommendations&lt;/li&gt;
&lt;li&gt;Encourages informed decisions — not blind self-diagnosis&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  2) Diet Planner Agent — Personalized Meal Planning
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Enter your age, weight, lifestyle habits, budget, and goals&lt;/li&gt;
&lt;li&gt;The agent asks follow-up questions to understand your real daily routine&lt;/li&gt;
&lt;li&gt;Generates a custom 7-day diet plan:

&lt;ol&gt;
&lt;li&gt;Nutritionally balanced&lt;/li&gt;
&lt;li&gt;Based on personal restrictions (vegan, allergies, etc.)&lt;/li&gt;
&lt;li&gt;Tailored for weight loss, gain, or general fitness&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Plan can be downloaded as PDF or sent via email instantly&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Secure by Design (Auth0 Integration)
&lt;/h3&gt;

&lt;p&gt;This ensures the app can scale responsibly and safely.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User authentication protects personal health data&lt;/li&gt;
&lt;li&gt;Role-based access lets free users try basic features&lt;/li&gt;
&lt;li&gt;Premium role unlocks advanced scanning and detailed diet planning&lt;/li&gt;
&lt;li&gt;Auth0 Actions automate role assignment and secure feature access
This makes MedHack practical, trustworthy, and ready for real-world use
## How I Used Auth0 for AI Agents to Secure MedHack
&amp;lt;!-- Explain how you leveraged Auth0 for AI Agents to secure your application and enable agent authentication. --&amp;gt;
MedHack handles personal medical data, so security and controlled access were critical.
I integrated Auth0 for AI Agents to handle authentication, authorization, and tool access permissions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;1) User Authentication&lt;/p&gt;

&lt;p&gt;Users sign in using Auth0’s hosted login page.&lt;br&gt;
In middleware.ts, I protect private routes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// middleware.ts
import { auth0 } from "@auth0/nextjs-auth0";

export default auth0.withMiddlewareAuthRequired();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This ensures only authenticated users can access the dashboard, Diet Planner, or MedScan features.&lt;/p&gt;

&lt;p&gt;2) Role-Based Access Control (RBAC)&lt;br&gt;
Role: Access&lt;br&gt;
free_user : Basic MedScan + simple diet suggestions&lt;br&gt;
pro_user : Full diet generator, detailed scan reasoning, PDF + email export&lt;/p&gt;

&lt;p&gt;Roles are assigned in Auth0 Dashboard (or via Actions when a user upgrades).&lt;/p&gt;

&lt;p&gt;Roles defined in code (auth0-fga.ts)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export const roles = {
  FREE_USER: {
    name: 'free_user',
    permissions: [
      "use:vision_agent",
      "read:health_data"
    ]
  },
  PRO_USER: {
    name: 'pro_user',
    permissions: [
      "use:vision_agent",
      "use:diet_agent",
      "read:health_data",
      "write:health_data",
      "export:pdf",
      "send:email"
    ]
  }
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3) Injecting Permissions into JWT (Auth0 Action)&lt;/p&gt;

&lt;p&gt;I added an Auth0 Post-Login Action so user tokens contain permissions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;exports.onExecutePostLogin = async (event, api) =&amp;gt; {
  const namespace = "https://medhack.ai";
  const role = event.authorization?.roles?.[0] ?? "free_user";

  const permissions = role === "pro_user"
    ? roles.PRO_USER.permissions
    : roles.FREE_USER.permissions;

  api.idToken.setCustomClaim(`${namespace}/permissions`, permissions);
  api.accessToken.setCustomClaim(`${namespace}/permissions`, permissions);
};

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;4) Server-Side Permission Enforcement&lt;/p&gt;

&lt;p&gt;Before running any agent or API call, I verify permission.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// lib/authorization.ts
import { auth0 } from "@auth0/nextjs-auth0";

export async function withAuthorization(requiredPermission: string) {
  const session = await auth0.getSession();
  const userPermissions = session?.user?.["https://medhack.ai/permissions"] ?? [];

  if (!userPermissions.includes(requiredPermission)) {
    throw new Error(`Forbidden: Missing Permission → ${requiredPermission}`);
  }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example Use (Protect Diet Agent API) :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// app/api/agents/diet/route.ts
import { withAuthorization } from "@/lib/authorization";

export async function POST(request: Request) {
  await withAuthorization("use:diet_agent");

  // ...run AI agent logic
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅ Free users cannot call the diet agent.&lt;br&gt;
✅ Pro users can.&lt;br&gt;
5) Token Vault: Secure Tool Access&lt;/p&gt;

&lt;p&gt;When agents call external APIs (OCR, vision, food nutrition search, email sender), I use the Auth0 Token Vault, so:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tokens never reach frontend&lt;/li&gt;
&lt;li&gt;AI agents get temporary scoped access
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { getAccessToken } from "@auth0/nextjs-auth0";

const { accessToken } = await getAccessToken({
  scopes: ["send:email", "export:pdf"]
});

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;6) FGA-Style Ownership Rule (User Data Privacy)&lt;/p&gt;

&lt;p&gt;Each user has access only to their own generated plans &amp;amp; scans:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export function canAccessResource(resourceOwnerId: string, currentUserId: string) {
  return resourceOwnerId === currentUserId;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅ No one can view or download someone else’s medical plan or scan.&lt;br&gt;
This is functionally similar to Auth0 Fine-Grained Authorization (FGA) patterns.&lt;br&gt;
MedHack is secure, scalable, and safe to deploy publicly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons Learned and Takeaways
&lt;/h2&gt;

&lt;p&gt;...existing content...&lt;/p&gt;




&lt;h2&gt;
  
  
  💭 &lt;strong&gt;Development Retrospective&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;7 Major Challenges &amp;amp; Solutions&lt;/strong&gt;
&lt;/h3&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;1. AI Model Availability Issues&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;: Qwen2.5-VL-72B failed in production (404: model not found on free tier)&lt;br&gt;
&lt;strong&gt;Solution&lt;/strong&gt;: Implemented automatic fallback system with 3 models (Gemini → Claude → Llama)&lt;br&gt;
&lt;strong&gt;Learning&lt;/strong&gt;: Always research model availability before deploying; test locally first&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;2. Auth0 Custom Claims Complexity&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;: Missed namespace requirement for JWT custom claims (claims weren't appearing in token)&lt;br&gt;
&lt;strong&gt;Solution&lt;/strong&gt;: Added namespace to Auth0 Action: &lt;code&gt;api.idToken.setCustomClaim(${namespace}/permissions, ...)&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Learning&lt;/strong&gt;: Authentication should be designed first, not retrofitted later&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;3. Client-Side Permission Checks (Security Issue)&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;: Initially checked permissions in localStorage (could be faked by users)&lt;br&gt;
&lt;strong&gt;Solution&lt;/strong&gt;: Moved all permission checks to backend, verified via JWT custom claims&lt;br&gt;
&lt;strong&gt;Learning&lt;/strong&gt;: Never trust client-side security; backend MUST validate every request&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;4. Token Management &amp;amp; User Isolation&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;: API keys shared across users (couldn't track usage or revoke access)&lt;br&gt;
&lt;strong&gt;Solution&lt;/strong&gt;: Created TokenVault class to isolate keys per user, verify ownership before access&lt;br&gt;
&lt;strong&gt;Learning&lt;/strong&gt;: Think about data ownership from day 1; every resource needs an owner&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;5. Next.js 15 &lt;code&gt;await cookies()&lt;/code&gt; Change&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;: &lt;code&gt;cookies().get()&lt;/code&gt; worked in v14 but failed in v15 (must be awaited)&lt;br&gt;
&lt;strong&gt;Solution&lt;/strong&gt;: Updated all cookie access: &lt;code&gt;(await cookies()).get('demo_role')&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Learning&lt;/strong&gt;: Modern frameworks evolve quickly; read release notes carefully&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;6. Fallback Strategies &amp;amp; Error Handling&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;: Single model failure = 500 error; no graceful degradation&lt;br&gt;
&lt;strong&gt;Solution&lt;/strong&gt;: Try-catch loop through 3 models; meaningful error messages; detailed logging&lt;br&gt;
&lt;strong&gt;Learning&lt;/strong&gt;: Resilience beats simplicity in production; always have fallbacks&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;7. Environment Variables Not Loading in Vercel&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;: Med Scan worked locally but failed in production (undefined API keys)&lt;br&gt;
&lt;strong&gt;Solution&lt;/strong&gt;: Created &lt;code&gt;/api/debug/env&lt;/code&gt; endpoint to diagnose issues; added all vars BEFORE deployment&lt;br&gt;
&lt;strong&gt;Learning&lt;/strong&gt;: Create diagnostic endpoints early; you can't debug production without visibility&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Key Learnings&lt;/strong&gt;
&lt;/h3&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;About AI Agents:&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Models are different → test multiple early&lt;/li&gt;
&lt;li&gt;Prompt engineering matters significantly&lt;/li&gt;
&lt;li&gt;Fallback systems are critical&lt;/li&gt;
&lt;li&gt;Context improves results dramatically&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;About Authentication:&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Auth0 is powerful but requires understanding OAuth2 basics&lt;/li&gt;
&lt;li&gt;JWT tokens are self-contained proofs (cryptographically signed)&lt;/li&gt;
&lt;li&gt;HTTPOnly cookies protect against JavaScript theft&lt;/li&gt;
&lt;li&gt;Fine-grained authorization requires careful planning&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;About Full-Stack Development:&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Backend must NEVER trust client&lt;/li&gt;
&lt;li&gt;Type safety (TypeScript) prevents runtime errors&lt;/li&gt;
&lt;li&gt;Logging is your window into production&lt;/li&gt;
&lt;li&gt;Comprehensive error handling improves UX&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Top 10 Insights&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Security is not optional&lt;/strong&gt; → build it in from day 1&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend never trusts client&lt;/strong&gt; → verify everything server-side&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI fallbacks are critical&lt;/strong&gt; → never rely on single model&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JWT tokens are elegant&lt;/strong&gt; → self-contained, cryptographically signed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Type safety catches bugs&lt;/strong&gt; → use TypeScript for larger projects&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Logging saves hours&lt;/strong&gt; → simple logs enable production debugging&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resilience beats simplicity&lt;/strong&gt; → handle failures gracefully&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auth should be first&lt;/strong&gt; → don't retrofit security later&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Diagnostic endpoints save time&lt;/strong&gt; → create &lt;code&gt;/api/debug/*&lt;/code&gt; routes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test full flow, not just functions&lt;/strong&gt; → integration testing matters&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;What Went Well&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;✅ Auth0 integration was simpler than expected &lt;br&gt;
✅ Fine-grained authorization scales beautifully &lt;br&gt;
✅ Comprehensive error handling improved UX &lt;br&gt;
✅ Clean code organization enables fast development&lt;br&gt;
✅ AI fallbacks eliminated downtime &lt;br&gt;
✅ Secure token vault prevents key exposure  &lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;What I'd Do Differently&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Start Auth0 setup first (it's foundational)&lt;/li&gt;
&lt;li&gt;Create architecture diagram early&lt;/li&gt;
&lt;li&gt;Test error cases from day 1 (not just happy path)&lt;/li&gt;
&lt;li&gt;Set up monitoring before production&lt;/li&gt;
&lt;li&gt;Plan database schema early&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Development Stats&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Time&lt;/strong&gt;: ~60+ hours&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Challenges&lt;/strong&gt;: 7 major ones resolved&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Models tried&lt;/strong&gt;: 3 approaches&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Permissions&lt;/strong&gt;: 10 defined across 3 roles&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security layers&lt;/strong&gt;: 7 (auth, authz, token vault, audit trail, etc.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lines of code&lt;/strong&gt;: ~3,000+&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Production issues&lt;/strong&gt;: 1 (env vars) - fixed in 30 mins with debug endpoint&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Advice for Similar Projects&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Building AI Applications:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Test multiple models early&lt;/li&gt;
&lt;li&gt;Implement fallback strategies from day 1&lt;/li&gt;
&lt;li&gt;Have API cost budget&lt;/li&gt;
&lt;li&gt;Log which model succeeds&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Implementing Auth:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Choose Auth0 or similar (don't build your own)&lt;/li&gt;
&lt;li&gt;Plan permissions before coding&lt;/li&gt;
&lt;li&gt;Use HTTPOnly cookies&lt;/li&gt;
&lt;li&gt;Never check permissions client-side only&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Full-Stack Development:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start with architecture diagram&lt;/li&gt;
&lt;li&gt;Plan security first&lt;/li&gt;
&lt;li&gt;Use TypeScript&lt;/li&gt;
&lt;li&gt;Log everything&lt;/li&gt;
&lt;li&gt;Create diagnostic endpoints&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Deploying to Vercel:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set env vars BEFORE first deployment&lt;/li&gt;
&lt;li&gt;Redeploy after adding new vars&lt;/li&gt;
&lt;li&gt;Update Auth0 callback URLs&lt;/li&gt;
&lt;li&gt;Test locally thoroughly&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Final Thoughts&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Great products are built at the intersection of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Clean architecture&lt;/strong&gt; (organized, maintainable code)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Thoughtful security&lt;/strong&gt; (security-first decisions)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resilient systems&lt;/strong&gt; (graceful failure handling)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The best learning comes from challenges. Every problem taught me something that makes me a better developer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If I could give one piece of advice&lt;/strong&gt;: "Build security and resilience into the foundation. Create diagnostic tools early. Test the complete flow. And remember: you can debug anything if you can see what's happening."&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;MedHack proves that with proper architecture, thoughtful security, and resilient systems, you can build impressive AI applications quickly.&lt;/strong&gt;&lt;/p&gt;




</description>
      <category>devchallenge</category>
      <category>auth0challenge</category>
      <category>ai</category>
      <category>authentication</category>
    </item>
    <item>
      <title>Reddit Scraper AI Agent: ThreadLens</title>
      <dc:creator>Agastya Khati</dc:creator>
      <pubDate>Sun, 31 Aug 2025 13:59:06 +0000</pubDate>
      <link>https://dev.to/agastya_khati_f72c89077c8/reddit-scraper-ai-agent-threadlens-34mp</link>
      <guid>https://dev.to/agastya_khati_f72c89077c8/reddit-scraper-ai-agent-threadlens-34mp</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/brightdata-n8n-2025-08-13"&gt;AI Agents Challenge powered by n8n and Bright Data&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;AI-driven automation that transforms any public Reddit thread into a concise, actionable insight eliminating hours of manual reading and ensuring teams never miss key points hidden in long discussions.&lt;/p&gt;

&lt;p&gt;What Problem It Solves&lt;br&gt;
Researching Reddit discussions for product feedback, hardware recommendations, or emerging trends can take 30–60 minutes per thread. ThreadLens automatically scrapes every comment and reply, analyzes the conversation with a large language model, and delivers a focused summary in under five minutes. This speeds up decision-making, ensures consistency across research, and makes insights easily searchable in our Notion knowledge base.&lt;/p&gt;

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

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

&lt;h3&gt;
  
  
  n8n Workflow
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://gist.github.com/kris70lesgo/c03f64c8b5decb7f7f6da49aeff5e529" rel="noopener noreferrer"&gt;https://gist.github.com/kris70lesgo/c03f64c8b5decb7f7f6da49aeff5e529&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Implementation
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;n8n Chat Trigger: Captures user input (thread URL) via Telegram or web.&lt;/li&gt;
&lt;li&gt;Bright Data Verified Node (Web Scraper): Batches all thread URLs into a configured “Web Scraper” recipe, handles proxy rotation, fingerprinting, and CAPTCHAs, then monitors and downloads the snapshot content.&lt;/li&gt;
&lt;li&gt;n8n SplitInBatches &amp;amp; IF Nodes: Controls polling loop for snapshot readiness.&lt;/li&gt;
&lt;li&gt;n8n Code &amp;amp; Aggregate Nodes: Reshapes the JSON output into a single text payload.&lt;/li&gt;
&lt;li&gt;n8n AI Agent Node: Sends the combined comment text to GPT-3.5-turbo and retrieves the summary.&lt;/li&gt;
&lt;li&gt;n8n Notion Node: Appends the final summary to a shared Notion database.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Bright Data Verified Node
&lt;/h3&gt;

&lt;p&gt;The Bright Data node powers all scraping and unblocking:&lt;br&gt;
Initiate Batch Extraction: Sends an array of Reddit comment page URLs to a pre-configured Web Scraper recipe.&lt;br&gt;
Monitor Progress: Polls Bright Data’s API until the snapshot is “ready.”&lt;br&gt;
Download Snapshot Content: Retrieves a structured JSON of all comments and metadata, with no HTML parsing on our end.&lt;/p&gt;

&lt;h2&gt;
  
  
  Journey
&lt;/h2&gt;

&lt;p&gt;Building ThreadLens taught us to handle asynchronous batch APIs and transform their outputs for AI consumption.&lt;/p&gt;

&lt;p&gt;Challenge: Managing the polling loop solved by combining IF, Wait, and SplitInBatches nodes to avoid infinite hangs.&lt;/p&gt;

&lt;p&gt;Lesson: Aggregating arrays into a single prompt payload reduces repeated API calls and keeps costs down.&lt;/p&gt;

&lt;p&gt;Outcome: A robust, end-to-end agent that any team member can trigger via chat, delivering vetted insights in under five minutes.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>n8nbrightdatachallenge</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Study Buddy: AI-Powered Student Success Assistant</title>
      <dc:creator>Agastya Khati</dc:creator>
      <pubDate>Thu, 28 Aug 2025 15:09:30 +0000</pubDate>
      <link>https://dev.to/agastya_khati_f72c89077c8/study-buddy-ai-powered-student-success-assistant-4l7i</link>
      <guid>https://dev.to/agastya_khati_f72c89077c8/study-buddy-ai-powered-student-success-assistant-4l7i</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/heroku-2025-08-27"&gt;Heroku "Back to School" AI Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Study Buddy AI Assistant: Intelligent Back-to-School Platform&lt;br&gt;
The Problem We Solve&lt;br&gt;
Academic Overwhelm in Modern Education&lt;/p&gt;

&lt;p&gt;Students struggle with time management across multiple subjects&lt;br&gt;
Information overload makes it hard to focus on key concepts&lt;br&gt;
Lack of personalized study plans leads to inefficient learning&lt;br&gt;
Assessment anxiety from unpredictable quiz formats&lt;br&gt;
Isolation when studying complex topics without guidance&lt;br&gt;
Our AI-Powered Solution&lt;br&gt;
 Core Features&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Intelligent Study Planning&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;AI Schedule Generator: Creates optimized weekly study plans based on courses, deadlines, and available time&lt;br&gt;
Smart Prioritization: Automatically weights subjects based on deadlines and difficulty&lt;br&gt;
Adaptive Scheduling: Adjusts plans as priorities change&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Personalized AI Tutoring&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;24/7 Study Companion: Patient, encouraging AI tutor available anytime&lt;br&gt;
Step-by-Step Explanations: Breaks down complex concepts into digestible parts&lt;br&gt;
Multi-Subject Support: Handles math (LaTeX formatting), science, humanities, and more&lt;br&gt;
Citation-Ready: Provides source references when working with uploaded materials&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Dynamic Assessment Creation&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Custom Quiz Generation: Creates practice tests from any study material&lt;br&gt;
Adaptive Difficulty: Adjusts question complexity based on student level&lt;br&gt;
Instant Feedback: Provides explanations for both correct and incorrect answers&lt;br&gt;
Multiple Question Types: Multiple choice, short answer, and essay formats&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Progress Analytics&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Learning Insights: Tracks study time, mastery levels, and achievement streaks&lt;br&gt;
Visual Progress: Charts and graphs showing improvement over time&lt;br&gt;
Goal Setting: Helps students set and achieve realistic learning objectives&lt;br&gt;
Technical Innovation&lt;br&gt;
Hybrid AI Architecture&lt;br&gt;
Multi-Provider Support: Seamlessly switches between Heroku AI and Google Gemini&lt;br&gt;
Intelligent Fallbacks: Local algorithms ensure functionality even when AI services fail&lt;br&gt;
Cost Optimization: Routes requests to most efficient provide&lt;/p&gt;

&lt;h2&gt;
  
  
  Category
&lt;/h2&gt;

&lt;p&gt;Build an AI-Powered Back to School Experience&lt;/p&gt;

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

&lt;p&gt;github : &lt;a href="https://github.com/kris70lesgo/heroku" rel="noopener noreferrer"&gt;link&lt;/a&gt;&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.amazonaws.com%2Fuploads%2Farticles%2Fcimvb7jt62fvoegkc2u9.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.amazonaws.com%2Fuploads%2Farticles%2Fcimvb7jt62fvoegkc2u9.png" alt=" " width="800" height="376"&gt;&lt;/a&gt;&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.amazonaws.com%2Fuploads%2Farticles%2Fiup4qn6uhv2askdzc03n.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.amazonaws.com%2Fuploads%2Farticles%2Fiup4qn6uhv2askdzc03n.png" alt=" " width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Used Heroku AI
&lt;/h2&gt;

&lt;p&gt;Implemented: Managed Inference and Agents&lt;br&gt;
I integrated Heroku Managed Inference and Agents - the core AI service that provides access to foundation models via OpenAI-compatible REST APIs.&lt;/p&gt;

&lt;p&gt;Implementation Details&lt;br&gt;
Auto-detects available providers&lt;br&gt;
Prefers Heroku AI over Gemini when configured&lt;br&gt;
Graceful fallback mechanism&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Implementation
&lt;/h2&gt;

&lt;p&gt;Primary: Heroku Managed Inference (OpenAI-compatible)&lt;br&gt;
Fallback: Google Gemini API&lt;br&gt;
Local algorithms: When AI services unavailable&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;AI Response Reliability
Challenge: AI services can fail or return malformed JSON&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Solution: Multi-layered fallback system&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Cross-Provider Compatibility
Challenge: Different AI APIs have incompatible formats&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Solution: Unified message interface&lt;br&gt;
Future Multi-Agent Opportunities&lt;br&gt;
Potential Enhancements:&lt;/p&gt;

&lt;p&gt;RAG Agent - Document processing with pgvector&lt;br&gt;
Progress Tracker Agent - Learning analytics&lt;br&gt;
Recommendation Agent - Personalized study paths&lt;br&gt;
MCP Integration - Tool coordination between agents&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>herokuchallenge</category>
      <category>webdev</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
