<?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>Forem: Bibhu Pradhan</title>
    <description>The latest articles on Forem by Bibhu Pradhan (@bibhupradhan).</description>
    <link>https://forem.com/bibhupradhan</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3780777%2F64638dd2-8ead-4758-b605-0a6e6c77feda.png</url>
      <title>Forem: Bibhu Pradhan</title>
      <link>https://forem.com/bibhupradhan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/bibhupradhan"/>
    <language>en</language>
    <item>
      <title>Building a Self-Improving Orchestration Layer for IoT Dashboards</title>
      <dc:creator>Bibhu Pradhan</dc:creator>
      <pubDate>Tue, 26 May 2026 06:22:29 +0000</pubDate>
      <link>https://forem.com/bibhupradhan/building-a-self-improving-orchestration-layer-for-iot-dashboards-1415</link>
      <guid>https://forem.com/bibhupradhan/building-a-self-improving-orchestration-layer-for-iot-dashboards-1415</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hermes-agent-2026-05-15"&gt;Hermes Agent Challenge&lt;/a&gt;: Write About Hermes Agent&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;When mapping out the future roadmap for AirSense AI, the primary goal was to evolve the hyper-local air quality intelligence dashboard by integrating data directly from physical IoT sensors in specific localities. The bottleneck, as it turns out, isn't the hardware itself, but the orchestration. Managing unpredictable sensor streams, handling node dropouts, normalizing messy JSON payloads, and updating a dashboard autonomously requires more than a simple cron job and a Python script.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Enter Hermes Agent by Nous Research.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you've been following the open-source agentic space, you already know that Hermes is turning heads because it doesn't just execute tool calls - it actually learns. In this post, I want to break down why Hermes Agent's architecture is a paradigm shift for developers building physical-to-digital pipelines, and how its specific capabilities solve the exact orchestration problems encountered when managing decentralized data nodes.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The Closed-Loop Learning System (SKILL.md)
&lt;/h3&gt;

&lt;p&gt;Standard AI agents execute a prompt, return a result, and instantly forget the execution path. If an IoT sensor in a specific locality sends a malformed payload, a standard agent might figure out how to parse it using a code execution tool, but it will have to re-solve that same problem from scratch tomorrow.&lt;/p&gt;

&lt;p&gt;Hermes features a built-in closed-loop learning system. When it runs through a complex trajectory (usually involving 5+ tool calls to troubleshoot and format data), it automatically reflects on its success and crystallizes the workflow into a permanent, reusable SKILL.md file stored locally. The next time the dashboard receives that same malformed payload, Hermes doesn't guess—it relies on its procedural memory, bypassing the costly reasoning steps and executing the fix immediately. The agent literally writes its own playbook for your specific edge cases.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. The Three-Layer Memory Architecture
&lt;/h3&gt;

&lt;p&gt;Handling a hyper-local intelligence dashboard requires context that spans across days and weeks, not just a single session. Hermes separates its memory gracefully:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Working Memory:&lt;/strong&gt; The immediate context of the current sensor ingestion task.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Episodic Memory:&lt;/strong&gt; Powered by a local SQLite FTS5 database, Hermes remembers cross-session facts. It learns that "Node #4 in the downtown locality drops packets when it rains" and retrieves that context automatically without requiring hardcoded logic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Procedural Memory:&lt;/strong&gt; The repository of the auto-created skills.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This means you aren't just building an app; you are training an autonomous operator that becomes uniquely attuned to the specific quirks of your infrastructure.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Execution Environment Flexibility
&lt;/h3&gt;

&lt;p&gt;One of the biggest risks of building with AI agents is vendor lock-in. Hermes Agent completely decouples the orchestration logic from the model provider. You can run it against Claude or GPT-4 for complex reasoning tasks, or route it to a local, lightweight Qwen 3.6 model for repetitive sensor polling. It speaks standard OpenAI-compatible JSON to any backend, and even allows per-task provider overrides.&lt;/p&gt;

