<?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.us-east-2.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>Fruit Dash: A Solstice Platformer with Binary Code Gates</title>
      <dc:creator>Agastya Khati</dc:creator>
      <pubDate>Sat, 20 Jun 2026 11:06:26 +0000</pubDate>
      <link>https://dev.to/agastya_khati_f72c89077c8/fruit-dash-a-solstice-platformer-with-binary-code-gates-2jmi</link>
      <guid>https://dev.to/agastya_khati_f72c89077c8/fruit-dash-a-solstice-platformer-with-binary-code-gates-2jmi</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/june-game-jam-2026-06-03"&gt;June Solstice Game Jam&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built &lt;strong&gt;Fruit Dash&lt;/strong&gt;, a lightweight 2D browser platformer inspired by the bright, playful energy of June and the June Solstice.&lt;/p&gt;

&lt;p&gt;Fruit Dash is a colorful pixel-art platformer where the player chooses a character, enters a 50-level world, collects fruit, avoids traps, fights enemies, activates checkpoints, and clears each stage by reaching the end flag.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;50 generated platforming levels&lt;/li&gt;
&lt;li&gt;Character selection&lt;/li&gt;
&lt;li&gt;Level selector&lt;/li&gt;
&lt;li&gt;Fruit collection&lt;/li&gt;
&lt;li&gt;Jumping and double jumping&lt;/li&gt;
&lt;li&gt;Fireball/powerball attacks&lt;/li&gt;
&lt;li&gt;Enemies that scale by level&lt;/li&gt;
&lt;li&gt;Checkpoints and end flags&lt;/li&gt;
&lt;li&gt;Saws, spikes, fire traps, arrows, fans, trampolines, moving platforms, boxes, and surfaces&lt;/li&gt;
&lt;li&gt;Background music with mute/unmute control&lt;/li&gt;
&lt;li&gt;Mobile and tablet touch controls&lt;/li&gt;
&lt;li&gt;Turing Gate binary puzzles on milestone levels&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For the June Solstice theme, I wanted the game to feel like a bright seasonal arcade adventure: colorful, energetic, full of motion, and centered around progression. The solstice is a turning point in the year, and Fruit Dash mirrors that through the way each level moves the player forward into new hazards, enemies, and mechanics.&lt;/p&gt;

&lt;p&gt;I also added a specific Alan Turing-inspired mechanic: &lt;strong&gt;Turing Gates&lt;/strong&gt;. On milestone levels, the exit is locked behind a small binary code puzzle. The player must shoot three binary switches until the bits match the target code. This connects the platforming gameplay to computation, binary logic, code-breaking, and Turing’s legacy in computer science.&lt;/p&gt;

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

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/jbFF8K4B-w8"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

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

&lt;p&gt;GitHub repository:&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/fruitdash" rel="noopener noreferrer"&gt;
        fruitdash
      &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;Fruit Dash&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Fruit Dash is a lightweight 2D browser platformer built for the June Solstice Game Jam. It is a colorful fruit-collecting platformer about movement, progression, and small moments of code-breaking.&lt;/p&gt;
&lt;p&gt;The game runs directly in the browser with plain HTML, CSS, and JavaScript. No heavy game engine is required.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Play&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Live demo:&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;https://game-jade-one-25.vercel.app
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Local run:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;python3 -m http.server 4173&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Then open:&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;http://127.0.0.1:4173/game-src/index.html
&lt;/code&gt;&lt;/pre&gt;&lt;/div&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;50 generated platforming levels&lt;/li&gt;
&lt;li&gt;Home screen, level selector, and character selection&lt;/li&gt;
&lt;li&gt;Fruit collection with multiple fruit types&lt;/li&gt;
&lt;li&gt;Jumping, double jumping, checkpoints, and end flags&lt;/li&gt;
&lt;li&gt;Tiered enemies: mushrooms, Vomfy, slimes, and mixed late-game waves&lt;/li&gt;
&lt;li&gt;Fireball/powerball attack with character-specific colors&lt;/li&gt;
&lt;li&gt;Traps and movement tools: saws, spikes, fire, arrows, fans, trampolines, moving platforms, boxes, and surfaces&lt;/li&gt;
&lt;li&gt;Turing Gates on milestone levels with binary switch puzzles&lt;/li&gt;
&lt;li&gt;Looping background music with mute/unmute control&lt;/li&gt;
&lt;li&gt;Touch controls for mobile and tablet, including a fire button&lt;/li&gt;
&lt;li&gt;Vercel-friendly root entry page&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Controls&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Move: &lt;code&gt;A/D&lt;/code&gt; or…&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/fruitdash" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Live demo:&lt;br&gt;&lt;br&gt;
&lt;a href="https://game-jade-one-25.vercel.app" rel="noopener noreferrer"&gt;https://game-jade-one-25.vercel.app&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Fruit Dash is built with plain &lt;strong&gt;HTML, CSS, and JavaScript&lt;/strong&gt;. I intentionally avoided a heavy game engine so the game would stay lightweight, easy to deploy, and fully controllable in the browser.&lt;/p&gt;

