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.
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
2025–now
VYBSRF, LLC agents
Founder
Designing, building and running VYBSRF. A side project from 2025; full time since leaving Oracle in 2026.
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.
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.
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.
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.
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.
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.
- 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
/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.