&lt;p&gt;For a project dealing with continuous IoT sensor data integration, having the option to use local Docker containers or an E2B cloud sandbox for isolated, high-security code execution is a game-changer.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Means for the Future
&lt;/h2&gt;

&lt;p&gt;We are moving past the era of "AI as a chat interface" and entering the era of "AI as persistent infrastructure." When an open-source framework like Hermes allows a developer to spin up an agent that self-improves, persists memory locally without privacy trade-offs, and seamlessly bridges the gap between raw hardware data and a polished dashboard, the barrier to building enterprise-grade intelligent systems essentially vanishes.&lt;/p&gt;

&lt;p&gt;The true power of open agentic systems isn't just about automating tasks - it's about building tools that get smarter alongside us as our projects grow.&lt;/p&gt;

&lt;h4&gt;
  
  
  Over to You!
&lt;/h4&gt;

&lt;p&gt;&lt;em&gt;If you found this breakdown insightful, please leave a reaction below to support the post!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;How are you approaching agentic workflows or IoT data orchestration in your own projects? Drop a comment below if you have any questions related to Hermes Agent, local setups, or memory management - let's spark a discussion!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>hermesagentchallenge</category>
      <category>devchallenge</category>
      <category>agents</category>
      <category>iot</category>
    </item>
    <item>
      <title>FairLens AI: An Intelligent Dashboard for Automated Bias Auditing</title>
      <dc:creator>Bibhu Pradhan</dc:creator>
      <pubDate>Tue, 26 May 2026 05:47:36 +0000</pubDate>
      <link>https://forem.com/bibhupradhan/fairlens-ai-an-intelligent-dashboard-for-automated-bias-auditing-1a5c</link>
      <guid>https://forem.com/bibhupradhan/fairlens-ai-an-intelligent-dashboard-for-automated-bias-auditing-1a5c</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;FairLens AI is a premium, high-end SaaS platform designed for AI-powered bias auditing. I built this tool to help data scientists and researchers easily identify, quantify, and mitigate hidden biases within their datasets before those datasets are used to train machine learning models.&lt;/p&gt;

&lt;p&gt;My vision as a developer has always been to create meaningful impact in society through technology. Monitoring and detection systems are crucial for accountability in tech, and I realized that while many people talk about AI fairness, there are very few accessible, beautifully designed tools to actually measure it. FairLens AI bridges that gap. By simply uploading a CSV dataset, users receive instant insights into fairness metrics across protected attributes, visualized through an interactive, glassmorphism-styled dashboard. It calculates complex metrics like Demographic Parity Ratio and Disparate Impact, assigns an overall fairness score, and provides actionable mitigation recommendations.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Live Project Link:&lt;/strong&gt; &lt;a href="https://thefairlensai.netlify.app/" rel="noopener noreferrer"&gt;FairLens AI Platform&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/bibhupradhanofficial/FairLensAI" rel="noopener noreferrer"&gt;bibhupradhanofficial/fairlens-ai&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Video Demo:&lt;/strong&gt;&lt;br&gt;
  &lt;iframe src="https://www.youtube.com/embed/u9Q99fHeJf8"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Screenshots:&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Fairness score:&lt;/em&gt;&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%2F84fo9lglnm81inm4nnu8.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%2F84fo9lglnm81inm4nnu8.png" alt="fairness score" width="799" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;AI-generated executive summary and intersectional analysis:&lt;/em&gt;&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%2Fjj73tqmi754spe9ze3zi.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%2Fjj73tqmi754spe9ze3zi.png" alt="AI-generated executive summary and intersectional analysis" width="800" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Comeback Story
&lt;/h2&gt;

