<?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: Syed Zuhair Hossain</title>
    <description>The latest articles on DEV Community by Syed Zuhair Hossain (@syedzuhairhossain).</description>
    <link>https://dev.to/syedzuhairhossain</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F99mvlsfu5tfj9m7ku25d.png</url>
      <title>DEV Community: Syed Zuhair Hossain</title>
      <link>https://dev.to/syedzuhairhossain</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/syedzuhairhossain"/>
    <language>en</language>
    <item>
      <title>OutdoorPulse — AI That Gets You Off the Screen and Into the World 🌿</title>
      <dc:creator>Syed Zuhair Hossain</dc:creator>
      <pubDate>Wed, 07 Oct 2026 16:20:03 +0000</pubDate>
      <link>https://dev.to/syedzuhairhossain/outdoorpulse-ai-that-gets-you-off-the-screen-and-into-the-world-5g02</link>
      <guid>https://dev.to/syedzuhairhossain/outdoorpulse-ai-that-gets-you-off-the-screen-and-into-the-world-5g02</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwfkngqnj71t691pcrcc5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwfkngqnj71t691pcrcc5.png" alt=" " width="800" height="410"&gt;&lt;/a&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvb4qtkxqttdgtfk4o1mf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvb4qtkxqttdgtfk4o1mf.png" alt=" " width="800" height="410"&gt;&lt;/a&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;OutdoorPulse&lt;/strong&gt; is an AI-powered outdoor activity recommender that analyzes your local weather, personal preferences, and time of day to suggest the perfect outdoor activity — right now.&lt;/p&gt;

&lt;p&gt;It answers the question every screen-addicted person asks: &lt;strong&gt;"What should I do outside today?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's how it works:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Tell it about yourself&lt;/strong&gt; — your interests (hiking, photography, birding...), fitness level, and how much time you have&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It checks your weather&lt;/strong&gt; — real-time temperature, humidity, UV index, wind, sunrise/sunset via SerpApi&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI picks your activities&lt;/strong&gt; — Gemma 4 (open-weight model) reasons about which of 46 curated outdoor activities match your current conditions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Listen and go&lt;/strong&gt; — ElevenLabs narrates each recommendation so you can listen while you lace up your shoes&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The core insight: &lt;strong&gt;the hardest part of going outside isn't the activity — it's deciding what to do.&lt;/strong&gt; OutdoorPulse removes that decision friction by giving you a personalized, weather-aware answer in seconds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who is it for?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Remote workers who need a reason to step away from the desk&lt;/li&gt;
&lt;li&gt;Parents looking for family-appropriate outdoor ideas&lt;/li&gt;
&lt;li&gt;Fitness enthusiasts who want weather-adapted suggestions&lt;/li&gt;
&lt;li&gt;Anyone who opens their phone to "check one thing" and loses 2 hours&lt;/li&gt;
&lt;/ul&gt;


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