&lt;p&gt;The game runs on an HTML canvas. The player, enemies, fruits, traps, projectiles, platforms, checkpoints, Turing Gates, and HUD are all drawn and updated manually in JavaScript.&lt;/p&gt;

&lt;p&gt;The visual style comes from pixel-art PNG assets and sprite sheets. The game uses sprites for characters, fruits, terrain, traps, enemies, fireballs, checkpoints, and UI elements.&lt;/p&gt;

&lt;p&gt;The level system is generated in code. Each level creates a different combination of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ground platforms&lt;/li&gt;
&lt;li&gt;Floating platforms&lt;/li&gt;
&lt;li&gt;Fruits&lt;/li&gt;
&lt;li&gt;Boxes&lt;/li&gt;
&lt;li&gt;Checkpoints&lt;/li&gt;
&lt;li&gt;End flags&lt;/li&gt;
&lt;li&gt;Moving platforms&lt;/li&gt;
&lt;li&gt;Hazards&lt;/li&gt;
&lt;li&gt;Trampolines&lt;/li&gt;
&lt;li&gt;Fans&lt;/li&gt;
&lt;li&gt;Enemies&lt;/li&gt;
&lt;li&gt;Turing Gates on milestone levels&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Difficulty increases as the level number rises. Early levels focus on movement and collection. Later levels introduce more enemies, hazards, and tighter platforming situations.&lt;/p&gt;

&lt;p&gt;Enemies are introduced by level tier:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Early levels use mushroom enemies&lt;/li&gt;
&lt;li&gt;After level 10, Vomfy enemies appear&lt;/li&gt;
&lt;li&gt;After level 30, slimes appear&lt;/li&gt;
&lt;li&gt;After level 40, enemy types are mixed together&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The player can shoot fireballs using &lt;code&gt;Enter&lt;/code&gt;, mouse click, tap, or the mobile fire button. Fireballs use sprite-sheet animation and have character-specific colors. They disappear when they hit enemies, platforms, traps, switches, or other solid objects.&lt;/p&gt;

&lt;p&gt;For the Turing-inspired mechanic, levels &lt;code&gt;10&lt;/code&gt;, &lt;code&gt;20&lt;/code&gt;, &lt;code&gt;30&lt;/code&gt;, &lt;code&gt;40&lt;/code&gt;, and &lt;code&gt;50&lt;/code&gt; include &lt;strong&gt;Turing Gates&lt;/strong&gt;. Each gate displays a 3-bit binary target. The player shoots three bit switches to toggle them between &lt;code&gt;0&lt;/code&gt; and &lt;code&gt;1&lt;/code&gt;. When the current bit pattern matches the target, the exit unlocks.&lt;/p&gt;

&lt;p&gt;I also added background music. The original audio file was an OGG file around 11 MB, which felt too large for a small browser game. I used FFmpeg to convert it into a smaller MP3 file, reducing it to around 4.1 MB and improving browser compatibility. The music loops after the first player interaction because browsers usually block autoplay audio until the user clicks, taps, or presses a key.&lt;/p&gt;

&lt;p&gt;For mobile support, I added touch controls that appear automatically on touch screens. Mobile and tablet players can move, jump, and fire without a keyboard.&lt;/p&gt;

&lt;p&gt;The game is deployed as a static site on Vercel. I also added a root &lt;code&gt;index.html&lt;/code&gt; so the deployed URL opens correctly instead of returning a 404.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges I Faced
&lt;/h2&gt;

&lt;p&gt;One of the biggest challenges was making sure the collision system matched the visuals. At one point, some platforms had collision but were not visibly drawn because the wrong part of the terrain sprite sheet was being used. This made the character look like they were standing on invisible platforms. I fixed this by correcting the terrain tile coordinates and adding safer fallback drawing for platform types.&lt;/p&gt;

&lt;p&gt;Generated level quality was another major challenge. Since levels are built in code, some objects were originally placed in awkward spots. Fruits could appear in cramped areas that were hard or impossible to reach. Fans could appear under platforms, pushing the player directly into a ceiling. I added a cleanup pass to the level generator that checks fruit placement, reduces overlapping fruit clusters, and only places fans where the upward air path is actually useful.&lt;/p&gt;

