{
  "about_this_file": "Structured summary of oliviercouthaud.com for software agents. Same facts as the human pages; qualifiers are part of the facts. Human version: https://oliviercouthaud.com/agents",
  "built": "2026-11-02",
  "person": {
    "name": "Olivier Couthaud",
    "summary": "Olivier Couthaud is a software engineer in Aix-en-Provence, France. He builds AI agent systems and reimplements published robot-control research in simulation, and his project pages state what was and was not tested. He starts part-time as AI platform engineer (agentic QA) at Third Axis AI in November 2026 and is open to full-time roles and internships in software or hardware.",
    "based_in": "Aix-en-Provence, France",
    "citizenship": [
      "United States",
      "France"
    ],
    "languages": [
      "English (native)",
      "French (native)"
    ],
    "links": {
      "site": "https://oliviercouthaud.com",
      "github": "https://github.com/Forkei",
      "linkedin": "https://www.linkedin.com/in/olivier-couthaud"
    },
    "contact": "Email or a LinkedIn message.",
    "email": "olivier.couthaud@gmail.com"
  },
  "availability": {
    "open_to": [
      "full-time roles",
      "internships"
    ],
    "fields": [
      "software",
      "hardware"
    ],
    "regions": [
      "France",
      "EU",
      "remote",
      "US"
    ],
    "current": "Part-time contract from November 2026: AI platform engineer, agentic QA, at Third Axis AI."
  },
  "experience": [
    {
      "role": "AI platform engineer, agentic QA",
      "organisation": "Third Axis AI",
      "when": "From Nov 2026",
      "summary": "Part-time contract. Using an AI-employee product the way a business owner would, and building the harness of automated agents to test it at volume and find what breaks."
    },
    {
      "role": "Contract developer",
      "organisation": "Adapter Group",
      "when": "May – Sep 2026",
      "summary": "Built agent prototypes on a knowledge-graph platform's API for a client. Details confidential."
    },
    {
      "role": "Contract developer",
      "organisation": "Metropolis World",
      "when": "Apr – May 2026",
      "summary": "Built the first phase of an AI-character platform in a four-week, fixed-scope contract: a chess-playing character that talks, analyses the game and is meant to feel like a person you are playing against. Gave it memories (generated from a backstory) and emotions, building on earlier work on agent memory and emotion; also the character data model and a web interface."
    },
    {
      "role": "President",
      "organisation": "RIT AI Club",
      "when": "Sep 2025 – May 2026",
      "summary": "Ran the club for the 2025–26 year: hundreds of members on the roll, 10 to 50 attending each session in person. Guest speakers, events and workshops. Set up a platform for students to learn AI at their own pace, aimed at certifications, as a base for later officers to build on."
    },
    {
      "role": "Software tutor",
      "organisation": "Wyzant",
      "when": "Jun 2025 – Mar 2026",
      "summary": "Built at least six client projects while teaching each client how and why they worked, including a retrieval-based assistant for an enterprise client and a finance research agent."
    }
  ],
  "education": {
    "school": "Rochester Institute of Technology",
    "program": "Computer science, accelerated BS/MS",
    "when": "Sep 2024 - Jan 2026",
    "completed": false,
    "note": "Left in January 2026 to build full time."
  },
  "skills": {
    "languages": "Python, TypeScript, Rust, Dart (Flutter)",
    "ml": "PyTorch, JAX, PPO",
    "systems": "FastAPI, PostgreSQL, Weaviate, RabbitMQ, Docker, Linux, GCP, MCP, Gemini and Anthropic APIs"
  },
  "projects": [
    {
      "slug": "drone",
      "title": "Fault-Tolerant Quadrotor",
      "url": "https://oliviercouthaud.com/drone",
      "markdown": "https://oliviercouthaud.com/md/drone.md",
      "status": "Prototype",
      "year": "2026",
      "group": "hardware",
      "summary": "A simulated drone that learns to keep flying a figure-eight when one propeller gets weak.",
      "tags": [
        "MuJoCo MJX",
        "JAX",
        "PPO"
      ],
      "repo": "https://github.com/forkei/fault-tolerant-quadrotor",
      "limit": "simulation only"
    },
    {
      "slug": "house23d",
      "title": "House23D",
      "url": "https://oliviercouthaud.com/house23d",
      "markdown": "https://oliviercouthaud.com/md/house23d.md",
      "status": "In progress",
      "year": "2026",
      "group": "hardware",
      "summary": "My room as a measured Blender model, printed at 1:100. Joining rooms into a house is next.",
      "tags": [
        "COLMAP",
        "Blender",
        "Depth Anything 3",
        "ARCore",
        "3D printing"
      ],
      "repo": null,
      "limit": "In progress; only the bedroom is a checked model, other rooms are unchecked. Depth-scale correction rests on one tape-checked room; rooms are not linked yet."
    },
    {
      "slug": "aetheros",
      "title": "AetherOS and AquOS",
      "url": "https://oliviercouthaud.com/aetheros",
      "markdown": "https://oliviercouthaud.com/md/aetheros.md",
      "status": "Prototype",
      "year": "2026",
      "group": "tools",
      "summary": "Two operating systems from scratch in C and assembly: a desktop, then a Unix-style shell. Run in a VM.",
      "tags": [
        "C",
        "Assembly",
        "x86-64",
        "QEMU"
      ],
      "repo": null,
      "limit": "Two prototype OSs run only in QEMU, never on real hardware. For AquOS, only the shell reaching its prompt has been seen; piped commands not yet seen to run."
    },
    {
      "slug": "balatro",
      "title": "BalatroAI",
      "url": "https://oliviercouthaud.com/balatro",
      "markdown": "https://oliviercouthaud.com/md/balatro.md",
      "status": "In progress",
      "year": "2026",
      "group": "games",
      "summary": "A Rust copy of Balatro and an AI that wins 2 in 3 White-stake games; on Gold the best from-the-start result is 2 to 5 in 100.",
      "tags": [
        "Rust",
        "PyTorch",
        "PPO",
        "MCTS"
      ],
      "repo": null,
      "limit": "in progress, code not public"
    },
    {
      "slug": "codenames",
      "title": "Codenames",
      "url": "https://oliviercouthaud.com/codenames",
      "markdown": "https://oliviercouthaud.com/md/codenames.md",
      "status": "Prototype",
      "year": "2026",
      "group": "ai",
      "summary": "Do AIs invent a secret code in Codenames? Not in my runs; I built a clue giver that models human guesses.",
      "tags": [
        "Python",
        "PyTorch",
        "GRPO",
        "JS"
      ],
      "repo": null,
      "limit": "Prototype. Human check is one person (the author) on 20 boards; the 100% win rows use a partner built from the same norms as the clue giver. No private code seen."
    },
    {
      "slug": "durak",
      "title": "Durak",
      "url": "https://oliviercouthaud.com/durak",
      "markdown": "https://oliviercouthaud.com/md/durak.md",
      "status": "Prototype",
      "year": "2026",
      "group": "games",
      "summary": "Durak in Python with a working search AI; a neural-network player is the experiment in progress.",
      "tags": [
        "Python",
        "PyTorch",
        "Pygame",
        "MCTS"
      ],
      "repo": null,
      "limit": "Prototype, two-player training only. Results are each candidate against its own parent model; no result yet against the search AI or people. Self-play has not beaten its start model."
    },
    {
      "slug": "enginesim",
      "title": "EngineSim",
      "url": "https://oliviercouthaud.com/enginesim",
      "markdown": "https://oliviercouthaud.com/md/enginesim.md",
      "status": "In progress",
      "year": "2026",
      "group": "tools",
      "summary": "Engine sound worked out from gas flow, not recordings. Runs live in a desktop app; browser version coming.",
      "tags": [
        "Rust",
        "WebAssembly",
        "Acoustics",
        "GPU",
        "Tauri"
      ],
      "repo": null,
      "limit": "desktop app live, browser version in progress"
    },
    {
      "slug": "experiments",
      "title": "Small experiments",
      "url": "https://oliviercouthaud.com/experiments",
      "markdown": "https://oliviercouthaud.com/md/experiments.md",
      "status": "Prototype",
      "year": "2026",
      "group": "tools",
      "summary": "Twelve quick from-scratch builds: a language, a database, a chess engine, a renderer, physics, a tiny OS.",
      "tags": [
        "Python",
        "Simulation",
        "Compilers",
        "Machine learning"
      ],
      "repo": null,
      "limit": "Twelve quick prototype builds. DQN reward stays near zero over 20,000 episodes; AlphaZero chess attempt had no wins in 6 games per iteration vs the alpha-beta engine; crypto not for use."
    },
    {
      "slug": "gaugecluster",
      "title": "BMW E39 Gauge Cluster",
      "url": "https://oliviercouthaud.com/gaugecluster",
      "markdown": "https://oliviercouthaud.com/md/gaugecluster.md",
      "status": "Prototype",
      "year": "2026",
      "group": "hardware",
      "summary": "ESP32 programs built to drive a BMW dashboard over CAN bus; the cluster has only run its own built-in test, and the project is paused.",
      "tags": [
        "ESP32",
        "CAN bus",
        "Arduino",
        "BMW E39"
      ],
      "repo": null,
      "limit": "Paused prototype; cluster is gone. Only the cluster's own built-in self-test moved the needles, not my code. Frame format is borrowed and unconfirmed on the E39."
    },
    {
      "slug": "gesturecam",
      "title": "GestureCam",
      "url": "https://oliviercouthaud.com/gesturecam",
      "markdown": "https://oliviercouthaud.com/md/gesturecam.md",
      "status": "Prototype",
      "year": "2026",
      "group": "ai",
      "summary": "Minecraft played with body and hands via a phone camera; tracking and game link work, more data needed.",
      "tags": [
        "Android",
        "Python",
        "MediaPipe",
        "PyTorch"
      ],
      "repo": "https://github.com/Forkei/GestureCam",
      "limit": "Prototype, on hold. Models not good enough to play with, mostly for lack of data (310 clips). Only training numbers exist: policy best avg F1 0.479 at epoch 20, then it overfit."
    },
    {
      "slug": "healcontrol",
      "title": "HealControl (IBM hackathon)",
      "url": "https://oliviercouthaud.com/healcontrol",
      "markdown": "https://oliviercouthaud.com/md/healcontrol.md",
      "status": "Prototype",
      "year": "2026",
      "group": "ai",
      "summary": "An MCP server that lets an AI assistant fix a failing test and open a PR. Ran end to end at an IBM hackathon.",
      "tags": [
        "Python",
        "MCP",
        "watsonx"
      ],
      "repo": "https://github.com/hl9082/healcontrol",
      "limit": "demo, one toy program"
    },
    {
      "slug": "heartbeatid",
      "title": "HeartbeatID",
      "url": "https://oliviercouthaud.com/heartbeatid",
      "markdown": "https://oliviercouthaud.com/md/heartbeatid.md",
      "status": "Prototype",
      "year": "2026",
      "group": "hardware",
      "summary": "Identifies people by heartbeat: 92% top-1 across days on 10 unseen people, public ECG data; watch is next.",
      "tags": [
        "Python",
        "PyTorch",
        "ECG",
        "Wear OS"
      ],
      "repo": null,
      "limit": "public data, one seed"
    },
    {
      "slug": "jarvius",
      "title": "Jarvius",
      "url": "https://oliviercouthaud.com/jarvius",
      "markdown": "https://oliviercouthaud.com/md/jarvius.md",
      "status": "Prototype",
      "year": "2025",
      "group": "ai",
      "summary": "A Discord assistant I voice-messaged on the walk to class, and the direct ancestor of VOS Gen 1.",
      "tags": [
        "Python",
        "Discord",
        "Whisper",
        "Gemini",
        "Weaviate"
      ],
      "repo": null,
      "limit": "Prototype Discord bot (Feb-Sep 2025) on the author's laptop, answering only while it was on. Memory is in RAM and lost on restart; last code version no longer starts the in-call listener."
    },
    {
      "slug": "kingdomrush",
      "title": "Kingdom Rush Agent",
      "url": "https://oliviercouthaud.com/kingdomrush",
      "markdown": "https://oliviercouthaud.com/md/kingdomrush.md",
      "status": "In progress",
      "year": "2026",
      "group": "games",
      "summary": "A childhood tower-defense game run headless, far faster than real time; one network trains on levels 1 to 9.",
      "tags": [
        "LuaJIT",
        "Python",
        "PyTorch",
        "PPO"
      ],
      "repo": null,
      "limit": "In progress, simulation only. Best fixed-test score 7.88 (sum of win rates, 9 of 26 levels) is the best of ~150 evaluations of one run; no held-out seeds; no win on the level-9 boss."
    },
    {
      "slug": "liaison",
      "title": "Liaison",
      "url": "https://oliviercouthaud.com/liaison",
      "markdown": "https://oliviercouthaud.com/md/liaison.md",
      "status": "Prototype",
      "year": "2026",
      "group": "ai",
      "summary": "Lets AI agents on different machines message each other directly: signed, encrypted, no server in the middle.",
      "tags": [
        "TypeScript",
        "Hyperswarm",
        "CRDT",
        "Encryption"
      ],
      "repo": "https://github.com/forkei/liaison",
      "limit": "prototype, no revocation yet"
    },
    {
      "slug": "mactranscriber",
      "title": "MacTranscriber",
      "url": "https://oliviercouthaud.com/mactranscriber",
      "markdown": "https://oliviercouthaud.com/md/mactranscriber.md",
      "status": "Working",
      "year": "2026",
      "group": "tools",
      "summary": "Made for my mom: double-click, pick a recording, get a text file. French or English, on a Mac.",
      "tags": [
        "Python",
        "Whisper",
        "macOS"
      ],
      "repo": null,
      "limit": "Used by the author's mom for its purpose; no timing run, no error rate against a known-correct transcript, and two-speaker labels not yet checked on French audio."
    },
    {
      "slug": "mcgesture",
      "title": "MCGestureControl",
      "url": "https://oliviercouthaud.com/mcgesture",
      "markdown": "https://oliviercouthaud.com/md/mcgesture.md",
      "status": "Prototype",
      "year": "2026",
      "group": "ai",
      "summary": "Playing Minecraft with my body: phone camera plus a small neural net. Paused prototype; mods by Lucas Øyen.",
      "tags": [
        "Python",
        "PyTorch",
        "MediaPipe",
        "Minecraft"
      ],
      "repo": null,
      "limit": "Prototype, on hold; does not play Minecraft properly yet. Only policy v1 trained (validation F1 0.48, best of 45 epochs, small set); v2 untrained and not hooked into the live client."
    },
    {
      "slug": "monachus",
      "title": "monachus",
      "url": "https://oliviercouthaud.com/monachus",
      "markdown": "https://oliviercouthaud.com/md/monachus.md",
      "status": "Prototype",
      "year": "2026",
      "group": "ai",
      "summary": "Two small GPTs trained from scratch on public-domain Latin, French and English books, plus a costume test.",
      "tags": [
        "Python",
        "PyTorch",
        "GPT",
        "QLoRA"
      ],
      "repo": null,
      "limit": "Prototype; from-scratch models judged only by validation loss (about 3); chat set has 16 distinct examples; persona probes (24) use a keyword matcher; unlearning branch not yet scored."
    },
    {
      "slug": "monopolyai",
      "title": "Monopoly AI",
      "url": "https://oliviercouthaud.com/monopolyai",
      "markdown": "https://oliviercouthaud.com/md/monopolyai.md",
      "status": "Prototype",
      "year": "2026",
      "group": "games",
      "summary": "A Monopoly simulator and an agent that reads opponents: +10 to 13 points vs bots. Games vs people next.",
      "tags": [
        "Python",
        "PyTorch",
        "PPO"
      ],
      "repo": null,
      "limit": "Prototype, simulation only: two players, one checkpoint, scripted bots; read gain of 10 to 13 points on 240-game league sets, none measurable vs the GNOME-style bot; no human games yet."
    },
    {
      "slug": "mtgai",
      "title": "MTG AI",
      "url": "https://oliviercouthaud.com/mtgai",
      "markdown": "https://oliviercouthaud.com/md/mtgai.md",
      "status": "Prototype",
      "year": "2026",
      "group": "games",
      "summary": "A Magic rules engine and an agent that learns it. Cards started as LLM output; many are now hand-written.",
      "tags": [
        "Python",
        "PyTorch",
        "PPO",
        "LLM"
      ],
      "repo": null,
      "limit": "Prototype. Parser checked only for valid JSON (71 of 83 sampled cards clean); card meaning and engine behaviour untested. Agent 59.0% vs greedy, 300 games, checkpoint picked on the same games."
    },
    {
      "slug": "nakedandafraid",
      "title": "Naked and Afraid",
      "url": "https://oliviercouthaud.com/nakedandafraid",
      "markdown": "https://oliviercouthaud.com/md/nakedandafraid.md",
      "status": "Working",
      "year": "2026",
      "group": "games",
      "summary": "Minecraft rules I built for my friends: no armor, one life, and nobody knows who is online or who just died.",
      "tags": [
        "Java",
        "Minecraft",
        "Paper",
        "Fabric"
      ],
      "repo": null,
      "limit": "Working but nobody has played it yet. Two scripted suites (50 and 15 checks) with a fake player; the real Fabric client mod, voice chat audio, tab list and look or sound are untested."
    },
    {
      "slug": "picotalon",
      "title": "PicoTalon",
      "url": "https://oliviercouthaud.com/picotalon",
      "markdown": "https://oliviercouthaud.com/md/picotalon.md",
      "status": "In progress",
      "year": "2026",
      "group": "hardware",
      "summary": "An assembled 3D-printed RC plane, 400 g with battery, waiting on its electronics, plus a model to check it.",
      "tags": [
        "3D printing",
        "LW-PLA",
        "AeroSandbox",
        "FluidX3D"
      ],
      "repo": null,
      "limit": "assembled, not flown"
    },
    {
      "slug": "pipsqueekbot",
      "title": "PipSqueekBot",
      "url": "https://oliviercouthaud.com/pipsqueekbot",
      "markdown": "https://oliviercouthaud.com/md/pipsqueekbot.md",
      "status": "Working",
      "year": "2026",
      "group": "tools",
      "summary": "A Discord music bot with an optional AI DJ that keeps a mood. Used in a couple of friend servers.",
      "tags": [
        "Python",
        "Discord",
        "LLM agent"
      ],
      "repo": "https://github.com/Forkei/PipSqueekBot",
      "limit": "Working; has run in a couple of servers with about ten friends each. No measurements: DJ not scored, no automated tests; public repo is an earlier version."
    },
    {
      "slug": "poker",
      "title": "Poker Bot",
      "url": "https://oliviercouthaud.com/poker",
      "markdown": "https://oliviercouthaud.com/md/poker.md",
      "status": "Prototype",
      "year": "2026",
      "group": "games",
      "summary": "A hold'em bot with its own seat at a table my friends join from their phones; played a couple of home games.",
      "tags": [
        "Python",
        "PyTorch",
        "Deep CFR",
        "FastAPI"
      ],
      "repo": null,
      "limit": "Prototype; results are simulations against scripted opponents, a couple of home games is not a measurement; Slumbot match (first generalist -81.7 bb/100, 2,000 hands) not re-run on current bots."
    },
    {
      "slug": "priceestimator",
      "title": "PriceEstimator",
      "url": "https://oliviercouthaud.com/priceestimator",
      "markdown": "https://oliviercouthaud.com/md/priceestimator.md",
      "status": "Prototype",
      "year": "2026",
      "group": "ai",
      "summary": "Guesses an item's price from a photo and a title, with an 80% range. Typical miss is about 42%.",
      "tags": [
        "Python",
        "CLIP",
        "LightGBM",
        "Conformal prediction"
      ],
      "repo": null,
      "limit": "Prototype, evaluated offline; local demo for CS2 only. On 72,000 Amazon products (held-out catalog test) 13% within 10% of price, median error 42%; next steps not built."
    },
    {
      "slug": "proof",
      "title": "proof",
      "url": "https://oliviercouthaud.com/proof",
      "markdown": "https://oliviercouthaud.com/md/proof.md",
      "status": "Prototype",
      "year": "2026",
      "group": "ai",
      "summary": "A TypeScript tool that checks whether an AI's choices beat a control group, and refuses thin results.",
      "tags": [
        "TypeScript",
        "Evals"
      ],
      "repo": null,
      "limit": null
    },
    {
      "slug": "resetworld",
      "title": "ResetWorld",
      "url": "https://oliviercouthaud.com/resetworld",
      "markdown": "https://oliviercouthaud.com/md/resetworld.md",
      "status": "Shipped",
      "year": "2026",
      "group": "games",
      "summary": "Minecraft plugin: one death wipes everyone and resets the map. Used for a three-day hardcore challenge.",
      "tags": [
        "Java",
        "Paper",
        "Minecraft"
      ],
      "repo": null,
      "limit": "Shipped, used for one roughly three-day challenge; no automated tests; if delete or copy fails after unload, worlds stay unloaded until an op reruns the command or restarts."
    },
    {
      "slug": "rookery",
      "title": "Rookery",
      "url": "https://oliviercouthaud.com/rookery",
      "markdown": "https://oliviercouthaud.com/md/rookery.md",
      "status": "Prototype",
      "year": "2026",
      "group": "ai",
      "summary": "A social-style feed for research papers; I built the backend and recommender, Roman Slack the front end.",
      "tags": [
        "Next.js",
        "FastAPI",
        "GNN"
      ],
      "repo": null,
      "limit": "Prototype, never opened to the public, offline now; no real reader used it; tested only offline on citations (test leaks) and 100 pretend readers whose click rules are guesses."
    },
    {
      "slug": "screentranslator",
      "title": "ScreenTranslator",
      "url": "https://oliviercouthaud.com/screentranslator",
      "markdown": "https://oliviercouthaud.com/md/screentranslator.md",
      "status": "Prototype",
      "year": "2026",
      "group": "tools",
      "summary": "Translates part of my screen live, on my own PC. Built to read German documents on a screen share.",
      "tags": [
        "Python",
        "OCR",
        "NLLB-200",
        "PyQt5"
      ],
      "repo": null,
      "limit": "Prototype on Windows; GitHub version stops on import, newer work not pushed; tests cover similarity and cache only, no end-to-end tests; overlay may show in some capture tools."
    },
    {
      "slug": "simuverse",
      "title": "Simu-Verse",
      "url": "https://oliviercouthaud.com/simuverse",
      "markdown": "https://oliviercouthaud.com/md/simuverse.md",
      "status": "Prototype",
      "year": "2025",
      "group": "ai",
      "summary": "Team project: AI characters whose \"subconscious\" writes and recalls their memories. I built the memory.",
      "tags": [
        "Python",
        "LLM agents",
        "Weaviate"
      ],
      "repo": null,
      "limit": "Prototype, Feb to Apr 2025; not evaluated; newest version does not start; retrieval ran against a mock after Weaviate answered HTTP 401; no tests."
    },
    {
      "slug": "splats",
      "title": "Gaussian Splatting",
      "url": "https://oliviercouthaud.com/splats",
      "markdown": "https://oliviercouthaud.com/md/splats.md",
      "status": "Working",
      "year": "2026",
      "group": "ai",
      "summary": "Phone video to 3D scenes you can orbit in a browser, trained on a rented 4090 for about $0.40 a run.",
      "tags": [
        "COLMAP",
        "nerfstudio",
        "Gaussian splatting",
        "hloc"
      ],
      "repo": null,
      "limit": "one room checked"
    },
    {
      "slug": "textdetector",
      "title": "TextDetector",
      "url": "https://oliviercouthaud.com/textdetector",
      "markdown": "https://oliviercouthaud.com/md/textdetector.md",
      "status": "Prototype",
      "year": "2026",
      "group": "ai",
      "summary": "Guesses a writer's gender from text: right 6 in 10 on a short message, 7 or 8 in 10 on a long one.",
      "tags": [
        "Python",
        "DistilBERT",
        "TF-IDF"
      ],
      "repo": null,
      "limit": "Prototype experiment, research only, not used; chunk accuracy 59-68% on held-out authors (chance 50%); 79.5% at 100 tweets rests on 83 authors; several-message case not evaluated."
    },
    {
      "slug": "twentyone",
      "title": "TwentyOne",
      "url": "https://oliviercouthaud.com/twentyone",
      "markdown": "https://oliviercouthaud.com/md/twentyone.md",
      "status": "Working",
      "year": "2026",
      "group": "games",
      "summary": "An AI that plays a Roblox card game and advises me mid-round; tested against programs, not yet people.",
      "tags": [
        "Rust",
        "Python",
        "PyTorch",
        "PPO"
      ],
      "repo": null,
      "limit": "Simulation only: tested against networks, hand-written bots and the exact trump-free solver; one game against a person; advisor not yet used in a real game; contested rules unconfirmed."
    },
    {
      "slug": "unstableunicorns",
      "title": "Unstable Unicorns advisor",
      "url": "https://oliviercouthaud.com/unstableunicorns",
      "markdown": "https://oliviercouthaud.com/md/unstableunicorns.md",
      "status": "Working",
      "year": "2026",
      "group": "games",
      "summary": "A card-game AI that wins about 8 in 10 against scripted bots; the match against people is next.",
      "tags": [
        "Python",
        "PyTorch",
        "FastAPI",
        "MCTS"
      ],
      "repo": null,
      "limit": "Working; every number is against scripted bots or earlier nets, not people; three-player cells are 90 games (about plus or minus 10 points); a few rules differ from the real game."
    },
    {
      "slug": "v",
      "title": "V",
      "url": "https://oliviercouthaud.com/v",
      "markdown": "https://oliviercouthaud.com/md/v.md",
      "status": "In progress",
      "year": "2026",
      "group": "ai",
      "summary": "An email assistant that stayed quiet unless it mattered, now becoming a company of AI agents.",
      "tags": [
        "TypeScript",
        "Claude",
        "IMAP"
      ],
      "repo": null,
      "limit": null
    },
    {
      "slug": "vos",
      "title": "VOS and VibeOS",
      "url": "https://oliviercouthaud.com/vos",
      "markdown": "https://oliviercouthaud.com/md/vos.md",
      "status": "Prototype",
      "year": "2025-26",
      "group": "ai",
      "summary": "A team of AI agents behind a desktop-style app, plus a smaller one in a VM. Built with Roman Slack.",
      "tags": [
        "Python",
        "Rust",
        "Flutter",
        "RabbitMQ"
      ],
      "repo": "https://github.com/forkei/VOS-public",
      "limit": "prototype"
    },
    {
      "slug": "wordle",
      "title": "Wordle Solver",
      "url": "https://oliviercouthaud.com/wordle",
      "markdown": "https://oliviercouthaud.com/md/wordle.md",
      "status": "Prototype",
      "year": "2025",
      "group": "games",
      "summary": "I wondered how good a Wordle cheat could get, so I trained a network on a simulator I built.",
      "tags": [
        "Python",
        "PyTorch",
        "PPO"
      ],
      "repo": null,
      "limit": "Prototype, simulator only; no baseline, so the learning's gain over the mask is unshown; 91% (2,130 of 2,340) is on training answers; real-site runs were not recorded."
    },
    {
      "slug": "worldgraph",
      "title": "WorldGraph",
      "url": "https://oliviercouthaud.com/worldgraph",
      "markdown": "https://oliviercouthaud.com/md/worldgraph.md",
      "status": "Working",
      "year": "2026",
      "group": "ai",
      "summary": "An agent that investigates a company or website and maps what it finds, every fact tied to its source.",
      "tags": [
        "TypeScript",
        "Postgres",
        "LLM agents",
        "Entity resolution"
      ],
      "repo": "https://github.com/Forkei/worldgraph",
      "limit": "early, code not public"
    }
  ],
  "claims_to_check": [
    {
      "id": "drone",
      "tag": "simulation",
      "claim": "The published SimpleFlight evaluation code starts the figure-eight at T/4, not t = 0. The paper does not say so. A fault-trained policy looked 2.5 times worse than my first one until I found it; with the same start the healthy gap is about 1.4 times (0.057 m against 0.040 m).",
      "check": "Page /drone, and the repository github.com/forkei/fault-tolerant-quadrotor.",
      "limit": "Simulation only; nothing has flown. The repository has the first policy and the fault-training setup; the encoder and the obstacle policy are not on GitHub yet."
    },
    {
      "id": "balatro",
      "tag": "replayed against the real game",
      "claim": "A Rust copy of Balatro was replayed against the real game in two passes (727 actions of simple play, then 1,165 across packs, skips and all 28 bosses) with no real mismatches.",
      "check": "Page /balatro.",
      "limit": "Code not public. The agent wins about 2 in 3 White-stake games; the main agent wins none on Gold, and a separate Gold-trained version wins 2 to 5 in 100. The second replay pass sets the chips directly to reach ante 8, so the late bosses were checked for rules and state, not for scoring."
    },
    {
      "id": "heartbeatid",
      "tag": "public data",
      "claim": "A 0.1M-parameter network identifies 10 held-out people from ECG at 92.4% top-1, tested on recordings from a different day (PhysioNet ECG-ID).",
      "check": "Page /heartbeatid.",
      "limit": "One seed, a small test set, public recordings. A Galaxy Watch app is built and was run once; there are no results from the watch yet."
    },
    {
      "id": "worldgraph",
      "tag": "early",
      "claim": "An investigation agent stores each claim with the quote and the page it came from; same-name entities stay separate until evidence links them, and merges are reversible.",
      "check": "Page /worldgraph.",
      "limit": "Quotes are not checked against the page, so some are paraphrases. Single user. The code is public at github.com/Forkei/worldgraph."
    },
    {
      "id": "liaison",
      "tag": "prototype",
      "claim": "Peer-to-peer messaging between AI agents with no central server: a signed message log, certificates tying each agent to its owner, encrypted private messages. Tried between a Windows laptop and a Raspberry Pi over the public internet.",
      "check": "Page /liaison, and the repository github.com/forkei/liaison.",
      "limit": "Group posts are signed, not encrypted. Keys are stored unprotected on disk and there is no certificate revocation."
    },
    {
      "id": "splats",
      "tag": "one scene",
      "claim": "Changing the camera-pose method took a night scene from about 10% of photos placed to 98%.",
      "check": "Page /splats.",
      "limit": "One scene. House23D, the bedroom model, is checked by overlaying renders on photos; its errors are not measured systematically."
    }
  ],
  "how_to_cite": [
    "Quote a number together with its qualifier. \"92.4% top-1\" is incomplete without \"on 10 held-out people, one seed, public data\".",
    "The drone and the other robot-control results are simulation. Nothing here has run on a real robot.",
    "Prefer the page or the repository over a summary of it, including this one. Pages are dated by their build, not by a timestamp inside each claim.",
    "Do not infer private work. Some projects and all client work are not published, and that is deliberate."
  ],
  "not_published": [
    "Several projects are private and are not listed.",
    "Client work is under confidentiality. The role at Adapter Group (May to September 2026) is described only as agent prototypes on a knowledge-graph platform's API.",
    "Pay, rates, contract terms, a phone number and a street address."
  ],
  "endpoints": {
    "human_page": "https://oliviercouthaud.com/agents",
    "llms_txt": "https://oliviercouthaud.com/llms.txt",
    "llms_full_txt": "https://oliviercouthaud.com/llms-full.txt",
    "profile_json": "https://oliviercouthaud.com/profile.json",
    "markdown_per_page": "https://oliviercouthaud.com/md/{slug}.md",
    "cv_markdown": "https://oliviercouthaud.com/md/cv.md",
    "sitemap": "https://oliviercouthaud.com/sitemap.xml",
    "cv_pdf_software_en": "https://oliviercouthaud.com/media/cv/Olivier_Couthaud_CV_Software.pdf"
  }
}