&lt;p&gt;🌐 &lt;strong&gt;Live App:&lt;/strong&gt; &lt;a href="https://outdoor-pulse.onrender.com" rel="noopener noreferrer"&gt;outdoor-pulse.onrender.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🔌 &lt;strong&gt;API Health:&lt;/strong&gt; &lt;a href="https://outdoor-pulse-api.onrender.com/api/health" rel="noopener noreferrer"&gt;outdoor-pulse-api.onrender.com/api/health&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Free tier on Render spins down after 15 min of inactivity. First load may take ~30 seconds to wake up.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here's what the AI generates for Dhaka, Bangladesh on a warm October evening:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"greeting"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Hello Zuhair, the clear skies and 82°F warmth this afternoon are setting the stage for some great outdoor time."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"recommendations"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"activity_name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Sunset Photography Walk"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"headline"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Capture the twilight transition as the sky paints itself in golds and purples."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"match_score"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;95&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"why_now"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"The soft, diffused light of the evening offers unique photographic opportunities impossible during harsh midday sun."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"what_to_bring"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"Camera with good low-light performance"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Sturdy tripod"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Insect repellent"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"activity_name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Waterside Walk"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"headline"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Enjoy a calming stroll along a nearby canal as the city lights reflect on the water."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"match_score"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;88&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"activity_name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Night Walk"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"headline"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Dodge the day's heat and experience the city's quieter side on a cool evening stroll."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"match_score"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;92&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Every recommendation is specific: it references the actual temperature (82°F), humidity (75%), wind speed (10 km/h), and time of day (evening). No generic "go for a walk" — it tells you &lt;em&gt;why now&lt;/em&gt; and &lt;em&gt;what to bring&lt;/em&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  Code
&lt;/h2&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/ZuhairHossain" rel="noopener noreferrer"&gt;
        ZuhairHossain
      &lt;/a&gt; / &lt;a href="https://github.com/ZuhairHossain/outdoor-pulse" rel="noopener noreferrer"&gt;
        outdoor-pulse
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🌿 AI-powered outdoor activity recommender — Hacktoberfest 2026
    &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;🌿 OutdoorPulse&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;AI-powered outdoor activity recommender that gets you off the screen and into the world.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;OutdoorPulse uses open-weight AI models to analyze real-time weather, your preferences, and time of day to suggest personalized outdoor activities — with voice narration to listen to while you get ready.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Built for &lt;a href="https://dev.to/challenges/hacktoberfest2026" rel="nofollow"&gt;Hacktoberfest 2026 — Week 1: Touch Grass&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&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;AI Recommendations&lt;/strong&gt; — Gemma 4 (open-weight) generates personalized activity suggestions based on real conditions&lt;/li&gt;
&lt;li&gt;🌤️ &lt;strong&gt;Live Weather&lt;/strong&gt; — SerpApi fetches current weather, UV index, humidity, and sunrise/sunset times&lt;/li&gt;
&lt;li&gt;🔊 &lt;strong&gt;Voice Narration&lt;/strong&gt; — ElevenLabs reads recommendations aloud so you can listen while getting ready&lt;/li&gt;
&lt;li&gt;📍 &lt;strong&gt;Location Aware&lt;/strong&gt; — GPS auto-detection or manual entry for any city worldwide&lt;/li&gt;
&lt;li&gt;👤 &lt;strong&gt;Personal Profiles&lt;/strong&gt; — Set your interests, fitness level, and available time&lt;/li&gt;
&lt;li&gt;🌙 &lt;strong&gt;Time-Aware&lt;/strong&gt; — Suggestions adapt to morning, afternoon, evening, or night&lt;/li&gt;
&lt;li&gt;🎨 &lt;strong&gt;Premium Dark UI&lt;/strong&gt; — Glassmorphism design with nature-inspired color palette&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🏗️&lt;/h2&gt;…&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ZuhairHossain/outdoor-pulse" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;h3&gt;
  
  
  Project Structure
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;outdoor-pulse/
├── client/                   # Vite + React frontend
│   ├── src/
│   │   ├── App.jsx           # Main app with profile, weather, recommendations
│   │   ├── index.css         # Premium design system (600+ lines)
│   │   └── components/
│   │       ├── ActivityCard.jsx    # Activity cards with audio playback
│   │       ├── WeatherWidget.jsx   # Real-time weather display
│   │       ├── ProfileSetup.jsx    # Onboarding with interest chips
│   │       ├── LocationBar.jsx     # GPS + manual location input
│   │       ├── Header.jsx          # Navigation
│   │       └── LoadingState.jsx    # Loading animations
│   └── vite.config.js        # Dev proxy to backend
├── server/                   # Express.js backend
│   └── src/
│       ├── index.js           # Express server with CORS
│       ├── routes/
│       │   ├── recommend.js   # Main AI recommendation pipeline
│       │   ├── weather.js     # Weather endpoint
│       │   ├── audio.js       # ElevenLabs TTS endpoint
│       │   ├── activities.js  # Activity database queries
│       │   └── user.js        # Profile management
│       ├── services/
│       │   ├── gemma.js       # Multi-provider AI (OpenRouter → Groq)
│       │   ├── weather.js     # SerpApi weather service
│       │   ├── elevenlabs.js  # Text-to-speech service
│       │   └── activities.js  # Activity filtering + scoring
│       └── data/
│           └── activities.json # 46 curated outdoor activities
└── render.yaml               # Render deployment config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;
&lt;h3&gt;
  
  
  The AI Core: Gemma 4 via OpenRouter