&lt;p&gt;The arrow trap also needed redesign. Initially, touching an arrow restarted the player, which felt unfair and not very meaningful. I changed arrows into directional boosters so they become a movement mechanic instead of just another punishment.&lt;/p&gt;

&lt;p&gt;Enemy sprite alignment was tricky too. Some enemy sprite sheets had transparent padding, so enemies looked like they were floating even when their collision boxes were touching the ground. I adjusted enemy drawing offsets so their feet visually line up with the platform.&lt;/p&gt;

&lt;p&gt;Adding Turing Gates required balancing the puzzle with the platforming. I did not want to turn the whole game into a slow puzzle game, so I placed the binary gates only on milestone levels. That way the Alan Turing tribute appears clearly, but the main game still feels like an arcade platformer.&lt;/p&gt;

&lt;p&gt;Audio also had browser-specific challenges. Modern browsers block autoplay audio, so the music starts after the first player interaction. I also added a mute/unmute button so the player has control.&lt;/p&gt;

&lt;p&gt;Deployment had one final issue: Vercel initially showed a 404 because the actual game was inside &lt;code&gt;game-src/index.html&lt;/code&gt;, not the project root. I fixed this by adding a root &lt;code&gt;index.html&lt;/code&gt; that forwards to the game.&lt;/p&gt;

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

&lt;p&gt;I am submitting for two prize categories:&lt;/p&gt;

&lt;h3&gt;
  
  
  Best Ode to Alan Turing
&lt;/h3&gt;

&lt;p&gt;Fruit Dash includes a Turing-inspired mechanic called &lt;strong&gt;Turing Gates&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;On milestone levels, the exit is locked behind a binary code puzzle. The game displays a 3-bit target code, and the player must shoot three binary switches until the switch values match the target.&lt;/p&gt;

&lt;p&gt;This is an arcade-style tribute to Alan Turing’s legacy in computation, logic, code-breaking, and the foundations of modern computer science. I wanted the tribute to exist inside the gameplay itself, not only in the submission description.&lt;/p&gt;

&lt;p&gt;The player solves a small binary logic problem, unlocks the gate, and continues the level.&lt;/p&gt;

&lt;h3&gt;
  
  
  Best Google AI Usage
&lt;/h3&gt;

&lt;p&gt;Google AI helped throughout the development process. I used Antigravity IDE for development ,also while building and iterating on the game. It helped with code generation, debugging, gameplay iteration, layout fixes, and improving the structure of the app.&lt;/p&gt;

&lt;p&gt;AI assistance was especially useful for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Debugging invisible platform issues&lt;/li&gt;
&lt;li&gt;Fixing sprite alignment problems&lt;/li&gt;
&lt;li&gt;Improving generated level placement&lt;/li&gt;
&lt;li&gt;Adding enemies and attacks&lt;/li&gt;
&lt;li&gt;Adding mobile controls&lt;/li&gt;
&lt;li&gt;Adding audio controls&lt;/li&gt;
&lt;li&gt;Optimizing the background music file&lt;/li&gt;
&lt;li&gt;Preparing the project for Vercel deployment&lt;/li&gt;
&lt;li&gt;Shaping the Turing Gate binary puzzle mechanic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also used Gemini models / Gemini API workflows during the creative process for asset and image-related experimentation. The final game is still a browser-based JavaScript game using local assets, but Google AI helped speed up the design, development, debugging, and iteration process.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>gamechallenge</category>
      <category>gamedev</category>
      <category>unity3d</category>
    </item>
    <item>
      <title>Finishing HELIX: Building an AI-Powered Space Operations Intelligence Platform with GitHub Copilot</title>
      <dc:creator>Agastya Khati</dc:creator>
      <pubDate>Fri, 05 Jun 2026 14:29:52 +0000</pubDate>
      <link>https://dev.to/agastya_khati_f72c89077c8/finishing-helix-building-an-ai-powered-space-operations-intelligence-platform-with-github-copilot-nj4</link>
      <guid>https://dev.to/agastya_khati_f72c89077c8/finishing-helix-building-an-ai-powered-space-operations-intelligence-platform-with-github-copilot-nj4</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/github-2026-05-21"&gt;GitHub Finish-Up-A-Thon Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;This is my submission for the &lt;strong&gt;GitHub Finish-Up-A-Thon Challenge&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The idea behind this challenge really hit home for me: finally finish what you started.&lt;br&gt;
