<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mir Shah</title>
    <description>The latest articles on DEV Community by Mir Shah (@mirshah12).</description>
    <link>https://dev.to/mirshah12</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3772882%2F6fa5a1fc-b364-47a4-8302-54107dba1a04.jpg</url>
      <title>DEV Community: Mir Shah</title>
      <link>https://dev.to/mirshah12</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mirshah12"/>
    <language>en</language>
    <item>
      <title>One More Year -&gt; The Documentary I Never Filmed</title>
      <dc:creator>Mir Shah</dc:creator>
      <pubDate>Sun, 12 Jul 2026 19:58:49 +0000</pubDate>
      <link>https://dev.to/mirshah12/one-more-year-the-documentary-i-never-filmed-1phb</link>
      <guid>https://dev.to/mirshah12/one-more-year-the-documentary-i-never-filmed-1phb</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/weekend-2026-07-09"&gt;Weekend Challenge: Passion Edition&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  One More Year
&lt;/h1&gt;

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


&lt;div class="ltag-quote"&gt; &lt;div class="ltag-quote__body"&gt; &lt;div class="ltag-quote__mark ltag-quote__mark--start"&gt;  &lt;/div&gt; &lt;div class="ltag-quote__text"&gt;
&lt;br&gt;
I built a documentary studio.&lt;br&gt; &lt;/div&gt; &lt;div class="ltag-quote__mark ltag-quote__mark--end"&gt;  &lt;/div&gt; &lt;/div&gt;   &lt;div class="ltag-quote__author-info"&gt; &lt;div class="ltag-quote__meta"&gt; &lt;span class="ltag-quote__author"&gt;One More Year&lt;/span&gt; &lt;span class="ltag-quote__role"&gt;An AI documentary studio&lt;/span&gt; &lt;/div&gt; &lt;/div&gt;  &lt;/div&gt;

&lt;p&gt;Not a template with your name dropped in. An actual small production pipeline that reads four things you tell it, decides what your story is, casts it with real performed voices, builds its own sound design, writes its own score, and prints a real mp4. All in the browser.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Here's the observation it started from. Everyone has one thing they can't quit. Football, chess, a piano someone left them, a side project nobody asked for. And almost none of that ever becomes anything, because turning "the thing I can't stop doing" into something that actually feels like a documentary normally takes a camera crew, actors, a sound engineer, and about a week of editing.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So I tried to compress that whole crew into five automated desks and see how close I could get.&lt;/p&gt;


&lt;div class="ltag-offer"&gt;
  &lt;div class="ltag-offer__body"&gt;
&lt;br&gt;
It's called &lt;strong&gt;One More Year&lt;/strong&gt;. You answer four questions. It gives you back a short film with a narrator, you as the subject, and a couple of extra voices pulled from inside your own story: memory, doubt, whatever the piece needs. Every voice is performed, not read. Every sound effect is chosen for that scene. Every score is composed fresh. It's all mixed and encoded into a real video file without a render server ever touching it.&lt;br&gt;
&lt;/div&gt;
&lt;/div&gt;





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

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

&lt;p&gt;&lt;/p&gt;
  Why there is no hosted public demo
  &lt;p&gt;There's no hosted public demo. That's on purpose.&lt;/p&gt;

&lt;p&gt;The ElevenLabs key is kept server-side only, so it never reaches browser JavaScript. Hosting it publicly would mean putting my own paid key on the open internet for strangers to spend. So instead, the whole thing runs locally in about two minutes, with your own free Gemini key and your own ElevenLabs key.&lt;/p&gt;



&lt;br&gt;
&lt;p&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/abbasmir12/onemoreyear
&lt;span class="nb"&gt;cd &lt;/span&gt;onemoreyear
npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;blockquote&gt;
&lt;p&gt;Open the Press Room, drop in a key, hit Start Your Story. Headphones on.&lt;/p&gt;
&lt;/blockquote&gt;


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


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/abbasmir12" rel="noopener noreferrer"&gt;
        abbasmir12
      &lt;/a&gt; / &lt;a href="https://github.com/abbasmir12/onemoreyear" rel="noopener noreferrer"&gt;
        onemoreyear
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      An Open Source documentary studio for the things you cannot quit - directed by Gemini, performed by ElevenLabs
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;ᴏɴᴇ ᴍᴏʀᴇ ʏᴇᴀʀ&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;An open-source documentary studio for the thing you cannot quit.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Built for the &lt;a href="https://dev.to" rel="nofollow"&gt;DEV Weekend Challenge: Passion Edition&lt;/a&gt; — July 10–13, 2026&lt;/em&gt;&lt;/p&gt;


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

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/abbasmir12/onemoreyear/docs/hero.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fabbasmir12%2Fonemoreyear%2FHEAD%2Fdocs%2Fhero.png" alt="One More Year — Everyone has one thing they can't quit." width="100%"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;blockquote&gt;
&lt;p&gt;Everyone has one thing they can't quit.&lt;/p&gt;
&lt;p&gt;Most tools would ask you to write it down. This one asks you to say it out loud — then hands it to a director, a cast, a sound desk, and a print desk, and gets you back a real short film.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What it actually does&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;You answer four questions. Nothing technical — just &lt;em&gt;what's the thing you can't quit, when did it almost end, why did you stay,&lt;/em&gt; and &lt;em&gt;one line only you would say.&lt;/em&gt; That's the entire brief.&lt;/p&gt;

&lt;p&gt;From there, a real production pipeline runs — not a template filled in, not a single flat voice reading a script. An AI director reads what you gave it, decides what the story actually is, and hands it…&lt;/p&gt;&lt;/div&gt;


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





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

&lt;h3&gt;
  
  
  The four questions
&lt;/h3&gt;


&lt;div class="ltag-row"&gt;
  &lt;div class="ltag-col"&gt;
  


&lt;blockquote&gt;
&lt;p&gt;The input surface is deliberately tiny.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;/div&gt;


&lt;div class="ltag-col ltag-col-span-2"&gt;
  


&lt;p&gt;What's the thing you can't quit. When did it almost end. Why did you stay. One line only you would say. No writing, no script, no timeline editor.&lt;/p&gt;




&lt;/div&gt;



&lt;/div&gt;



&lt;div class="ltag-quote"&gt; &lt;div class="ltag-quote__body"&gt; &lt;div class="ltag-quote__mark ltag-quote__mark--start"&gt;  &lt;/div&gt; &lt;div class="ltag-quote__text"&gt;
&lt;br&gt;
That constraint is the actual design decision. Asking someone to write a story gets you a self-conscious kind of writing. Asking them a direct question at 2am gets you something else entirely.&lt;br&gt; &lt;/div&gt; &lt;div class="ltag-quote__mark ltag-quote__mark--end"&gt;  &lt;/div&gt; &lt;/div&gt;   &lt;div class="ltag-quote__author-info"&gt; &lt;div class="ltag-quote__meta"&gt; &lt;span class="ltag-quote__author"&gt;The core design decision&lt;/span&gt; &lt;/div&gt; &lt;/div&gt;  &lt;/div&gt;


&lt;h3&gt;
  
  
  Five desks, not one prompt
&lt;/h3&gt;

&lt;p&gt;I didn't want this to feel like "type something, get an AI blob back." So I split the work the way a real production would split it.&lt;/p&gt;


&lt;div class="ltag-features"&gt;
  &lt;div class="ltag-feature"&gt;
  &lt;div class="ltag-feature__content"&gt;
    &lt;div class="ltag-feature__title"&gt;01 — The Interview&lt;/div&gt;
    &lt;div class="ltag-feature__body"&gt;

      &lt;p&gt;&lt;br&gt;&lt;br&gt;
Four questions. No writing required.&lt;br&gt;&lt;/p&gt;


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


&lt;div class="ltag-feature"&gt;
  &lt;div class="ltag-feature__content"&gt;
    &lt;div class="ltag-feature__title"&gt;02 — The Director&lt;/div&gt;
    &lt;div class="ltag-feature__body"&gt;

      &lt;p&gt;&lt;br&gt;&lt;br&gt;
Gemini reads your answers, finds the arc, and writes a full script. It casts a narrator, you, and one or two symbolic voices pulled from inside the story itself.&lt;br&gt;&lt;/p&gt;


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