&lt;/h3&gt;

&lt;p&gt;The brain of OutdoorPulse is &lt;strong&gt;Gemma 4 31B&lt;/strong&gt; — Google's open-weight model — accessed through OpenRouter's free inference tier. Here's the key architectural decision:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// server/src/services/gemma.js — Multi-provider with automatic fallback&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;PROVIDERS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;openrouter-gemma&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;baseURL&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://openrouter.ai/api/v1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;google/gemma-4-31b-it:free&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Gemma 4 31B (via OpenRouter)&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;groq&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;qwen/qwen3.8-27b&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Qwen 3.8 27B (via Groq)&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;I built a &lt;strong&gt;multi-provider fallback system&lt;/strong&gt;: the app tries Gemma 4 on OpenRouter first. If it's rate-limited (the free tier shares capacity), it automatically falls back to Qwen 3.8 on Groq. Both are open-weight models. The user never sees an error — the app just works.&lt;/p&gt;

&lt;p&gt;The AI receives a structured prompt with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Real weather data&lt;/strong&gt; from SerpApi (temperature, humidity, UV, wind, sunrise/sunset)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User profile&lt;/strong&gt; (interests, fitness level, available time)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Time context&lt;/strong&gt; (morning/afternoon/evening/night, current month)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Activity database&lt;/strong&gt; (46 activities with metadata)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And it returns structured JSON with personalized recommendations, including match scores, gear suggestions, and specific time windows.&lt;/p&gt;
&lt;h3&gt;
  
  
  Weather Pipeline: SerpApi
&lt;/h3&gt;

&lt;p&gt;SerpApi provides structured weather data that feeds directly into the AI prompt:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// server/src/services/weather.js&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;getCurrentWeather&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;axios&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://serpapi.com/search&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;params&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;engine&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;google&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;q&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`weather &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;api_key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;SERPAPI_API_KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="c1"&gt;// Extracts: temp, humidity, wind, UV, sunrise, sunset, condition&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Weather is the #1 factor in outdoor activity selection. A 95°F humid afternoon needs different recommendations than a 65°F breezy morning. SerpApi makes it possible for the AI to reason about &lt;em&gt;real conditions&lt;/em&gt; instead of guessing.&lt;/p&gt;
&lt;h3&gt;
  
  
  Voice Narration: ElevenLabs
&lt;/h3&gt;

&lt;p&gt;Each activity card has a "🔊 Listen" button that generates natural voice narration via ElevenLabs:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// server/src/services/elevenlabs.js&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;generateSpeech&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;axios&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="s2"&gt;`https://api.elevenlabs.io/v1/text-to-speech/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;VOICE_ID&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;model_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;eleven_multilingual_v2&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;xi-api-key&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ELEVENLABS_API_KEY&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="na"&gt;responseType&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;arraybuffer&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;Buffer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The audio feature is intentional for the "Touch Grass" theme: you can &lt;strong&gt;listen to your recommendations while getting ready to head outside&lt;/strong&gt; instead of staring at yet another screen.&lt;/p&gt;
&lt;h3&gt;
  
  
  Activity Database: 46 Hand-Curated Activities
&lt;/h3&gt;

&lt;p&gt;46 activities across 8 categories (hiking, birding, photography, gardening, wellness, running, scenic, family), each with weather constraints, difficulty levels, equipment lists, and time ranges:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Sunset Photography Walk"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"category"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"photography"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"difficulty"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"easy"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"duration_minutes"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"min"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"max"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"weather_constraints"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"min_temp_c"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"max_temp_c"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;38&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"max_wind_kph"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"excluded_conditions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"heavy rain"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"thunderstorm"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"best_time_of_day"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"afternoon"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"evening"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"equipment"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"camera or smartphone"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"comfortable shoes"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The activity service pre-filters based on weather constraints before sending candidates to the AI, reducing hallucination and ensuring every suggestion is actually feasible right now.&lt;/p&gt;
&lt;h3&gt;
  
  
  Frontend: Premium Dark-Mode UI