HELIX started as a satellite tracking and conjunction detection project. It already had a working backend, orbital propagation, a 3D globe, and basic AI summaries. But it still felt like a technical prototype.&lt;br&gt;
For this challenge, I brought it much closer to a finished product.&lt;br&gt;
I turned HELIX into an &lt;strong&gt;AI-powered space operations intelligence platform&lt;/strong&gt; that can investigate orbital risk, correlate multiple space data sources, and generate explainable operational assessments.&lt;br&gt;
GitHub Copilot helped me push the project from “cool prototype” to something that feels like a real mission operations console.&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;



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

&lt;p&gt;Github Repository : &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/helix" rel="noopener noreferrer"&gt;
        helix
      &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;HELIX&lt;/h1&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Coral-Powered Space Operations Intelligence Platform&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;HELIX is an AI-powered Space Operations Intelligence Platform that transforms fragmented orbital, launch, and space weather data into actionable mission intelligence.&lt;/p&gt;
&lt;p&gt;Built on top of Coral's federated SQL runtime, HELIX enables operators, researchers, and analysts to investigate conjunction risks, correlate launch activity, monitor orbital congestion, and generate explainable operational assessments through multi-step AI investigations.&lt;/p&gt;
&lt;p&gt;Unlike traditional satellite trackers, HELIX focuses on answering:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;What is happening in orbit?&lt;/p&gt;
&lt;p&gt;Why is it happening?&lt;/p&gt;
&lt;p&gt;What should operators pay attention to next?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why HELIX?&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Earth's orbit is becoming increasingly congested.&lt;/p&gt;
&lt;p&gt;Thousands of active satellites, frequent launches, and growing debris populations create a complex operational environment where understanding risk requires data from multiple disconnected systems.&lt;/p&gt;
&lt;p&gt;Most tools can visualize orbital activity.&lt;/p&gt;
&lt;p&gt;HELIX investigates it.&lt;/p&gt;
&lt;p&gt;Using Coral as a unified intelligence layer, HELIX correlates:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Satellite conjunction events&lt;/li&gt;
&lt;li&gt;Launch schedules and mission activity&lt;/li&gt;
&lt;li&gt;Space weather conditions&lt;/li&gt;
&lt;li&gt;Satellite metadata&lt;/li&gt;
&lt;li&gt;Historical orbital trends&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/kris70lesgo/helix" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  What HELIX Does
&lt;/h2&gt;

&lt;p&gt;HELIX is a local-first space situational awareness and mission intelligence platform.&lt;/p&gt;

&lt;p&gt;It helps answer questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why are conjunction risks elevated today?&lt;/li&gt;
&lt;li&gt;Which satellites repeatedly appear in high-risk events?&lt;/li&gt;
&lt;li&gt;Are upcoming launches contributing to orbital congestion?&lt;/li&gt;
&lt;li&gt;Is space weather affecting operational risk?&lt;/li&gt;
&lt;li&gt;What should an operator monitor next?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of only showing satellite positions, HELIX performs structured investigations over operational data.&lt;/p&gt;




&lt;h2&gt;
  
  
  Core Features
&lt;/h2&gt;

&lt;h3&gt;
  
  
  3D Satellite Monitoring
&lt;/h3&gt;

&lt;p&gt;HELIX includes a real-time globe interface for viewing satellites and conjunction events.&lt;/p&gt;

&lt;p&gt;The frontend uses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Next.js&lt;/li&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;Three.js&lt;/li&gt;
&lt;li&gt;react-globe.gl&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The backend uses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;FastAPI&lt;/li&gt;
&lt;li&gt;SQLite&lt;/li&gt;
&lt;li&gt;SGP4 orbital propagation&lt;/li&gt;
&lt;li&gt;KD-tree optimized conjunction detection&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;System Architecture:&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%2Fon9nnn9hp7lf8uwiybbb.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%2Fon9nnn9hp7lf8uwiybbb.png" alt=" " width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Multi-Source Operational Intelligence
&lt;/h3&gt;

&lt;p&gt;HELIX connects multiple operational data sources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Local satellite and conjunction database&lt;/li&gt;
&lt;li&gt;NOAA space weather data&lt;/li&gt;
&lt;li&gt;Launch Library launch data&lt;/li&gt;
&lt;li&gt;Space-Track metadata&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These sources are exposed through Coral as SQL-queryable tables.&lt;/p&gt;

&lt;p&gt;That means HELIX can run cross-source intelligence queries like:&lt;/p&gt;