&lt;div class="ltag-feature"&gt;
  &lt;div class="ltag-feature__content"&gt;
    &lt;div class="ltag-feature__title"&gt;03 — The Cast&lt;/div&gt;
    &lt;div class="ltag-feature__body"&gt;

      &lt;p&gt;&lt;br&gt;&lt;br&gt;
Every voice is performed through ElevenLabs eleven_v3. Hesitations, corrections, a line that actually breaks where it should.&lt;br&gt;&lt;/p&gt;


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


&lt;div class="ltag-feature"&gt;
  &lt;div class="ltag-feature__content"&gt;
    &lt;div class="ltag-feature__title"&gt;04 — Sound &amp;amp;amp; Score&lt;/div&gt;
    &lt;div class="ltag-feature__body"&gt;

      &lt;p&gt;&lt;br&gt;&lt;br&gt;
The director decides what a scene needs, generates that exact effect, then composes an original score through ElevenLabs Music v2.&lt;br&gt;&lt;/p&gt;


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


&lt;div class="ltag-feature"&gt;
  &lt;div class="ltag-feature__content"&gt;
    &lt;div class="ltag-feature__title"&gt;05 — The Print&lt;/div&gt;
    &lt;div class="ltag-feature__body"&gt;

      &lt;p&gt;&lt;br&gt;&lt;br&gt;
ffmpeg.wasm mixes every voice, effect, and cue against the frames and encodes a real mp4. Client-side. No render server.&lt;br&gt;&lt;/p&gt;


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



&lt;/div&gt;





&lt;h3&gt;
  
  
  The director doesn't summarize. It directs.
&lt;/h3&gt;


&lt;div class="ltag-row"&gt;
  &lt;div class="ltag-col"&gt;
  


&lt;p&gt;My first version of the prompt just asked Gemini to turn the answers into a short documentary.&lt;/p&gt;




&lt;/div&gt;


&lt;div class="ltag-col"&gt;
  


&lt;p&gt;What came back read like a summary with quotation marks around it.&lt;/p&gt;




&lt;/div&gt;


&lt;div class="ltag-col"&gt;
  


&lt;p&gt;Competent. Flat. Forgettable.&lt;/p&gt;




&lt;/div&gt;



&lt;/div&gt;



&lt;div class="ltag-quote"&gt; &lt;div class="ltag-quote__body"&gt; &lt;div class="ltag-quote__mark ltag-quote__mark--start"&gt;  &lt;/div&gt; &lt;div class="ltag-quote__text"&gt;
&lt;br&gt;
What worked instead was telling it to behave like a documentary editor. Find the arc, not the facts.&lt;br&gt; &lt;/div&gt; &lt;div class="ltag-quote__mark ltag-quote__mark--end"&gt;  &lt;/div&gt; &lt;/div&gt;   &lt;div class="ltag-quote__author-info"&gt; &lt;div class="ltag-quote__meta"&gt; &lt;span class="ltag-quote__author"&gt;The directing principle&lt;/span&gt; &lt;/div&gt; &lt;/div&gt;  &lt;/div&gt;

&lt;p&gt;Cast a narrator and the subject, then add one or two symbolic voices, like memory or doubt. Those voices are explicitly not allowed to invent facts or pretend to be real witnesses.&lt;/p&gt;

&lt;p&gt;Write two versions of every line. A clean transcript, and a separate performance string with sparse, motivated imperfections: a repeated word, a false start, a line that catches. Most lines stay clean, so the handful of imperfect moments actually mean something.&lt;/p&gt;

&lt;p&gt;Every scene also gets a director-chosen transition. Direct, sound, or silence. The first scene is mandatory sound, because a documentary that opens on a voice mid-sentence with nothing behind it doesn't feel like one.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;
  Read the actual rules I gave the AI director
  &lt;p&gt;A few of the real constraints from the production prompt, word for word:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Symbolic voices are fragments of the subject's interior story, not factual witnesses. They must never claim to be a coach, friend, rival, family member, or person who was present."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Never invent a quote, date, injury, achievement, relationship, or event the person did not provide."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Human speech is not polished prose. In only 2 or 3 segments across the entire film, add ONE motivated imperfection. Never sprinkle random 'um' sounds everywhere."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Segment 1 MUST use 'sound' for 4–5 seconds before anyone speaks. Establish the physical world first."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Every film gets a score. If the story calls for restraint, choose 'instrumental' and keep it sparse, rather than skipping the score entirely."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;



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




&lt;h3&gt;
  
  
  The cast, the room tone, the score
&lt;/h3&gt;


&lt;div class="ltag-row"&gt;
  &lt;div class="ltag-col"&gt;
  


&lt;h4&gt;
  
  
  The Cast
&lt;/h4&gt;

&lt;p&gt;Every performed line goes through eleven_v3.&lt;/p&gt;




&lt;/div&gt;


&lt;div class="ltag-col"&gt;
  


&lt;h4&gt;
  
  
  The Room Tone
&lt;/h4&gt;

&lt;p&gt;Every scene's ambience, a stadium, a stairwell, rain on a tin roof, is a real generated sound effect chosen for that specific beat. Not a stock loop reused everywhere.&lt;/p&gt;




&lt;/div&gt;


&lt;div class="ltag-col"&gt;
  


&lt;h4&gt;
  
  
  The Score
&lt;/h4&gt;

&lt;p&gt;Every film also gets an original score through Music v2. The director can choose instrumental, vocal, or hybrid, but never nothing. A quiet story doesn't mean a silent one. It means a sparser score, not an empty desk.&lt;/p&gt;




&lt;/div&gt;



&lt;/div&gt;





&lt;h3&gt;
  
  
  Printed with ffmpeg, not on a server
&lt;/h3&gt;


&lt;div class="ltag-quote"&gt; &lt;div class="ltag-quote__body"&gt; &lt;div class="ltag-quote__mark ltag-quote__mark--start"&gt;  &lt;/div&gt; &lt;div class="ltag-quote__text"&gt;
&lt;br&gt;
This is the part I'm most proud of.&lt;br&gt; &lt;/div&gt; &lt;div class="ltag-quote__mark ltag-quote__mark--end"&gt;  &lt;/div&gt; &lt;/div&gt;   &lt;div class="ltag-quote__author-info"&gt; &lt;div class="ltag-quote__meta"&gt; &lt;span class="ltag-quote__author"&gt;The part I'm most proud of&lt;/span&gt; &lt;/div&gt; &lt;/div&gt;  &lt;/div&gt;

&lt;p&gt;The final assembly happens with ffmpeg compiled to WebAssembly, running client-side. Timing every voice line against its lead-in. Layering sound effects at the right offsets. Ducking the score under dialogue. Encoding the whole thing to H.264.&lt;/p&gt;


&lt;div class="ltag-features"&gt;
  &lt;div class="ltag-feature"&gt;
  &lt;div class="ltag-feature__content"&gt;
    &lt;div class="ltag-feature__title"&gt;No render queue&lt;/div&gt;
    &lt;div class="ltag-feature__body"&gt;

      &lt;p&gt;&lt;br&gt;&lt;br&gt;
No render queue.&lt;br&gt;&lt;/p&gt;


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


&lt;div class="ltag-feature"&gt;
  &lt;div class="ltag-feature__content"&gt;
    &lt;div class="ltag-feature__title"&gt;No upload and wait&lt;/div&gt;
    &lt;div class="ltag-feature__body"&gt;

      &lt;p&gt;&lt;br&gt;&lt;br&gt;
No upload and wait.&lt;br&gt;&lt;/p&gt;


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


&lt;div class="ltag-feature"&gt;
  &lt;div class="ltag-feature__content"&gt;
    &lt;div class="ltag-feature__title"&gt;A real downloadable file&lt;/div&gt;
    &lt;div class="ltag-feature__body"&gt;

      &lt;p&gt;&lt;br&gt;&lt;br&gt;
The browser does the actual video engineering and hands you back a downloadable file.&lt;br&gt;&lt;/p&gt;


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



&lt;/div&gt;





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


&lt;div class="ltag-row"&gt;
  &lt;div class="ltag-col"&gt;
  


&lt;h3&gt;
  
  
  Best Use of Google AI
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Best Use of Google AI.&lt;/strong&gt; Gemini directs the entire piece: structured JSON output for the script and cast, image generation for the frames.&lt;/p&gt;




