<?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: Asmae </title>
    <description>The latest articles on Forem by Asmae  (@asamaes).</description>
    <link>https://forem.com/asamaes</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%2F3322880%2Fad5505ba-a7eb-4c56-9a43-e0fb4d0c35e9.jpeg</url>
      <title>Forem: Asmae </title>
      <link>https://forem.com/asamaes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/asamaes"/>
    <language>en</language>
    <item>
      <title>AS’ HTCPCP AI Butler™ — The AI That Brews Chaos, Not Coffee 418% Chaos: Your Useless AI Butler</title>
      <dc:creator>Asmae </dc:creator>
      <pubDate>Wed, 08 Apr 2026 09:04:25 +0000</pubDate>
      <link>https://forem.com/asamaes/as-htcpcp-ai-butler-the-ai-that-brews-chaos-not-coffee-418-chaos-your-useless-ai-butler-18m0</link>
      <guid>https://forem.com/asamaes/as-htcpcp-ai-butler-the-ai-that-brews-chaos-not-coffee-418-chaos-your-useless-ai-butler-18m0</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/aprilfools-2026"&gt;DEV April Fools Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  🍵 AS’ HTCPCP AI Butler™ 🤖
&lt;/h1&gt;

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

&lt;h3&gt;
  
  
  &lt;em&gt;The Most Overengineered Useless AI Ever Created&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/aprilfools-2026"&gt;DEV April Fools Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyhjbc01d3kndr3k0yprh.gif" 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%2Fyhjbc01d3kndr3k0yprh.gif" alt="Dancing Teapot" width="370" height="208"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🍵 AS’ HTCPCP AI Butler™ Behavioral Surveillance System
&lt;/h2&gt;

&lt;p&gt;Enterprise-grade AI designed to detect procrastination and respond with emotionally calibrated teapot compliance.&lt;/p&gt;

&lt;p&gt;This project is a submission for the DEV April Fools Challenge.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎯 Anti-Value Proposition
&lt;/h2&gt;

&lt;p&gt;AS’ HTCPCP AI Butler™ solves absolutely nothing.&lt;/p&gt;

&lt;p&gt;Instead, it monitors your hesitation, analyzes your intent, and responds with legally compliant HTTP 418 messages.&lt;/p&gt;

&lt;p&gt;If you're not coding…&lt;br&gt;
You’re brewing.&lt;/p&gt;
&lt;h2&gt;
  
  
  🎯 Inspiration
&lt;/h2&gt;

&lt;p&gt;At the heart of this project lies a deeply unnecessary question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What if an AI could detect when you're not working… and respond with pure chaos?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We live in a world of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;productivity trackers&lt;/li&gt;
&lt;li&gt;AI assistants&lt;/li&gt;
&lt;li&gt;“focus tools”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I built the opposite.&lt;/p&gt;

&lt;p&gt;An AI that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;listens 🎙️&lt;/li&gt;
&lt;li&gt;analyzes 🧠&lt;/li&gt;
&lt;li&gt;judges ⚖️&lt;/li&gt;
&lt;li&gt;and then… does absolutely nothing useful ☕&lt;/li&gt;
&lt;/ul&gt;


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

&lt;p&gt;&lt;strong&gt;AS’ HTCPCP AI Butler™&lt;/strong&gt; is a voice-first AI system that monitors your behavior and reacts in the most unhelpful way possible.&lt;/p&gt;
&lt;h3&gt;
  
  
  It does the following:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Detects inactivity or hesitation&lt;/li&gt;
&lt;li&gt;Uses AI to interpret your “intent”&lt;/li&gt;
&lt;li&gt;Decides your fate&lt;/li&gt;
&lt;li&gt;Responds with:&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;☕ HTTP 418&lt;/td&gt;
&lt;td&gt;“I’m a Teapot” responses&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔥 ASCII Renderer&lt;/td&gt;
&lt;td&gt;Flaming teapots in terminal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🍵 Variable Mutation&lt;/td&gt;
&lt;td&gt;Renames your variables to tea&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;


&lt;h3&gt;
  
  
  A Typical Interaction
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;You open your IDE&lt;/li&gt;
&lt;li&gt;You pause for 2 seconds&lt;/li&gt;
&lt;li&gt;AI detects weakness&lt;/li&gt;
&lt;li&gt;Tea is metaphorically brewed&lt;/li&gt;
&lt;li&gt;Terminal: &lt;strong&gt;418 I'm a Teapot&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;


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

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

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1dpp9m4vlextk0na5y7v.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%2F1dpp9m4vlextk0na5y7v.png" alt=" " width="800" height="370"&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.amazonaws.com%2Fuploads%2Farticles%2Fpe9rm59foiks0ny8taxu.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%2Fpe9rm59foiks0ny8taxu.png" alt=" " width="795" height="817"&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.amazonaws.com%2Fuploads%2Farticles%2Fbde2u4kajvi3litupxkv.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%2Fbde2u4kajvi3litupxkv.png" alt=" " width="800" height="364"&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.amazonaws.com%2Fuploads%2Farticles%2Fufp5pzwxpa5qtg5b825b.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%2Fufp5pzwxpa5qtg5b825b.png" alt=" " width="475" height="697"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;👉 Try it here: &lt;/p&gt;

&lt;p&gt;GitHub Repo: &lt;a href="https://github.com/AsamaeS/as-htcpcp-ai-butler" rel="noopener noreferrer"&gt;https://github.com/AsamaeS/as-htcpcp-ai-butler&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;detectProcrastination&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;brewTea&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="nf"&gt;send418Response&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="nf"&gt;renderASCIIFlames&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="nf"&gt;injectGIFChaos&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="nf"&gt;mutateVariablesToTea&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &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%2Fiyuuk97atr7s0prpatr8.png" alt=" " width="800" height="394"&gt;
&lt;/h2&gt;

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

&lt;p&gt;A carefully engineered pipeline powers this completely unnecessary experience.&lt;/p&gt;




&lt;h3&gt;
  
  
  📐 Architecture
&lt;/h3&gt;

&lt;p&gt;Here is the actual system architecture:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdqizanh8k99mqf3v24gf.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%2Fdqizanh8k99mqf3v24gf.png" alt=" " width="800" height="847"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🔄 AI Voice Pipeline
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Speech → Text → AI Reasoning → Chaos Decision → Response → Voice
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or more honestly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You speak → AI listens → AI judges → Chaos happens → You regret everything
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  🧠 Core System Flow
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;🎙️ Speech Recognition captures user input&lt;/li&gt;
&lt;li&gt;🧠 Gemini 2.5 Flash analyzes intent&lt;/li&gt;
&lt;li&gt;⚙️ Chaos Orchestrator decides response&lt;/li&gt;
&lt;li&gt;Outputs are generated:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;HTTP 418 responses&lt;/li&gt;
&lt;li&gt;ASCII teapots 🔥&lt;/li&gt;
&lt;li&gt;Variable mutation 🍵&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;🎨 Frontend displays everything beautifully&lt;/li&gt;
&lt;li&gt;🧍 User becomes confused&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  🧰 Technology Stack
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Tech&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Frontend&lt;/td&gt;
&lt;td&gt;React 18, TailwindCSS, Framer Motion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;td&gt;Node.js, Serverless&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloud&lt;/td&gt;
&lt;td&gt;Google Cloud Run&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;Gemini 2.5 Flash&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Voice&lt;/td&gt;
&lt;td&gt;Web Speech API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Streaming&lt;/td&gt;
&lt;td&gt;WebSockets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Security&lt;/td&gt;
&lt;td&gt;TLS, API key isolation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Performance&lt;/td&gt;
&lt;td&gt;Vite, Brotli&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  🧩 Key Engineering Concepts
&lt;/h3&gt;

&lt;h4&gt;
  
  
  🧠 Desperation Analyzer™
&lt;/h4&gt;

&lt;p&gt;Tracks user behavior:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1–5 attempts → polite refusal&lt;/li&gt;
&lt;li&gt;5–10 → passive-aggressive&lt;/li&gt;
&lt;li&gt;10+ → existential judgment&lt;/li&gt;
&lt;li&gt;20+ → chaos mode&lt;/li&gt;
&lt;/ul&gt;




&lt;h4&gt;
  
  
  ☕ 418 Engine
&lt;/h4&gt;

&lt;p&gt;Returns only:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;HTTP 418 — I'm a Teapot  
HTTP 418 — Still a Teapot  
HTTP 418 — Please Stop  
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fully compliant. Fully useless.&lt;/p&gt;




&lt;h4&gt;
  
  
  ⏱ Streaming Engine
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;30–80ms per token&lt;/li&gt;
&lt;li&gt;418ms dramatic pause&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because latency is now… emotional.&lt;/p&gt;




&lt;h2&gt;
  
  
  🏆 Technical Achievements
&lt;/h2&gt;




&lt;h3&gt;
  
  
  📊 Performance Metrics
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AI Latency&lt;/td&gt;
&lt;td&gt;~180ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Voice Pipeline&lt;/td&gt;
&lt;td&gt;~350ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Streaming Speed&lt;/td&gt;
&lt;td&gt;30–80ms/token&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chaos Accuracy&lt;/td&gt;
&lt;td&gt;~87%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Coffee Brewed&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  📐 Mathematical Model
&lt;/h3&gt;

&lt;p&gt;Total response time:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;T_total = T_input + T_AI + T_stream + T_pause
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;T_pause = 418ms&lt;/code&gt; (mandatory drama)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;User frustration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Frustration(n) = log(n_attempts) × sarcasm_factor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  💡 Innovation Highlights
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Voice-first useless interaction&lt;/li&gt;
&lt;li&gt;AI-driven behavioral prediction&lt;/li&gt;
&lt;li&gt;Constraint-based refusal system&lt;/li&gt;
&lt;li&gt;Emotion-aware latency&lt;/li&gt;
&lt;/ul&gt;




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

&lt;ul&gt;
&lt;li&gt;Real-time AI + UI synchronization&lt;/li&gt;
&lt;li&gt;Voice processing without lag&lt;/li&gt;
&lt;li&gt;Balancing chaos vs usability (barely)&lt;/li&gt;
&lt;li&gt;Secure AI integration&lt;/li&gt;
&lt;li&gt;Preventing total system meltdown from too many GIFs&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🎯 Key Strengths
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Strength&lt;/th&gt;
&lt;th&gt;Why it matters&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🧠 Technical Depth&lt;/td&gt;
&lt;td&gt;Real architecture behind nonsense&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📐 Mathematical Rigor&lt;/td&gt;
&lt;td&gt;Yes, even jokes have formulas&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔐 Production Ready&lt;/td&gt;
&lt;td&gt;Secure, scalable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🎭 Innovation&lt;/td&gt;
&lt;td&gt;Serious tech, absurd purpose&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🚀 Vision&lt;/td&gt;
&lt;td&gt;Expandable chaos&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🚀 Future Vision
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Multiplayer chaos mode&lt;/li&gt;
&lt;li&gt;Voice-only interaction&lt;/li&gt;
&lt;li&gt;Adaptive sarcasm AI&lt;/li&gt;
&lt;li&gt;Emotional profiling (slightly concerning)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🏗️ Built With
&lt;/h2&gt;

&lt;p&gt;React · TypeScript · Tailwind · Node.js · WebSockets · Google Cloud Run · Gemini AI · Vite · Brotli · TLS · IndexedDB · Framer Motion · Web Audio API · Zod · GitHub Actions&lt;/p&gt;




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

&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;Best Google AI Usage&lt;/strong&gt; → Gemini powers behavior prediction&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Best Ode to Larry Masinter&lt;/strong&gt; → HTTP 418 everywhere&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Community Favorite&lt;/strong&gt; → absurd + technical + shareable&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💀 Final Thought
&lt;/h2&gt;

&lt;p&gt;This is not a productivity tool.&lt;br&gt;
This is not an AI assistant.&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A production-grade AI system designed to detect your laziness… and respond with theatrical uselessness.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&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%2Fo81glot1foe51thf6wkq.gif" 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%2Fo81glot1foe51thf6wkq.gif" alt="Final GIF" width="256" height="256"&gt;&lt;/a&gt;&lt;/p&gt;




</description>
      <category>devchallenge</category>
      <category>418challenge</category>
      <category>showdev</category>
    </item>
    <item>
      <title>AS’ HTCPCP AI Butler™ — The AI That Brews Chaos, Not Coffee 418% Chaos: Your Useless AI Butler</title>
      <dc:creator>Asmae </dc:creator>
      <pubDate>Tue, 07 Apr 2026 15:32:29 +0000</pubDate>
      <link>https://forem.com/asamaes/as-htcpcp-ai-butler-the-ai-that-brews-chaos-not-coffee418-chaos-your-useless-ai-butler-46jh</link>
      <guid>https://forem.com/asamaes/as-htcpcp-ai-butler-the-ai-that-brews-chaos-not-coffee418-chaos-your-useless-ai-butler-46jh</guid>
      <description>&lt;h1&gt;
  
  
  🍵 AS’ HTCPCP AI Butler™ 🤖
&lt;/h1&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;em&gt;The Most Overengineered Useless AI Ever Created&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/aprilfools-2026"&gt;DEV April Fools Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyhjbc01d3kndr3k0yprh.gif" 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%2Fyhjbc01d3kndr3k0yprh.gif" alt="Dancing Teapot" width="370" height="208"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🍵 AS’ HTCPCP AI Butler™ Behavioral Surveillance System
&lt;/h2&gt;

&lt;p&gt;Enterprise-grade AI designed to detect procrastination and respond with emotionally calibrated teapot compliance.&lt;/p&gt;

&lt;p&gt;This project is a submission for the DEV April Fools Challenge.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎯 Anti-Value Proposition
&lt;/h2&gt;

&lt;p&gt;AS’ HTCPCP AI Butler™ solves absolutely nothing.&lt;/p&gt;

&lt;p&gt;Instead, it monitors your hesitation, analyzes your intent, and responds with legally compliant HTTP 418 messages.&lt;/p&gt;

&lt;p&gt;If you're not coding…&lt;br&gt;
You’re brewing.&lt;/p&gt;
&lt;h2&gt;
  
  
  🎯 Inspiration
&lt;/h2&gt;

&lt;p&gt;At the heart of this project lies a deeply unnecessary question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What if an AI could detect when you're not working… and respond with pure chaos?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We live in a world of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;productivity trackers&lt;/li&gt;
&lt;li&gt;AI assistants&lt;/li&gt;
&lt;li&gt;“focus tools”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I built the opposite.&lt;/p&gt;

&lt;p&gt;An AI that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;listens 🎙️&lt;/li&gt;
&lt;li&gt;analyzes 🧠&lt;/li&gt;
&lt;li&gt;judges ⚖️&lt;/li&gt;
&lt;li&gt;and then… does absolutely nothing useful ☕&lt;/li&gt;
&lt;/ul&gt;


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

&lt;p&gt;&lt;strong&gt;AS’ HTCPCP AI Butler™&lt;/strong&gt; is a voice-first AI system that monitors your behavior and reacts in the most unhelpful way possible.&lt;/p&gt;
&lt;h3&gt;
  
  
  It does the following:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Detects inactivity or hesitation&lt;/li&gt;
&lt;li&gt;Uses AI to interpret your “intent”&lt;/li&gt;
&lt;li&gt;Decides your fate&lt;/li&gt;
&lt;li&gt;Responds with:&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;☕ HTTP 418&lt;/td&gt;
&lt;td&gt;“I’m a Teapot” responses&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔥 ASCII Renderer&lt;/td&gt;
&lt;td&gt;Flaming teapots in terminal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🕺 GIF Injection&lt;/td&gt;
&lt;td&gt;Dancing chaos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🍵 Variable Mutation&lt;/td&gt;
&lt;td&gt;Renames your variables to tea&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;


&lt;h3&gt;
  
  
  A Typical Interaction
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;You open your IDE&lt;/li&gt;
&lt;li&gt;You pause for 2 seconds&lt;/li&gt;
&lt;li&gt;AI detects weakness&lt;/li&gt;
&lt;li&gt;Tea is metaphorically brewed&lt;/li&gt;
&lt;li&gt;Terminal: &lt;strong&gt;418 I'm a Teapot&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Flames appear 🔥&lt;/li&gt;
&lt;li&gt;GIF starts dancing 🕺&lt;/li&gt;
&lt;li&gt;You question your life&lt;/li&gt;
&lt;/ol&gt;


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