&lt;p&gt;conjunction risk + NOAA space weather&lt;br&gt;
launch activity + current solar conditions&lt;br&gt;
closest conjunctions + Space-Track object metadata&lt;br&gt;
Starlink launch activity + local conjunction pressure&lt;/p&gt;
&lt;h3&gt;
  
  
  Multi-Step AI Investigation Agent
&lt;/h3&gt;

&lt;p&gt;The biggest finish-up improvement was moving from:&lt;br&gt;
&lt;code&gt;prompt → query → summary&lt;/code&gt;&lt;br&gt;
to: &lt;br&gt;
&lt;code&gt;prompt → investigation plan → query chain → findings → assessment → recommendations&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The investigation engine is deterministic and safe.&lt;br&gt;
It does not generate arbitrary SQL.&lt;br&gt;
Instead, it chooses from approved Coral SQL templates and runs a bounded sequence of investigation steps.&lt;/p&gt;

&lt;p&gt;Example investigation:&lt;br&gt;
`User: Why are conjunction risks elevated today?&lt;/p&gt;

&lt;p&gt;[1] Querying conjunction risk distribution&lt;br&gt;
[2] Analyzing closest high-risk events&lt;br&gt;
[3] Detecting repeated satellite involvement&lt;br&gt;
[4] Comparing risk density by day&lt;br&gt;
[5] Checking upcoming launch activity&lt;br&gt;
[6] Checking NOAA space weather&lt;br&gt;
[7] Correlating findings&lt;br&gt;
[8] Generating operational recommendations`&lt;/p&gt;
&lt;h1&gt;
  
  
  Before and After
&lt;/h1&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%2F5yvu5fzkttaxnylkuk74.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%2F5yvu5fzkttaxnylkuk74.png" alt=" " width="799" height="475"&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%2F5v5atsftjq8abik1qgyd.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%2F5v5atsftjq8abik1qgyd.png" alt=" " width="800" height="485"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When I started, &lt;strong&gt;HELIX&lt;/strong&gt; was primarily a space visualization prototype.&lt;/p&gt;

&lt;p&gt;The first version could display satellites on a 3D globe and visualize orbital tracks, but the overall product was still incomplete. The core visualization layer worked, but most of the operational intelligence layer was missing. The &lt;strong&gt;Intel&lt;/strong&gt; experience and the &lt;strong&gt;Conjunctions&lt;/strong&gt; workflow existed mostly as ideas and partially implemented components rather than finished features.&lt;/p&gt;

&lt;p&gt;The early version included the basic foundation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Satellite globe visualization&lt;/li&gt;
&lt;li&gt;Object counts and statistics&lt;/li&gt;
&lt;li&gt;Basic live status information&lt;/li&gt;
&lt;li&gt;Planned Intel and Conjunctions navigation&lt;/li&gt;
&lt;li&gt;Early conjunction detection data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While the foundation was solid, it did not yet feel like a complete operations platform. Users could observe activity in orbit, but they could not effectively investigate, analyze, or act on that information.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Final Version
&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%2Fbfngn895mmp5yp4w4s77.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%2Fbfngn895mmp5yp4w4s77.png" alt=" " width="799" height="509"&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%2Fuxaguo7k2xf38o36eev3.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%2Fuxaguo7k2xf38o36eev3.png" alt=" " width="800" height="509"&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%2Fpzw2kttth3i1a0vzsaxo.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%2Fpzw2kttth3i1a0vzsaxo.png" alt=" " width="800" height="507"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The final version of HELIX is much closer to a real mission-control-style interface.&lt;/p&gt;

&lt;p&gt;It now includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A polished interactive satellite globe&lt;/li&gt;
&lt;li&gt;Live satellite detail drawer&lt;/li&gt;
&lt;li&gt;High-risk conjunction overlays&lt;/li&gt;
&lt;li&gt;Conjunction count indicators and alert banners&lt;/li&gt;
&lt;li&gt;Fully functional Intel console&lt;/li&gt;
&lt;li&gt;Working Conjunctions panel&lt;/li&gt;
&lt;li&gt;Operational investigation workflow&lt;/li&gt;
&lt;li&gt;Coral-backed cross-source intelligence analysis&lt;/li&gt;
&lt;li&gt;AI-generated operational recommendations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The current interface transforms the globe from a visualization component into an operational workspace.&lt;/p&gt;

&lt;p&gt;Instead of simply displaying satellites, HELIX now surfaces:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Active high-risk conjunction events&lt;/li&gt;
&lt;li&gt;Detailed satellite metadata&lt;/li&gt;
&lt;li&gt;Live position and velocity information&lt;/li&gt;
&lt;li&gt;Investigation context&lt;/li&gt;
&lt;li&gt;Operational intelligence insights&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The globe is no longer just showing data it is helping explain and investigate it.&lt;/p&gt;