&lt;/div&gt;


&lt;div class="ltag-col"&gt;
  


&lt;h3&gt;
  
  
  Best Use of ElevenLabs
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Best Use of ElevenLabs.&lt;/strong&gt; Every voice, every sound effect, and every score in the film is generated live through eleven_v3, the Sound Effects API, and Music v2.&lt;/p&gt;




&lt;/div&gt;



&lt;/div&gt;





&lt;p&gt;&lt;a href="https://github.com/abbasmir12/onemoreyear" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;https://github.com/abbasmir12/onemoreyear&lt;/a&gt;
&lt;/p&gt;




</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>discuss</category>
    </item>
    <item>
      <title>ORVIX, Open-source Self-Organizing AI Engineering Company</title>
      <dc:creator>Mir Shah</dc:creator>
      <pubDate>Tue, 07 Jul 2026 14:12:06 +0000</pubDate>
      <link>https://dev.to/mirshah12/orvix-open-source-self-organizing-ai-engineering-company-4cd1</link>
      <guid>https://dev.to/mirshah12/orvix-open-source-self-organizing-ai-engineering-company-4cd1</guid>
      <description>&lt;h1&gt;
  
  
  I Built an Open-Source AI Engineering Company Instead of Another AI Agent
&lt;/h1&gt;

&lt;p&gt;For the past year, AI coding agents have become incredibly capable.&lt;/p&gt;

&lt;p&gt;But almost all of them still follow the same idea:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;One increasingly capable AI should build everything.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I wanted to explore the opposite.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What if the AI wasn't the engineer? What if it became the entire engineering company?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's how &lt;strong&gt;Orvix&lt;/strong&gt; started.&lt;/p&gt;




&lt;h2&gt;
  
  
  Meet Orvix
&lt;/h2&gt;

&lt;p&gt;Orvix is a self-organizing AI engineering company.&lt;/p&gt;

&lt;p&gt;You don't create agents manually or decide how many are needed.&lt;/p&gt;

&lt;p&gt;You simply describe the mission.&lt;/p&gt;

&lt;p&gt;From there, Orvix designs the project, creates exactly the specialists required for that mission, assigns ownership, coordinates their work, reviews their pull requests, and even creates entirely new specialists later if the project grows.&lt;/p&gt;

&lt;p&gt;Every mission creates a different engineering company.&lt;/p&gt;




&lt;h2&gt;
  
  
  Building software like a real engineering team
&lt;/h2&gt;

&lt;p&gt;Instead of one AI jumping between frontend, backend, infrastructure, testing and documentation, Orvix treats them as independent engineers.&lt;/p&gt;

&lt;p&gt;Each specialist owns its own Git branch.&lt;/p&gt;

&lt;p&gt;They work in parallel.&lt;/p&gt;

&lt;p&gt;They negotiate decisions.&lt;/p&gt;

&lt;p&gt;They review one another's work.&lt;/p&gt;

&lt;p&gt;They communicate through the &lt;strong&gt;Orvix Book&lt;/strong&gt;, a shared communication layer where engineers ask questions, request clarification, share discoveries, and coordinate their work instead of sharing one giant conversation.&lt;/p&gt;

&lt;p&gt;The goal isn't just generating code.&lt;/p&gt;

&lt;p&gt;It's organizing engineering.&lt;/p&gt;




&lt;h2&gt;
  
  
  Local first. Cloud when you need it.
&lt;/h2&gt;

&lt;p&gt;One thing I wanted from the beginning was flexibility.&lt;/p&gt;

&lt;p&gt;Orvix can run completely on your own machine if you want everything local.&lt;/p&gt;

&lt;p&gt;Or you can deploy the Orvix runtime on &lt;strong&gt;Alibaba Cloud ECS&lt;/strong&gt;, allowing anyone on your team to connect to the same engineering company remotely while every mission, every specialist, and the entire execution live on the server.&lt;/p&gt;

&lt;p&gt;For this hackathon, Orvix was deployed on Alibaba Cloud and powered by &lt;strong&gt;Qwen Cloud (Alibaba Cloud Model Studio)&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  There's much more behind it
&lt;/h2&gt;

&lt;p&gt;This post only scratches the surface.&lt;/p&gt;

&lt;p&gt;The repository includes detailed documentation covering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the complete architecture&lt;/li&gt;
&lt;li&gt;the Orvix Map&lt;/li&gt;
&lt;li&gt;the Orvix Book&lt;/li&gt;
&lt;li&gt;the planning pipeline&lt;/li&gt;
&lt;li&gt;dynamic specialist creation&lt;/li&gt;
&lt;li&gt;mission lifecycle&lt;/li&gt;
&lt;li&gt;deployment on Alibaba Cloud&lt;/li&gt;
&lt;li&gt;and the reasoning behind the system's design.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're curious about how an AI engineering company actually works, I'd love for you to take a look.&lt;/p&gt;




&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

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

&lt;p&gt;&lt;a href="https://github.com/abbasmir12/orvix" rel="noopener noreferrer"&gt;https://github.com/abbasmir12/orvix&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Documentation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/abbasmir12/orvix/tree/main/docs" rel="noopener noreferrer"&gt;https://github.com/abbasmir12/orvix/tree/main/docs&lt;/a&gt;&lt;/p&gt;

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

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




&lt;p&gt;I'd love to hear what you think. If you have ideas for improving Orvix or thoughts about multi-agent engineering systems, feel free to share them.&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>opensource</category>
      <category>showdev</category>
      <category>ai</category>
    </item>
    <item>
      <title>Among Liars -&gt; The 7th Player Isn't Human</title>
      <dc:creator>Mir Shah</dc:creator>
      <pubDate>Sat, 20 Jun 2026 11:24:32 +0000</pubDate>
      <link>https://dev.to/mirshah12/among-liars-the-7th-player-isnt-human-345h</link>
      <guid>https://dev.to/mirshah12/among-liars-the-7th-player-isnt-human-345h</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/june-game-jam-2026-06-03"&gt;June Solstice Game Jam&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;Among Liars&lt;/strong&gt;, a realtime multiplayer elimination where six humans join a room, but the game secretly adds a seventh player: a &lt;strong&gt;Gemini-powered AI&lt;/strong&gt; hiding inside the Spy side.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Detectives&lt;/strong&gt; are trying to expose the hidden AI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Spies&lt;/strong&gt; are trying to protect the AI long enough for the Detectives to run out of chances.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The game is inspired by the &lt;strong&gt;Turing Test&lt;/strong&gt;, but instead of asking &lt;em&gt;"Can AI answer like a human?"&lt;/em&gt;, it asks something more playable:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can AI survive being socially judged by humans?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When the game begins, six human players are split into two teams: &lt;strong&gt;three Detectives&lt;/strong&gt; and &lt;strong&gt;three Spy Agents&lt;/strong&gt;. A hidden &lt;strong&gt;Gemini-powered AI&lt;/strong&gt; is then added to the Spy side, creating a team of &lt;strong&gt;four spies&lt;/strong&gt;. The Detectives must identify the AI, while the Spy Agents work together to keep it hidden.&lt;/p&gt;

&lt;p&gt;Each round starts with a &lt;strong&gt;2-minute warmup&lt;/strong&gt; where teams can plan in private rooms. Detectives discuss who feels suspicious. Spies coordinate how to protect the AI.&lt;/p&gt;

&lt;p&gt;Then one Detective asks a wildcard-style question to the Spy side. The question is automatically sent to every living Spy player and also to the Gemini AI. Everyone answers under pressure, and the Detective has to read the answers like evidence.&lt;/p&gt;

&lt;p&gt;The trick is that Spy-side players receive &lt;strong&gt;new cover names every round&lt;/strong&gt;, so Detectives cannot simply track the AI by name or position. They have to judge tone, timing, weirdness, confidence, and emotional detail.&lt;/p&gt;

&lt;p&gt;A question like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Describe a tiny mistake you made today without making it sound important."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;is much harder than a normal trivia question because it asks for texture, not correctness.&lt;/p&gt;

&lt;p&gt;That is where the game becomes interesting.&lt;/p&gt;

&lt;p&gt;Sometimes AI sounds too polished.&lt;/p&gt;