&lt;p&gt;👉 Try it here: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/3o6Zt481isNVuQI1l6/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/3o6Zt481isNVuQI1l6/giphy.gif" alt="Chaos GIF" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;


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

&lt;p&gt;GitHub Repo: &lt;a href="https://github.com/AsamaeS/as-htcpcp-ai-butler" rel="noopener noreferrer"&gt;https://github.com/AsamaeS/as-htcpcp-ai-butler&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;detectProcrastination&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;brewTea&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="nf"&gt;send418Response&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="nf"&gt;renderASCIIFlames&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="nf"&gt;injectGIFChaos&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="nf"&gt;mutateVariablesToTea&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






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

&lt;p&gt;A carefully engineered pipeline powers this completely unnecessary experience.&lt;/p&gt;




&lt;h3&gt;
  
  
  📐 Architecture
&lt;/h3&gt;

&lt;p&gt;Here is the actual system architecture:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdqizanh8k99mqf3v24gf.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%2Fdqizanh8k99mqf3v24gf.png" alt=" " width="800" height="847"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🔄 AI Voice Pipeline
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Speech → Text → AI Reasoning → Chaos Decision → Response → Voice
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or more honestly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You speak → AI listens → AI judges → Chaos happens → You regret everything
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  🧠 Core System Flow
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;🎙️ Speech Recognition captures user input&lt;/li&gt;
&lt;li&gt;🧠 Gemini 2.5 Flash analyzes intent&lt;/li&gt;
&lt;li&gt;⚙️ Chaos Orchestrator decides response&lt;/li&gt;
&lt;li&gt;Outputs are generated:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;HTTP 418 responses&lt;/li&gt;
&lt;li&gt;ASCII teapots 🔥&lt;/li&gt;
&lt;li&gt;GIF chaos 🕺&lt;/li&gt;
&lt;li&gt;Variable mutation 🍵&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;🎨 Frontend displays everything beautifully&lt;/li&gt;
&lt;li&gt;🧍 User becomes confused&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  🧰 Technology Stack
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Tech&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Frontend&lt;/td&gt;
&lt;td&gt;React 18, TailwindCSS, Framer Motion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;td&gt;Node.js, Serverless&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloud&lt;/td&gt;
&lt;td&gt;Google Cloud Run&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;Gemini 2.5 Flash&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Voice&lt;/td&gt;
&lt;td&gt;Web Speech API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Streaming&lt;/td&gt;
&lt;td&gt;WebSockets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Security&lt;/td&gt;
&lt;td&gt;TLS, API key isolation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Performance&lt;/td&gt;
&lt;td&gt;Vite, Brotli&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  🧩 Key Engineering Concepts
&lt;/h3&gt;

&lt;h4&gt;
  
  
  🧠 Desperation Analyzer™
&lt;/h4&gt;

&lt;p&gt;Tracks user behavior:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1–5 attempts → polite refusal&lt;/li&gt;
&lt;li&gt;5–10 → passive-aggressive&lt;/li&gt;
&lt;li&gt;10+ → existential judgment&lt;/li&gt;
&lt;li&gt;20+ → chaos mode&lt;/li&gt;
&lt;/ul&gt;




&lt;h4&gt;
  
  
  ☕ 418 Engine
&lt;/h4&gt;

&lt;p&gt;Returns only:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;HTTP 418 — I'm a Teapot  
HTTP 418 — Still a Teapot  
HTTP 418 — Please Stop  
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fully compliant. Fully useless.&lt;/p&gt;




&lt;h4&gt;
  
  
  ⏱ Streaming Engine
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;30–80ms per token&lt;/li&gt;
&lt;li&gt;418ms dramatic pause&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because latency is now… emotional.&lt;/p&gt;




&lt;h2&gt;
  
  
  🏆 Technical Achievements
&lt;/h2&gt;




&lt;h3&gt;
  
  
  📊 Performance Metrics
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AI Latency&lt;/td&gt;
&lt;td&gt;~180ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Voice Pipeline&lt;/td&gt;
&lt;td&gt;~350ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Streaming Speed&lt;/td&gt;
&lt;td&gt;30–80ms/token&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chaos Accuracy&lt;/td&gt;
&lt;td&gt;~87%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Coffee Brewed&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  📐 Mathematical Model
&lt;/h3&gt;

&lt;p&gt;Total response time:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;T_total = T_input + T_AI + T_stream + T_pause
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;T_pause = 418ms&lt;/code&gt; (mandatory drama)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;User frustration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Frustration(n) = log(n_attempts) × sarcasm_factor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  💡 Innovation Highlights
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Voice-first useless interaction&lt;/li&gt;
&lt;li&gt;AI-driven behavioral prediction&lt;/li&gt;
&lt;li&gt;Constraint-based refusal system&lt;/li&gt;
&lt;li&gt;Emotion-aware latency&lt;/li&gt;
&lt;/ul&gt;




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

&lt;ul&gt;
&lt;li&gt;Real-time AI + UI synchronization&lt;/li&gt;
&lt;li&gt;Voice processing without lag&lt;/li&gt;
&lt;li&gt;Balancing chaos vs usability (barely)&lt;/li&gt;
&lt;li&gt;Secure AI integration&lt;/li&gt;
&lt;li&gt;Preventing total system meltdown from too many GIFs&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🎯 Key Strengths
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Strength&lt;/th&gt;
&lt;th&gt;Why it matters&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🧠 Technical Depth&lt;/td&gt;
&lt;td&gt;Real architecture behind nonsense&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📐 Mathematical Rigor&lt;/td&gt;
&lt;td&gt;Yes, even jokes have formulas&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔐 Production Ready&lt;/td&gt;
&lt;td&gt;Secure, scalable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🎭 Innovation&lt;/td&gt;
&lt;td&gt;Serious tech, absurd purpose&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🚀 Vision&lt;/td&gt;
&lt;td&gt;Expandable chaos&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🚀 Future Vision
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Multiplayer chaos mode&lt;/li&gt;
&lt;li&gt;Voice-only interaction&lt;/li&gt;
&lt;li&gt;Adaptive sarcasm AI&lt;/li&gt;
&lt;li&gt;Emotional profiling (slightly concerning)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🏗️ Built With
&lt;/h2&gt;

&lt;p&gt;React · TypeScript · Tailwind · Node.js · WebSockets · Google Cloud Run · Gemini AI · Vite · Brotli · TLS · IndexedDB · Framer Motion · Web Audio API · Zod · GitHub Actions&lt;/p&gt;




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

&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;Best Google AI Usage&lt;/strong&gt; → Gemini powers behavior prediction&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Best Ode to Larry Masinter&lt;/strong&gt; → HTTP 418 everywhere&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Community Favorite&lt;/strong&gt; → absurd + technical + shareable&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💀 Final Thought
&lt;/h2&gt;

&lt;p&gt;This is not a productivity tool.&lt;br&gt;
This is not an AI assistant.&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A production-grade AI system designed to detect your laziness… and respond with theatrical uselessness.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&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%2Fo81glot1foe51thf6wkq.gif" 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%2Fo81glot1foe51thf6wkq.gif" alt="Final GIF" width="256" height="256"&gt;&lt;/a&gt;&lt;/p&gt;




</description>
      <category>devchallenge</category>
      <category>showdev</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Keep_AS — The System That Refuses to Let You Miss Opportunities</title>
      <dc:creator>Asmae </dc:creator>
      <pubDate>Mon, 30 Mar 2026 01:08:55 +0000</pubDate>
      <link>https://forem.com/asamaes/keepas-the-system-that-refuses-to-let-you-miss-opportunities-57hg</link>
      <guid>https://forem.com/asamaes/keepas-the-system-that-refuses-to-let-you-miss-opportunities-57hg</guid>
      <description>&lt;p&gt;This is a submission for the Notion MCP Challenge&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%2Fkbi9cbk6e9zcztfow6wi.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%2Fkbi9cbk6e9zcztfow6wi.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  🧠 Keep_AS — The system that refuses to let you fail
&lt;/h1&gt;

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

&lt;p&gt;There is a moment we all know.&lt;/p&gt;

&lt;p&gt;You find an opportunity.&lt;br&gt;
A job. A scholarship. A hackathon.&lt;/p&gt;

&lt;p&gt;You tell yourself:&lt;br&gt;
“I’ll do it later.”&lt;/p&gt;

&lt;p&gt;Later becomes tomorrow.&lt;br&gt;
Tomorrow becomes never.&lt;/p&gt;

&lt;p&gt;And nothing crashes.&lt;br&gt;
No error message.&lt;br&gt;
No alarm.&lt;/p&gt;

&lt;p&gt;Just… silence.&lt;/p&gt;

&lt;p&gt;And another opportunity dies.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Keep_AS was born from that frustration.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not because we lack talent.&lt;br&gt;
But because we lack &lt;em&gt;execution systems&lt;/em&gt;.&lt;/p&gt;


&lt;h3&gt;
  
  
  💡 The Idea
&lt;/h3&gt;

&lt;p&gt;Keep_AS is not a productivity app.&lt;/p&gt;

&lt;p&gt;It’s an &lt;strong&gt;AI-powered execution system&lt;/strong&gt; that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Takes an opportunity (job, project, goal)&lt;/li&gt;
&lt;li&gt;Breaks it into structured, actionable tasks&lt;/li&gt;
&lt;li&gt;Tracks your behavior&lt;/li&gt;
&lt;li&gt;Pushes you to act&lt;/li&gt;
&lt;li&gt;And refuses to let you ignore what matters&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  🎥 Video Demo
&lt;/h2&gt;
&lt;h2&gt;
  
  
    &lt;iframe src="https://www.youtube.com/embed/ScSXzIleKBY"&gt;
  &lt;/iframe&gt;

&lt;/h2&gt;
&lt;h2&gt;
  
  
  💻 Show us the 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/AsamaeS" rel="noopener noreferrer"&gt;
        AsamaeS
      &lt;/a&gt; / &lt;a href="https://github.com/AsamaeS/Keep_as" rel="noopener noreferrer"&gt;
        Keep_as
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;





&lt;h2&gt;
  
  
  ⚙️ How It Works
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Input: Raw Opportunity
&lt;/h3&gt;

&lt;p&gt;User pastes something like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Software Engineer Internship — Deadline March 30 — Requires CV, cover letter, portfolio”&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  2. AI Parsing
&lt;/h3&gt;

&lt;p&gt;We use an AI parser to extract:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deadline&lt;/li&gt;
&lt;li&gt;Required documents&lt;/li&gt;
&lt;li&gt;Skills&lt;/li&gt;
&lt;li&gt;Priority&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  3. Task Generation
&lt;/h3&gt;

&lt;p&gt;The system transforms it into a &lt;strong&gt;task graph&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prepare CV&lt;/li&gt;
&lt;li&gt;Write Cover Letter&lt;/li&gt;
&lt;li&gt;Build Portfolio&lt;/li&gt;
&lt;li&gt;Submit Application&lt;/li&gt;
&lt;li&gt;Track Deadline&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  4. Notion MCP Integration (Core of this project)
&lt;/h3&gt;

&lt;p&gt;This is where the magic happens.&lt;/p&gt;

&lt;p&gt;Using &lt;strong&gt;Notion MCP&lt;/strong&gt;, Keep_AS becomes a real system:&lt;/p&gt;

&lt;h4&gt;
  
  
  🔹 A Notion Database is created automatically
&lt;/h4&gt;

&lt;p&gt;Each task becomes a structured entry:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;th&gt;Priority&lt;/th&gt;
&lt;th&gt;Due Date&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Prepare CV&lt;/td&gt;
&lt;td&gt;Todo&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;March 28&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  🔹 Real-time updates
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Tasks are updated as you progress&lt;/li&gt;
&lt;li&gt;Status changes trigger behavior tracking&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  🔹 Human-in-the-loop system
&lt;/h4&gt;

&lt;p&gt;Notion acts as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The interface&lt;/li&gt;
&lt;li&gt;The memory&lt;/li&gt;
&lt;li&gt;The control system&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧩 System Architecture
&lt;/h2&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; User Input (Opportunity)
            │
            ▼
┌─────────────────────┐
│   AI Parser         │
└─────────────────────┘
            │
            ▼
┌─────────────────────┐
│ Task Graph Generator│
└─────────────────────┘
            │
            ▼
┌─────────────────────┐
│ Notion MCP          │
│ (Database + Pages)  │
└─────────────────────┘
            │
            ▼
┌─────────────────────┐
│ Momentum Engine     │
│ (Behavior Tracking) │
└─────────────────────┘
            │
            ▼
┌─────────────────────┐
│ User Feedback Loop  │
└─────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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

&lt;ul&gt;
&lt;li&gt;Accountability&lt;/li&gt;
&lt;li&gt;Urgency&lt;/li&gt;
&lt;li&gt;Psychological pressure (the good kind)&lt;/li&gt;
&lt;/ul&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%2Fpps23zfcuxljo7zpjbk7.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%2Fpps23zfcuxljo7zpjbk7.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgxe323o7t07k56t0c7xu.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%2Fgxe323o7t07k56t0c7xu.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbf7y14970nx22wuusd47.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%2Fbf7y14970nx22wuusd47.png" alt=" " width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo98gfa2qxysj8a2tcfaj.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%2Fo98gfa2qxysj8a2tcfaj.png" alt=" " width="723" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu0whanxs4c4kub3edfzx.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%2Fu0whanxs4c4kub3edfzx.png" alt=" " width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjmhl5d9tmnrr26ugjp99.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%2Fjmhl5d9tmnrr26ugjp99.png" alt=" " width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🔥 What Makes This Special
&lt;/h2&gt;

&lt;p&gt;Most tools:&lt;br&gt;
→ Store tasks&lt;/p&gt;

&lt;p&gt;Keep_AS:&lt;br&gt;
→ &lt;strong&gt;Forces execution&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  🚫 No more:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;“I forgot”&lt;/li&gt;
&lt;li&gt;“I’ll do it later”&lt;/li&gt;
&lt;li&gt;“I didn’t have time”&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  ✅ Instead:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Structured action&lt;/li&gt;
&lt;li&gt;Clear path&lt;/li&gt;
&lt;li&gt;Constant pressure&lt;/li&gt;
&lt;li&gt;Visible progress&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧠 Why Notion MCP Was Critical
&lt;/h2&gt;

&lt;p&gt;Without Notion:&lt;br&gt;
→ This is just another AI demo&lt;/p&gt;

&lt;p&gt;With Notion MCP:&lt;br&gt;
→ This becomes a &lt;strong&gt;living system&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Notion provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Persistent structured data&lt;/li&gt;
&lt;li&gt;Real-time updates&lt;/li&gt;
&lt;li&gt;Human interaction layer&lt;/li&gt;
&lt;li&gt;Visual clarity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It turns AI output into &lt;strong&gt;actionable reality&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  ❤️ The Real Problem We’re Solving
&lt;/h2&gt;

&lt;p&gt;This isn’t about productivity.&lt;/p&gt;

&lt;p&gt;It’s about &lt;strong&gt;missed opportunities&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;People don’t fail because they are not smart.&lt;/p&gt;

&lt;p&gt;They fail because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;They don’t start&lt;/li&gt;
&lt;li&gt;They don’t continue&lt;/li&gt;
&lt;li&gt;They don’t finish&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚀 What’s Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Real-time reminders&lt;/li&gt;
&lt;li&gt;Calendar integration&lt;/li&gt;
&lt;li&gt;Mobile notifications&lt;/li&gt;
&lt;li&gt;Multi-opportunity tracking&lt;/li&gt;
&lt;li&gt;AI coaching layer&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🏁 Final Thought
&lt;/h2&gt;

&lt;p&gt;Keep_AS is not here to organize your tasks.&lt;/p&gt;

&lt;p&gt;It’s here to make sure:&lt;br&gt;
&lt;strong&gt;you don’t abandon your future silently.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>notionchallenge</category>
      <category>mcp</category>
      <category>ai</category>
    </item>
    <item>
      <title>Argus</title>
      <dc:creator>Asmae </dc:creator>
      <pubDate>Wed, 04 Mar 2026 00:01:52 +0000</pubDate>
      <link>https://forem.com/asamaes/argus-543m</link>
      <guid>https://forem.com/asamaes/argus-543m</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;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%2F7wy2wnf3txphvijj6zm1.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%2F7wy2wnf3txphvijj6zm1.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built with Google Gemini