&lt;p&gt;This project originally started as an ambitious idea for a data visualization dashboard, but I hit a massive roadblock when it came to the actual data science and backend engineering. The Finish-Up-A-Thon gave me the exact push I needed to rethink my architecture and finally complete it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where the project was before:&lt;/strong&gt;&lt;br&gt;
Previously, FairLens AI was essentially a beautiful, static mockup. I had built out the frontend architecture using React 18, Vite, and Tailwind CSS, and perfected the UI using Framer Motion and Recharts to give it a premium feel. However, the project stalled completely at the backend. Writing a manual, hardcoded statistical engine capable of parsing diverse datasets, calculating edge cases for Disparate Impact, and figuring out "feature importance" was overwhelming. The dashboard was full of dummy data, and the repository sat untouched.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I added and fixed to finish it up (The "After"):&lt;/strong&gt;&lt;br&gt;
To bring the project across the finish line, I completely abandoned the idea of hardcoding the statistical logic and pivoted to an AI-agentic architecture. I added the following major features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Supabase Edge Functions:&lt;/strong&gt; I implemented a robust, serverless backend using Deno (audit-bias/index.ts) to securely handle the dataset statistics over an API without bogging down the client.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Gemini 3 Integration:&lt;/strong&gt; I connected the Edge Function to the Google Gemini 3 Flash Preview model via an AI gateway. I engineered a highly specific system prompt that feeds the CSV cross-tabulations to the LLM and forces it to act as a "Fairness Expert."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structured JSON Insights:&lt;/strong&gt; Instead of returning plain text, I configured the AI to return strictly typed JSON tool calls containing the exact fairness metrics, an overall 0-100 fairness score, and concrete mitigation steps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic Frontend Wiring:&lt;/strong&gt; I updated the AuditDashboard to dynamically map this live AI data into my Recharts visualizations and metric gauges, turning the UI into a fully functional, intelligent auditing tool.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;GitHub Copilot was an absolute game-changer for pushing this project to completion, particularly when navigating the complex typing requirements between the frontend and the Supabase Edge Functions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Type Safety &amp;amp; Boilerplate:&lt;/strong&gt; Copilot anticipated the Zod schemas and TypeScript interfaces required for my AuditResult objects, saving me hours of manual typing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Component Generation:&lt;/strong&gt; When building the AuditDashboard.tsx and the MetricGauge components, Copilot suggested the repetitive Tailwind classes needed for the glassmorphism effects and conditional rendering (e.g., automatically suggesting the success/warning/destructive color mappings based on the metric status).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Parsing:&lt;/strong&gt; Copilot was incredibly helpful in suggesting the logic for processing the CSV outputs and formatting the cross-tabulations accurately before sending them off to the Edge Function payload.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It acted as a constant pair programmer, allowing me to focus on the high-level architecture and the user experience rather than getting bogged down in syntax.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If you found FairLens AI interesting or helpful, please leave a ❤️ or 🦄 reaction on this post.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Got any questions about how I implemented the Supabase Edge Functions, engineered the Gemini prompts, or built the glassmorphism UI? Drop a comment below, and I'd be happy to answer them!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
      <category>dataengineering</category>
      <category>ai</category>
    </item>
    <item>
      <title>Looking for Teamates</title>
      <dc:creator>Bibhu Pradhan</dc:creator>
      <pubDate>Tue, 03 Mar 2026 13:39:00 +0000</pubDate>
      <link>https://forem.com/bibhupradhan/looking-for-teamates-k8n</link>
      <guid>https://forem.com/bibhupradhan/looking-for-teamates-k8n</guid>
      <description>&lt;p&gt;Are you a passionate programmer or problem solver eager to tackle real-world challenges using technology and AI, but often held back? This could be because you lack a team or don't possess all the necessary tech stacks required to solve a specific problem or participate in hackathons.&lt;/p&gt;

&lt;p&gt;I am Bibhu Pradhan, an Engineering undergraduate student from India. I am looking for teamates from India to participate in upcoming hackathons with me. We will focus on solving real-world problems using technology and AI, and I invite you to join my team.&lt;/p&gt;