&lt;p&gt;Sometimes humans sound fake on purpose.&lt;/p&gt;

&lt;p&gt;Sometimes the suspicious answer is suspicious because it is AI.&lt;/p&gt;

&lt;p&gt;Sometimes it is suspicious because a Spy is protecting the AI.&lt;/p&gt;

&lt;p&gt;That tension is the core of &lt;strong&gt;Among Liars&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You can play it here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://amongliars.vercel.app" rel="noopener noreferrer"&gt;https://amongliars.vercel.app&lt;/a&gt;&lt;/p&gt;




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

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




&lt;h2&gt;
  
  
  Live App
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://amongliars.vercel.app" rel="noopener noreferrer"&gt;https://amongliars.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  GitHub Repository
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/abbasmir12/amongliars" rel="noopener noreferrer"&gt;https://github.com/abbasmir12/amongliars&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;The frontend is built with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;Vite&lt;/li&gt;
&lt;li&gt;Framer Motion&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and a custom black-and-white visual style.&lt;/p&gt;

&lt;p&gt;The backend uses &lt;strong&gt;Supabase&lt;/strong&gt; for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Room creation&lt;/li&gt;
&lt;li&gt;Random matchmaking&lt;/li&gt;
&lt;li&gt;Player state&lt;/li&gt;
&lt;li&gt;Role assignment&lt;/li&gt;
&lt;li&gt;Realtime chat&lt;/li&gt;
&lt;li&gt;Private team rooms&lt;/li&gt;
&lt;li&gt;Round state&lt;/li&gt;
&lt;li&gt;Answer storage&lt;/li&gt;
&lt;li&gt;Eliminations&lt;/li&gt;
&lt;li&gt;Win conditions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I used &lt;strong&gt;Supabase Realtime&lt;/strong&gt; instead of a custom WebSocket server, so messages, answers, player changes, and round changes update live across browser tabs and devices.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;6-player waiting room with automatic countdown&lt;/li&gt;
&lt;li&gt;Private role reveal&lt;/li&gt;
&lt;li&gt;Detective-only and Spy-only private rooms&lt;/li&gt;
&lt;li&gt;Public chat&lt;/li&gt;
&lt;li&gt;2-minute planning/warmup phase&lt;/li&gt;
&lt;li&gt;Rotating Spy cover names every round&lt;/li&gt;
&lt;li&gt;Wildcard question flow&lt;/li&gt;
&lt;li&gt;90-second Detective question window&lt;/li&gt;
&lt;li&gt;45-second Spy answer window&lt;/li&gt;
&lt;li&gt;30-second Detective final read window&lt;/li&gt;
&lt;li&gt;Gemini AI answer generation&lt;/li&gt;
&lt;li&gt;Evidence cards&lt;/li&gt;
&lt;li&gt;Detective guess phase&lt;/li&gt;
&lt;li&gt;Round result screen&lt;/li&gt;
&lt;li&gt;Eliminated player tracking&lt;/li&gt;
&lt;li&gt;Detective/Spy win states&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Round Flow
&lt;/h2&gt;

&lt;p&gt;Each round is designed to feel like a small interrogation.&lt;/p&gt;

&lt;p&gt;First, there is a &lt;strong&gt;2-minute warmup&lt;/strong&gt;. During this time everyone can continue talking publicly, but the private rooms are where the real strategy happens.&lt;/p&gt;

&lt;h3&gt;
  
  
  Detective Strategy Room
&lt;/h3&gt;

&lt;p&gt;Detectives discuss:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Who sounds too clean&lt;/li&gt;
&lt;li&gt;Who is avoiding pressure&lt;/li&gt;
&lt;li&gt;What question would expose the AI&lt;/li&gt;
&lt;li&gt;Which answer patterns felt suspicious in previous rounds&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Spy Strategy Room
&lt;/h3&gt;

&lt;p&gt;Spies coordinate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to protect the hidden AI&lt;/li&gt;
&lt;li&gt;How messy or natural their answers should feel&lt;/li&gt;
&lt;li&gt;Whether to draw suspicion away from one player&lt;/li&gt;
&lt;li&gt;How to make the room harder for Detectives to read&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After warmup, one living Detective is selected.&lt;/p&gt;

&lt;p&gt;That Detective receives a &lt;strong&gt;90-second question window&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The Detective writes a wildcard pressure prompt. Once submitted, the question is automatically sent to every living Spy-side player, including the human Spies and the hidden Gemini AI.&lt;/p&gt;

&lt;p&gt;The Spy side then receives a &lt;strong&gt;45-second answer window&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Human Spies type their responses while Gemini generates its answer through a Supabase Edge Function.&lt;/p&gt;

&lt;p&gt;All responses are stored in Supabase and displayed as evidence cards.&lt;/p&gt;

&lt;p&gt;Finally, the selected Detective receives a &lt;strong&gt;30-second final read window&lt;/strong&gt; and must click the answer card they believe belongs to the AI.&lt;/p&gt;

&lt;h3&gt;
  
  
  Resolution
&lt;/h3&gt;

&lt;p&gt;The resolution is intentionally asymmetric:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If the Detective guesses wrong, that Detective is eliminated.&lt;/li&gt;
&lt;li&gt;If the Detective guesses correctly, one human Spy bodyguard is eliminated.&lt;/li&gt;
&lt;li&gt;The AI survives until all human Spies are gone and it has nowhere left to hide.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Undercover Names
&lt;/h2&gt;

&lt;p&gt;One of the most important mechanics is the rotating identity system.&lt;/p&gt;

&lt;p&gt;Spy-side players never keep the same visible name between rounds.&lt;/p&gt;

&lt;p&gt;A player might be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;TAVI&lt;/code&gt; in Round 1&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ORION&lt;/code&gt; in Round 2&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;MICA&lt;/code&gt; in Round 3&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This prevents cheap detective work.&lt;/p&gt;

&lt;p&gt;Detectives cannot simply memorize player names, positions, or patterns tied to a specific identity.&lt;/p&gt;

&lt;p&gt;Instead, they must judge the answers themselves.&lt;/p&gt;

&lt;p&gt;Previous round results preserve the original cover names, so historical evidence remains readable even after identities rotate.&lt;/p&gt;




&lt;h2&gt;
  
  
  Wildcard Questions
&lt;/h2&gt;

&lt;p&gt;The wildcard question is the heart of the game.&lt;/p&gt;

&lt;p&gt;The best questions pressure the difference between a lived human answer and a generated answer.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Describe a tiny mistake you made today without making it sound important."&lt;/li&gt;
&lt;li&gt;"What is a smell that makes you trust a place?"&lt;/li&gt;
&lt;li&gt;"Say something you would only text, not say out loud."&lt;/li&gt;
&lt;li&gt;"Which answer in this room feels rehearsed, and why?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These questions are not about facts.&lt;/p&gt;

&lt;p&gt;They are about texture.&lt;/p&gt;

&lt;p&gt;They force players to produce awkward, emotional, sensory, or social details under pressure.&lt;/p&gt;

&lt;p&gt;That is where the Turing Test becomes playable.&lt;/p&gt;

&lt;h3&gt;
  
  
  Gemini Integration
&lt;/h3&gt;

&lt;p&gt;The Gemini integration runs server-side through a &lt;strong&gt;Supabase Edge Function&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When a Detective submits a question, the function:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Checks the current room and round.&lt;/li&gt;
&lt;li&gt;Finds the hidden AI player.&lt;/li&gt;
&lt;li&gt;Reads the AI's current cover name.&lt;/li&gt;
&lt;li&gt;Sends the question and game context to Gemini.&lt;/li&gt;
&lt;li&gt;Receives a short in-character answer.&lt;/li&gt;
&lt;li&gt;Saves the answer into Supabase.&lt;/li&gt;
&lt;li&gt;Broadcasts it alongside the other Spy answers.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Gemini API key is never exposed to the browser.&lt;/p&gt;

&lt;p&gt;I also added multiple AI behavior styles so Gemini does not always respond with the same personality.&lt;/p&gt;

&lt;p&gt;Sometimes it answers plainly.&lt;/p&gt;

&lt;p&gt;Sometimes it is guarded.&lt;/p&gt;