&lt;/h2&gt;

&lt;p&gt;Information overload is real. As someone who follows tech markets and industry news, I found myself drowning in browser tabs, losing track of sources, and spending hours trying to synthesize scattered data into something actionable. I wanted a system that could &lt;strong&gt;watch the web for me&lt;/strong&gt; — and that's how the &lt;strong&gt;Web Intelligence Platform&lt;/strong&gt; was born.&lt;/p&gt;

&lt;p&gt;The platform is a full-stack, production-ready web monitoring and market intelligence system built with Python (FastAPI), React + TypeScript, MongoDB, Redis, and Docker Compose. Here's what it does:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Project Management&lt;/strong&gt;: Organize monitoring targets into isolated workspaces (e.g., "Renewable Energy", "AI Startups", "Competitor Watch")&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Autonomous Crawling&lt;/strong&gt;: Discover and scrape web sources with anti-blocking mechanisms — Playwright fallback for JS-heavy pages, User-Agent rotation, adaptive rate limiting, and retry logic&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NLP Pipeline&lt;/strong&gt;: Every scraped document goes through relevance scoring (TF-IDF / Cosine Similarity), Sentiment Analysis, and Named Entity Recognition (companies, people, locations)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive Dashboard&lt;/strong&gt;: Real-time crawling status, activity timelines, and aggregate metrics&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Chatbot (RAG)&lt;/strong&gt;: Ask natural language questions about your scraped data and get cited, sourced answers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Google Gemini powered &lt;strong&gt;two critical layers&lt;/strong&gt; of this project:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Antigravity IDE (Gemini-powered development assistant)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I used Antigravity throughout the entire build — not just for autocomplete, but for real architectural decisions. Its multi-file context awareness helped me design the RAG pipeline, debug complex async issues in FastAPI, write the Docker Compose orchestration for five interconnected services, and refine the NLP scoring logic. Having an AI that understands your whole codebase, not just the open file, was a genuine superpower.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Gemini 1.5 Pro API as the brain of the chatbot&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The AI Assistant tab is powered by the Gemini API. When a user asks something like &lt;em&gt;"What are the main risks mentioned across all sources this week?"&lt;/em&gt;, the system retrieves the most relevant document chunks from MongoDB and feeds them to Gemini with strict instructions to cite sources:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;google.generativeai&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;genai&lt;/span&gt;

&lt;span class="n"&gt;genai&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;configure&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;GEMINI_API_KEY&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;genai&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;GenerativeModel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gemini-1.5-pro&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;context&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;retrieve_relevant_chunks&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user_query&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;top_k&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
You are an analyst assistant. Answer the user&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;s question using ONLY the context below.
Always cite your sources by document ID.

Context:
&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;

Question: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;user_query&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;
&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate_content&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The key architectural decision was keeping Gemini focused on &lt;strong&gt;reasoning over retrieved context&lt;/strong&gt; — not raw web browsing. This keeps responses grounded and auditable.&lt;/p&gt;

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

&lt;p&gt;🔗 GitHub Repository: &lt;a href="https://github.com/AsamaeS/Web-Analytics_projet-AS" rel="noopener noreferrer"&gt;https://github.com/AsamaeS/Web-Analytics_projet-AS&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Async is unforgiving.&lt;/strong&gt; The FastAPI + Motor (async MongoDB) stack is incredibly fast, but debugging race conditions in background workers was humbling. I learned to design task queues defensively — idempotent jobs, dead-letter queues, and explicit retry limits.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RAG quality is a retrieval problem, not a model problem.&lt;/strong&gt; My first instinct was to upgrade the model whenever answers felt off. The real fix was almost always upstream: better chunking, cleaner text extraction, or smarter relevance filtering before anything reached Gemini. The model is only as good as what you send it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Playwright is your friend for modern web scraping.&lt;/strong&gt; A surprising number of sites that look static are actually JS-rendered. Having Playwright as an automatic fallback — triggered when the lightweight scraper returns thin content — increased data yield significantly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scope creep is seductive.&lt;/strong&gt; I had to cut several features mid-build (a graph visualization layer, Slack notifications, an auto-scheduling daemon) to ship something coherent. Knowing when to cut is as important as knowing what to build.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Documentation-first is faster, not slower.&lt;/strong&gt; Writing the README and architecture docs before finishing the code forced me to confront design inconsistencies early — before they were baked in.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  What worked exceptionally well ✅
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Long-context reasoning.&lt;/strong&gt; Gemini 1.5 Pro's large context window was genuinely useful for RAG. I could feed it several long documents simultaneously and it synthesized across them coherently — something that required chunking tricks and multiple calls with smaller-context models.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Instruction-following fidelity.&lt;/strong&gt; When I told the model to only answer from provided context and always cite document IDs, it respected that consistently. For a production RAG system where hallucinations destroy user trust, this reliability is critical and honestly underrated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Antigravity IDE.&lt;/strong&gt; The multi-file context awareness was the standout experience of the whole build. It didn't just help me write code — it helped me &lt;em&gt;think through&lt;/em&gt; the system. When I described what I was building, it pushed back on architectural choices in ways that saved me from real design mistakes. It felt less like a smarter autocomplete and more like pairing with a senior engineer who had read all my code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where I ran into friction ⚠️
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Rate limits during rapid iteration.&lt;/strong&gt; In hackathon mode — where you're making dozens of test calls in quick succession — I hit limits more than expected. Better quota visibility and a more generous prototyping tier would make a real difference for builders under time pressure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Latency on complex RAG prompts.&lt;/strong&gt; With large contexts and multi-document prompts, response times were occasionally 3–5 seconds. For an interactive chatbot, this is noticeable. Streaming responses helped, but out-of-the-box latency could be improved.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Embeddings documentation.&lt;/strong&gt; Setting up the retrieval side of RAG using Gemini's native embedding API felt less documented than the generative side. I had to piece together the workflow from multiple sources. A unified RAG quickstart — covering embedding, retrieval, and generation end-to-end — would save new users a couple of hours.&lt;/p&gt;

&lt;h3&gt;
  
  
  The surprise 💡
&lt;/h3&gt;

&lt;p&gt;I expected Gemini to be a better version of what I already knew. What I didn't expect was how much &lt;strong&gt;Antigravity changed my development workflow&lt;/strong&gt;. Reasoning about the whole project — not just a file — is qualitatively different from any AI tool I'd used before. That shift in how I collaborated with AI during the build was the biggest takeaway of this project.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;What's next:&lt;/strong&gt; Scheduled crawling, sentiment-shift alerts, and Gemini multimodal ingestion to extract data from PDFs and charts — because most market intelligence doesn't live in clean HTML.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Stack: Python 3.11 · FastAPI · MongoDB · Redis · React 18 · TypeScript · TailwindCSS · Docker Compose · Google Gemini 1.5 Pro · spaCy · scikit-learn · Playwright&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>geminireflections</category>
      <category>gemini</category>
    </item>
    <item>
      <title>AI-Powered Career Portfolio with --Gemini Intelligence</title>
      <dc:creator>Asmae </dc:creator>
      <pubDate>Sun, 01 Feb 2026 22:15:49 +0000</pubDate>
      <link>https://forem.com/asamaes/ai-powered-career-portfolio-with-gemini-intelligence-5f6j</link>
      <guid>https://forem.com/asamaes/ai-powered-career-portfolio-with-gemini-intelligence-5f6j</guid>
      <description>&lt;p&gt;description: An interactive developer portfolio featuring an AI career assistant that answers questions, generates tailored CV summaries, and recommends relevant projects using Google Gemini AI.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/new-year-new-you-google-ai-2025-12-31"&gt;New Year, New You Portfolio Challenge Presented by Google AI&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Hi! I'm *&lt;em&gt;Asmae *&lt;/em&gt;, an Innovation &amp;amp; AMOA Engineering student , specializing in helping organizations transform through emerging technologies. &lt;/p&gt;

&lt;p&gt;My tagline says it all: &lt;strong&gt;"Code, compete, deploy — then coffee ☕"&lt;/strong&gt; — I'm passionate about building innovative solutions at the intersection of DevOps, Data Science, and AI.&lt;/p&gt;

&lt;p&gt;With this portfolio, I wanted to showcase not just my technical skills, but also demonstrate how AI can make career exploration more interactive and personal. Instead of static text, visitors can actually &lt;em&gt;talk&lt;/em&gt; to an AI that knows my background and can provide tailored insights.&lt;/p&gt;

&lt;h2&gt;
  
  
  Portfolio
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;💻 Source Code:&lt;/strong&gt; &lt;a href="https://github.com/AsamaeS/asmae-portfolio" rel="noopener noreferrer"&gt;https://github.com/AsamaeS/asmae-portfolio&lt;/a&gt;&lt;/p&gt;

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

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