&lt;h1&gt;
  
  
  How GitHub Copilot Helped
&lt;/h1&gt;

&lt;p&gt;GitHub Copilot played a major role in turning unfinished concepts into working product features.&lt;/p&gt;

&lt;p&gt;The most significant contributions were helping build the areas that previously existed only as plans:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Intel console&lt;/li&gt;
&lt;li&gt;The Conjunctions workflow&lt;/li&gt;
&lt;li&gt;Backend intelligence endpoints&lt;/li&gt;
&lt;li&gt;The multi-step investigation engine&lt;/li&gt;
&lt;li&gt;Coral SQL query chaining&lt;/li&gt;
&lt;li&gt;Frontend operational panels and UI states&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;More importantly, Copilot helped support the entire engineering workflow rather than simply generating isolated code snippets.&lt;/p&gt;

&lt;p&gt;The process looked like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Inspect the existing codebase&lt;/li&gt;
&lt;li&gt;Understand the backend and frontend architecture&lt;/li&gt;
&lt;li&gt;Identify where missing features should integrate&lt;/li&gt;
&lt;li&gt;Implement backend APIs&lt;/li&gt;
&lt;li&gt;Connect frontend interfaces&lt;/li&gt;
&lt;li&gt;Test the application&lt;/li&gt;
&lt;li&gt;Resolve integration and debugging issues&lt;/li&gt;
&lt;li&gt;Polish the final experience&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Copilot was especially valuable for bridging the gap between planned functionality and working functionality.&lt;/p&gt;

&lt;p&gt;Many parts of the interface already existed visually, but they were not fully connected to operational workflows. Copilot helped move the project from:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Button exists
→ Feature planned
→ Logic incomplete
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Button exists
→ Backend implemented
→ Frontend connected
→ Investigation workflow operational
→ Feature fully functional
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Outcome
&lt;/h2&gt;

&lt;p&gt;As a result, HELIX evolved from a satellite visualization prototype into a complete AI-powered space operations intelligence platform.&lt;/p&gt;

&lt;p&gt;It now supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Operational investigations&lt;/li&gt;
&lt;li&gt;Conjunction monitoring&lt;/li&gt;
&lt;li&gt;Cross-source intelligence analysis&lt;/li&gt;
&lt;li&gt;AI-assisted assessments&lt;/li&gt;
&lt;li&gt;Coral-backed data correlation&lt;/li&gt;
&lt;li&gt;Actionable operational recommendations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project did not require a complete rebuild.&lt;/p&gt;

&lt;p&gt;It required finishing the missing pieces, connecting existing systems together, and transforming concepts into working features.&lt;/p&gt;

&lt;p&gt;GitHub Copilot helped make that transition possible.&lt;/p&gt;

&lt;h1&gt;
  
  
  The Comeback Story of HELIX
&lt;/h1&gt;

&lt;p&gt;Before the Finish-Up-A-Thon, &lt;strong&gt;HELIX&lt;/strong&gt; was a project with a lot of potential but it was stuck in the place where many ambitious side projects end up.&lt;/p&gt;

&lt;p&gt;The foundation was already there.&lt;/p&gt;

&lt;p&gt;It had a FastAPI backend, satellite data ingestion, orbital propagation, conjunction detection, a SQLite database, and a 3D globe interface. It could track satellites, visualize orbital activity, and identify close approaches between objects in space.&lt;/p&gt;

&lt;p&gt;Technically, it worked.&lt;/p&gt;

&lt;p&gt;But it didn't feel finished.&lt;/p&gt;

&lt;p&gt;HELIX could tell users &lt;strong&gt;what&lt;/strong&gt; was happening, but it struggled to explain &lt;strong&gt;why&lt;/strong&gt; it was happening. The AI layer was limited to basic summaries, many features felt disconnected, and the overall experience resembled a collection of powerful components rather than a unified intelligence platform.&lt;/p&gt;

&lt;p&gt;In short, HELIX felt more like a satellite-tracking prototype than a true mission operations system.&lt;/p&gt;

&lt;p&gt;That was the state of the project when I began the finish-up process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enter GitHub Copilot
&lt;/h2&gt;

&lt;p&gt;Instead of starting over, I focused on understanding what already existed.&lt;/p&gt;

&lt;p&gt;Using GitHub Copilot and advanced GPT-5.5 style assistance, I began by inspecting the codebase, mapping the architecture, and identifying the areas that would create the biggest impact if improved.&lt;/p&gt;