&lt;p&gt;Sometimes it is short, awkward, or oddly direct.&lt;/p&gt;

&lt;p&gt;The goal is not to make the AI sound perfectly human every time.&lt;/p&gt;

&lt;p&gt;The goal is to make it difficult to separate from the Spy side.&lt;/p&gt;




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

&lt;p&gt;I am submitting for both optional prize categories.&lt;/p&gt;

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

&lt;p&gt;Among Liars is built directly around the idea of the &lt;strong&gt;Turing Test&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;But instead of making the test a static question-and-answer screen, I turned it into a social game.&lt;/p&gt;

&lt;p&gt;The AI is not judged by one answer alone.&lt;/p&gt;

&lt;p&gt;It is judged by how it survives inside a room full of humans who are actively suspicious of it.&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;Can a machine imitate a human well enough to survive pressure, suspicion, and social reading?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That felt like a more interactive tribute to Alan Turing's original imitation game.&lt;/p&gt;




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

&lt;p&gt;Gemini is not a decorative feature in this project.&lt;/p&gt;

&lt;p&gt;It is the hidden player.&lt;/p&gt;

&lt;p&gt;The entire game loop depends on Gemini:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gemini receives the Detective's wildcard question.&lt;/li&gt;
&lt;li&gt;Gemini answers as a Spy-side player.&lt;/li&gt;
&lt;li&gt;Gemini uses the current room context and cover name.&lt;/li&gt;
&lt;li&gt;Gemini's answer becomes evidence the Detective must judge.&lt;/li&gt;
&lt;li&gt;The game cannot fully exist without the AI participant.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I integrated Gemini through a server-side Supabase Edge Function so the API key remains protected and the AI response becomes part of the realtime game state.&lt;/p&gt;

&lt;p&gt;The AI is also given its current undercover identity and round context, allowing it to behave like a player inside the match rather than a generic assistant.&lt;/p&gt;




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

&lt;p&gt;Among Liars started from a simple question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What if the Turing Test was not a test, but a game night?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The result is a tense social deduction game where humans are reading AI, humans are imitating AI, and nobody can fully trust what "normal" sounds like.&lt;/p&gt;

&lt;p&gt;That is the fun part.&lt;/p&gt;

&lt;p&gt;In this game, the AI does not need to be perfect.&lt;/p&gt;

&lt;p&gt;It just needs to survive.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>gamechallenge</category>
      <category>gamedev</category>
      <category>amongliars</category>
    </item>
    <item>
      <title>PROCSee -&gt; Turn Your System Into a Crime Scene &amp; let Gemini Become Investigator!</title>
      <dc:creator>Mir Shah</dc:creator>
      <pubDate>Thu, 26 Feb 2026 15:10:50 +0000</pubDate>
      <link>https://dev.to/mirshah12/procsee-turn-your-system-into-a-crime-scene-let-gemini-become-investigator-hbc</link>
      <guid>https://dev.to/mirshah12/procsee-turn-your-system-into-a-crime-scene-let-gemini-become-investigator-hbc</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/mlh-built-with-google-gemini-02-25-26"&gt;Built with Google Gemini: Writing Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




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

&lt;p&gt;About four weeks ago, the &lt;a href="https://gemini3.devpost.com/" rel="noopener noreferrer"&gt;Gemini 3 Hackathon&lt;/a&gt; dropped — Google DeepMind's global hackathon with a $100K prize pool, asking builders to create something genuinely new with the Gemini 3 API. Not another chatbot. Not a wrapper. Something that actually pushes what the model can do.&lt;/p&gt;

&lt;p&gt;I had one question sitting in my head for a while: &lt;em&gt;what if your computer could investigate itself?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Not just flag a suspicious process. Not just match a signature and throw an alert at you. But actually &lt;em&gt;think&lt;/em&gt; — form a theory, pull more evidence, change its mind, reach a conclusion. The way a real security analyst would.&lt;/p&gt;

&lt;p&gt;That became &lt;strong&gt;PROCSee&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It's an autonomous security investigation system for Windows. It monitors every process on your machine in real-time, and when something looks suspicious, it hands the investigation off to Gemini 3 Pro — which then decides what additional data it needs, queries for it, reasons across multiple rounds of evidence, and writes a full forensic report. The tagline: &lt;em&gt;Turn your system into a crime scene. Let PROCSee be the forensic analyst.&lt;/em&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  How It Actually Works (The Architecture)
&lt;/h3&gt;

&lt;p&gt;Let me walk through this the way I wish someone had explained it to me before I built it, because the architecture decisions were the hardest part — not the AI integration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Catch everything, instantly&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Windows is constantly spawning processes. Updaters, scanners, system services — hundreds of events per hour on a normal machine. The classic approach is polling: check what's running every few seconds. The problem? A piece of malware that executes, drops a payload, and exits in under a second is completely invisible to a poller.&lt;/p&gt;

&lt;p&gt;We used &lt;strong&gt;WMI event callbacks&lt;/strong&gt; instead. WMI (Windows Management Instrumentation) is a pub/sub system built into Windows. You subscribe to process creation events, and the OS calls your code the moment &lt;em&gt;anything&lt;/em&gt; starts — under 10ms latency. We capture it all: the process name, path, parent process, command line, user account, everything. Immediately written to a &lt;strong&gt;raw events database&lt;/strong&gt; in SQLite. No analysis yet. Just capture.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;New Process Starts
      ↓
WMI fires callback (&amp;lt;10ms)
      ↓
Stored in raw_process_events immediately
      ↓
Done. Fast. No AI involved yet.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2: The problem with "just send everything to Gemini"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's where we made our first big mistake, and then fixed it.&lt;/p&gt;

&lt;p&gt;Our first instinct: every time a process starts, send its data to Gemini and ask "is this suspicious?" Simple idea. We tested it. On a normal Windows machine, that's easily 3-5 process creation events per second during active use. At that rate you'd blow through your API quota in literal &lt;em&gt;minutes&lt;/em&gt;. Not hours. Minutes.&lt;/p&gt;

&lt;p&gt;So we needed a smarter funnel before anything touches the API.&lt;/p&gt;

&lt;p&gt;We built a &lt;strong&gt;local behavior-scoring engine&lt;/strong&gt; — zero API cost, runs entirely on-device. It checks 40+ patterns before Gemini ever sees anything:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is PowerShell using &lt;code&gt;-encodedcommand&lt;/code&gt; or &lt;code&gt;-executionpolicy bypass&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;Is a browser spawning a shell? (chrome.exe → powershell.exe is almost never legitimate)&lt;/li&gt;
&lt;li&gt;Is something executing from &lt;code&gt;%TEMP%&lt;/code&gt; or &lt;code&gt;AppData&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;Is &lt;code&gt;certutil.exe&lt;/code&gt; or &lt;code&gt;mshta.exe&lt;/code&gt; making network connections? (classic LOLBins abuse)&lt;/li&gt;
&lt;li&gt;Is a process touching registry persistence keys?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each pattern scores points. If a process scores zero — nothing suspicious — it's logged and forgotten. It never reaches Gemini. Only things that &lt;em&gt;earn&lt;/em&gt; attention get elevated. This alone cut our API calls by around 95%.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: The dual-database architecture&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Even with the scoring filter, we still needed to solve &lt;em&gt;what&lt;/em&gt; Gemini actually sees. This is the core architectural insight of the whole project: &lt;strong&gt;separate "store everything" from "show the AI what matters."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We run two databases side by side:&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;raw events database&lt;/strong&gt; stores every single process event in full detail. This is the forensic record — complete, unfiltered, queryable at any time. It's how we can answer "show me every process that made a network connection to this external IP in the last 30 minutes" without having pre-loaded all of that into Gemini's context.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;summary database&lt;/strong&gt; gets built every 60 seconds. We aggregate the raw events into a 1-minute digest: what was unusual, what matched suspicious patterns, the high-level picture. This is small — a few KB of actual signal. This is what Gemini reads first to orient itself.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Raw Events DB (everything)  →→→  Summary DB (1-min digest)
       ↓                                    ↓
  Forensic record                   Gemini reads this first
  Gemini queries this               to orient itself
  when it needs more detail
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 4: Gemini doesn't just read the data — it decides what it needs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the part we're most proud of, and it's what makes PROCSee different from a standard AI integration.&lt;/p&gt;