&lt;p&gt;My LinkedIn Profile: &lt;a href="https://www.linkedin.com/in/bibhupradhanofficial" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/bibhupradhanofficial&lt;/a&gt;&lt;br&gt;
My GitHub Profile: &lt;a href="https://github.com/bibhupradhanofficial" rel="noopener noreferrer"&gt;https://github.com/bibhupradhanofficial&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If interested message me on LinkedIn &lt;/p&gt;

</description>
      <category>hackathon</category>
      <category>teamates</category>
      <category>community</category>
      <category>programming</category>
    </item>
    <item>
      <title>AI Pitch Deck Generator: A multimodal AI agent that generates complete startup pitch decks</title>
      <dc:creator>Bibhu Pradhan</dc:creator>
      <pubDate>Sun, 01 Mar 2026 11:38:56 +0000</pubDate>
      <link>https://forem.com/bibhupradhan/ai-pitch-deck-generator-a-multimodal-ai-agent-that-generates-complete-startup-pitch-decks-392c</link>
      <guid>https://forem.com/bibhupradhan/ai-pitch-deck-generator-a-multimodal-ai-agent-that-generates-complete-startup-pitch-decks-392c</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;h2&gt;
  
  
  What I Built with Google Gemini
&lt;/h2&gt;

&lt;p&gt;Founders and entrepreneurs often spend countless hours agonizing over the formatting, narrative structure, and visual design of their pitch decks instead of focusing on building their actual product.&lt;/p&gt;

&lt;p&gt;I built the AI Pitch Deck Generator to remove this friction entirely. It is a powerful, multimodal web application that takes a simple startup idea and transforms it into a comprehensive, cohesive, and investor-ready pitch package in under a minute.&lt;/p&gt;

&lt;p&gt;Google Gemini's Role:&lt;br&gt;
Google's Generative AI ecosystem is the core engine of this project. The application utilizes a multi-agent architecture powered by the new google-genai SDK:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gemini 2.0 Flash (gemini-2.0-flash):&lt;/strong&gt; Acts as the master orchestrator. It processes the user's idea and generates a highly structured JSON response containing the full narrative (8 slides, speaker notes, social media captions), specifications for data charts, and detailed prompts for the image and video models.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Imagen 3 (imagen-3.0-generate-002):&lt;/strong&gt; Consumes the prompts written by Gemini to generate high-quality, photorealistic product mockups and thematic scene visuals.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Veo 2.0 (veo-2.0-generate-001):&lt;/strong&gt; Creates a dynamic, 5-second cinematic promotional video clip for the startup based on Gemini's prompt.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The backend (FastAPI) then programmatically renders premium charts using matplotlib and assembles everything into a downloadable PowerPoint (.pptx) file.&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%2Fg7pljof0clcs64haz4o9.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%2Fg7pljof0clcs64haz4o9.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&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/bibhupradhanofficial" rel="noopener noreferrer"&gt;
        bibhupradhanofficial
      &lt;/a&gt; / &lt;a href="https://github.com/bibhupradhanofficial/AI-Pitch-Deck-Generator" rel="noopener noreferrer"&gt;
        AI-Pitch-Deck-Generator
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A multimodal AI agent that generates complete startup pitch decks including slides, charts, product mockup images, voiceover scripts, promo video clips, and social media captions from a single text prompt.
    &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;AI Pitch Deck Generator&lt;/h1&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Project Overview&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;AI Pitch Deck Generator is a powerful tool that leverages Google's Generative AI to automatically create and assemble pitch decks. It handles everything from drafting content to generating visual assets and charts, providing a seamless generation experience with real-time streaming feedback to the user.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Architecture&lt;/h3&gt;