&lt;/h3&gt;

&lt;p&gt;The frontend is Vite + React with a custom design system featuring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Forest-inspired color palette (&lt;code&gt;#0A0F0D&lt;/code&gt; background, &lt;code&gt;#4ADE80&lt;/code&gt; nature accents)&lt;/li&gt;
&lt;li&gt;Glassmorphism cards with &lt;code&gt;backdrop-filter: blur(20px)&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Micro-animations on hover and state transitions&lt;/li&gt;
&lt;li&gt;GPS auto-detection via OpenStreetMap Nominatim&lt;/li&gt;
&lt;li&gt;Profile persistence in localStorage&lt;/li&gt;
&lt;li&gt;Responsive design that works on mobile for on-the-go use&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Deployment: Render
&lt;/h3&gt;

&lt;p&gt;The entire stack runs on Render's free tier:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Backend&lt;/strong&gt;: Node.js Web Service (&lt;code&gt;outdoor-pulse-api&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend&lt;/strong&gt;: Static Site with SPA rewrite rules&lt;/li&gt;
&lt;li&gt;Auto-deploys on every &lt;code&gt;git push&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1. Zero-Cost, Accessible to Everyone
&lt;/h3&gt;

&lt;p&gt;OutdoorPulse runs entirely on free tiers — no credit card required anywhere:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 4&lt;/strong&gt; via OpenRouter: free inference&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Qwen 3.8&lt;/strong&gt; via Groq: free fallback&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Render&lt;/strong&gt;: free hosting&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SerpApi&lt;/strong&gt;: 100 free searches/month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ElevenLabs&lt;/strong&gt;: free tier (boosted with MLH Hacktoberfest promo)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A closed API like GPT-4 would cost ~$0.01-0.03 per recommendation. At scale, that's a real barrier. Open-weight models on free inference providers make this accessible to developers everywhere — including countries where USD payment methods aren't easy to get.&lt;/p&gt;

&lt;p&gt;I literally built this entire app without a credit card. Try that with OpenAI.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. No Vendor Lock-In — Proven in Production
&lt;/h3&gt;

&lt;p&gt;The multi-provider architecture isn't theoretical. During development, Gemma was rate-limited on OpenRouter, and the app seamlessly fell back to Qwen on Groq:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;🤖 Trying Gemma 4 31B (via OpenRouter)...
⚠️ Gemma 4 31B (via OpenRouter) failed: rate limited
🤖 Trying Qwen 3.8 27B (via Groq)...
✅ Qwen 3.8 27B (via Groq) succeeded!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Same code, same prompts, different open-weight model. The user never noticed. With a proprietary API, a rate limit means your app breaks.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. Privacy by Design
&lt;/h3&gt;

&lt;p&gt;Your location, interests, and fitness data go to an open-weight model — not to a company that may train on your inputs. With open weights, you could self-host Gemma on your own hardware and keep everything entirely local. The architecture supports it; just swap the endpoint URL.&lt;/p&gt;
&lt;h3&gt;
  
  
  4. Transparent Reasoning
&lt;/h3&gt;

&lt;p&gt;Gemma's weights are public. When the AI recommends a "Night Walk" because it's 82°F and humid in Dhaka, you can inspect exactly how the model reasons about weather conditions. With a closed API, the recommendation is a black box.&lt;/p&gt;


&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;


&lt;div class="ltag-agent-session"&gt;
  &lt;div class="agent-session-header"&gt;
    
    &lt;span class="agent-session-tool-icon-badge" title="Gemini CLI"&gt;
&lt;/span&gt;
    &lt;span class="agent-session-title"&gt;Building OutdoorPulse — AI Outdoor Activity Recommender for Hacktoberfest 2026&lt;/span&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-scroll"&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;I want to take part in hacktoberfest and do a project for Hacktoberfest Open-Source AI Challenge: Week 1 - Touch Grass. Build something with open-source AI that gets people off the screen and into the world.&lt;/p&gt;

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

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Proposed OutdoorPulse — an AI-powered outdoor activity recommender using Gemma (open-weight), SerpApi (weather), and ElevenLabs (audio narration). Targets 7 prize categories.&lt;/p&gt;

                &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-writetofile"&gt;write_to_file&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;Created project plan with 4-day build schedule&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Created project plan with 4-day build schedule&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;project_plan.md created&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;I need something production ready type project. Use Vite + React frontend and Express backend.&lt;/p&gt;

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

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Scaffolded full-stack architecture: Vite+React client with premium dark-mode design system, Express.js server with route/service separation.&lt;/p&gt;

                &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-runcommand"&gt;run_command&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;npx -y create-vite@latest ./ -- --template react&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre agent-session-terminal"&gt;&lt;code&gt;$ npx -y create-vite@latest ./ -- --template react&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Vite project created&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-writetofile"&gt;write_to_file&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;Created 46 curated outdoor activities across 8 categories&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Created 46 curated outdoor activities across 8 categories&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;activities.json with hiking, birding, photography, gardening, wellness, running, scenic, family&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-writetofile"&gt;write_to_file&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;Created AI service with Gemma integration&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Created AI service with Gemma integration&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;gemma.js — multi-provider with automatic fallback&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-writetofile"&gt;write_to_file&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;Created weather service with SerpApi&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Created weather service with SerpApi&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;weather.js — real-time weather with fallback&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-writetofile"&gt;write_to_file&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;Created ElevenLabs TTS service&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Created ElevenLabs TTS service&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;elevenlabs.js — text-to-speech for activity narration&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-writetofile"&gt;write_to_file&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;Created 6 React components&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Created 6 React components&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Header, WeatherWidget, ActivityCard, ProfileSetup, LoadingState, LocationBar&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-writetofile"&gt;write_to_file&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;Created premium CSS design system&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Created premium CSS design system&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;index.css — 600+ lines, glassmorphism, forest palette, micro-animations&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Added API keys for Groq, OpenRouter, SerpApi, and ElevenLabs. Testing the full pipeline.&lt;/p&gt;

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

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Debugged API key issues: Google AI Studio required billing (user has no USD card), pivoted to OpenRouter (free Gemma 4) + Groq (free Qwen fallback). Built resilient multi-provider system with automatic failover.&lt;/p&gt;

                &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-runcommand"&gt;run_command&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;curl API test — Gemma 4 + SerpApi weather + ElevenLabs audio&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre agent-session-terminal"&gt;&lt;code&gt;$ curl API test — Gemma 4 + SerpApi weather + ElevenLabs audio&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;All 3 services working: AI recommendations personalized to Dhaka weather, 397KB MP3 audio generated&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-runcommand"&gt;run_command&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;Deployed to Render (manual services, no card needed)&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre agent-session-terminal"&gt;&lt;code&gt;$ Deployed to Render (manual services, no card needed)&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Backend: outdoor-pulse-api.onrender.com, Frontend: outdoor-pulse.onrender.com — both live&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-footer"&gt;
    &lt;span class="agent-session-meta"&gt;
        6 of 6 messages
    &lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;The session captures the full build journey: initial concept, scaffolding the full-stack app, debugging Google AI Studio billing issues (pivoted to OpenRouter for free Gemma access), building the multi-provider fallback system, integrating SerpApi weather and ElevenLabs audio, and deploying to Render.&lt;/p&gt;




&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Render&lt;/strong&gt; — Best Use of Render: The full-stack app runs on Render's free tier — Node.js Web Service for the API, Static Site for the React frontend. The &lt;code&gt;render.yaml&lt;/code&gt; Blueprint enables reproducible deployment, and auto-deploy triggers on every git push.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ElevenLabs&lt;/strong&gt; — Best Use of ElevenLabs: Voice narration is a core UX feature, not a gimmick. It lets users listen to activity recommendations while physically getting ready to go outside — reducing screen time at the exact moment it matters most for the "Touch Grass" theme.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SerpApi&lt;/strong&gt; — Best Use of SerpApi: Real-time weather data is the foundation of every recommendation. SerpApi provides temperature, humidity, UV index, wind speed, sunrise/sunset, and conditions — all fed directly into the AI prompt so recommendations match what's actually happening outside your door.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Entire&lt;/strong&gt; — Best Agent Session: The complete build session is embedded above, showing the real development process including architectural pivots (Google AI Studio → OpenRouter), debugging, and design decisions made in real-time.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>hf26challenge</category>
      <category>opensource</category>
      <category>ai</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Dadi's Probashi Kitchen: Bringing Home to Expat Friends with Open-Source AI</title>
      <dc:creator>Syed Zuhair Hossain</dc:creator>
      <pubDate>Fri, 02 Oct 2026 16:25:39 +0000</pubDate>
      <link>https://dev.to/syedzuhairhossain/dadis-probashi-kitchen-bringing-home-to-expat-friends-with-open-source-ai-31jl</link>
      <guid>https://dev.to/syedzuhairhossain/dadis-probashi-kitchen-bringing-home-to-expat-friends-with-open-source-ai-31jl</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4gnkb60tvl98voi7c4ty.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4gnkb60tvl98voi7c4ty.png" alt=" " width="799" height="402"&gt;&lt;/a&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&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;Dadi's Probashi Kitchen&lt;/strong&gt;, a local AI companion designed for my friend Nafis who recently moved from Bangladesh to Melbourne, Australia for his studies. &lt;/p&gt;

&lt;p&gt;Living abroad for the first time, Nafis faced severe homesickness and missed traditional homemade comfort food like &lt;em&gt;Kacchi Biryani&lt;/em&gt; and &lt;em&gt;Shorshe Ilish&lt;/em&gt;. He struggled with two major issues:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Standard Aussie supermarkets don't carry specific local Bangladeshi ingredients (like Ilish fish or local spices).&lt;/li&gt;
&lt;li&gt;Family recipes passed down from grandmothers use vague measurements like &lt;em&gt;"ek mutho"&lt;/em&gt; (a handful) or &lt;em&gt;" আন্দাজমতো "&lt;/em&gt; (to taste), which are impossible for a beginner cook in a new country to decode.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Dadi's Probashi Kitchen&lt;/strong&gt; acts as a warm, loving Bangladeshi grandmother ("Dadi"). Nafis can type any traditional dish he craves, and Dadi comforts him in "Banglish" (Bengali-English), suggests standard supermarket alternatives available in Western stores (e.g., swapping Ilish for salmon or sea bass), and converts vague traditional measurements into precise cups and grams.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live App (Render):&lt;/strong&gt; &lt;a href="https://probashi-recipe.onrender.com/" rel="noopener noreferrer"&gt;https://probashi-recipe.onrender.com/&lt;/a&gt; &lt;em&gt;(Note: Hosted on a free-tier server which occasionally runs low on RAM for local LLM extraction. Please see the video demo for local CPU execution!)&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When Nafis tested it, he said: &lt;em&gt;"It actually sounds like my Dadi! Replacing the hard-to-find mustard fish with sea bass made making dinner after lectures so much less intimidating."&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&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/ZuhairHossain" rel="noopener noreferrer"&gt;
        ZuhairHossain
      &lt;/a&gt; / &lt;a href="https://github.com/ZuhairHossain/probashi-recipe" rel="noopener noreferrer"&gt;
        probashi-recipe
      &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;👵🏽 Dadi's Probashi Kitchen&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;A locally-run AI assistant built for the &lt;strong&gt;Hacktoberfest 2026 DEV Weekend Challenge: Build for a Friend&lt;/strong&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;The Story&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;My friend Nafis recently moved from Bangladesh to Melbourne, Australia. He has been incredibly homesick for authentic Bangladeshi food like &lt;em&gt;Kacchi Biryani&lt;/em&gt; and &lt;em&gt;Shorshe Ilish&lt;/em&gt;, but he struggles to find local ingredients in standard Aussie supermarkets and doesn't understand traditional vague measurements (like "ek mutho" / a handful).&lt;/p&gt;
&lt;p&gt;This project solves that problem. "Dadi's Probashi Kitchen" acts as a warm, loving Bangladeshi grandmother. It takes traditional recipe requests, comforts the user in "Banglish," swaps hard-to-find ingredients for Western supermarket alternatives, and converts measurements into exact grams and cups.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why Open Source?&lt;/h2&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Cultural Customization:&lt;/strong&gt; Using an open-weight model allowed me to heavily customize the system prompt to capture the exact warmth, vocabulary, and specific tone of a real South Asian grandmother, avoiding the robotic feel of closed…&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ZuhairHossain/probashi-recipe" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Repository:&lt;/strong&gt; &lt;a href="https://github.com/ZuhairHossain/probashi-recipe" rel="noopener noreferrer"&gt;https://github.com/ZuhairHossain/probashi-recipe&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;The application is built with Python and Streamlit for the user interface, powered entirely by open-source AI:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Model:&lt;/strong&gt; Google's &lt;strong&gt;Gemma 2B&lt;/strong&gt; (&lt;code&gt;gemma2:2b&lt;/code&gt;), an open-weight model selected for its lightweight efficiency and strong instruction-following capabilities.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inference:&lt;/strong&gt; &lt;strong&gt;Ollama&lt;/strong&gt; runs the model locally via CPU inference without requiring paid API tokens or a dedicated GPU.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Containerization:&lt;/strong&gt; The app is fully Dockerized (&lt;code&gt;Dockerfile&lt;/code&gt; + &lt;code&gt;start.sh&lt;/code&gt;) for deployment options on cloud platforms like Render.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# System prompt snippet defining Dadi's persona in Streamlit
&lt;/span&gt;&lt;span class="n"&gt;system_prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;You are a warm, loving Bangladeshi Dadi (Grandma). Your grandchild just moved abroad and misses your cooking.
1. Comfort them affectionately in a mix of English and Banglish (use sweet words like &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;shona&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;, &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;bhaiya&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;, &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;dadibhai&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;).
2. Adapt recipes using standard Western supermarket ingredients.
3. Convert vague measurements like &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;ek mutho&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt; (a handful) into standard cups, grams, or tablespoons.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;Open innovation made two crucial aspects of this project possible that proprietary closed APIs could not deliver:&lt;/p&gt;

&lt;p&gt;Cultural Persona Customization without Corporate Censorship or Robotic Tone: Closed commercial APIs often enforce rigid, corporate conversational styles or fail to adopt culturally nuanced dialects like "Banglish". Open-weight models like Gemma 2B allow complete control over system prompts and temperature settings, producing an authentic, comforting persona.&lt;/p&gt;

&lt;p&gt;Offline Execution &amp;amp; Complete Recipe Privacy: Family recipes are personal heritage. Running Gemma 2B locally via Ollama means recipes and personal inputs never get sent to cloud logging servers or mined for advertising. Furthermore, because Gemma 2B runs locally on standard laptop CPUs, my friend can run the app offline in his apartment even when his internet goes down—costing $0 to host or maintain indefinitely.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;p&gt;Best Use of Gemma: Uses Google's open-weight Gemma 2B model as the core engine driving the application.&lt;/p&gt;

&lt;p&gt;Best Use of Render: Dockerized and deployed as a web service on Render.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>hello</title>
      <dc:creator>Syed Zuhair Hossain</dc:creator>
      <pubDate>Fri, 02 Oct 2026 05:17:48 +0000</pubDate>
      <link>https://dev.to/syedzuhairhossain/hello-2ibo</link>
      <guid>https://dev.to/syedzuhairhossain/hello-2ibo</guid>
      <description></description>
    </item>
  </channel>
</rss>
