<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Jonathan Andrei — Build journals</title>
    <link>https://jonathanandrei.com/blog/</link>
    <description>What was hard, what broke, what survived the cut — one post per project.</description>
    <language>en</language>
    <lastBuildDate>Wed, 20 May 2026 13:06:44 GMT</lastBuildDate>
    <atom:link href="https://jonathanandrei.com/feed.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>Putting Five Minds in a Candle-Lit Room</title>
      <link>https://jonathanandrei.com/blog/salon-generative-agents-you-can-walk-into/</link>
      <guid isPermaLink="true">https://jonathanandrei.com/blog/salon-generative-agents-you-can-walk-into/</guid>
      <pubDate>Wed, 20 May 2026 00:00:00 GMT</pubDate>
      <description>What would Baldwin actually say about AI? I built Salon to find out — a room where five generated agents debate your question in real time, remember what was said, and quietly walk closer to whoever challenged them.</description>
      <author>noreply@jonathanandrei.com (Jonathan Andrei)</author>
      <category>Generative Agents</category>
      <category>Multi-Agent</category>
      <category>MeDo</category>
      <category>ERNIE</category>
      <category>Research</category>
    </item>
    <item>
      <title>A Film Festival Where AI Models Compete as Directors</title>
      <link>https://jonathanandrei.com/blog/auteur-the-first-multi-model-film-festival/</link>
      <guid isPermaLink="true">https://jonathanandrei.com/blog/auteur-the-first-multi-model-film-festival/</guid>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <description>One sentence, six imaginary directors, six different model stacks. The canvas itself is the artifact — not just the final video. Built in one shot across 90 nodes and 85 edges via MCP-driven scaffolding.</description>
      <author>noreply@jonathanandrei.com (Jonathan Andrei)</author>
      <category>Multi-Model</category>
      <category>Generative Video</category>
      <category>Melius</category>
      <category>MCP</category>
      <category>Direction</category>
    </item>
    <item>
      <title>Where Prediction Markets Systematically Fail</title>
      <link>https://jonathanandrei.com/blog/polymarket-decoded-live-mispricing-scanner/</link>
      <guid isPermaLink="true">https://jonathanandrei.com/blog/polymarket-decoded-live-mispricing-scanner/</guid>
      <pubDate>Sun, 10 May 2026 00:00:00 GMT</pubDate>
      <description>19,858 resolved Polymarket markets. A 32 percentage-point structural framing bias. An isotonic calibrator that beats raw market on Brier by an order of magnitude — out of sample. And a live scanner sitting on top of all of it.</description>
      <author>noreply@jonathanandrei.com (Jonathan Andrei)</author>
      <category>Calibration</category>
      <category>Prediction Markets</category>
      <category>Data Science</category>
      <category>Polymarket</category>
    </item>
    <item>
      <title>Five MCP Tools That See a Pregnancy as One Clinical Unit</title>
      <link>https://jonathanandrei.com/blog/maternal-guard-fhir-mcp/</link>
      <guid isPermaLink="true">https://jonathanandrei.com/blog/maternal-guard-fhir-mcp/</guid>
      <pubDate>Tue, 05 May 2026 00:00:00 GMT</pubDate>
      <description>US maternal mortality keeps rising, and over 80% of pregnancy-related deaths are preventable. The predictive signals live across completely different parts of the chart. I built an MCP server that aggregates them — and a Triage agent that delegates to it.</description>
      <author>noreply@jonathanandrei.com (Jonathan Andrei)</author>
      <category>FHIR</category>
      <category>MCP</category>
      <category>Healthcare</category>
      <category>A2A</category>
      <category>Clinical AI</category>
    </item>
    <item>
      <title>Shipping a Bilingual Marketing Site That a Quebec Team Can Own</title>
      <link>https://jonathanandrei.com/blog/al-pro-solutions-bilingual-roofing-solar-marketing/</link>
      <guid isPermaLink="true">https://jonathanandrei.com/blog/al-pro-solutions-bilingual-roofing-solar-marketing/</guid>
      <pubDate>Tue, 10 Feb 2026 00:00:00 GMT</pubDate>
      <description>Roofing and solar buyers don&apos;t read marketing copy linearly. They scan for trust signals, hours, and &apos;does this person know what I have on my roof?&apos; The AL Pro build is tuned for that — bilingual, scannable, and SEO-hardened against AI-driven audits.</description>
      <author>noreply@jonathanandrei.com (Jonathan Andrei)</author>
      <category>React</category>
      <category>Vite</category>
      <category>SEO</category>
      <category>i18n</category>
      <category>Quebec</category>
    </item>
    <item>
      <title>50 Screens, 25 Tables, One Solo Developer, One Month</title>
      <link>https://jonathanandrei.com/blog/roamly-social-discovery-for-modern-nomads/</link>
      <guid isPermaLink="true">https://jonathanandrei.com/blog/roamly-social-discovery-for-modern-nomads/</guid>
      <pubDate>Sun, 25 Jan 2026 00:00:00 GMT</pubDate>
      <description>Building a real social platform for the RevenueCat Shipyard hackathon meant treating it like a startup, not a demo. Swipe-based discovery, real-time chat, convergence detection, RevenueCat-gated features, all behind Supabase Row Level Security.</description>
      <author>noreply@jonathanandrei.com (Jonathan Andrei)</author>
      <category>React Native</category>
      <category>Supabase</category>
      <category>RLS</category>
      <category>RevenueCat</category>
      <category>Hackathon</category>
    </item>
    <item>
      <title>Turning a Phone into a Director Workflow</title>
      <link>https://jonathanandrei.com/blog/shot-supervisor-deterministic-shot-planning/</link>
      <guid isPermaLink="true">https://jonathanandrei.com/blog/shot-supervisor-deterministic-shot-planning/</guid>
      <pubDate>Mon, 15 Dec 2025 00:00:00 GMT</pubDate>
      <description>Most AI generators want you to prompt one image at a time. Shot Supervisor flips it: a project breaks down into scenes, scenes into shots, and Bria FIBO&apos;s deterministic JSON-native control keeps the visual language consistent across all of them.</description>
      <author>noreply@jonathanandrei.com (Jonathan Andrei)</author>
      <category>React Native</category>
      <category>Bria FIBO</category>
      <category>Generative Image</category>
      <category>Mobile</category>
    </item>
    <item>
      <title>Why I Built an AI Exoplanet Classifier That Says &apos;I Don&apos;t Know&apos;</title>
      <link>https://jonathanandrei.com/blog/novatrace-exoplanet-discovery-with-confidence/</link>
      <guid isPermaLink="true">https://jonathanandrei.com/blog/novatrace-exoplanet-discovery-with-confidence/</guid>
      <pubDate>Mon, 20 Oct 2025 00:00:00 GMT</pubDate>
      <description>An XGBoost classifier on NASA Kepler/K2/TESS data is a Saturday afternoon. The interesting part is the UNKNOWN class — making the model refuse to commit on low-confidence cases instead of pretending to be confident.</description>
      <author>noreply@jonathanandrei.com (Jonathan Andrei)</author>
      <category>XGBoost</category>
      <category>NASA</category>
      <category>Three.js</category>
      <category>Calibration</category>
    </item>
    <item>
      <title>Why I Turned a Steam Deck into a 3D Printer Console</title>
      <link>https://jonathanandrei.com/blog/steam-print-voice-to-print-on-steam-deck/</link>
      <guid isPermaLink="true">https://jonathanandrei.com/blog/steam-print-voice-to-print-on-steam-deck/</guid>
      <pubDate>Mon, 15 Sep 2025 00:00:00 GMT</pubDate>
      <description>An award-winning OpenAI Open Model Hackathon project: gpt-oss models running offline on a Steam Deck, voice control through Vosk, STL viewing in OpenGL, and OctoPi for the actual printing. From &apos;print me a hook for my desk&apos; to a hook on the build plate.</description>
      <author>noreply@jonathanandrei.com (Jonathan Andrei)</author>
      <category>Steam Deck</category>
      <category>gpt-oss</category>
      <category>Voice</category>
      <category>3D Printing</category>
      <category>Award</category>
    </item>
    <item>
      <title>Helping Condo Owners Argue with 200-Page PDFs</title>
      <link>https://jonathanandrei.com/blog/condoshield-special-assessment-analysis/</link>
      <guid isPermaLink="true">https://jonathanandrei.com/blog/condoshield-special-assessment-analysis/</guid>
      <pubDate>Fri, 20 Jun 2025 00:00:00 GMT</pubDate>
      <description>A special assessment notice lands and a condo owner has 30 days to decide whether to fight it. The PDF is 200 pages of accounting and legalese. CondoShield reads it, surfaces the levers, and drafts the dispute letter — in English or French.</description>
      <author>noreply@jonathanandrei.com (Jonathan Andrei)</author>
      <category>Next.js</category>
      <category>Azure AI</category>
      <category>OCR</category>
      <category>Legal</category>
      <category>Multilingual</category>
    </item>
    <item>
      <title>FHIR + CDS Hooks + Gemini: a Risk Score a Clinician Will Actually Read</title>
      <link>https://jonathanandrei.com/blog/predictive-ai-healthcare-meldrx/</link>
      <guid isPermaLink="true">https://jonathanandrei.com/blog/predictive-ai-healthcare-meldrx/</guid>
      <pubDate>Sat, 01 Mar 2025 00:00:00 GMT</pubDate>
      <description>Risk scores die when they&apos;re black boxes. MeldRx integration via FHIR/CDS Hooks pulls patient data; Gemini Flash returns structured JSON with explanations, confidence, and recommended actions; the UI hands clinicians a downloadable PDF report.</description>
      <author>noreply@jonathanandrei.com (Jonathan Andrei)</author>
      <category>FHIR</category>
      <category>CDS Hooks</category>
      <category>Gemini</category>
      <category>Healthcare</category>
    </item>
    <item>
      <title>Letting Gemini Write SQL Against BigQuery, So Fans Don&apos;t Have To</title>
      <link>https://jonathanandrei.com/blog/baseball-ai-generator-google-mlb/</link>
      <guid isPermaLink="true">https://jonathanandrei.com/blog/baseball-ai-generator-google-mlb/</guid>
      <pubDate>Sat, 01 Feb 2025 00:00:00 GMT</pubDate>
      <description>Personalized baseball coverage that actually personalizes: follow your players, pick your schedule, and an LLM-translated SQL layer lets the AI generate stats and visualizations against fresh MLB data without code changes.</description>
      <author>noreply@jonathanandrei.com (Jonathan Andrei)</author>
      <category>Gemini</category>
      <category>BigQuery</category>
      <category>Vertex AI</category>
      <category>Multilingual</category>
    </item>
    <item>
      <title>What I Learned Building a Browser Extension Around Chrome&apos;s Built-in AI</title>
      <link>https://jonathanandrei.com/blog/instaq-chrome-extension/</link>
      <guid isPermaLink="true">https://jonathanandrei.com/blog/instaq-chrome-extension/</guid>
      <pubDate>Sun, 01 Dec 2024 00:00:00 GMT</pubDate>
      <description>Chrome&apos;s Prompt, Summarizer, and Translator APIs make on-device AI a reality. InstaQ stitches them together so any webpage becomes a Q&amp;A surface — with sessions you can come back to.</description>
      <author>noreply@jonathanandrei.com (Jonathan Andrei)</author>
      <category>Chrome</category>
      <category>Prompt API</category>
      <category>On-Device AI</category>
      <category>Extension</category>
    </item>
    <item>
      <title>Driving a 3D Map by Voice</title>
      <link>https://jonathanandrei.com/blog/google-photorealistic-3d-maps/</link>
      <guid isPermaLink="true">https://jonathanandrei.com/blog/google-photorealistic-3d-maps/</guid>
      <pubDate>Fri, 01 Nov 2024 00:00:00 GMT</pubDate>
      <description>Google&apos;s photorealistic 3D Maps API meets WebkitSpeechRecognition. Say &apos;drive me from Mile End to Old Port via the Lachine Canal&apos; and the camera flies. Toggle between driving, walking, cycling, transit.</description>
      <author>noreply@jonathanandrei.com (Jonathan Andrei)</author>
      <category>Google Maps</category>
      <category>Voice</category>
      <category>3D</category>
      <category>Hackathon</category>
    </item>
    <item>
      <title>Building a Charity Site Non-Developers Can Actually Maintain</title>
      <link>https://jonathanandrei.com/blog/fog-canada-charity-golf-tournament/</link>
      <guid isPermaLink="true">https://jonathanandrei.com/blog/fog-canada-charity-golf-tournament/</guid>
      <pubDate>Mon, 15 Jan 2024 00:00:00 GMT</pubDate>
      <description>F.O.G. Canada (Friends of Golf) raises money for community causes through an annual golf tournament. The brief was simple: ship a site the team can edit themselves between cycles. WordPress + Elementor, tuned for non-developers, with sponsorship tiers as drag-and-drop modules.</description>
      <author>noreply@jonathanandrei.com (Jonathan Andrei)</author>
      <category>WordPress</category>
      <category>Charity</category>
      <category>Elementor</category>
      <category>Long-term</category>
    </item>
    <item>
      <title>Quaternions, IMUs, and a Wireless C++ App That Doesn&apos;t Lie About Drift</title>
      <link>https://jonathanandrei.com/blog/wireless-motion-capture-rotation/</link>
      <guid isPermaLink="true">https://jonathanandrei.com/blog/wireless-motion-capture-rotation/</guid>
      <pubDate>Fri, 15 Apr 2022 00:00:00 GMT</pubDate>
      <description>Reading IMU data over wireless and turning it into a stable 3D rotation in OpenGL is mostly an exercise in fighting drift honestly. The hardware lies; the math tells you when.</description>
      <author>noreply@jonathanandrei.com (Jonathan Andrei)</author>
      <category>C++</category>
      <category>IMU</category>
      <category>OpenGL</category>
      <category>Quaternions</category>
    </item>
    <item>
      <title>Why I Used the Observer Pattern for a Tiny Fitness App</title>
      <link>https://jonathanandrei.com/blog/dynamic-fitness-graphs-observer-pattern/</link>
      <guid isPermaLink="true">https://jonathanandrei.com/blog/dynamic-fitness-graphs-observer-pattern/</guid>
      <pubDate>Fri, 01 Apr 2022 00:00:00 GMT</pubDate>
      <description>The observer pattern gets taught as a textbook example. Building a real-time fitness chart that updates from multiple sources made it earn its keep.</description>
      <author>noreply@jonathanandrei.com (Jonathan Andrei)</author>
      <category>JavaScript</category>
      <category>Charts</category>
      <category>Design Patterns</category>
    </item>
    <item>
      <title>Wiring a Glove to a 3D Hand</title>
      <link>https://jonathanandrei.com/blog/motion-capture-hand-arduino-blender/</link>
      <guid isPermaLink="true">https://jonathanandrei.com/blog/motion-capture-hand-arduino-blender/</guid>
      <pubDate>Wed, 15 Dec 2021 00:00:00 GMT</pubDate>
      <description>Arduino, a fistful of IMUs, the Blender Python API, and the joy of watching a virtual skeleton wave back at you for the first time.</description>
      <author>noreply@jonathanandrei.com (Jonathan Andrei)</author>
      <category>Arduino</category>
      <category>C</category>
      <category>Blender API</category>
      <category>Hardware</category>
    </item>
    <item>
      <title>A-Star Has No Idea You&apos;re Bluffing</title>
      <link>https://jonathanandrei.com/blog/multiplayer-card-game-with-ai/</link>
      <guid isPermaLink="true">https://jonathanandrei.com/blog/multiplayer-card-game-with-ai/</guid>
      <pubDate>Thu, 15 Apr 2021 00:00:00 GMT</pubDate>
      <description>Building AI opponents for a tactical card game taught me that classic search (A*, BFS, DFS) is great at finding paths and terrible at reading a player. The fix wasn&apos;t a smarter algorithm — it was a heuristic that pretended to.</description>
      <author>noreply@jonathanandrei.com (Jonathan Andrei)</author>
      <category>C++</category>
      <category>Game AI</category>
      <category>Algorithms</category>
    </item>
  </channel>
</rss>