&lt;/div&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;+------+      +----------+      +-----------------------+      +--------------+      +-----------------------+
|      |      |          |      |                       |      |              |      |                       |
| User | ---&amp;gt; | Frontend | ---&amp;gt; | FastAPI / Cloud Run   | ---&amp;gt; | Gemini Agent | ---&amp;gt; | [Imagen, Veo, Charts] |
|      |      |          |      |                       |      |              |      |                       |
+------+      +----------+      +-----------------------+      +--------------+      +-----------------------+
   ^                                                                                             |
   |                                                                                             |
   |                                                                                             v
   |                                                                                         +-------+
   +--------------------------------------- Response stream -------------------------------- |  GCS  |
                                                                                             +-------+
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Prerequisites&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Before you begin, ensure you have the following requirements met:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Python:&lt;/strong&gt; 3.11 or higher&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GCP Account:&lt;/strong&gt; A Google Cloud project with an active billing account&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Cloud&lt;/strong&gt;…&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/bibhupradhanofficial/AI-Pitch-Deck-Generator" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;




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

&lt;p&gt;Building this application pushed me to learn a lot about orchestrating complex AI workflows and building reactive user interfaces:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Real-Time Streaming (SSE):&lt;/strong&gt; Because generating images, videos, and complex charts takes time, I learned how to implement Server-Sent Events (SSE) using FastAPI. This allowed the backend to stream text, status updates, and individual assets to the vanilla JavaScript frontend as soon as they were ready, creating a magical, progressively revealing UI instead of a boring loading spinner.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agentic Orchestration:&lt;/strong&gt; I learned advanced techniques in prompt engineering to force Gemini to output strict, complex JSON structures reliably. Getting the model to act as a "director" that writes prompts for other models (Imagen and Veo) was a fascinating exercise in AI-to-AI communication.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Programmatic Asset Generation:&lt;/strong&gt; I deepened my Python skills by using python-pptx to dynamically calculate layouts and build native PowerPoint files, and configuring matplotlib to render beautiful, premium dark-themed data visualizations.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Google Gemini Feedback
&lt;/h2&gt;

&lt;p&gt;What worked well:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The new google-genai SDK is incredibly clean and intuitive. Being able to access text, image, and video generation models from a single unified client made the backend architecture much simpler.&lt;/li&gt;
&lt;li&gt;Gemini 2.0 Flash is phenomenal. Its speed and ability to consistently adhere to a complex JSON schema (containing arrays of slides, chart data, and nested dictionaries) made it the perfect orchestration agent.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Where I ran into friction:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Video Generation Polling:&lt;/strong&gt; Integrating Veo 2.0 required handling long-running operations. Since video generation isn't instant, I had to implement an asynchronous polling mechanism to check the operation status (client.operations.get(operation)) and eventually extract the video bytes. Figuring out how to do this smoothly without blocking the FastAPI event loop took some trial and error.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-Model Prompting:&lt;/strong&gt; Getting Gemini to write good prompts for Imagen was sometimes tricky. I had to inject strict system instructions and formatting rules (like appending specific style keywords) to ensure the generated images matched the overall dark-mode aesthetic of the application.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Challenges we ran into
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Multimodal Orchestration:&lt;/strong&gt; Coordinating asynchronous calls to three different AI models (Gemini, Imagen, and Veo) while ensuring the narrative, visual aesthetics, and generated data remained cohesive was complex.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structured Output Formatting:&lt;/strong&gt; Ensuring that the LLM consistently returned highly structured, valid JSON containing slide data, exact chart configurations, and specific image/video prompts required meticulous prompt engineering and fallback handling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-Time User Experience:&lt;/strong&gt; Generating heavy media assets like videos and images takes time. Keeping the user engaged required implementing an SSE (Server-Sent Events) pipeline to stream text, status updates, and individual assets to the frontend as soon as they were ready, rather than forcing the user to wait at a blank loading screen.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Programmatic PPTX Generation:&lt;/strong&gt; Calculating layouts, scaling images, and ensuring the programmatically generated PowerPoint file looked professional and properly aligned required extensive fine-tuning using python-pptx.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Cloud Billing Requirements:&lt;/strong&gt; We faced a significant roadblock when trying to enable the Google Cloud Storage (Buckets) service. The platform requires active billing information to be set up before allowing the service to be enabled.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>geminireflections</category>
      <category>gemini</category>
      <category>googlecloud</category>
    </item>
    <item>
      <title>APOD Mood Gallery: A visually rich, AI-powered interactive astronomy gallery</title>
      <dc:creator>Bibhu Pradhan</dc:creator>
      <pubDate>Sun, 01 Mar 2026 10:47:52 +0000</pubDate>
      <link>https://forem.com/bibhupradhan/apod-mood-gallery-a-visually-rich-ai-powered-interactive-astronomy-gallery-671</link>
      <guid>https://forem.com/bibhupradhan/apod-mood-gallery-a-visually-rich-ai-powered-interactive-astronomy-gallery-671</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;This project was built for the community of space enthusiasts, astronomy lovers, and astrophotography fans who follow NASA's Astronomy Picture of the Day (APOD). It serves anyone who wants to explore the cosmos not just scientifically, but through visual aesthetics, emotional moods, and personalized collections.&lt;/p&gt;

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