&lt;p&gt;The process became highly iterative:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Understand the existing system&lt;/li&gt;
&lt;li&gt;Identify weak points&lt;/li&gt;
&lt;li&gt;Plan improvements&lt;/li&gt;
&lt;li&gt;Implement safely&lt;/li&gt;
&lt;li&gt;Test thoroughly&lt;/li&gt;
&lt;li&gt;Repeat&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Rather than rewriting everything, I concentrated on strengthening what was already there.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bringing HELIX Back to Life
&lt;/h2&gt;

&lt;p&gt;The first step was cleaning up and stabilizing the architecture while preserving the satellite tracking and conjunction detection capabilities that already worked.&lt;/p&gt;

&lt;p&gt;From there, I introduced &lt;strong&gt;Coral&lt;/strong&gt; as the data orchestration layer and connected multiple operational datasets into a unified queryable system.&lt;/p&gt;

&lt;p&gt;Suddenly, HELIX was no longer looking at isolated pieces of information.&lt;/p&gt;

&lt;p&gt;It could correlate data across:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Conjunction events&lt;/li&gt;
&lt;li&gt;Satellite metadata&lt;/li&gt;
&lt;li&gt;Launch activity&lt;/li&gt;
&lt;li&gt;NOAA space weather&lt;/li&gt;
&lt;li&gt;Space-Track datasets&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project started evolving from a visualization tool into an intelligence platform.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Biggest Transformation
&lt;/h2&gt;

&lt;p&gt;The most significant change was the intelligence workflow itself.&lt;/p&gt;

&lt;p&gt;Before, the AI interaction looked something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Ask a question
→ Run a query
→ Summarize the results
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It worked, but it was shallow.&lt;/p&gt;

&lt;p&gt;The system answered questions without actually investigating them.&lt;/p&gt;

&lt;p&gt;I wanted HELIX to think more like an analyst.&lt;/p&gt;

&lt;p&gt;So I built a deterministic investigation engine that transformed the workflow into:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Ask a question
→ Build an investigation plan
→ Execute approved Coral queries
→ Correlate findings
→ Generate an assessment
→ Recommend next actions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With the help of Copilot, I implemented:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multi-step investigation workflows&lt;/li&gt;
&lt;li&gt;Query tracing and transparency&lt;/li&gt;
&lt;li&gt;Passive monitoring alerts&lt;/li&gt;
&lt;li&gt;Operational recommendations&lt;/li&gt;
&lt;li&gt;Investigation timelines in the UI&lt;/li&gt;
&lt;li&gt;Backend intelligence endpoints&lt;/li&gt;
&lt;li&gt;Frontend investigation experiences&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The system stopped behaving like a chatbot and started behaving like an operations analyst.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Different Kind of Answer
&lt;/h2&gt;

&lt;p&gt;Consider a question like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Why are conjunction risks elevated today?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Previously, HELIX would have returned a simple summary of conjunction data.&lt;/p&gt;

&lt;p&gt;Now it performs a full investigation.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Analyze conjunction density&lt;/li&gt;
&lt;li&gt;Identify repeatedly involved satellites&lt;/li&gt;
&lt;li&gt;Check recent launch activity&lt;/li&gt;
&lt;li&gt;Review NOAA space weather conditions&lt;/li&gt;
&lt;li&gt;Compare current activity with historical patterns&lt;/li&gt;
&lt;li&gt;Correlate findings across multiple datasets&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Only then does it generate an assessment and suggest possible operational actions.&lt;/p&gt;

&lt;p&gt;That fundamentally changed how the platform feels.&lt;/p&gt;

&lt;h2&gt;
  
  
  From Prototype to Platform
&lt;/h2&gt;

&lt;p&gt;The transformation wasn't about adding flashy features.&lt;/p&gt;

&lt;p&gt;It was about connecting everything together.&lt;/p&gt;

&lt;p&gt;GitHub Copilot helped accelerate the parts that often cause projects to stall:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understanding a large codebase&lt;/li&gt;
&lt;li&gt;Architecture planning&lt;/li&gt;
&lt;li&gt;Safe refactoring&lt;/li&gt;
&lt;li&gt;Backend development&lt;/li&gt;
&lt;li&gt;Frontend improvements&lt;/li&gt;
&lt;li&gt;SQL generation&lt;/li&gt;
&lt;li&gt;API debugging&lt;/li&gt;
&lt;li&gt;Documentation&lt;/li&gt;
&lt;li&gt;Final validation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Feature by feature, HELIX became more cohesive, more intelligent, and more useful.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where HELIX Stands Today
&lt;/h2&gt;