&lt;p&gt;&lt;strong&gt;Frontend Framework:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js 14+&lt;/strong&gt; with App Router and TypeScript&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tailwind CSS&lt;/strong&gt; for responsive, utility-first styling&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Framer Motion&lt;/strong&gt; for smooth animations and transitions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;AI Integration:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Google Gemini API&lt;/strong&gt; (&lt;code&gt;gemini-2.0-flash-exp&lt;/code&gt; model)&lt;/li&gt;
&lt;li&gt;Custom AI context with my full professional profile&lt;/li&gt;
&lt;li&gt;Streaming responses for real-time interaction&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Google Cloud Run&lt;/strong&gt; with Docker containerization&lt;/li&gt;
&lt;li&gt;Standalone Next.js build for optimal performance&lt;/li&gt;
&lt;li&gt;Multi-stage Docker build for minimal image size&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;UI/UX Libraries:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Lucide React&lt;/strong&gt; &amp;amp; &lt;strong&gt;React Icons&lt;/strong&gt; for consistent iconography&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React Type Animation&lt;/strong&gt; for typing effects&lt;/li&gt;
&lt;li&gt;Custom glassmorphism components&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🎨 Design Decisions
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Glassmorphism Aesthetic&lt;/strong&gt;&lt;br&gt;
I chose a modern glassmorphism design with backdrop blur effects, creating depth and visual hierarchy. The violet-to-cyan gradient palette represents the fusion of creativity (purple) and technology (cyan).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Dark Mode First&lt;/strong&gt;&lt;br&gt;
With a dark slate background (#0f172a), the portfolio is easy on the eyes during long browsing sessions while making accent colors pop.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Story-Driven Sections&lt;/strong&gt;&lt;br&gt;
Instead of dumping information, I organized content into a narrative flow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hero → About → Experience → Education → Projects → Skills → Certifications → Activities → Contact&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Mobile-First Responsive&lt;/strong&gt;&lt;br&gt;
Every component was designed mobile-first, ensuring a seamless experience across devices.&lt;/p&gt;
&lt;h3&gt;
  
  
  🤖 Google AI Tools Used
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Primary Tool: Google AI Studio &amp;amp; Gemini API&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I built an &lt;strong&gt;AI Career Assistant&lt;/strong&gt; that serves as an intelligent proxy for recruiters and visitors. Here's what makes it special:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Contextual Intelligence&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ASMAE_CONTEXT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`
Tu es un assistant AI représentant Asmae SERJI...
[Full professional profile, experiences, projects, skills]
`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The AI has complete knowledge of my:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;4 internships (Kyntus Morocco, VNB-IT, AXA, Brainwave Matrix)&lt;/li&gt;
&lt;li&gt;6 featured projects (AsMind, Energy Recovery System, etc.)&lt;/li&gt;
&lt;li&gt;7 certifications (BCG, DataCamp, Google, IBM)&lt;/li&gt;
&lt;li&gt;Technical skills across ML, DevOps, and AMOA&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Dynamic CV Generation&lt;/strong&gt;&lt;br&gt;
Ask it: &lt;em&gt;"Generate a CV summary for a Data Engineer role"&lt;/em&gt;&lt;br&gt;
→ It tailors my experience to highlight relevant skills like Python, MySQL, ML models&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Project Recommendations&lt;/strong&gt;&lt;br&gt;
Ask it: &lt;em&gt;"Which projects demonstrate AMOA capabilities?"&lt;/em&gt;&lt;br&gt;
→ It intelligently recommends my AXA internship and ERP UI project&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Conversational Career Exploration&lt;/strong&gt;&lt;br&gt;
Instead of reading static text, recruiters can ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"What's her strongest technical skill?"&lt;/li&gt;
&lt;li&gt;"Has she worked with React?"&lt;/li&gt;
&lt;li&gt;"Tell me about her machine learning experience"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Implementation:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// API Route: app/api/chat/route.ts&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;chat&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;startChat&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;history&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;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;parts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ASMAE_CONTEXT&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;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;model&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;parts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Ready to represent Asmae.&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="nx"&gt;conversationHistory&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&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;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sendMessage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🔧 Development Process
&lt;/h3&gt;

&lt;p&gt;*&lt;em&gt;Phase 1: Planning *&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Defined 10 core sections&lt;/li&gt;
&lt;li&gt;Sketched component hierarchy&lt;/li&gt;
&lt;li&gt;Chose color palette and typography&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;*&lt;em&gt;Phase 2: Component Development *&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Built 12 reusable components&lt;/li&gt;
&lt;li&gt;Implemented responsive layouts&lt;/li&gt;
&lt;li&gt;Added animations and hover effects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;*&lt;em&gt;Phase 3: AI Integration *&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configured Gemini API&lt;/li&gt;
&lt;li&gt;Created chat endpoint&lt;/li&gt;
&lt;li&gt;Built interactive ChatBot component&lt;/li&gt;
&lt;li&gt;Tested example prompts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;**Phase 4: Deployment Setup *&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Created optimized Dockerfile&lt;/li&gt;
&lt;li&gt;Configured Cloud Run settings&lt;/li&gt;
&lt;li&gt;Set up environment variables&lt;/li&gt;
&lt;li&gt;Deployed with &lt;code&gt;dev-tutorial=devnewyear2026&lt;/code&gt; label&lt;/li&gt;
&lt;/ul&gt;

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

&lt;h3&gt;
  
  
  🌟 1. The AI Career Assistant
&lt;/h3&gt;

&lt;p&gt;This is the crown jewel of the portfolio. Instead of forcing visitors to read walls of text, they can have a natural conversation:&lt;/p&gt;

&lt;h3&gt;
  
  
  🎨 2. Premium Visual Design
&lt;/h3&gt;

&lt;p&gt;The glassmorphism effects, gradient animations, and smooth transitions create a &lt;strong&gt;premium feel&lt;/strong&gt; that stands out from typical portfolios:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Floating particles in the hero section&lt;/li&gt;
&lt;li&gt;Typing animation that grabs attention&lt;/li&gt;
&lt;li&gt;Hover effects on project cards&lt;/li&gt;
&lt;li&gt;Animated statistics counters&lt;/li&gt;
&lt;li&gt;Timeline with connecting lines&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🚀 3. Technical Implementation Quality
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Performance Optimizations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Next.js standalone build reduces Docker image size&lt;/li&gt;
&lt;li&gt;Lazy loading for images&lt;/li&gt;
&lt;li&gt;Optimized animations (60fps)&lt;/li&gt;
&lt;li&gt;Fast initial load (&amp;lt;2s)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Code Quality:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TypeScript for type safety&lt;/li&gt;
&lt;li&gt;Component modularity&lt;/li&gt;
&lt;li&gt;Clean separation of concerns&lt;/li&gt;
&lt;li&gt;Comprehensive error handling&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  💡 4. Innovation in Storytelling
&lt;/h3&gt;

&lt;p&gt;Rather than a static resume, this portfolio tells a story:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"From tennis player to algorithm chief"&lt;/li&gt;
&lt;li&gt;"From reading competitions to writing code"&lt;/li&gt;
&lt;li&gt;"From AMOA intern to AI innovator"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Activities &amp;amp; Interests section humanizes the technical content, showing that I'm not just a developer, but a well-rounded individual with diverse passions.&lt;/p&gt;

&lt;h3&gt;
  
  
  🎯 5. Production-Ready Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Health Check Endpoint:&lt;/strong&gt; &lt;code&gt;/api/health&lt;/code&gt; for Cloud Run monitoring&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Environment Variable Management:&lt;/strong&gt; Secure API key handling&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Responsive Design:&lt;/strong&gt; Works seamlessly on mobile, tablet, desktop&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessible UI:&lt;/strong&gt; Semantic HTML, ARIA labels&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SEO Optimized:&lt;/strong&gt; Metadata, Open Graph tags&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Key Features at a Glance
&lt;/h2&gt;

&lt;p&gt;✨ &lt;strong&gt;10 Comprehensive Sections:&lt;/strong&gt; Hero, About, Experience, Education, Projects, Skills, Certifications, Activities, Contact, Footer&lt;/p&gt;

&lt;p&gt;🤖 &lt;strong&gt;AI Career Assistant:&lt;/strong&gt; Powered by Gemini 2.0 Flash with full context awareness&lt;/p&gt;

&lt;p&gt;🎨 &lt;strong&gt;Modern Design:&lt;/strong&gt; Glassmorphism, gradient effects, smooth animations&lt;/p&gt;

&lt;p&gt;📱 &lt;strong&gt;Fully Responsive:&lt;/strong&gt; Mobile-first approach with breakpoints at 640px, 768px, 1024px&lt;/p&gt;

&lt;p&gt;🚀 &lt;strong&gt;Deployed on Cloud Run:&lt;/strong&gt; Containerized with Docker, auto-scaling ready&lt;/p&gt;

&lt;p&gt;💬 &lt;strong&gt;Interactive Elements:&lt;/strong&gt; Chatbot, contact form, smooth scroll navigation&lt;/p&gt;

&lt;p&gt;📊 &lt;strong&gt;Dynamic Content:&lt;/strong&gt; Animated statistics, typing effects, hover transitions&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges Overcome
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Context Window Management&lt;/strong&gt;&lt;br&gt;
Fitting my entire professional profile into Gemini's context required careful summarization while maintaining enough detail for accurate responses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Real-Time Streaming&lt;/strong&gt;&lt;br&gt;
Implementing streaming responses for a smooth chat experience required proper state management and error handling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Docker Optimization&lt;/strong&gt;&lt;br&gt;
Getting the Docker image size down while maintaining all functionality took multiple iterations of the multi-stage build process.&lt;/p&gt;

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

&lt;p&gt;🧠 &lt;strong&gt;Gemini API is incredibly versatile&lt;/strong&gt; - The context-aware responses feel genuinely intelligent&lt;/p&gt;

&lt;p&gt;🎨 &lt;strong&gt;Glassmorphism requires careful balance&lt;/strong&gt; - Too much blur overwhelms, too little looks flat&lt;/p&gt;

&lt;p&gt;⚡ &lt;strong&gt;Cloud Run is powerful&lt;/strong&gt; - Auto-scaling and pay-per-use make it perfect for portfolios&lt;/p&gt;

&lt;p&gt;🛠️ &lt;strong&gt;TypeScript catches bugs early&lt;/strong&gt; - Type safety saved hours of debugging&lt;/p&gt;

&lt;h2&gt;
  
  
  Future Enhancements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt; Add analytics to track visitor engagement&lt;/li&gt;
&lt;li&gt; Implement email functionality for the contact form&lt;/li&gt;
&lt;li&gt; Create a blog section for technical articles&lt;/li&gt;
&lt;li&gt; Add testimonials from internship supervisors&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try It Yourself!
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Ask the AI Assistant:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"What are Asmae's strongest skills?"&lt;/li&gt;
&lt;li&gt;"Generate a CV summary for a Front-End Developer role"&lt;/li&gt;
&lt;li&gt;"Tell me about the AsMind project"&lt;/li&gt;
&lt;li&gt;"Which certifications does she have in AI?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Explore the Sections:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check out the animated timeline of my internships&lt;/li&gt;
&lt;li&gt;Hover over project cards to see interactive effects&lt;/li&gt;
&lt;li&gt;View my GitHub contribution graph&lt;/li&gt;
&lt;li&gt;Download my CV&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Acknowledgments
&lt;/h2&gt;

&lt;p&gt;Special thanks to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Google AI&lt;/strong&gt; for the amazing Gemini API&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DEV.to&lt;/strong&gt; for hosting this inspiring challenge&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;INPT&lt;/strong&gt; for fostering innovation in engineering education&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;My mentors&lt;/strong&gt; at Kyntus, VNB-IT, AXA, and Brainwave Matrix&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;💬 &lt;strong&gt;Have questions? The AI assistant is ready to chat!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;Connect with me:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/AsamaeS" rel="noopener noreferrer"&gt;@AsamaeS&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  GoogleAI #GeminiAPI #NextJS #Portfolio #CloudRun #AIAssistant #Innovation #AMOA #DevOps #DataScience
&lt;/h1&gt;

</description>
      <category>googleaichallenge</category>
    </item>
    <item>
      <title>AI-Powered Career Portfolio with Gemini Intelligence</title>
      <dc:creator>Asmae </dc:creator>
      <pubDate>Sun, 01 Feb 2026 22:12:12 +0000</pubDate>
      <link>https://forem.com/asamaes/ai-powered-career-portfolio-with-gemini-intelligence-1ofc</link>
      <guid>https://forem.com/asamaes/ai-powered-career-portfolio-with-gemini-intelligence-1ofc</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/new-year-new-you-google-ai-2025-12-31"&gt;New Year, New You Portfolio Challenge Presented by Google AI&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Hi! I'm *&lt;em&gt;Asmae *&lt;/em&gt;, an Innovation &amp;amp; AMOA Engineering student , specializing in helping organizations transform through emerging technologies. &lt;/p&gt;

&lt;p&gt;My tagline says it all: &lt;strong&gt;"Code, compete, deploy — then coffee ☕"&lt;/strong&gt; — I'm passionate about building innovative solutions at the intersection of DevOps, Data Science, and AI.&lt;/p&gt;

&lt;p&gt;With this portfolio, I wanted to showcase not just my technical skills, but also demonstrate how AI can make career exploration more interactive and personal. Instead of static text, visitors can actually &lt;em&gt;talk&lt;/em&gt; to an AI that knows my background and can provide tailored insights.&lt;/p&gt;

&lt;h2&gt;
  
  
  Portfolio
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;💻 Source Code:&lt;/strong&gt; &lt;a href="https://github.com/AsamaeS/asmae-portfolio" rel="noopener noreferrer"&gt;https://github.com/AsamaeS/asmae-portfolio&lt;/a&gt;&lt;/p&gt;

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

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

&lt;p&gt;&lt;strong&gt;Frontend Framework:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js 14+&lt;/strong&gt; with App Router and TypeScript&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tailwind CSS&lt;/strong&gt; for responsive, utility-first styling&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Framer Motion&lt;/strong&gt; for smooth animations and transitions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;AI Integration:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Google Gemini API&lt;/strong&gt; (&lt;code&gt;gemini-2.0-flash-exp&lt;/code&gt; model)&lt;/li&gt;
&lt;li&gt;Custom AI context with my full professional profile&lt;/li&gt;
&lt;li&gt;Streaming responses for real-time interaction&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Google Cloud Run&lt;/strong&gt; with Docker containerization&lt;/li&gt;
&lt;li&gt;Standalone Next.js build for optimal performance&lt;/li&gt;
&lt;li&gt;Multi-stage Docker build for minimal image size&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;UI/UX Libraries:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Lucide React&lt;/strong&gt; &amp;amp; &lt;strong&gt;React Icons&lt;/strong&gt; for consistent iconography&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React Type Animation&lt;/strong&gt; for typing effects&lt;/li&gt;
&lt;li&gt;Custom glassmorphism components&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🎨 Design Decisions
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Glassmorphism Aesthetic&lt;/strong&gt;&lt;br&gt;
I chose a modern glassmorphism design with backdrop blur effects, creating depth and visual hierarchy. The violet-to-cyan gradient palette represents the fusion of creativity (purple) and technology (cyan).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Dark Mode First&lt;/strong&gt;&lt;br&gt;
With a dark slate background (#0f172a), the portfolio is easy on the eyes during long browsing sessions while making accent colors pop.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Story-Driven Sections&lt;/strong&gt;&lt;br&gt;
Instead of dumping information, I organized content into a narrative flow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hero → About → Experience → Education → Projects → Skills → Certifications → Activities → Contact&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Mobile-First Responsive&lt;/strong&gt;&lt;br&gt;
Every component was designed mobile-first, ensuring a seamless experience across devices.&lt;/p&gt;
&lt;h3&gt;
  
  
  🤖 Google AI Tools Used
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Primary Tool: Google AI Studio &amp;amp; Gemini API&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I built an &lt;strong&gt;AI Career Assistant&lt;/strong&gt; that serves as an intelligent proxy for recruiters and visitors. Here's what makes it special:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Contextual Intelligence&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ASMAE_CONTEXT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`
Tu es un assistant AI représentant Asmae SERJI...
[Full professional profile, experiences, projects, skills]
`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The AI has complete knowledge of my:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;4 internships (Kyntus Morocco, VNB-IT, AXA, Brainwave Matrix)&lt;/li&gt;
&lt;li&gt;6 featured projects (AsMind, Energy Recovery System, etc.)&lt;/li&gt;
&lt;li&gt;7 certifications (BCG, DataCamp, Google, IBM)&lt;/li&gt;
&lt;li&gt;Technical skills across ML, DevOps, and AMOA&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Dynamic CV Generation&lt;/strong&gt;&lt;br&gt;
Ask it: &lt;em&gt;"Generate a CV summary for a Data Engineer role"&lt;/em&gt;&lt;br&gt;
→ It tailors my experience to highlight relevant skills like Python, MySQL, ML models&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Project Recommendations&lt;/strong&gt;&lt;br&gt;
Ask it: &lt;em&gt;"Which projects demonstrate AMOA capabilities?"&lt;/em&gt;&lt;br&gt;
→ It intelligently recommends my AXA internship and ERP UI project&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Conversational Career Exploration&lt;/strong&gt;&lt;br&gt;
Instead of reading static text, recruiters can ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"What's her strongest technical skill?"&lt;/li&gt;
&lt;li&gt;"Has she worked with React?"&lt;/li&gt;
&lt;li&gt;"Tell me about her machine learning experience"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Implementation:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// API Route: app/api/chat/route.ts&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;chat&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;startChat&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;history&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;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;parts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ASMAE_CONTEXT&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;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;model&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;parts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Ready to represent Asmae.&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="nx"&gt;conversationHistory&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&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;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sendMessage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🔧 Development Process
&lt;/h3&gt;

&lt;p&gt;*&lt;em&gt;Phase 1: Planning *&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Defined 10 core sections&lt;/li&gt;
&lt;li&gt;Sketched component hierarchy&lt;/li&gt;
&lt;li&gt;Chose color palette and typography&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;*&lt;em&gt;Phase 2: Component Development *&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Built 12 reusable components&lt;/li&gt;
&lt;li&gt;Implemented responsive layouts&lt;/li&gt;
&lt;li&gt;Added animations and hover effects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;*&lt;em&gt;Phase 3: AI Integration *&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configured Gemini API&lt;/li&gt;
&lt;li&gt;Created chat endpoint&lt;/li&gt;
&lt;li&gt;Built interactive ChatBot component&lt;/li&gt;
&lt;li&gt;Tested example prompts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;**Phase 4: Deployment Setup *&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Created optimized Dockerfile&lt;/li&gt;
&lt;li&gt;Configured Cloud Run settings&lt;/li&gt;
&lt;li&gt;Set up environment variables&lt;/li&gt;
&lt;li&gt;Deployed with &lt;code&gt;dev-tutorial=devnewyear2026&lt;/code&gt; label&lt;/li&gt;
&lt;/ul&gt;

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

&lt;h3&gt;
  
  
  🌟 1. The AI Career Assistant
&lt;/h3&gt;

&lt;p&gt;This is the crown jewel of the portfolio. Instead of forcing visitors to read walls of text, they can have a natural conversation:&lt;/p&gt;

&lt;h3&gt;
  
  
  🎨 2. Premium Visual Design
&lt;/h3&gt;

&lt;p&gt;The glassmorphism effects, gradient animations, and smooth transitions create a &lt;strong&gt;premium feel&lt;/strong&gt; that stands out from typical portfolios:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Floating particles in the hero section&lt;/li&gt;
&lt;li&gt;Typing animation that grabs attention&lt;/li&gt;
&lt;li&gt;Hover effects on project cards&lt;/li&gt;
&lt;li&gt;Animated statistics counters&lt;/li&gt;
&lt;li&gt;Timeline with connecting lines&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🚀 3. Technical Implementation Quality
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Performance Optimizations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Next.js standalone build reduces Docker image size&lt;/li&gt;
&lt;li&gt;Lazy loading for images&lt;/li&gt;
&lt;li&gt;Optimized animations (60fps)&lt;/li&gt;
&lt;li&gt;Fast initial load (&amp;lt;2s)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Code Quality:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TypeScript for type safety&lt;/li&gt;
&lt;li&gt;Component modularity&lt;/li&gt;
&lt;li&gt;Clean separation of concerns&lt;/li&gt;
&lt;li&gt;Comprehensive error handling&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  💡 4. Innovation in Storytelling
&lt;/h3&gt;

&lt;p&gt;Rather than a static resume, this portfolio tells a story:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"From tennis player to algorithm chief"&lt;/li&gt;
&lt;li&gt;"From reading competitions to writing code"&lt;/li&gt;
&lt;li&gt;"From AMOA intern to AI innovator"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Activities &amp;amp; Interests section humanizes the technical content, showing that I'm not just a developer, but a well-rounded individual with diverse passions.&lt;/p&gt;

&lt;h3&gt;
  
  
  🎯 5. Production-Ready Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Health Check Endpoint:&lt;/strong&gt; &lt;code&gt;/api/health&lt;/code&gt; for Cloud Run monitoring&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Environment Variable Management:&lt;/strong&gt; Secure API key handling&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Responsive Design:&lt;/strong&gt; Works seamlessly on mobile, tablet, desktop&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessible UI:&lt;/strong&gt; Semantic HTML, ARIA labels&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SEO Optimized:&lt;/strong&gt; Metadata, Open Graph tags&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Key Features at a Glance
&lt;/h2&gt;

&lt;p&gt;✨ &lt;strong&gt;10 Comprehensive Sections:&lt;/strong&gt; Hero, About, Experience, Education, Projects, Skills, Certifications, Activities, Contact, Footer&lt;/p&gt;

&lt;p&gt;🤖 &lt;strong&gt;AI Career Assistant:&lt;/strong&gt; Powered by Gemini 2.0 Flash with full context awareness&lt;/p&gt;

&lt;p&gt;🎨 &lt;strong&gt;Modern Design:&lt;/strong&gt; Glassmorphism, gradient effects, smooth animations&lt;/p&gt;

&lt;p&gt;📱 &lt;strong&gt;Fully Responsive:&lt;/strong&gt; Mobile-first approach with breakpoints at 640px, 768px, 1024px&lt;/p&gt;

&lt;p&gt;🚀 &lt;strong&gt;Deployed on Cloud Run:&lt;/strong&gt; Containerized with Docker, auto-scaling ready&lt;/p&gt;

&lt;p&gt;💬 &lt;strong&gt;Interactive Elements:&lt;/strong&gt; Chatbot, contact form, smooth scroll navigation&lt;/p&gt;

&lt;p&gt;📊 &lt;strong&gt;Dynamic Content:&lt;/strong&gt; Animated statistics, typing effects, hover transitions&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges Overcome
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Context Window Management&lt;/strong&gt;&lt;br&gt;
Fitting my entire professional profile into Gemini's context required careful summarization while maintaining enough detail for accurate responses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Real-Time Streaming&lt;/strong&gt;&lt;br&gt;
Implementing streaming responses for a smooth chat experience required proper state management and error handling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Docker Optimization&lt;/strong&gt;&lt;br&gt;
Getting the Docker image size down while maintaining all functionality took multiple iterations of the multi-stage build process.&lt;/p&gt;

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

&lt;p&gt;🧠 &lt;strong&gt;Gemini API is incredibly versatile&lt;/strong&gt; - The context-aware responses feel genuinely intelligent&lt;/p&gt;

&lt;p&gt;🎨 &lt;strong&gt;Glassmorphism requires careful balance&lt;/strong&gt; - Too much blur overwhelms, too little looks flat&lt;/p&gt;

&lt;p&gt;⚡ &lt;strong&gt;Cloud Run is powerful&lt;/strong&gt; - Auto-scaling and pay-per-use make it perfect for portfolios&lt;/p&gt;

&lt;p&gt;🛠️ &lt;strong&gt;TypeScript catches bugs early&lt;/strong&gt; - Type safety saved hours of debugging&lt;/p&gt;

&lt;h2&gt;
  
  
  Future Enhancements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt; Add analytics to track visitor engagement&lt;/li&gt;
&lt;li&gt; Implement email functionality for the contact form&lt;/li&gt;
&lt;li&gt; Create a blog section for technical articles&lt;/li&gt;
&lt;li&gt; Add testimonials from internship supervisors&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try It Yourself!
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Ask the AI Assistant:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"What are Asmae's strongest skills?"&lt;/li&gt;
&lt;li&gt;"Generate a CV summary for a Front-End Developer role"&lt;/li&gt;
&lt;li&gt;"Tell me about the AsMind project"&lt;/li&gt;
&lt;li&gt;"Which certifications does she have in AI?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Explore the Sections:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check out the animated timeline of my internships&lt;/li&gt;
&lt;li&gt;Hover over project cards to see interactive effects&lt;/li&gt;
&lt;li&gt;View my GitHub contribution graph&lt;/li&gt;
&lt;li&gt;Download my CV&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Acknowledgments
&lt;/h2&gt;

&lt;p&gt;Special thanks to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Google AI&lt;/strong&gt; for the amazing Gemini API&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DEV.to&lt;/strong&gt; for hosting this inspiring challenge&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;INPT&lt;/strong&gt; for fostering innovation in engineering education&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;My mentors&lt;/strong&gt; at Kyntus, VNB-IT, AXA, and Brainwave Matrix&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;💬 &lt;strong&gt;Have questions? The AI assistant is ready to chat!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;Connect with me:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/AsamaeS" rel="noopener noreferrer"&gt;@AsamaeS&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  GoogleAI #GeminiAPI #NextJS #Portfolio #CloudRun #AIAssistant #Innovation #AMOA #DevOps #DataScience
&lt;/h1&gt;

</description>
      <category>googleai</category>
      <category>portfolio</category>
      <category>gemini</category>
      <category>cloudrun</category>
    </item>
    <item>
      <title>AI-Powered Career Portfolio with Gemini Intelligence</title>
      <dc:creator>Asmae </dc:creator>
      <pubDate>Sun, 01 Feb 2026 22:07:00 +0000</pubDate>
      <link>https://forem.com/asamaes/ai-powered-career-portfolio-with-gemini-intelligence-4kbi</link>
      <guid>https://forem.com/asamaes/ai-powered-career-portfolio-with-gemini-intelligence-4kbi</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/new-year-new-you-google-ai-2025-12-31"&gt;New Year, New You Portfolio Challenge Presented by Google AI&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Hi! I'm *&lt;em&gt;Asmae *&lt;/em&gt;, an Innovation &amp;amp; AMOA Engineering student , specializing in helping organizations transform through emerging technologies. &lt;/p&gt;

&lt;p&gt;My tagline says it all: &lt;strong&gt;"Code, compete, deploy — then coffee ☕"&lt;/strong&gt; — I'm passionate about building innovative solutions at the intersection of DevOps, Data Science, and AI.&lt;/p&gt;

&lt;p&gt;With this portfolio, I wanted to showcase not just my technical skills, but also demonstrate how AI can make career exploration more interactive and personal. Instead of static text, visitors can actually &lt;em&gt;talk&lt;/em&gt; to an AI that knows my background and can provide tailored insights.&lt;/p&gt;

&lt;h2&gt;
  
  
  Portfolio
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;💻 Source Code:&lt;/strong&gt; &lt;a href="https://github.com/AsamaeS/asmae-portfolio" rel="noopener noreferrer"&gt;https://github.com/AsamaeS/asmae-portfolio&lt;/a&gt;&lt;/p&gt;

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

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

&lt;p&gt;&lt;strong&gt;Frontend Framework:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js 14+&lt;/strong&gt; with App Router and TypeScript&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tailwind CSS&lt;/strong&gt; for responsive, utility-first styling&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Framer Motion&lt;/strong&gt; for smooth animations and transitions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;AI Integration:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Google Gemini API&lt;/strong&gt; (&lt;code&gt;gemini-2.0-flash-exp&lt;/code&gt; model)&lt;/li&gt;
&lt;li&gt;Custom AI context with my full professional profile&lt;/li&gt;
&lt;li&gt;Streaming responses for real-time interaction&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Google Cloud Run&lt;/strong&gt; with Docker containerization&lt;/li&gt;
&lt;li&gt;Standalone Next.js build for optimal performance&lt;/li&gt;
&lt;li&gt;Multi-stage Docker build for minimal image size&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;UI/UX Libraries:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Lucide React&lt;/strong&gt; &amp;amp; &lt;strong&gt;React Icons&lt;/strong&gt; for consistent iconography&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React Type Animation&lt;/strong&gt; for typing effects&lt;/li&gt;
&lt;li&gt;Custom glassmorphism components&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🎨 Design Decisions
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Glassmorphism Aesthetic&lt;/strong&gt;&lt;br&gt;
I chose a modern glassmorphism design with backdrop blur effects, creating depth and visual hierarchy. The violet-to-cyan gradient palette represents the fusion of creativity (purple) and technology (cyan).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Dark Mode First&lt;/strong&gt;&lt;br&gt;
With a dark slate background (#0f172a), the portfolio is easy on the eyes during long browsing sessions while making accent colors pop.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Story-Driven Sections&lt;/strong&gt;&lt;br&gt;
Instead of dumping information, I organized content into a narrative flow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hero → About → Experience → Education → Projects → Skills → Certifications → Activities → Contact&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Mobile-First Responsive&lt;/strong&gt;&lt;br&gt;
Every component was designed mobile-first, ensuring a seamless experience across devices.&lt;/p&gt;
&lt;h3&gt;
  
  
  🤖 Google AI Tools Used
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Primary Tool: Google AI Studio &amp;amp; Gemini API&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I built an &lt;strong&gt;AI Career Assistant&lt;/strong&gt; that serves as an intelligent proxy for recruiters and visitors. Here's what makes it special:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Contextual Intelligence&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ASMAE_CONTEXT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`
Tu es un assistant AI représentant Asmae SERJI...
[Full professional profile, experiences, projects, skills]
`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The AI has complete knowledge of my:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;4 internships (Kyntus Morocco, VNB-IT, AXA, Brainwave Matrix)&lt;/li&gt;
&lt;li&gt;6 featured projects (AsMind, Energy Recovery System, etc.)&lt;/li&gt;
&lt;li&gt;7 certifications (BCG, DataCamp, Google, IBM)&lt;/li&gt;
&lt;li&gt;Technical skills across ML, DevOps, and AMOA&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Dynamic CV Generation&lt;/strong&gt;&lt;br&gt;
Ask it: &lt;em&gt;"Generate a CV summary for a Data Engineer role"&lt;/em&gt;&lt;br&gt;
→ It tailors my experience to highlight relevant skills like Python, MySQL, ML models&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Project Recommendations&lt;/strong&gt;&lt;br&gt;
Ask it: &lt;em&gt;"Which projects demonstrate AMOA capabilities?"&lt;/em&gt;&lt;br&gt;
→ It intelligently recommends my AXA internship and ERP UI project&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Conversational Career Exploration&lt;/strong&gt;&lt;br&gt;
Instead of reading static text, recruiters can ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"What's her strongest technical skill?"&lt;/li&gt;
&lt;li&gt;"Has she worked with React?"&lt;/li&gt;
&lt;li&gt;"Tell me about her machine learning experience"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Implementation:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// API Route: app/api/chat/route.ts&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;chat&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;startChat&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;history&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;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;parts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ASMAE_CONTEXT&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;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;model&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;parts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Ready to represent Asmae.&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="nx"&gt;conversationHistory&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&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;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sendMessage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🔧 Development Process
&lt;/h3&gt;

&lt;p&gt;*&lt;em&gt;Phase 1: Planning *&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Defined 10 core sections&lt;/li&gt;
&lt;li&gt;Sketched component hierarchy&lt;/li&gt;
&lt;li&gt;Chose color palette and typography&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;*&lt;em&gt;Phase 2: Component Development *&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Built 12 reusable components&lt;/li&gt;
&lt;li&gt;Implemented responsive layouts&lt;/li&gt;
&lt;li&gt;Added animations and hover effects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;*&lt;em&gt;Phase 3: AI Integration *&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configured Gemini API&lt;/li&gt;
&lt;li&gt;Created chat endpoint&lt;/li&gt;
&lt;li&gt;Built interactive ChatBot component&lt;/li&gt;
&lt;li&gt;Tested example prompts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;**Phase 4: Deployment Setup *&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Created optimized Dockerfile&lt;/li&gt;
&lt;li&gt;Configured Cloud Run settings&lt;/li&gt;
&lt;li&gt;Set up environment variables&lt;/li&gt;
&lt;li&gt;Deployed with &lt;code&gt;dev-tutorial=devnewyear2026&lt;/code&gt; label&lt;/li&gt;
&lt;/ul&gt;

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

&lt;h3&gt;
  
  
  🌟 1. The AI Career Assistant
&lt;/h3&gt;

&lt;p&gt;This is the crown jewel of the portfolio. Instead of forcing visitors to read walls of text, they can have a natural conversation:&lt;/p&gt;

&lt;h3&gt;
  
  
  🎨 2. Premium Visual Design
&lt;/h3&gt;

&lt;p&gt;The glassmorphism effects, gradient animations, and smooth transitions create a &lt;strong&gt;premium feel&lt;/strong&gt; that stands out from typical portfolios:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Floating particles in the hero section&lt;/li&gt;
&lt;li&gt;Typing animation that grabs attention&lt;/li&gt;
&lt;li&gt;Hover effects on project cards&lt;/li&gt;
&lt;li&gt;Animated statistics counters&lt;/li&gt;
&lt;li&gt;Timeline with connecting lines&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🚀 3. Technical Implementation Quality
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Performance Optimizations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Next.js standalone build reduces Docker image size&lt;/li&gt;
&lt;li&gt;Lazy loading for images&lt;/li&gt;
&lt;li&gt;Optimized animations (60fps)&lt;/li&gt;
&lt;li&gt;Fast initial load (&amp;lt;2s)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Code Quality:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TypeScript for type safety&lt;/li&gt;
&lt;li&gt;Component modularity&lt;/li&gt;
&lt;li&gt;Clean separation of concerns&lt;/li&gt;
&lt;li&gt;Comprehensive error handling&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  💡 4. Innovation in Storytelling
&lt;/h3&gt;

&lt;p&gt;Rather than a static resume, this portfolio tells a story:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"From tennis player to algorithm chief"&lt;/li&gt;
&lt;li&gt;"From reading competitions to writing code"&lt;/li&gt;
&lt;li&gt;"From AMOA intern to AI innovator"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Activities &amp;amp; Interests section humanizes the technical content, showing that I'm not just a developer, but a well-rounded individual with diverse passions.&lt;/p&gt;

&lt;h3&gt;
  
  
  🎯 5. Production-Ready Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Health Check Endpoint:&lt;/strong&gt; &lt;code&gt;/api/health&lt;/code&gt; for Cloud Run monitoring&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Environment Variable Management:&lt;/strong&gt; Secure API key handling&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Responsive Design:&lt;/strong&gt; Works seamlessly on mobile, tablet, desktop&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessible UI:&lt;/strong&gt; Semantic HTML, ARIA labels&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SEO Optimized:&lt;/strong&gt; Metadata, Open Graph tags&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Key Features at a Glance
&lt;/h2&gt;

&lt;p&gt;✨ &lt;strong&gt;10 Comprehensive Sections:&lt;/strong&gt; Hero, About, Experience, Education, Projects, Skills, Certifications, Activities, Contact, Footer&lt;/p&gt;

&lt;p&gt;🤖 &lt;strong&gt;AI Career Assistant:&lt;/strong&gt; Powered by Gemini 2.0 Flash with full context awareness&lt;/p&gt;

&lt;p&gt;🎨 &lt;strong&gt;Modern Design:&lt;/strong&gt; Glassmorphism, gradient effects, smooth animations&lt;/p&gt;

&lt;p&gt;📱 &lt;strong&gt;Fully Responsive:&lt;/strong&gt; Mobile-first approach with breakpoints at 640px, 768px, 1024px&lt;/p&gt;

&lt;p&gt;🚀 &lt;strong&gt;Deployed on Cloud Run:&lt;/strong&gt; Containerized with Docker, auto-scaling ready&lt;/p&gt;

&lt;p&gt;💬 &lt;strong&gt;Interactive Elements:&lt;/strong&gt; Chatbot, contact form, smooth scroll navigation&lt;/p&gt;

&lt;p&gt;📊 &lt;strong&gt;Dynamic Content:&lt;/strong&gt; Animated statistics, typing effects, hover transitions&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges Overcome
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Context Window Management&lt;/strong&gt;&lt;br&gt;
Fitting my entire professional profile into Gemini's context required careful summarization while maintaining enough detail for accurate responses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Real-Time Streaming&lt;/strong&gt;&lt;br&gt;
Implementing streaming responses for a smooth chat experience required proper state management and error handling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Docker Optimization&lt;/strong&gt;&lt;br&gt;
Getting the Docker image size down while maintaining all functionality took multiple iterations of the multi-stage build process.&lt;/p&gt;

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

&lt;p&gt;🧠 &lt;strong&gt;Gemini API is incredibly versatile&lt;/strong&gt; - The context-aware responses feel genuinely intelligent&lt;/p&gt;

&lt;p&gt;🎨 &lt;strong&gt;Glassmorphism requires careful balance&lt;/strong&gt; - Too much blur overwhelms, too little looks flat&lt;/p&gt;

&lt;p&gt;⚡ &lt;strong&gt;Cloud Run is powerful&lt;/strong&gt; - Auto-scaling and pay-per-use make it perfect for portfolios&lt;/p&gt;

&lt;p&gt;🛠️ &lt;strong&gt;TypeScript catches bugs early&lt;/strong&gt; - Type safety saved hours of debugging&lt;/p&gt;

&lt;h2&gt;
  
  
  Future Enhancements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt; Add analytics to track visitor engagement&lt;/li&gt;
&lt;li&gt; Implement email functionality for the contact form&lt;/li&gt;
&lt;li&gt; Create a blog section for technical articles&lt;/li&gt;
&lt;li&gt; Add testimonials from internship supervisors&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try It Yourself!
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Ask the AI Assistant:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"What are Asmae's strongest skills?"&lt;/li&gt;
&lt;li&gt;"Generate a CV summary for a Front-End Developer role"&lt;/li&gt;
&lt;li&gt;"Tell me about the AsMind project"&lt;/li&gt;
&lt;li&gt;"Which certifications does she have in AI?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Explore the Sections:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check out the animated timeline of my internships&lt;/li&gt;
&lt;li&gt;Hover over project cards to see interactive effects&lt;/li&gt;
&lt;li&gt;View my GitHub contribution graph&lt;/li&gt;
&lt;li&gt;Download my CV&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Acknowledgments
&lt;/h2&gt;

&lt;p&gt;Special thanks to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Google AI&lt;/strong&gt; for the amazing Gemini API&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DEV.to&lt;/strong&gt; for hosting this inspiring challenge&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;INPT&lt;/strong&gt; for fostering innovation in engineering education&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;My mentors&lt;/strong&gt; at Kyntus, VNB-IT, AXA, and Brainwave Matrix&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;💬 &lt;strong&gt;Have questions? The AI assistant is ready to chat!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;Connect with me:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/AsamaeS" rel="noopener noreferrer"&gt;@AsamaeS&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  GoogleAI #GeminiAPI #NextJS #Portfolio #CloudRun #AIAssistant #Innovation #AMOA #DevOps #DataScience
&lt;/h1&gt;

</description>
      <category>googleai</category>
      <category>portfolio</category>
      <category>gemini</category>
      <category>cloudrun</category>
    </item>
    <item>
      <title>💼 Freelance Rate Negotiation Coach - AI-Powered Salary Intelligence</title>
      <dc:creator>Asmae </dc:creator>
      <pubDate>Fri, 30 Jan 2026 23:06:31 +0000</pubDate>
      <link>https://forem.com/asamaes/freelance-rate-negotiation-coach-ai-powered-salary-intelligence-23e6</link>
      <guid>https://forem.com/asamaes/freelance-rate-negotiation-coach-ai-powered-salary-intelligence-23e6</guid>
      <description>&lt;h1&gt;
  
  
  Submission for the Algolia Agent Studio Challenge
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/algolia"&gt;Algolia Agent Studio Challenge&lt;/a&gt;: Consumer-Facing Conversational Experiences&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built the &lt;strong&gt;Freelance Rate Negotiation Coach&lt;/strong&gt;, an AI-powered conversational agent that helps freelancers negotiate fair rates using real market intelligence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Problem:&lt;/strong&gt; Freelancers struggle to know their market value. They either undercharge (leaving money on the table) or overcharge (losing clients). Market data is scattered across platforms, outdated, or simply doesn't exist for their specific profile.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Solution:&lt;/strong&gt; A conversational AI agent that provides instant, data-backed rate recommendations based on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;94+ real freelance benchmarks&lt;/strong&gt; from the French tech market&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Tech stack, seniority, and location&lt;/strong&gt; matching&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Market trends&lt;/strong&gt; (+15% for React, +20% for DevOps, etc.)&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Tactical negotiation arguments&lt;/strong&gt; grounded in real data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Unlike generic salary calculators, this agent &lt;em&gt;converses&lt;/em&gt; with users to understand their exact situation, then delivers personalized insights they can use in actual negotiations.&lt;/p&gt;

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

&lt;p&gt;🔗 &lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://freelance-rate-coach-d435fez0z-asmaes-projects-79bc55e6.vercel.app/" rel="noopener noreferrer"&gt;https://freelance-rate-coach-d435fez0z-asmaes-projects-79bc55e6.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📹 &lt;strong&gt;Video Demo:&lt;/strong&gt; &lt;a href="https://drive.google.com/drive/folders/1Rp76zF26wSCnQZm4-xKaVktqfudEfIkq?usp=drive_link" rel="noopener noreferrer"&gt;https://drive.google.com/drive/folders/1Rp76zF26wSCnQZm4-xKaVktqfudEfIkq?usp=drive_link&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features in Action:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Example Query 1:&lt;/strong&gt; "What are React Senior rates in Paris?"&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agent Response:
Based on 320 freelancers: TJM €550-680, average €615
Market trend: ↑ 15% (growing demand)
Remote work options can justify +10-15% premium
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Example Query 2:&lt;/strong&gt; "I need help negotiating my rate"&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agent asks clarifying questions:
→ What's your tech stack?
→ Your seniority level?
→ Location preference?

Then provides:
- Exact market benchmarks for your profile
- 2-3 data-driven negotiation arguments
- Red flags if proposed rate is &amp;gt;15% below market
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Screenshots
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2dx7ft78n7h3fzgutq3u.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%2F2dx7ft78n7h3fzgutq3u.png" alt=" " width="699" height="763"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F55bilftw4vxcin9ddyc5.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%2F55bilftw4vxcin9ddyc5.png" alt=" " width="746" height="879"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Used Algolia Agent Studio
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Data Indexing Strategy
&lt;/h3&gt;

&lt;p&gt;I created a specialized &lt;code&gt;freelance_rates&lt;/code&gt; index containing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;94 benchmark records&lt;/strong&gt; covering 20+ tech stacks (React, Python, DevOps, Java, Go, etc.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structured attributes&lt;/strong&gt;: &lt;code&gt;tech_stack&lt;/code&gt;, &lt;code&gt;seniority&lt;/code&gt;, &lt;code&gt;location&lt;/code&gt;, &lt;code&gt;rate_min&lt;/code&gt;, &lt;code&gt;rate_max&lt;/code&gt;, &lt;code&gt;rate_average&lt;/code&gt;, &lt;code&gt;market_trend&lt;/code&gt;, &lt;code&gt;trend_percentage&lt;/code&gt;, &lt;code&gt;sample_size&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Faceted data&lt;/strong&gt; enabling multi-dimensional filtering (mission type, remote work, company size)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each record represents real market data:&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;"tech_stack"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"React"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"seniority"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Senior"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"location"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Paris"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"rate_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;550&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"rate_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;680&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"rate_average"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;615&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"market_trend"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"up"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"trend_percentage"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"sample_size"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;145&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;h3&gt;
  
  
  Retrieval-Augmented Dialogue
&lt;/h3&gt;

&lt;p&gt;The agent uses &lt;strong&gt;Algolia's faceted search&lt;/strong&gt; to match user queries against the indexed data:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;User provides context&lt;/strong&gt; → "React Senior, 6 years experience, Paris"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent translates to Algolia query&lt;/strong&gt; → &lt;code&gt;tech_stack:"React" AND seniority:"Senior" AND location:"Paris"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Instant retrieval&lt;/strong&gt; → Relevant benchmarks in &amp;lt;50ms&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contextualized response&lt;/strong&gt; → "Based on 145 freelancers: €550-680/day, trend +15%"&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This ensures &lt;strong&gt;every recommendation is grounded in real data&lt;/strong&gt;, not hallucinated by the LLM.&lt;/p&gt;

&lt;h3&gt;
  
  
  Targeted Prompting Approach
&lt;/h3&gt;

&lt;p&gt;I engineered the agent's system prompt to prioritize &lt;strong&gt;factual retrieval over conversational fluff&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CRITICAL SEARCH RULES:
1. Search Algolia index FIRST before answering
2. NEVER invent rates - only use indexed data
3. Always cite: sample_size, rate range, market trend
4. If no exact match, find closest and explain adjustments
5. Warn users if proposed rate is &amp;gt;15% below market

CONVERSATION FLOW:
- User provides initial info → Search immediately
- Present results: "Based on [N] freelancers: €[min-max], avg €[avg]"
- Mention trend: "[X]% up/down/stable"
- Give 2-3 negotiation arguments from data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This prompt ensures the agent acts as a &lt;strong&gt;data terminal&lt;/strong&gt;, not a chatty assistant.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Gemini 2.5 Flash?
&lt;/h3&gt;

&lt;p&gt;I chose &lt;strong&gt;Gemini 2.5 Flash&lt;/strong&gt; as the LLM for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;Free tier&lt;/strong&gt; with generous limits (perfect for proof-of-concept)&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Fast response times&lt;/strong&gt; matching Algolia's speed&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Strong reasoning&lt;/strong&gt; for multi-turn conversations&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Tool use capabilities&lt;/strong&gt; for clean Algolia integration&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Fast Retrieval Matters
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Speed Equals Trust
&lt;/h3&gt;

&lt;p&gt;In high-stakes negotiations, &lt;strong&gt;latency kills confidence&lt;/strong&gt;. When a freelancer asks "What should I charge?", they need an answer &lt;em&gt;now&lt;/em&gt;, not after watching a loading spinner.&lt;/p&gt;

&lt;p&gt;Algolia's &lt;strong&gt;&amp;lt;50ms retrieval&lt;/strong&gt; transforms the experience:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🚀 &lt;strong&gt;Instant credibility&lt;/strong&gt;: Fast = authoritative&lt;/li&gt;
&lt;li&gt;💡 &lt;strong&gt;No "AI thinking" theatrics&lt;/strong&gt;: Direct data retrieval feels professional&lt;/li&gt;
&lt;li&gt;🎯 &lt;strong&gt;Real-time decision support&lt;/strong&gt;: Users can ask follow-up questions mid-negotiation&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Contextual Retrieval &amp;gt; Generic LLM Knowledge
&lt;/h3&gt;

&lt;p&gt;Without Algolia, the LLM would give generic advice:&lt;br&gt;
❌ "Senior developers in Paris typically earn €500-800/day" (vague, outdated)&lt;/p&gt;

&lt;p&gt;With Algolia Agent Studio:&lt;br&gt;
✅ "Based on 145 React Senior freelancers in Paris: €550-680/day, average €615, trend +15% (data from Q4 2024)"&lt;/p&gt;

&lt;p&gt;The difference:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Specificity&lt;/strong&gt;: Exact tech stack match&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recency&lt;/strong&gt;: Current market trends&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sample size&lt;/strong&gt;: Statistical confidence&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Actionable&lt;/strong&gt;: User knows exactly where they stand&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Real-World Impact
&lt;/h3&gt;

&lt;p&gt;Fast, data-backed insights help freelancers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📈 &lt;strong&gt;Negotiate 15-25% higher rates&lt;/strong&gt; (backed by market data)&lt;/li&gt;
&lt;li&gt;⚠️ &lt;strong&gt;Spot lowball offers&lt;/strong&gt; (agent flags rates &amp;gt;15% below market)&lt;/li&gt;
&lt;li&gt;💼 &lt;strong&gt;Justify premium pricing&lt;/strong&gt; (specialties like TypeScript add €50-100/day)&lt;/li&gt;
&lt;li&gt;🌍 &lt;strong&gt;Understand regional differences&lt;/strong&gt; (Paris €615 vs Lyon €540 for same profile)&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Algolia Agent Studio&lt;/strong&gt; - Conversational agent orchestration&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemini 2.5 Flash&lt;/strong&gt; - LLM for dialogue management&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Algolia InstantSearch&lt;/strong&gt; - Chat widget UI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React + Vite&lt;/strong&gt; - Frontend framework&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vercel&lt;/strong&gt; - Deployment platform&lt;/li&gt;
&lt;/ul&gt;

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

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

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Structured data wins&lt;/strong&gt;: Well-indexed benchmarks &amp;gt; throwing raw data at an LLM&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Faceted search is powerful&lt;/strong&gt;: Algolia's multi-dimensional filtering enables precise matching&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompt engineering matters&lt;/strong&gt;: Constraining the agent to "data terminal" mode eliminated hallucinations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Speed builds trust&lt;/strong&gt;: Sub-50ms retrieval makes the agent feel authoritative&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Challenges Overcome
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Initial Agent Studio network errors&lt;/strong&gt;: Solved by switching from OpenAI sandbox to Gemini production key&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Query parsing issues&lt;/strong&gt;: Agent initially struggled with "6 years experience" → Fixed by mapping experience years to seniority levels in prompt&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data quality&lt;/strong&gt;: Ensuring all 94 records had complete, validated market data&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Future Enhancements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;📊 &lt;strong&gt;Visual analytics&lt;/strong&gt;: Charts showing rate evolution over time&lt;/li&gt;
&lt;li&gt;🌍 &lt;strong&gt;Multi-country support&lt;/strong&gt;: Expand beyond France to EU/US markets&lt;/li&gt;
&lt;li&gt;💬 &lt;strong&gt;Negotiation scripts&lt;/strong&gt;: Generate email templates for rate discussions&lt;/li&gt;
&lt;li&gt;📈 &lt;strong&gt;Personalized tracking&lt;/strong&gt;: Save user profile for trend monitoring&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;strong&gt;Salary negotiation is one of the highest-impact conversations a freelancer has.&lt;/strong&gt; Getting it right can mean €10-20K more per year. This agent democratizes market intelligence that was previously:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Locked in expensive salary surveys&lt;/li&gt;
&lt;li&gt;Scattered across freelance platforms&lt;/li&gt;
&lt;li&gt;Outdated by months or years&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By combining Algolia's fast retrieval with AI conversation, we create a tool that &lt;strong&gt;empowers freelancers to earn what they're worth&lt;/strong&gt;.&lt;/p&gt;




&lt;p&gt;Built for the &lt;strong&gt;#AlgoliaAgentStudio Challenge&lt;/strong&gt; 🚀&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; #algolia #agentstudio #ai #freelance #webdev #chatbot #machinelearning&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/AsamaeS/Freelance-Rate-Negotiation-Coach_algolia-challenge" rel="noopener noreferrer"&gt;https://github.com/AsamaeS/Freelance-Rate-Negotiation-Coach_algolia-challenge&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://freelance-rate-coach-d435fez0z-asmaes-projects-79bc55e6.vercel.app/" rel="noopener noreferrer"&gt;https://freelance-rate-coach-d435fez0z-asmaes-projects-79bc55e6.vercel.app/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>algoliachallenge</category>
      <category>devchallenge</category>
      <category>agentstudio</category>
      <category>ai</category>
    </item>
    <item>
      <title>💼 Freelance Rate Negotiation Coach - AI-Powered Salary Intelligence</title>
      <dc:creator>Asmae </dc:creator>
      <pubDate>Tue, 27 Jan 2026 21:14:11 +0000</pubDate>
      <link>https://forem.com/asamaes/freelance-rate-negotiation-coach-ai-powered-salary-intelligence-3kn2</link>
      <guid>https://forem.com/asamaes/freelance-rate-negotiation-coach-ai-powered-salary-intelligence-3kn2</guid>
      <description>&lt;h1&gt;
  
  
  Submission for the Algolia Agent Studio Challenge
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/algolia"&gt;Algolia Agent Studio Challenge&lt;/a&gt;: Consumer-Facing Conversational Experiences&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built the &lt;strong&gt;Freelance Rate Negotiation Coach&lt;/strong&gt;, an AI-powered conversational agent that helps freelancers negotiate fair rates using real market intelligence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Problem:&lt;/strong&gt; Freelancers struggle to know their market value. They either undercharge (leaving money on the table) or overcharge (losing clients). Market data is scattered across platforms, outdated, or simply doesn't exist for their specific profile.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Solution:&lt;/strong&gt; A conversational AI agent that provides instant, data-backed rate recommendations based on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;94+ real freelance benchmarks&lt;/strong&gt; from the French tech market&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Tech stack, seniority, and location&lt;/strong&gt; matching&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Market trends&lt;/strong&gt; (+15% for React, +20% for DevOps, etc.)&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Tactical negotiation arguments&lt;/strong&gt; grounded in real data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Unlike generic salary calculators, this agent &lt;em&gt;converses&lt;/em&gt; with users to understand their exact situation, then delivers personalized insights they can use in actual negotiations.&lt;/p&gt;

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

&lt;p&gt;🔗 &lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://freelance-rate-coach-d435fez0z-asmaes-projects-79bc55e6.vercel.app/" rel="noopener noreferrer"&gt;https://freelance-rate-coach-d435fez0z-asmaes-projects-79bc55e6.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📹 &lt;strong&gt;Video Demo:&lt;/strong&gt; &lt;a href="https://drive.google.com/drive/folders/1Rp76zF26wSCnQZm4-xKaVktqfudEfIkq?usp=drive_link" rel="noopener noreferrer"&gt;https://drive.google.com/drive/folders/1Rp76zF26wSCnQZm4-xKaVktqfudEfIkq?usp=drive_link&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features in Action:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Example Query 1:&lt;/strong&gt; "What are React Senior rates in Paris?"&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agent Response:
Based on 320 freelancers: TJM €550-680, average €615
Market trend: ↑ 15% (growing demand)
Remote work options can justify +10-15% premium
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Example Query 2:&lt;/strong&gt; "I need help negotiating my rate"&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agent asks clarifying questions:
→ What's your tech stack?
→ Your seniority level?
→ Location preference?

Then provides:
- Exact market benchmarks for your profile
- 2-3 data-driven negotiation arguments
- Red flags if proposed rate is &amp;gt;15% below market
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Screenshots
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2dx7ft78n7h3fzgutq3u.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%2F2dx7ft78n7h3fzgutq3u.png" alt=" " width="699" height="763"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F55bilftw4vxcin9ddyc5.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%2F55bilftw4vxcin9ddyc5.png" alt=" " width="746" height="879"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Used Algolia Agent Studio
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Data Indexing Strategy
&lt;/h3&gt;

&lt;p&gt;I created a specialized &lt;code&gt;freelance_rates&lt;/code&gt; index containing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;94 benchmark records&lt;/strong&gt; covering 20+ tech stacks (React, Python, DevOps, Java, Go, etc.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structured attributes&lt;/strong&gt;: &lt;code&gt;tech_stack&lt;/code&gt;, &lt;code&gt;seniority&lt;/code&gt;, &lt;code&gt;location&lt;/code&gt;, &lt;code&gt;rate_min&lt;/code&gt;, &lt;code&gt;rate_max&lt;/code&gt;, &lt;code&gt;rate_average&lt;/code&gt;, &lt;code&gt;market_trend&lt;/code&gt;, &lt;code&gt;trend_percentage&lt;/code&gt;, &lt;code&gt;sample_size&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Faceted data&lt;/strong&gt; enabling multi-dimensional filtering (mission type, remote work, company size)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each record represents real market data:&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;"tech_stack"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"React"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"seniority"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Senior"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"location"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Paris"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"rate_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;550&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"rate_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;680&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"rate_average"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;615&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"market_trend"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"up"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"trend_percentage"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"sample_size"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;145&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;h3&gt;
  
  
  Retrieval-Augmented Dialogue
&lt;/h3&gt;

&lt;p&gt;The agent uses &lt;strong&gt;Algolia's faceted search&lt;/strong&gt; to match user queries against the indexed data:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;User provides context&lt;/strong&gt; → "React Senior, 6 years experience, Paris"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent translates to Algolia query&lt;/strong&gt; → &lt;code&gt;tech_stack:"React" AND seniority:"Senior" AND location:"Paris"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Instant retrieval&lt;/strong&gt; → Relevant benchmarks in &amp;lt;50ms&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contextualized response&lt;/strong&gt; → "Based on 145 freelancers: €550-680/day, trend +15%"&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This ensures &lt;strong&gt;every recommendation is grounded in real data&lt;/strong&gt;, not hallucinated by the LLM.&lt;/p&gt;

&lt;h3&gt;
  
  
  Targeted Prompting Approach
&lt;/h3&gt;

&lt;p&gt;I engineered the agent's system prompt to prioritize &lt;strong&gt;factual retrieval over conversational fluff&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CRITICAL SEARCH RULES:
1. Search Algolia index FIRST before answering
2. NEVER invent rates - only use indexed data
3. Always cite: sample_size, rate range, market trend
4. If no exact match, find closest and explain adjustments
5. Warn users if proposed rate is &amp;gt;15% below market

CONVERSATION FLOW:
- User provides initial info → Search immediately
- Present results: "Based on [N] freelancers: €[min-max], avg €[avg]"
- Mention trend: "[X]% up/down/stable"
- Give 2-3 negotiation arguments from data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This prompt ensures the agent acts as a &lt;strong&gt;data terminal&lt;/strong&gt;, not a chatty assistant.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Gemini 2.5 Flash?
&lt;/h3&gt;

&lt;p&gt;I chose &lt;strong&gt;Gemini 2.5 Flash&lt;/strong&gt; as the LLM for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;Free tier&lt;/strong&gt; with generous limits (perfect for proof-of-concept)&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Fast response times&lt;/strong&gt; matching Algolia's speed&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Strong reasoning&lt;/strong&gt; for multi-turn conversations&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Tool use capabilities&lt;/strong&gt; for clean Algolia integration&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Fast Retrieval Matters
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Speed Equals Trust
&lt;/h3&gt;

&lt;p&gt;In high-stakes negotiations, &lt;strong&gt;latency kills confidence&lt;/strong&gt;. When a freelancer asks "What should I charge?", they need an answer &lt;em&gt;now&lt;/em&gt;, not after watching a loading spinner.&lt;/p&gt;

&lt;p&gt;Algolia's &lt;strong&gt;&amp;lt;50ms retrieval&lt;/strong&gt; transforms the experience:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🚀 &lt;strong&gt;Instant credibility&lt;/strong&gt;: Fast = authoritative&lt;/li&gt;
&lt;li&gt;💡 &lt;strong&gt;No "AI thinking" theatrics&lt;/strong&gt;: Direct data retrieval feels professional&lt;/li&gt;
&lt;li&gt;🎯 &lt;strong&gt;Real-time decision support&lt;/strong&gt;: Users can ask follow-up questions mid-negotiation&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Contextual Retrieval &amp;gt; Generic LLM Knowledge
&lt;/h3&gt;

&lt;p&gt;Without Algolia, the LLM would give generic advice:&lt;br&gt;
❌ "Senior developers in Paris typically earn €500-800/day" (vague, outdated)&lt;/p&gt;

&lt;p&gt;With Algolia Agent Studio:&lt;br&gt;
✅ "Based on 145 React Senior freelancers in Paris: €550-680/day, average €615, trend +15% (data from Q4 2024)"&lt;/p&gt;

&lt;p&gt;The difference:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Specificity&lt;/strong&gt;: Exact tech stack match&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recency&lt;/strong&gt;: Current market trends&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sample size&lt;/strong&gt;: Statistical confidence&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Actionable&lt;/strong&gt;: User knows exactly where they stand&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Real-World Impact
&lt;/h3&gt;

&lt;p&gt;Fast, data-backed insights help freelancers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📈 &lt;strong&gt;Negotiate 15-25% higher rates&lt;/strong&gt; (backed by market data)&lt;/li&gt;
&lt;li&gt;⚠️ &lt;strong&gt;Spot lowball offers&lt;/strong&gt; (agent flags rates &amp;gt;15% below market)&lt;/li&gt;
&lt;li&gt;💼 &lt;strong&gt;Justify premium pricing&lt;/strong&gt; (specialties like TypeScript add €50-100/day)&lt;/li&gt;
&lt;li&gt;🌍 &lt;strong&gt;Understand regional differences&lt;/strong&gt; (Paris €615 vs Lyon €540 for same profile)&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Algolia Agent Studio&lt;/strong&gt; - Conversational agent orchestration&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemini 2.5 Flash&lt;/strong&gt; - LLM for dialogue management&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Algolia InstantSearch&lt;/strong&gt; - Chat widget UI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React + Vite&lt;/strong&gt; - Frontend framework&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vercel&lt;/strong&gt; - Deployment platform&lt;/li&gt;
&lt;/ul&gt;

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

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

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Structured data wins&lt;/strong&gt;: Well-indexed benchmarks &amp;gt; throwing raw data at an LLM&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Faceted search is powerful&lt;/strong&gt;: Algolia's multi-dimensional filtering enables precise matching&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompt engineering matters&lt;/strong&gt;: Constraining the agent to "data terminal" mode eliminated hallucinations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Speed builds trust&lt;/strong&gt;: Sub-50ms retrieval makes the agent feel authoritative&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Challenges Overcome
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Initial Agent Studio network errors&lt;/strong&gt;: Solved by switching from OpenAI sandbox to Gemini production key&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Query parsing issues&lt;/strong&gt;: Agent initially struggled with "6 years experience" → Fixed by mapping experience years to seniority levels in prompt&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data quality&lt;/strong&gt;: Ensuring all 94 records had complete, validated market data&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Future Enhancements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;📊 &lt;strong&gt;Visual analytics&lt;/strong&gt;: Charts showing rate evolution over time&lt;/li&gt;
&lt;li&gt;🌍 &lt;strong&gt;Multi-country support&lt;/strong&gt;: Expand beyond France to EU/US markets&lt;/li&gt;
&lt;li&gt;💬 &lt;strong&gt;Negotiation scripts&lt;/strong&gt;: Generate email templates for rate discussions&lt;/li&gt;
&lt;li&gt;📈 &lt;strong&gt;Personalized tracking&lt;/strong&gt;: Save user profile for trend monitoring&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;strong&gt;Salary negotiation is one of the highest-impact conversations a freelancer has.&lt;/strong&gt; Getting it right can mean €10-20K more per year. This agent democratizes market intelligence that was previously:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Locked in expensive salary surveys&lt;/li&gt;
&lt;li&gt;Scattered across freelance platforms&lt;/li&gt;
&lt;li&gt;Outdated by months or years&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By combining Algolia's fast retrieval with AI conversation, we create a tool that &lt;strong&gt;empowers freelancers to earn what they're worth&lt;/strong&gt;.&lt;/p&gt;




&lt;p&gt;Built for the &lt;strong&gt;#AlgoliaAgentStudio Challenge&lt;/strong&gt; 🚀&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; #algolia #agentstudio #ai #freelance #webdev #chatbot #machinelearning&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/AsamaeS/Freelance-Rate-Negotiation-Coach_algolia-challenge" rel="noopener noreferrer"&gt;https://github.com/AsamaeS/Freelance-Rate-Negotiation-Coach_algolia-challenge&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://freelance-rate-coach-d435fez0z-asmaes-projects-79bc55e6.vercel.app/" rel="noopener noreferrer"&gt;https://freelance-rate-coach-d435fez0z-asmaes-projects-79bc55e6.vercel.app/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>algoliachallenge</category>
      <category>agentstudio</category>
      <category>ai</category>
    </item>
    <item>
      <title>💼 Freelance Rate Negotiation Coach - AI-Powered Salary Intelligence</title>
      <dc:creator>Asmae </dc:creator>
      <pubDate>Tue, 27 Jan 2026 21:06:21 +0000</pubDate>
      <link>https://forem.com/asamaes/freelance-rate-negotiation-coach-ai-powered-salary-intelligence-4e5f</link>
      <guid>https://forem.com/asamaes/freelance-rate-negotiation-coach-ai-powered-salary-intelligence-4e5f</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/algolia"&gt;Algolia Agent Studio Challenge&lt;/a&gt;: Consumer-Facing Conversational Experiences&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built the &lt;strong&gt;Freelance Rate Negotiation Coach&lt;/strong&gt;, an AI-powered conversational agent that helps freelancers negotiate fair rates using real market intelligence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Problem:&lt;/strong&gt; Freelancers struggle to know their market value. They either undercharge (leaving money on the table) or overcharge (losing clients). Market data is scattered across platforms, outdated, or simply doesn't exist for their specific profile.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Solution:&lt;/strong&gt; A conversational AI agent that provides instant, data-backed rate recommendations based on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;94+ real freelance benchmarks&lt;/strong&gt; from the French tech market&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Tech stack, seniority, and location&lt;/strong&gt; matching&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Market trends&lt;/strong&gt; (+15% for React, +20% for DevOps, etc.)&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Tactical negotiation arguments&lt;/strong&gt; grounded in real data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Unlike generic salary calculators, this agent &lt;em&gt;converses&lt;/em&gt; with users to understand their exact situation, then delivers personalized insights they can use in actual negotiations.&lt;/p&gt;

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

&lt;p&gt;🔗 &lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://freelance-rate-coach-d435fez0z-asmaes-projects-79bc55e6.vercel.app/" rel="noopener noreferrer"&gt;https://freelance-rate-coach-d435fez0z-asmaes-projects-79bc55e6.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📹 &lt;strong&gt;Video Demo:&lt;/strong&gt; &lt;a href="https://drive.google.com/drive/folders/1Rp76zF26wSCnQZm4-xKaVktqfudEfIkq?usp=drive_link" rel="noopener noreferrer"&gt;https://drive.google.com/drive/folders/1Rp76zF26wSCnQZm4-xKaVktqfudEfIkq?usp=drive_link&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features in Action:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Example Query 1:&lt;/strong&gt; "What are React Senior rates in Paris?"&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agent Response:
Based on 320 freelancers: TJM €550-680, average €615
Market trend: ↑ 15% (growing demand)
Remote work options can justify +10-15% premium
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Example Query 2:&lt;/strong&gt; "I need help negotiating my rate"&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agent asks clarifying questions:
→ What's your tech stack?
→ Your seniority level?
→ Location preference?

Then provides:
- Exact market benchmarks for your profile
- 2-3 data-driven negotiation arguments
- Red flags if proposed rate is &amp;gt;15% below market
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Screenshots
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2dx7ft78n7h3fzgutq3u.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%2F2dx7ft78n7h3fzgutq3u.png" alt=" " width="699" height="763"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F55bilftw4vxcin9ddyc5.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%2F55bilftw4vxcin9ddyc5.png" alt=" " width="746" height="879"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Used Algolia Agent Studio
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Data Indexing Strategy
&lt;/h3&gt;

&lt;p&gt;I created a specialized &lt;code&gt;freelance_rates&lt;/code&gt; index containing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;94 benchmark records&lt;/strong&gt; covering 20+ tech stacks (React, Python, DevOps, Java, Go, etc.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structured attributes&lt;/strong&gt;: &lt;code&gt;tech_stack&lt;/code&gt;, &lt;code&gt;seniority&lt;/code&gt;, &lt;code&gt;location&lt;/code&gt;, &lt;code&gt;rate_min&lt;/code&gt;, &lt;code&gt;rate_max&lt;/code&gt;, &lt;code&gt;rate_average&lt;/code&gt;, &lt;code&gt;market_trend&lt;/code&gt;, &lt;code&gt;trend_percentage&lt;/code&gt;, &lt;code&gt;sample_size&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Faceted data&lt;/strong&gt; enabling multi-dimensional filtering (mission type, remote work, company size)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each record represents real market data:&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;"tech_stack"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"React"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"seniority"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Senior"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"location"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Paris"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"rate_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;550&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"rate_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;680&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"rate_average"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;615&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"market_trend"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"up"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"trend_percentage"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"sample_size"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;145&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;h3&gt;
  
  
  Retrieval-Augmented Dialogue
&lt;/h3&gt;

&lt;p&gt;The agent uses &lt;strong&gt;Algolia's faceted search&lt;/strong&gt; to match user queries against the indexed data:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;User provides context&lt;/strong&gt; → "React Senior, 6 years experience, Paris"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent translates to Algolia query&lt;/strong&gt; → &lt;code&gt;tech_stack:"React" AND seniority:"Senior" AND location:"Paris"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Instant retrieval&lt;/strong&gt; → Relevant benchmarks in &amp;lt;50ms&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contextualized response&lt;/strong&gt; → "Based on 145 freelancers: €550-680/day, trend +15%"&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This ensures &lt;strong&gt;every recommendation is grounded in real data&lt;/strong&gt;, not hallucinated by the LLM.&lt;/p&gt;

&lt;h3&gt;
  
  
  Targeted Prompting Approach
&lt;/h3&gt;

&lt;p&gt;I engineered the agent's system prompt to prioritize &lt;strong&gt;factual retrieval over conversational fluff&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CRITICAL SEARCH RULES:
1. Search Algolia index FIRST before answering
2. NEVER invent rates - only use indexed data
3. Always cite: sample_size, rate range, market trend
4. If no exact match, find closest and explain adjustments
5. Warn users if proposed rate is &amp;gt;15% below market

CONVERSATION FLOW:
- User provides initial info → Search immediately
- Present results: "Based on [N] freelancers: €[min-max], avg €[avg]"
- Mention trend: "[X]% up/down/stable"
- Give 2-3 negotiation arguments from data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This prompt ensures the agent acts as a &lt;strong&gt;data terminal&lt;/strong&gt;, not a chatty assistant.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Gemini 2.5 Flash?
&lt;/h3&gt;

&lt;p&gt;I chose &lt;strong&gt;Gemini 2.5 Flash&lt;/strong&gt; as the LLM for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;Free tier&lt;/strong&gt; with generous limits (perfect for proof-of-concept)&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Fast response times&lt;/strong&gt; matching Algolia's speed&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Strong reasoning&lt;/strong&gt; for multi-turn conversations&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Tool use capabilities&lt;/strong&gt; for clean Algolia integration&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Fast Retrieval Matters
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Speed Equals Trust
&lt;/h3&gt;

&lt;p&gt;In high-stakes negotiations, &lt;strong&gt;latency kills confidence&lt;/strong&gt;. When a freelancer asks "What should I charge?", they need an answer &lt;em&gt;now&lt;/em&gt;, not after watching a loading spinner.&lt;/p&gt;

&lt;p&gt;Algolia's &lt;strong&gt;&amp;lt;50ms retrieval&lt;/strong&gt; transforms the experience:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🚀 &lt;strong&gt;Instant credibility&lt;/strong&gt;: Fast = authoritative&lt;/li&gt;
&lt;li&gt;💡 &lt;strong&gt;No "AI thinking" theatrics&lt;/strong&gt;: Direct data retrieval feels professional&lt;/li&gt;
&lt;li&gt;🎯 &lt;strong&gt;Real-time decision support&lt;/strong&gt;: Users can ask follow-up questions mid-negotiation&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Contextual Retrieval &amp;gt; Generic LLM Knowledge
&lt;/h3&gt;

&lt;p&gt;Without Algolia, the LLM would give generic advice:&lt;br&gt;
❌ "Senior developers in Paris typically earn €500-800/day" (vague, outdated)&lt;/p&gt;

&lt;p&gt;With Algolia Agent Studio:&lt;br&gt;
✅ "Based on 145 React Senior freelancers in Paris: €550-680/day, average €615, trend +15% (data from Q4 2024)"&lt;/p&gt;

&lt;p&gt;The difference:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Specificity&lt;/strong&gt;: Exact tech stack match&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recency&lt;/strong&gt;: Current market trends&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sample size&lt;/strong&gt;: Statistical confidence&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Actionable&lt;/strong&gt;: User knows exactly where they stand&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Real-World Impact
&lt;/h3&gt;

&lt;p&gt;Fast, data-backed insights help freelancers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📈 &lt;strong&gt;Negotiate 15-25% higher rates&lt;/strong&gt; (backed by market data)&lt;/li&gt;
&lt;li&gt;⚠️ &lt;strong&gt;Spot lowball offers&lt;/strong&gt; (agent flags rates &amp;gt;15% below market)&lt;/li&gt;
&lt;li&gt;💼 &lt;strong&gt;Justify premium pricing&lt;/strong&gt; (specialties like TypeScript add €50-100/day)&lt;/li&gt;
&lt;li&gt;🌍 &lt;strong&gt;Understand regional differences&lt;/strong&gt; (Paris €615 vs Lyon €540 for same profile)&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Algolia Agent Studio&lt;/strong&gt; - Conversational agent orchestration&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemini 2.5 Flash&lt;/strong&gt; - LLM for dialogue management&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Algolia InstantSearch&lt;/strong&gt; - Chat widget UI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React + Vite&lt;/strong&gt; - Frontend framework&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vercel&lt;/strong&gt; - Deployment platform&lt;/li&gt;
&lt;/ul&gt;

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

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

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Structured data wins&lt;/strong&gt;: Well-indexed benchmarks &amp;gt; throwing raw data at an LLM&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Faceted search is powerful&lt;/strong&gt;: Algolia's multi-dimensional filtering enables precise matching&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompt engineering matters&lt;/strong&gt;: Constraining the agent to "data terminal" mode eliminated hallucinations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Speed builds trust&lt;/strong&gt;: Sub-50ms retrieval makes the agent feel authoritative&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Challenges Overcome
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Initial Agent Studio network errors&lt;/strong&gt;: Solved by switching from OpenAI sandbox to Gemini production key&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Query parsing issues&lt;/strong&gt;: Agent initially struggled with "6 years experience" → Fixed by mapping experience years to seniority levels in prompt&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data quality&lt;/strong&gt;: Ensuring all 94 records had complete, validated market data&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Future Enhancements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;📊 &lt;strong&gt;Visual analytics&lt;/strong&gt;: Charts showing rate evolution over time&lt;/li&gt;
&lt;li&gt;🌍 &lt;strong&gt;Multi-country support&lt;/strong&gt;: Expand beyond France to EU/US markets&lt;/li&gt;
&lt;li&gt;💬 &lt;strong&gt;Negotiation scripts&lt;/strong&gt;: Generate email templates for rate discussions&lt;/li&gt;
&lt;li&gt;📈 &lt;strong&gt;Personalized tracking&lt;/strong&gt;: Save user profile for trend monitoring&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;strong&gt;Salary negotiation is one of the highest-impact conversations a freelancer has.&lt;/strong&gt; Getting it right can mean €10-20K more per year. This agent democratizes market intelligence that was previously:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Locked in expensive salary surveys&lt;/li&gt;
&lt;li&gt;Scattered across freelance platforms&lt;/li&gt;
&lt;li&gt;Outdated by months or years&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By combining Algolia's fast retrieval with AI conversation, we create a tool that &lt;strong&gt;empowers freelancers to earn what they're worth&lt;/strong&gt;.&lt;/p&gt;




&lt;p&gt;Built for the &lt;strong&gt;#AlgoliaAgentStudio Challenge&lt;/strong&gt; 🚀&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; #algolia #agentstudio #ai #freelance #webdev #chatbot #machinelearning&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/AsamaeS/Freelance-Rate-Negotiation-Coach_algolia-challenge" rel="noopener noreferrer"&gt;https://github.com/AsamaeS/Freelance-Rate-Negotiation-Coach_algolia-challenge&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://freelance-rate-coach-d435fez0z-asmaes-projects-79bc55e6.vercel.app/" rel="noopener noreferrer"&gt;https://freelance-rate-coach-d435fez0z-asmaes-projects-79bc55e6.vercel.app/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>algolia</category>
      <category>agentstudio</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Recall Radar: Instantly Detect Product Recalls with Algolia Agent Studio</title>
      <dc:creator>Asmae </dc:creator>
      <pubDate>Fri, 23 Jan 2026 09:07:50 +0000</pubDate>
      <link>https://forem.com/asamaes/recall-radar-instantly-detect-product-recalls-with-algolia-agent-studio-2l60</link>
      <guid>https://forem.com/asamaes/recall-radar-instantly-detect-product-recalls-with-algolia-agent-studio-2l60</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.amazonaws.com%2Fuploads%2Farticles%2F4zvd6gt9xiozq8kry726.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%2F4zvd6gt9xiozq8kry726.png" alt=" " width="800" height="362"&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.amazonaws.com%2Fuploads%2Farticles%2F0wk0wert29dds9qzqaoq.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%2F0wk0wert29dds9qzqaoq.png" alt=" " width="800" height="370"&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.amazonaws.com%2Fuploads%2Farticles%2Ft645q8t2k297wu8d0qc4.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%2Ft645q8t2k297wu8d0qc4.png" alt=" " width="800" height="314"&gt;&lt;/a&gt;# Submission for the Algolia Agent Studio Challenge&lt;br&gt;&lt;br&gt;
&lt;em&gt;Consumer-Facing Non-Conversational Experiences&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is a submission for the &lt;a href="https://dev.to/challenges/algolia"&gt;Algolia Agent Studio Challenge&lt;/a&gt;.&lt;/p&gt;




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

&lt;p&gt;&lt;strong&gt;Recall Radar&lt;/strong&gt; is a consumer-facing &lt;strong&gt;Safety Agent&lt;/strong&gt; designed to instantly detect whether a product has been officially recalled.&lt;/p&gt;

&lt;p&gt;Instead of relying on slow, conversational AI flows, Recall Radar adopts a &lt;strong&gt;non-conversational, retrieval-first approach&lt;/strong&gt;. It delivers an immediate, authoritative &lt;strong&gt;Safe / Not Safe&lt;/strong&gt; verdict based on official recall databases.&lt;/p&gt;

&lt;p&gt;The experience is designed for &lt;strong&gt;high-stress scenarios&lt;/strong&gt;, such as parents checking a product’s safety. There are no chats, no forms, and no ambiguity. Just instant feedback powered by fast, contextual retrieval.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Core idea:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Search is not just a lookup tool here. It is the &lt;strong&gt;decision engine&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 Key Capabilities
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Instant recall detection for product names, brands, and models
&lt;/li&gt;
&lt;li&gt;Clear, color-coded safety verdicts
&lt;/li&gt;
&lt;li&gt;Typo-tolerant fuzzy matching for real-world input errors
&lt;/li&gt;
&lt;li&gt;Zero backend logic. Fully search-driven intelligence
&lt;/li&gt;
&lt;li&gt;Professional, “government-style” UX for trust and clarity
&lt;/li&gt;
&lt;/ul&gt;




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

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Live Application&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://algoliachallenge-project-recall-rad.vercel.app" rel="noopener noreferrer"&gt;https://algoliachallenge-project-recall-rad.vercel.app&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Source Code (GitHub)&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/AsamaeS/algoliachallenge_project_-Recall-Radar" rel="noopener noreferrer"&gt;https://github.com/AsamaeS/algoliachallenge_project_-Recall-Radar&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔍 Safety Verdicts in Action
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;🔴 Match Found&lt;/th&gt;
&lt;th&gt;🟠 Possible Match&lt;/th&gt;
&lt;th&gt;🟢 No Records&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Recalled product detected with high confidence&lt;/td&gt;
&lt;td&gt;Close or typo-based match requiring verification&lt;/td&gt;
&lt;td&gt;No official recall found&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;Screenshots and demo video are available below.&lt;/p&gt;
&lt;/blockquote&gt;




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

&lt;p&gt;A short walkthrough demonstrating how Recall Radar reacts in real time to exact matches, fuzzy matches, and clean searches:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://drive.google.com/drive/folders/1M0exKMaHXqKDBpFyXCtxXi2X28TT9Dbl" rel="noopener noreferrer"&gt;https://drive.google.com/drive/folders/1M0exKMaHXqKDBpFyXCtxXi2X28TT9Dbl&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 How I Used Algolia Agent Studio
&lt;/h2&gt;

&lt;p&gt;Algolia is not used as a passive search layer, but as the &lt;strong&gt;core intelligence system&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Data Indexing
&lt;/h3&gt;

&lt;p&gt;I indexed structured consumer safety recall data inspired by official standards (RAPEX / DGCCRF), including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Product name
&lt;/li&gt;
&lt;li&gt;Brand
&lt;/li&gt;
&lt;li&gt;Model / reference
&lt;/li&gt;
&lt;li&gt;Risk severity
&lt;/li&gt;
&lt;li&gt;Source authority
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Retrieval-Driven Logic
&lt;/h3&gt;

&lt;p&gt;This is a &lt;strong&gt;non-conversational agent&lt;/strong&gt;, so “prompting” happens through &lt;strong&gt;retrieval metadata&lt;/strong&gt;, not text generation.&lt;/p&gt;

&lt;p&gt;Algolia’s ranking signals drive the agent’s behavior:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Exact Match (RED)&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Zero typos on critical attributes
&lt;/li&gt;
&lt;li&gt;High-confidence recall detected
&lt;/li&gt;
&lt;li&gt;Immediate high-risk alert
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Fuzzy Match (ORANGE)&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Typo tolerance or partial similarity detected
&lt;/li&gt;
&lt;li&gt;User warned to verify details
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;No Match (GREEN)&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No relevant recall found
&lt;/li&gt;
&lt;li&gt;Reassuring confirmation with official disclaimer
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;This creates &lt;strong&gt;logical branching directly in the UI&lt;/strong&gt;, without any backend decision rules.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚡ Why Fast Retrieval Matters
&lt;/h2&gt;

&lt;p&gt;In safety-critical workflows, &lt;strong&gt;latency destroys trust&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If a user has to wait for an AI to “think,” they may not check at all.&lt;/p&gt;

&lt;p&gt;Algolia’s fast, contextual retrieval enables:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Instant Verdicts&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
The safety status updates live as the user types.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Stress-Proof Input Handling&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Typos like &lt;em&gt;“TohyWorld”&lt;/em&gt; still trigger critical warnings.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Perceived Authority &amp;amp; Reliability&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Speed + consistency creates a professional, official feel.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Fast retrieval turns search into a &lt;strong&gt;protective mechanism&lt;/strong&gt;, not just an interface.&lt;/p&gt;




&lt;h2&gt;
  
  
  📄 Project Report &amp;amp; Technical Walkthrough
&lt;/h2&gt;

&lt;p&gt;A more detailed technical breakdown, implementation notes, and validation results are available in the repository:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/AsamaeS/algoliachallenge_project_-Recall-Radar" rel="noopener noreferrer"&gt;https://github.com/AsamaeS/algoliachallenge_project_-Recall-Radar&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Project built for the Algolia Agent Studio Challenge – Consumer-Facing Non-Conversational Experiences.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>algoliachallenge</category>
      <category>ai</category>
      <category>agents</category>
    </item>
    <item>
      <title>Astryx Documents API: Production-Ready Document Ingestion &amp; Vector Backend with Xano</title>
      <dc:creator>Asmae </dc:creator>
      <pubDate>Mon, 15 Dec 2025 07:48:32 +0000</pubDate>
      <link>https://forem.com/asamaes/astryx-documents-api-production-ready-document-ingestion-vector-backend-with-xano-1i3l</link>
      <guid>https://forem.com/asamaes/astryx-documents-api-production-ready-document-ingestion-vector-backend-with-xano-1i3l</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/xano-2025-11-20"&gt;Xano AI-Powered Backend Challenge&lt;/a&gt;: Production-Ready Public API&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built &lt;strong&gt;Astryx Documents API&lt;/strong&gt;, a production-ready backend designed to ingest aeronautics documents, structure them, split them into semantic chunks, and store vector embeddings for future AI-powered search and retrieval.&lt;/p&gt;

&lt;p&gt;The API is designed for real-world use cases such as technical documentation analysis, maintenance manuals, and knowledge retrieval systems.&lt;/p&gt;

&lt;p&gt;It is fully built with &lt;strong&gt;Xano&lt;/strong&gt;, secured with token-based authentication, and structured to be scalable and maintainable.&lt;/p&gt;




&lt;h2&gt;
  
  
  API Documentation
&lt;/h2&gt;

&lt;p&gt;The API exposes secure, private endpoints that can be consumed by third-party applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Core Endpoints
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;POST &lt;code&gt;/documents&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adds a document record with metadata.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;POST &lt;code&gt;/add_document_with_vectors&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ingests a document&lt;/li&gt;
&lt;li&gt;Splits its content into chunks&lt;/li&gt;
&lt;li&gt;Stores vector embeddings linked to each chunk&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Security
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Token-based authentication (Bearer token required)&lt;/li&gt;
&lt;li&gt;Private API group configuration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes the API ready for controlled public or partner access.&lt;/p&gt;




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

&lt;p&gt;📹 &lt;strong&gt;Demo video &amp;amp; screenshots:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
👉 Google Drive link: &lt;strong&gt;&lt;a href="https://drive.google.com/drive/folders/1hem6CqRIFdi62VNkmUicp1Gwa_lygJNl?usp=sharing" rel="noopener noreferrer"&gt;https://drive.google.com/drive/folders/1hem6CqRIFdi62VNkmUicp1Gwa_lygJNl?usp=sharing&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
Github :&lt;strong&gt;&lt;a href="https://github.com/AsamaeS/Astryx" rel="noopener noreferrer"&gt;https://github.com/AsamaeS/Astryx&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The demo shows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API execution in Xano&lt;/li&gt;
&lt;li&gt;Document insertion&lt;/li&gt;
&lt;li&gt;Automatic chunk creation&lt;/li&gt;
&lt;li&gt;Vector storage in the database&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The AI Prompt I Used
&lt;/h2&gt;

&lt;p&gt;I used AI to generate an initial backend structure and XanoScript endpoints for document ingestion and storage.&lt;/p&gt;

&lt;p&gt;The goal of the prompt was to accelerate backend creation and then manually refine it to meet production standards.&lt;/p&gt;




&lt;h2&gt;
  
  
  How I Refined the AI-Generated Code
&lt;/h2&gt;

&lt;p&gt;The AI-generated code required significant refinement to become production-ready:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fixed invalid XanoScript syntax that did not compile&lt;/li&gt;
&lt;li&gt;Refactored endpoints to respect Xano’s execution model&lt;/li&gt;
&lt;li&gt;Removed unsupported control structures&lt;/li&gt;
&lt;li&gt;Added secure authentication requirements&lt;/li&gt;
&lt;li&gt;Designed a clear document → chunk → vector data pipeline&lt;/li&gt;
&lt;li&gt;Improved maintainability and clarity of the API logic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This process highlighted how &lt;strong&gt;human expertise is essential to transform AI-generated code into reliable production systems&lt;/strong&gt;.&lt;/p&gt;




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

&lt;p&gt;Xano made it possible to move extremely fast from idea to production-ready backend without managing infrastructure.&lt;/p&gt;

&lt;p&gt;The biggest challenge was mastering strict XanoScript syntax, but once understood, it enabled clean, scalable backend logic with excellent performance and security.&lt;/p&gt;

&lt;p&gt;Xano proved to be a powerful platform for building real-world APIs enhanced by AI workflows.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>xanochallenge</category>
      <category>api</category>
      <category>backend</category>
    </item>
  </channel>
</rss>