&lt;p&gt;I built the APOD Mood Gallery, a Progressive Web App (PWA) that takes NASA's iconic APOD archive and transforms it into an interactive, visually stunning, and intelligent experience. The application includes the following features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI Image Analysis:&lt;/strong&gt; Completely private, in-browser image analysis using TensorFlow.js to identify visual characteristics and classify images by their "mood".&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%2F7a90u8yaa3b51pe7zms6.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%2F7a90u8yaa3b51pe7zms6.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dynamic Color Palettes:&lt;/strong&gt; Automatic extraction and display of beautiful color palettes from astronomical imagery, utilizing Web Workers to maintain a snappy UI.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;3D Solar System &amp;amp; Exoplanets:&lt;/strong&gt; Interactive exploration of real-time planetary positions using 3D rendering.&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%2F7wnbu77rab5q5hb5alor.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%2F7wnbu77rab5q5hb5alor.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Personalized "For You" Feed:&lt;/strong&gt; A local recommendation engine that learns what types of space images you appreciate over time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Mood Board Creator:&lt;/strong&gt; A tool to curate favorite images into a visual mood board that can be exported locally via PDF or ZIP.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Demo
&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%2F7n17ba3rtfubt57g5f8m.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%2F7n17ba3rtfubt57g5f8m.png" alt=" "&gt;&lt;/a&gt;&lt;br&gt;
✨LIVE DEMO: &lt;a href="https://apod-mood-gallery.netlify.app/" rel="noopener noreferrer"&gt;APOD Mood Gallery&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&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/bibhupradhanofficial" rel="noopener noreferrer"&gt;
        bibhupradhanofficial
      &lt;/a&gt; / &lt;a href="https://github.com/bibhupradhanofficial/APOD-Mood-Gallery" rel="noopener noreferrer"&gt;
        APOD-Mood-Gallery
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A visually rich, AI-powered interactive gallery using NASA’s Astronomy Picture of the Day (APOD) API, featuring mood classification, color palette extraction, and immersive space exploration.
    &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;🌌 APOD Mood Gallery&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/3ce03f089f299542124d6f36112e5fcf00cab87f2864ba94219ea97f3d3ffcc1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f72656163742d31392e322e302d626c75653f6c6f676f3d7265616374"&gt;&lt;img src="https://camo.githubusercontent.com/3ce03f089f299542124d6f36112e5fcf00cab87f2864ba94219ea97f3d3ffcc1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f72656163742d31392e322e302d626c75653f6c6f676f3d7265616374" alt="React"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/0f9eb90d8a056733737fb186cad486bbc53db7b2144418da1baf17d406ca94a5/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f766974652d372e322e342d707572706c653f6c6f676f3d76697465"&gt;&lt;img src="https://camo.githubusercontent.com/0f9eb90d8a056733737fb186cad486bbc53db7b2144418da1baf17d406ca94a5/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f766974652d372e322e342d707572706c653f6c6f676f3d76697465" alt="Vite"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/9a8def44269a2d634c2e781eb31eb67d6551624aa8fb2c8af216e29d66b3b16c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7461696c77696e646373732d332e342e31392d3338423241433f6c6f676f3d7461696c77696e642d637373"&gt;&lt;img src="https://camo.githubusercontent.com/9a8def44269a2d634c2e781eb31eb67d6551624aa8fb2c8af216e29d66b3b16c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7461696c77696e646373732d332e342e31392d3338423241433f6c6f676f3d7461696c77696e642d637373" alt="Tailwind"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/a850db6a4deda008689c0f3041234b9b2eceb11c98f0f4fe30fcd965edc5d09b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f54656e736f72466c6f772e6a732d4d6f62696c654e65742d4646364630303f6c6f676f3d74656e736f72666c6f77"&gt;&lt;img src="https://camo.githubusercontent.com/a850db6a4deda008689c0f3041234b9b2eceb11c98f0f4fe30fcd965edc5d09b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f54656e736f72466c6f772e6a732d4d6f62696c654e65742d4646364630303f6c6f676f3d74656e736f72666c6f77" alt="TensorFlow.js"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/9ec436cdc0d28297442665229852ce9b63ee1cfbd5096c452eeeb457edf55ca0/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f54687265652e6a732d5233462d626c61636b3f6c6f676f3d74687265652e6a73"&gt;&lt;img src="https://camo.githubusercontent.com/9ec436cdc0d28297442665229852ce9b63ee1cfbd5096c452eeeb457edf55ca0/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f54687265652e6a732d5233462d626c61636b3f6c6f676f3d74687265652e6a73" alt="Three.js"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;NASA Astronomy Pictures - Explore the cosmos through moods, palettes, and AI-powered collections.&lt;/p&gt;