&lt;p&gt;Before the Finish-Up-A-Thon, HELIX was a promising demonstration of satellite tracking technology.&lt;/p&gt;

&lt;p&gt;Today, it feels like a genuine AI-powered space operations console.&lt;/p&gt;

&lt;p&gt;It can investigate, correlate, explain, and recommend not just visualize.&lt;/p&gt;

&lt;p&gt;The project didn't need a complete rewrite.&lt;/p&gt;

&lt;p&gt;It needed someone to finish what had already been started.&lt;/p&gt;

&lt;p&gt;GitHub Copilot helped make that possible.&lt;/p&gt;

&lt;p&gt;And in many ways, HELIX's biggest achievement wasn't the technology itself—it was finally crossing the line from &lt;strong&gt;almost finished&lt;/strong&gt; to &lt;strong&gt;fully realized&lt;/strong&gt;.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  How GitHub Copilot Helped
&lt;/h2&gt;

&lt;p&gt;I used GitHub Copilot heavily throughout the finish-up process, specifically with advanced ChatGPT/GPT-5.5 style coding assistance.&lt;/p&gt;

&lt;p&gt;Copilot helped with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;reading and understanding the existing codebase&lt;/li&gt;
&lt;li&gt;planning the architecture&lt;/li&gt;
&lt;li&gt;refactoring the project safely&lt;/li&gt;
&lt;li&gt;adding the investigation engine&lt;/li&gt;
&lt;li&gt;creating backend endpoints&lt;/li&gt;
&lt;li&gt;improving the frontend UI&lt;/li&gt;
&lt;li&gt;generating SQL query templates&lt;/li&gt;
&lt;li&gt;debugging API issues&lt;/li&gt;
&lt;li&gt;writing documentation&lt;/li&gt;
&lt;li&gt;validating the final build&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The most valuable part was not just code generation. It was the ability to work iteratively:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;inspect the existing project&lt;/li&gt;
&lt;li&gt;identify weak points&lt;/li&gt;
&lt;li&gt;plan the next phase&lt;/li&gt;
&lt;li&gt;implement safely&lt;/li&gt;
&lt;li&gt;test&lt;/li&gt;
&lt;li&gt;repeat&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That workflow made it possible to finish a project that otherwise could have stayed half-done.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
    </item>
    <item>
      <title>one of the best blogs about hermes agent</title>
      <dc:creator>Agastya Khati</dc:creator>
      <pubDate>Sun, 31 May 2026 05:33:20 +0000</pubDate>
      <link>https://dev.to/agastya_khati_f72c89077c8/one-of-the-best-blogs-about-hermes-agent-3c22</link>
      <guid>https://dev.to/agastya_khati_f72c89077c8/one-of-the-best-blogs-about-hermes-agent-3c22</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/paimon_573760ccaa1b3492b4/nous-research-hermes-agent-setup-and-tutorial-guide-2glg" class="crayons-story__hidden-navigation-link"&gt;Nous Research Hermes Agent: Setup and Tutorial Guide&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
      &lt;a href="https://dev.to/paimon_573760ccaa1b3492b4/nous-research-hermes-agent-setup-and-tutorial-guide-2glg" class="crayons-article__context-note crayons-article__context-note__feed"&gt;&lt;p&gt;Hermes Agent Challenge Submission: Write About Hermes Agent&lt;/p&gt;

&lt;/a&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/paimon_573760ccaa1b3492b4" class="crayons-avatar  crayons-avatar--l  "&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 profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/paimon_573760ccaa1b3492b4" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Paimon
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Paimon
                
              
              &lt;div id="story-author-preview-content-3787287" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/paimon_573760ccaa1b3492b4" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Paimon&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/paimon_573760ccaa1b3492b4/nous-research-hermes-agent-setup-and-tutorial-guide-2glg" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;May 31&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/paimon_573760ccaa1b3492b4/nous-research-hermes-agent-setup-and-tutorial-guide-2glg" id="article-link-3787287"&gt;
          Nous Research Hermes Agent: Setup and Tutorial Guide
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/hermesagentchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;hermesagentchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/agents"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;agents&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/paimon_573760ccaa1b3492b4/nous-research-hermes-agent-setup-and-tutorial-guide-2glg" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;13&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/paimon_573760ccaa1b3492b4/nous-research-hermes-agent-setup-and-tutorial-guide-2glg#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              2&lt;span class="hidden s:inline"&gt;&amp;nbsp;comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            10 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>agents</category>
      <category>ai</category>
      <category>llm</category>
      <category>tutorial</category>
    </item>
    <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>
  </channel>
</rss>