&lt;p&gt;Most AI integrations work like this: gather all the data you think is relevant, stuff it into a prompt, hope the AI has what it needs. The problem is you're guessing what it'll need. You either over-send (burns tokens, hits context limits) or under-send (bad analysis).&lt;/p&gt;

&lt;p&gt;We flipped it. After Gemini reads the summary, it can say: "I need more information before I give you a verdict." And then it tells us exactly what it wants:&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;"needs_more_data"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"queries"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"QUERY_PROCESS"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"process_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;4821&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"time_range"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"last_5_minutes"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"details"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"network"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"file_access"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"cpu"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"QUERY_NETWORK"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"time_range"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"last_30_minutes"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"min_connections"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We execute those queries against the raw database, return the results, and Gemini continues its analysis. Another round. It keeps doing this until it's confident enough to give a verdict.&lt;/p&gt;

&lt;p&gt;A real investigation flow looks like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Round 1&lt;/strong&gt; — Gemini reads the summary: &lt;em&gt;"There's suspicious PowerShell activity worth investigating."&lt;/em&gt;&lt;br&gt;
→ We query: full process details for that PowerShell instance&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Round 2&lt;/strong&gt; — Gemini gets the data: &lt;em&gt;"It's making outbound connections to 203.0.113.42, an external IP."&lt;/em&gt;&lt;br&gt;
→ We query: all network activity to that IP across the whole system&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Round 3&lt;/strong&gt; — Gemini gets the data: &lt;em&gt;"Three separate processes are all calling out to the same external IP. This is command-and-control communication."&lt;/em&gt;&lt;br&gt;
→ &lt;strong&gt;Final verdict: CONFIRMED_THREAT — risk 0.95, confidence 0.92&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No human in that loop. Gemini decided what it needed, went and got it, and formed its own conclusion.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: The forensic report&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When risk is ≥50% and confidence is ≥60%, Gemini generates a full Markdown forensic report — written in first person, walking through its investigation process, the evidence chain, MITRE ATT&amp;amp;CK technique mappings, indicators of compromise, and recommended response actions.&lt;/p&gt;

&lt;p&gt;We built a custom renderer for these reports with syntax highlighting for &lt;code&gt;cmd:&lt;/code&gt;, &lt;code&gt;path:&lt;/code&gt;, &lt;code&gt;ip:&lt;/code&gt;, and &lt;code&gt;proc:&lt;/code&gt; prefixes so they read like real analyst documents, not raw AI output.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The stack:&lt;/strong&gt; Python + FastAPI for the backend agent, SQLite with WAL mode for the dual-database architecture, pywin32 for WMI, psutil for process data, React + Vite for the dashboard, WebSocket for real-time streaming, and the &lt;code&gt;google-genai&lt;/code&gt; SDK for Gemini 3 Pro.&lt;/p&gt;




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

&lt;p&gt;

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


&lt;/p&gt;