&lt;p&gt;APOD Mood Gallery takes NASA's iconic Astronomy Picture of the Day (APOD) archive and transforms it into an interactive, visually stunning, and intelligent experience. Using client-side machine learning and advanced 3D rendering, it analyzes celestial images to extract dominant color palettes, classify emotional moods, and provide personalized space discoveries.&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;
&lt;strong&gt;PWA Support&lt;/strong&gt;: Installable Progressive Web App with offline capabilities and background APOD synchronization.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Image Analysis&lt;/strong&gt;: Completely private, in-browser image analysis using TensorFlow.js (MobileNet). Identifies visual characteristics and content to classify images by "mood".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic Color Palettes&lt;/strong&gt;: Automatically extracts and displays beautiful, harmonious color palettes from astronomical imagery using Web Workers to keep the UI snappy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;3D Solar System &amp;amp; Exoplanets&lt;/strong&gt;: Explore real-time planetary positions using &lt;code&gt;astronomy-engine&lt;/code&gt; and &lt;code&gt;react-three-fiber&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Personalized "For You" Feed&lt;/strong&gt;: A local recommendation…&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/bibhupradhanofficial/APOD-Mood-Gallery" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;




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

&lt;p&gt;The application was built with a strong focus on client-side performance, intelligent processing, and modern web standards:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend Framework:&lt;/strong&gt; Developed using React 19 and Vite for a fast, modern development experience.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Styling:&lt;/strong&gt; Crafted with Tailwind CSS, PostCSS, and AutoPrefixer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Machine Learning:&lt;/strong&gt; Integrated @tensorflow/tfjs and the MobileNet model (@tensorflow-models/mobilenet) to run image classification directly in the browser.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;3D Rendering:&lt;/strong&gt; Built the interactive space environments using three, @react-three/fiber, and @react-three/drei, combined with astronomy-engine for accurate celestial math.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;State &amp;amp; Performance:&lt;/strong&gt; Utilized custom local storage services and Web Workers for parallel processing of image pixels to prevent main-thread blocking.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>webdev</category>
      <category>machinelearning</category>
    </item>
  </channel>
</rss>
