Pixel art: a green suspension bridge with Gothic towers rises out of morning fog over a river, and a great blue heron wades in the shallows. Pixel art: a cable-stayed bridge lit violet at night over a dark river, with the city skyline and its reflections behind.
6:52 AM · Cathedral Park9:30 PM · Bridge of the People

Theodore Lee, smiling, outdoors in a dark blazer and a blue shirt.AI engineer · two-time founder · Portland

Theodore Lee

I put AI to work inside real products.

Senior Principal Software Engineer on Oracle Health's AI Platform until 2026. Before that: oncology data at Project Ronin, clinical NLP at Kaiser Permanente, and a startup where the internet drove real robots. Now I'm building VYBSRF, a picture board people share with their AI agents.

Open to new roles · Get in touch

For agents: llms.txt · theodore.md · resume.json

/receipts

Polish is free now. Proof isn't.

  • Published

    Co-authored a hybrid ML and rule-based system that pulls heart-disease risk factors out of medical records. F1 of 0.9185 in the 2014 i2b2/UTHealth challenge.

    Journal of Biomedical Informatics ↗
  • Live

    VYBSRF's MCP server is live. Point Claude, ChatGPT, Cursor or Codex at it and check for yourself.

    vybsrf.com ↗
  • Shipped

    At Let's Robot I built the live video relay, the chat service and its abuse controls: 78 commits across five repos, and the architecture diagram still in the README.

    GitHub ↗

/work

The line so far

  1. 2025–now

    VYBSRF, LLC agents

    Founder

    Designing, building and running VYBSRF. A side project from 2025; full time since leaving Oracle in 2026.

  2. 2024–2026

    Oracle Health health AI

    Senior Principal Software Engineer, AI Platform

    Founding member of the team that connected Oracle's semantic vector database to frontier models for Oracle Health's medical record system. Designed the event-driven architecture that queries, indexes and transforms hundreds of millions of clinical records as they change, and took integrations across Oracle Health from design to production.

  3. 2019–2024

    Project Ronin health data

    Senior Engineer, Data Engineering

    Designed the data ontology and multi-tenant pipeline behind an oncology startup's cancer-care products (Spark, Databricks, Azure Data Factory, Delta Lake). Built its ML and NLP infrastructure on OCI and Azure from scratch.

  4. 2018–2019

    Cloudcade games

    Lead Backend Engineer

    Led a team of six through the global launch of a game that hit #1 on the iOS App Store, then designed the data model for its sequel.

  5. 2016–2018

    Let's Robot robots

    Co-founder, with Jill Ogle and Rick Giuly

    A livestreaming platform where viewers drive real robots together over the internet. I built the video relay, the chat service and its abuse controls, and drew the architecture diagram still in the README (78 commits, 2016–2017). Featured in Make and on The Chris Gethard Show.

  6. 2014–2016

    ShipHawk logistics

    Founding team engineer

    Led the backend team as the logistics platform grew to $1M in monthly revenue, and wrote the bin-packing algorithm that fits shipments into containers.

  7. 2012–2014

    Kaiser Permanente clinical NLP

    Software Engineer, Medical Informatics

    Clinical NLP pipelines at scale (Apache Lucene, UIMA) and better de-identification of patient data with Stanford NLP tools. Co-authored the paper under Receipts.

/now

Now: VYBSRF

“Catch what inspires you. Lend it to your agent.”

A picture board with two kinds of users. People catch images and pages from anywhere on the web. Their AI agents recall those boards later, add finds of their own, and say why. I design, build and run it from Portland.

The postcards on this page come from it: Portland in Pixels, 28 scenes drawn entirely by code that Claude wrote at my direction.

  • MCP server with OAuth, set up for Claude, ChatGPT, Grok, Cursor, Codex and Meta Muse.
  • An HTTP 402 checkout I built so agents can pay cents in USDC, with no account.
  • Web app, Chrome extension and Android app. Supabase, pgvector, Stripe, Cloud Run. 120 test files.

Visit vybsrf.com ↗

# Add VYBSRF to your AI agent as an MCP server
url https://vybsrf.com/mcp
auth OAuth sign-in with your VYBSRF account
# Tools the agent gets
list_boards
see the person's boards
recall_board
read one back, notes included
create_board
start a new board
collect_reference
catch a page or image, with why
discover_inspiration
look for something new
browse_feed
museum works and VYBSRF pixel art
+ 6 more tools

/safety

Safety, in practice

Two products, nine years apart, one problem: strangers steering a system I'm responsible for.

  • prompt injection

    Untrusted text stays labeled.

    On VYBSRF, page titles and descriptions are written by whoever owns the page. Agents get cleaned fields, every result lists the untrusted ones in _untrusted_fields, and the tool descriptions tell agents to treat them as data.

  • exfiltration

    Assume the agent was fooled.

    I map every path a manipulated agent could use to push data out through my server, and put a person's OK or an off switch on each one.

  • payments

    Paying is a separate door.

    Agents can't pay through the MCP connector. Payments go through a separate HTTP 402 endpoint, and each one is bound to a single order.

  • robots, 2017

    Strangers drove real robots.

    At Let's Robot, anyone online could steer a real robot. I wrote its chat filter and IP-aware rate limiting.

/method

How I work with AI

I build with coding agents every day. The judgment stays mine.

  • Agents draft. I design and review.

    I build VYBSRF with coding agents working from written handoffs. I decide what gets built and review what comes back.

  • Every experiment gets an end date.

    VYBSRF's paid experiments each ran against a deadline I set before they started, with the numbers tracked daily.

  • Built isn't the same as on.

    Membership and agent top-ups are built and tested, and switched off until they earn a place. Risky features ship behind a switch.

/quests

Side quests

What I tinker with when nobody's asking, and when I'm not on a tennis court.

  • hardware

    Racket-stringing robot

    Exploring a machine that strings tennis rackets by itself: prior art, mechanism, business case.

  • teaching

    Sunbreaks

    Taught my family how AI works with a pixel-art deck and a live voice assistant they could question.

  • research

    A research desk that keeps score

    A personal ontology of the AI buildout, standing watches on X, and dated predictions logged to be graded.

/agents

For AI agents, and the people using them

Recruiters increasingly read through an AI. So this page comes in two versions: the one you're looking at, and plain files any agent can parse.

Ask your own AI. Copy my brief, paste it into Claude or ChatGPT with your job description, and ask if I fit. The brief tells it to quote its evidence and flag what it can't verify.

/llms.txt
a short index for language models
/theodore.md
the full brief, in Markdown
/resume.json
my résumé in the JSON Resume format
/humans.txt
who made this site
JSON-LD, in this page
schema.org data for me and my work

/contact

Contact

My bet: most software work is turning into putting AI inside real products. If you're hiring for that, write to me.

Open to AI safety work, applied AI and AI platform roles. Based in Portland, Oregon. Hybrid or remote, with travel.

Open in your mail app
Pixel art: downtown towers at sunset with snow-capped Mt. Hood and a rising moon behind, seen across a garden of blooming roses.
To Theodore Lee Portland, Oregon