&lt;p&gt;&lt;em&gt;[GitHub: &lt;a href="https://github.com/abbasmir12/procsee" rel="noopener noreferrer"&gt;https://github.com/abbasmir12/procsee&lt;/a&gt;]&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The dashboard has a few views worth calling out. The &lt;strong&gt;Gemini Conversation View&lt;/strong&gt; is the one that surprised me most when I first saw it working. You can watch in real-time as Gemini issues a &lt;code&gt;QUERY_NETWORK&lt;/code&gt; call, gets results back, immediately pivots to &lt;code&gt;QUERY_PATTERN: shell_spawn&lt;/code&gt; because it noticed something in the results, and keeps iterating toward a verdict. It genuinely looks like watching someone think through a problem — because that's what it is.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Detailed Report Viewer&lt;/strong&gt; renders the final forensic reports with full Markdown and syntax highlighting. Each report includes the complete investigation chain — every query Gemini issued, every piece of evidence it weighed, every confidence score.&lt;/p&gt;




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

&lt;h3&gt;
  
  
  The architecture problem was the real challenge
&lt;/h3&gt;

&lt;p&gt;Here's what I didn't expect going in: the Gemini integration itself was actually the smooth part. Once the architecture was solid, plugging in Gemini was relatively clean. The hard part — the part that took most of the time — was building the system that makes &lt;em&gt;responsible, efficient use&lt;/em&gt; of the API.&lt;/p&gt;

&lt;p&gt;The quota problem hit us immediately. Naive implementation: fire an API call for every process event. Reality: quota exhausted in under an hour on a busy machine. That forced us to completely rethink the data flow. The behavior scoring engine, the 60-second aggregation, the dual-database design — all of that exists because of one question we kept coming back to: &lt;em&gt;how do we make sure Gemini only sees what's actually worth its attention?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Every architectural decision in this project traces back to that question. If you're building anything that involves a continuous data stream and an LLM, that's the question you need to answer first. Everything else flows from it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rate limits aren't just a bug — they shaped the whole system
&lt;/h3&gt;

&lt;p&gt;When we stress-tested with multiple concurrent investigations, we hit rate limits constantly. Five investigations running simultaneously, each doing 3-4 query rounds with large contexts — that's a lot of tokens per minute, very fast.&lt;/p&gt;

&lt;p&gt;The frustrating part: the error messages just said "resource exhausted." Is that requests per minute? Tokens per minute? Daily limit? These have completely different fixes. RPM you solve with throttling and request spacing. TPM you solve with context compression and smarter batching. Daily limits you solve with queuing strategy. Not knowing which one you're hitting means you're guessing at the solution while your quota keeps burning.&lt;/p&gt;

&lt;p&gt;We ended up implementing all three mitigations simultaneously because we couldn't tell which problem we were actually solving: exponential backoff with jitter, a hard cap on &lt;code&gt;max_query_rounds&lt;/code&gt; per investigation (default 4), a global concurrency limit (max 3 deep investigations at once), and dynamic thinking level selection so we're not burning high-compute calls on triage decisions that don't need them. The rate limit constraints literally shaped the concurrency model of the entire system — which is a weird thing to say but it's true.&lt;/p&gt;

&lt;h3&gt;
  
  
  Thinking levels matter more than I expected
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;thinking_level="low"&lt;/code&gt; vs &lt;code&gt;thinking_level="high"&lt;/code&gt; isn't just a speed dial. It changes the quality of reasoning you get and what prompting strategies work well. We use low for fast triage — "is this worth investigating at all?" — and high for deep forensic analysis and report generation.&lt;/p&gt;

&lt;p&gt;Early on we used high thinking everywhere. Slower responses, heavier quota usage, and no meaningful quality improvement for simple yes/no triage decisions. Right tool for the right job. Sounds obvious in retrospect, but figuring out &lt;em&gt;which&lt;/em&gt; job needs which level took real experimentation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cutting features is a skill
&lt;/h3&gt;

&lt;p&gt;We came into the hackathon wanting to build prevention features — automatically suspending suspicious processes, network isolation. Had it half-implemented. Then we cut all of it.&lt;/p&gt;

&lt;p&gt;Not because of time. Because we realized: if you're wrong on a false positive and your tool kills a legitimate process, you've broken trust permanently. Investigation and reporting empowers analysts. Autonomous process-killing is a liability. Cutting that scope made the project sharper and more honest about what it actually is. The disabled &lt;code&gt;beta_prevention&lt;/code&gt; block is still in &lt;code&gt;config.yaml&lt;/code&gt; — kept it as a reminder of the decision.&lt;/p&gt;




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

&lt;h3&gt;
  
  
  What genuinely worked
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The 1M token context window carried the whole investigation model.&lt;/strong&gt; I planned to build summarization logic to manage context across multi-turn investigations — compress old query results, drop less-relevant evidence as rounds progressed. Never needed any of it. The entire investigation history — all the autonomous queries, all the results, all the evidence across multiple rounds — fit comfortably. And Gemini would reason &lt;em&gt;across&lt;/em&gt; all of it in later rounds, catching connections between something from round 1 and new data from round 3. That cross-context reasoning was more capable than I expected going in.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Structured JSON output was rock solid.&lt;/strong&gt; The autonomous query protocol only works if Gemini reliably returns machine-parseable decisions mid-analysis. I was genuinely nervous this would be flaky — sometimes JSON, sometimes Markdown-wrapped, sometimes off-schema. It wasn't. &lt;code&gt;response_mime_type="application/json"&lt;/code&gt; combined with a clear schema in the prompt was consistently reliable even when the underlying reasoning was complex.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Multi-turn reasoning quality is genuinely different.&lt;/strong&gt; The gap between "here's all the data, give me a verdict" and the autonomous multi-turn investigation is not subtle. The model caught things in round 3 that it completely missed or hand-waved in round 1. Letting it pull the data it actually needed, rather than us guessing upfront, made a real difference to the quality of the final verdicts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where we hit friction
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Rate limit error messages need more context.&lt;/strong&gt; "Resource exhausted" isn't actionable. RPM, TPM, and daily limits all require different solutions, and not knowing which constraint you're hitting means you're solving the wrong problem while your quota keeps ticking down. Even a simple error code that differentiates the limit type would have saved us significant debugging time during the crunch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;thinking_level&lt;/code&gt; documentation is thin for practical use.&lt;/strong&gt; Finding the parameter was easy. Understanding the actual tradeoffs — which prompt structures work best at each level, how it affects structured output reliability, what temperature to pair with each level — was entirely trial and error. For anyone building agentic systems where you're making many API calls with different complexity levels, practical guidance here would save a lot of iteration time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemini will over-query if you let it.&lt;/strong&gt; With high thinking enabled, it sometimes issued 5-6 autonomous queries when 2-3 would have been enough for a confident verdict. Thorough is good — but in a long-running monitoring system that's real quota cost accumulating over hours and days. Prompting it toward decisiveness helped somewhat, but the hard &lt;code&gt;max_query_rounds&lt;/code&gt; cap was ultimately necessary as a backstop. Guidance on prompting for query efficiency specifically in agentic loops — not just single-shot quality — would be useful to see in the docs.&lt;/p&gt;




&lt;p&gt;None of this broke the project. The core capability — letting Gemini autonomously decide what it needs and go get it — worked better than expected and is genuinely a different kind of AI integration than the standard request/response loop. PROCSee wouldn't exist without it.&lt;/p&gt;

&lt;p&gt;You can also check out my original Gemini 3 Hackathon submission on Devpost here: &lt;a href="https://devpost.com/software/procsee" rel="noopener noreferrer"&gt;https://devpost.com/software/procsee&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;[GitHub: &lt;a href="https://github.com/abbasmir12/procsee" rel="noopener noreferrer"&gt;https://github.com/abbasmir12/procsee&lt;/a&gt; | Built for the &lt;a href="https://gemini3.devpost.com/" rel="noopener noreferrer"&gt;Gemini 3 Hackathon&lt;/a&gt; on Devpost]&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>geminireflections</category>
      <category>gemini</category>
      <category>ai</category>
    </item>
    <item>
      <title>MindMelee: Beat AI in debate Arena!</title>
      <dc:creator>Mir Shah</dc:creator>
      <pubDate>Sun, 15 Feb 2026 12:36:26 +0000</pubDate>
      <link>https://dev.to/mirshah12/mindmelee-beat-ai-in-debate-arena-5c36</link>
      <guid>https://dev.to/mirshah12/mindmelee-beat-ai-in-debate-arena-5c36</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/github-2026-01-21"&gt;GitHub Copilot CLI Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;MindMelee&lt;/strong&gt; is basically your AI debate partner that's always ready to argue with you (in a good way!). I wanted to create something that helps people get better at debating without needing another person around.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/lqRVlVBc24M" rel="noopener noreferrer"&gt;https://youtu.be/lqRVlVBc24M&lt;/a&gt;&lt;br&gt;
&lt;a href="https://youtu.be/lqRVlVBc24M" rel="noopener noreferrer"&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%2Ficxwgfvr67mg8xmvltdu.jpg" alt="Watch the video" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The app uses Google's Gemini Live API so you can actually talk to it like a real conversation. After each debate, it breaks down your performance - vocabulary, clarity, how persuasive you were, all that stuff. You can pick between two modes: Coach (nice and helpful) or Fierce (actually challenges you).&lt;/p&gt;

&lt;p&gt;The UI is pretty bold - I went for this neubrutalist style inspired by CodeJam. Big timer on the left, your conversation on the right. Only shows the last 5 messages so you stay focused instead of scrolling through everything.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/abbasmir12/mindmelee" rel="noopener noreferrer"&gt;github.com/abbasmir12/mindmelee&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Demo Site:&lt;/strong&gt; &lt;a href="https://mindmelee.vercel.app/" rel="noopener noreferrer"&gt;https://mindmelee.vercel.app/&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Dashboard - Start Your Debate&lt;/strong&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%2Fvfhp2luzhnqnwmir9s8c.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%2Fvfhp2luzhnqnwmir9s8c.png" alt="Dashboard" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live Debate Interface&lt;/strong&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%2F1wb7d6214mg29awgaw4y.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%2F1wb7d6214mg29awgaw4y.png" alt="Live Debate" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Performance Analytics&lt;/strong&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%2F705mjjk44jmi62lsi5xj.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%2F705mjjk44jmi62lsi5xj.png" alt="Analytics" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm still learning - only scored 30 on my first try 😒 Let me know what you get!&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Real-Time Voice Debates&lt;/strong&gt; - Just talk naturally, AI responds right away&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bold Neubrutalist UI&lt;/strong&gt; - CodeJam-inspired design with smooth animations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Comprehensive Analytics&lt;/strong&gt; - See exactly where you're strong and where you need work&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dual AI Modes&lt;/strong&gt; - Coach mode for learning, Fierce mode when you want a real challenge&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Progress Tracking&lt;/strong&gt; - Charts and heatmaps showing your improvement&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Persona Discovery&lt;/strong&gt; - Find out what kind of debater you are&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Okay, so here's the thing - I'm not gonna pretend Copilot CLI built this entire app for me. I designed everything, figured out the architecture, made all the creative decisions. But man, when it came to actually implementing stuff? Copilot CLI saved my life.&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Actually Helped
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Talking to Code&lt;/strong&gt;&lt;br&gt;
Instead of spending hours reading docs, I could just ask Copilot CLI in plain English. Like when I needed the audio visualization thing - I just asked how to make a real-time audio analyzer. It gave me the code AND explained how the WebAudio API actually works. That's huge when you're learning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Smart Suggestions&lt;/strong&gt;&lt;br&gt;
The context-aware stuff is wild. While I was building the UI, it would suggest the exact Tailwind classes I needed for those neubrutalist shadows. It somehow understood the pattern I was going for and kept everything consistent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Instant Debugging&lt;/strong&gt;&lt;br&gt;
My components were re-rendering like crazy on every audio frame (performance nightmare). Copilot CLI spotted the issue immediately and told me to use refs instead. Saved me probably 3 hours of debugging.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learning on the Fly&lt;/strong&gt;&lt;br&gt;
This is what really got me - it doesn't just give you code, it teaches you. When I was struggling with Framer Motion, it explained spring physics and showed me this &lt;code&gt;mode="popLayout"&lt;/code&gt; feature I'd never seen. Every time I used it, I learned something new.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TypeScript Help&lt;/strong&gt;&lt;br&gt;
WebRTC and MediaStream types are confusing as hell. Copilot CLI just... knew the right types. And explained why they were needed. No more tab-switching to docs every 5 seconds.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Real Impact
&lt;/h3&gt;

&lt;p&gt;Look, what would've taken me days of Stack Overflow rabbit holes took minutes with Copilot CLI:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;WebAudio API: 30 minutes vs. probably 4+ hours&lt;/li&gt;
&lt;li&gt;Framer Motion animations: 1 hour vs. a full day of trial and error&lt;/li&gt;
&lt;li&gt;Performance fixes: Instant vs. who knows how long&lt;/li&gt;
&lt;li&gt;TypeScript types: Right there vs. endless doc searching&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But it's not just about speed. Copilot CLI changed how I approach building stuff. I'm not scared to try new APIs anymore because I know I've got this AI pair programmer who can explain things in real-time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Best Moments
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Genius Suggestion&lt;/strong&gt;: Copilot CLI told me to use &lt;code&gt;flex-col-reverse&lt;/code&gt; for the chat feed. New messages at bottom, old ones fade out at top. So simple, so perfect. I wouldn't have thought of that.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Design Consistency&lt;/strong&gt;: It helped me keep the neubrutalist style consistent across 20+ components. Once it understood the pattern, it just... got it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Performance Win&lt;/strong&gt;: Fixed that re-render issue in seconds. Went from laggy mess to smooth 60fps just like that.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Learning&lt;/strong&gt;: Finally understanding React's closure issues with useEffect. Not just fixing the bug, but actually getting why it happened.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;If you're building something complex by yourself, Copilot CLI is like having a senior dev on your team. Not to do the work for you - to help you do it better.&lt;/p&gt;

&lt;p&gt;I knew what I wanted to build. Copilot CLI helped me actually build it without getting stuck every 10 minutes. That's the difference between "cool idea" and "working app."&lt;/p&gt;

&lt;p&gt;MindMelee has real-time voice AI, complex animations, comprehensive analytics - stuff that requires knowing a lot of different things. Copilot CLI made it possible to tackle all of it without drowning in documentation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Try It Yourself
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/abbasmir12/mindmelee.git
&lt;span class="nb"&gt;cd &lt;/span&gt;mindmelee
npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add your Gemini API key in Settings and start debating!&lt;/p&gt;




&lt;p&gt;I had the vision, Copilot CLI helped me execute it.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
      <category>cli</category>
      <category>githubcopilot</category>
    </item>
    <item>
      <title>MindMelee: Beat AI In Arena!</title>
      <dc:creator>Mir Shah</dc:creator>
      <pubDate>Sun, 15 Feb 2026 11:25:03 +0000</pubDate>
      <link>https://dev.to/mirshah12/mindmelee-beat-ai-in-arena-59i0</link>
      <guid>https://dev.to/mirshah12/mindmelee-beat-ai-in-arena-59i0</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/github-2026-01-21"&gt;GitHub Copilot CLI Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;MindMelee&lt;/strong&gt; is basically your AI debate partner that's always ready to argue with you (in a good way!). I wanted to create something that helps people get better at debating without needing another person around.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/lqRVlVBc24M" rel="noopener noreferrer"&gt;https://youtu.be/lqRVlVBc24M&lt;/a&gt;&lt;br&gt;
&lt;a href="https://youtu.be/lqRVlVBc24M" rel="noopener noreferrer"&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%2Ficxwgfvr67mg8xmvltdu.jpg" alt="Watch the video" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The app uses Google's Gemini Live API so you can actually talk to it like a real conversation. After each debate, it breaks down your performance - vocabulary, clarity, how persuasive you were, all that stuff. You can pick between two modes: Coach (nice and helpful) or Fierce (actually challenges you).&lt;/p&gt;

&lt;p&gt;The UI is pretty bold - I went for this neubrutalist style inspired by CodeJam. Big timer on the left, your conversation on the right. Only shows the last 5 messages so you stay focused instead of scrolling through everything.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/abbasmir12/mindmelee" rel="noopener noreferrer"&gt;github.com/abbasmir12/mindmelee&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Demo Site:&lt;/strong&gt; &lt;a href="https://mindmelee.vercel.app/" rel="noopener noreferrer"&gt;https://mindmelee.vercel.app/&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Dashboard - Start Your Debate&lt;/strong&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%2Fvfhp2luzhnqnwmir9s8c.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%2Fvfhp2luzhnqnwmir9s8c.png" alt="Dashboard" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live Debate Interface&lt;/strong&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%2F1wb7d6214mg29awgaw4y.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%2F1wb7d6214mg29awgaw4y.png" alt="Live Debate" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Performance Analytics&lt;/strong&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%2F705mjjk44jmi62lsi5xj.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%2F705mjjk44jmi62lsi5xj.png" alt="Analytics" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm still learning - only scored 30 on my first try 😒 Let me know what you get!&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Real-Time Voice Debates&lt;/strong&gt; - Just talk naturally, AI responds right away&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bold Neubrutalist UI&lt;/strong&gt; - CodeJam-inspired design with smooth animations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Comprehensive Analytics&lt;/strong&gt; - See exactly where you're strong and where you need work&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dual AI Modes&lt;/strong&gt; - Coach mode for learning, Fierce mode when you want a real challenge&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Progress Tracking&lt;/strong&gt; - Charts and heatmaps showing your improvement&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Persona Discovery&lt;/strong&gt; - Find out what kind of debater you are&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Okay, so here's the thing - I'm not gonna pretend Copilot CLI built this entire app for me. I designed everything, figured out the architecture, made all the creative decisions. But man, when it came to actually implementing stuff? Copilot CLI saved my life.&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Actually Helped
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Talking to Code&lt;/strong&gt;&lt;br&gt;
Instead of spending hours reading docs, I could just ask Copilot CLI in plain English. Like when I needed the audio visualization thing - I just asked how to make a real-time audio analyzer. It gave me the code AND explained how the WebAudio API actually works. That's huge when you're learning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Smart Suggestions&lt;/strong&gt;&lt;br&gt;
The context-aware stuff is wild. While I was building the UI, it would suggest the exact Tailwind classes I needed for those neubrutalist shadows. It somehow understood the pattern I was going for and kept everything consistent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Instant Debugging&lt;/strong&gt;&lt;br&gt;
My components were re-rendering like crazy on every audio frame (performance nightmare). Copilot CLI spotted the issue immediately and told me to use refs instead. Saved me probably 3 hours of debugging.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learning on the Fly&lt;/strong&gt;&lt;br&gt;
This is what really got me - it doesn't just give you code, it teaches you. When I was struggling with Framer Motion, it explained spring physics and showed me this &lt;code&gt;mode="popLayout"&lt;/code&gt; feature I'd never seen. Every time I used it, I learned something new.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TypeScript Help&lt;/strong&gt;&lt;br&gt;
WebRTC and MediaStream types are confusing as hell. Copilot CLI just... knew the right types. And explained why they were needed. No more tab-switching to docs every 5 seconds.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Real Impact
&lt;/h3&gt;

&lt;p&gt;Look, what would've taken me days of Stack Overflow rabbit holes took minutes with Copilot CLI:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;WebAudio API: 30 minutes vs. probably 4+ hours&lt;/li&gt;
&lt;li&gt;Framer Motion animations: 1 hour vs. a full day of trial and error&lt;/li&gt;
&lt;li&gt;Performance fixes: Instant vs. who knows how long&lt;/li&gt;
&lt;li&gt;TypeScript types: Right there vs. endless doc searching&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But it's not just about speed. Copilot CLI changed how I approach building stuff. I'm not scared to try new APIs anymore because I know I've got this AI pair programmer who can explain things in real-time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Best Moments
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Genius Suggestion&lt;/strong&gt;: Copilot CLI told me to use &lt;code&gt;flex-col-reverse&lt;/code&gt; for the chat feed. New messages at bottom, old ones fade out at top. So simple, so perfect. I wouldn't have thought of that.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Design Consistency&lt;/strong&gt;: It helped me keep the neubrutalist style consistent across 20+ components. Once it understood the pattern, it just... got it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Performance Win&lt;/strong&gt;: Fixed that re-render issue in seconds. Went from laggy mess to smooth 60fps just like that.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Learning&lt;/strong&gt;: Finally understanding React's closure issues with useEffect. Not just fixing the bug, but actually getting why it happened.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;If you're building something complex by yourself, Copilot CLI is like having a senior dev on your team. Not to do the work for you - to help you do it better.&lt;/p&gt;

&lt;p&gt;I knew what I wanted to build. Copilot CLI helped me actually build it without getting stuck every 10 minutes. That's the difference between "cool idea" and "working app."&lt;/p&gt;

&lt;p&gt;MindMelee has real-time voice AI, complex animations, comprehensive analytics - stuff that requires knowing a lot of different things. Copilot CLI made it possible to tackle all of it without drowning in documentation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Try It Yourself
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/abbasmir12/mindmelee.git
&lt;span class="nb"&gt;cd &lt;/span&gt;mindmelee
npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add your Gemini API key in Settings and start debating!&lt;/p&gt;




&lt;p&gt;I had the vision, Copilot CLI helped me execute it.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
      <category>cli</category>
      <category>githubcopilot</category>
    </item>
  </channel>
</rss>
