AI development
AI you can put your name on.
Connie, live inside Upstream's FreeBC, answers contraception questions for real patients: clinician-reviewed corpus, no open web, and a decline when it cannot ground an answer. 11,400 users in its first three months. Everything we ship is held to that bar, and if your surface is wrong for AI, we say so before you spend on it.

How we build
Three principles. None of them are a model.
The work is deciding what the system is allowed to do.
Close the corpus first
If the model can reach material nobody reviewed, you do not have a product. You have a demo with a longer context window. We treat ingestion as the architecture decision. Prompting comes after.
Decline is a feature
A confidently wrong answer about a dose, a denial, or a diagnosis is not a UX miss. It is an outcome. We spend review cycles on the requests where the system is supposed to hold a line, and we ship the decline on purpose.
Outputs, not specs
Human-in-the-loop is a calendar commitment. We put real generated answers in front of the people who own the risk, repeatedly, until the declines and the answers both hold.
If you already know the surface, we do not need a tour of our process.
What we build
Six capabilities, anchored to real work.
Each one is anchored to real work, not a lab result.
Constrained assistants on a closed corpus
An assistant that answers from material you have reviewed and declines everything else. Connie, the assistant inside Upstream's FreeBC contraceptive-care platform, is the reference: a clinician-reviewed corpus, no open web, and a decline when it cannot ground an answer.
Voice agents
Registration, scheduling, and intake by voice. We helped Teladoc Health put telehealth visits on Amazon Alexa-enabled devices, and built HIPAA-compliant patient-intake voice work for a pharma services company.
Computer vision in a product
A model that watches video only matters once the footage reaches it and its output reaches a person. For Ballers, we built the phone app that records the game, the upload path for full-length game footage, and the GPU deployment for a ball-tracking model.
Document intelligence
Turning a photo of a document into structured data someone can file and find. For ReceiptVault, we built the prototype web app: upload a receipt, Google Document AI reads it, and the merchant, totals, and line items land in your folders.
Automation a human still signs
We automate the work that burns hours and keep a person on the decisions that matter. For CNY Fertility, automation took per-patient administrative time from 40 minutes to 5.
Agent infrastructure and deployment
Agents your org can actually run: provisioning, memory, allowlists, and no public network surface. Our open-source rome-on-rails template deploys Hermes agents on Railway, each one a private node on a Tailnet.
The work, in practice
Shipped, named, checkable.
Every number below comes from a published case study or the product itself. Where we cannot name a client, we say so.
Automation for a clinic that could not stop moving.
NOVO is a patient onboarding and self-service scheduling platform for CNY Fertility, a fertility clinic with eight US locations. Patients book, reschedule, and cancel with no human intervention. Robotic process automation moves the data into the clinic's EMR. Built and launched in eight weeks.
- Client
- CNY Fertility
- The constraint
- The legacy EMR had no API. We automated data entry into it with RPA instead of waiting for API development.
- What changed
- 87% less clinical workload per patient: 40 minutes down to 5. Consult waits fell from over a month to two days. $10K+ saved monthly.
Telehealth visits over a smart speaker.
We helped Teladoc Health build voice telehealth visits on Amazon Alexa-enabled devices: register, schedule, and connect to a board-certified physician by voice, where the old path was a mobile app or a 1-800 number. The call-center reps stayed in the loop, down to the whisper they hear before a call connects.
- Client
- Teladoc Health
- The constraint
- The brief was minimal disruption. Every change was scoped to what the voice use case required, and the call-center reps were kept essential rather than designed out.
- What changed
- Went live with no significant glitches, in a launch announced publicly by both Teladoc Health and Amazon.
A chatbot brain the clinicians could retune.
Pear Therapeutics, the company behind the first smartphone app to receive FDA authorization for treating medical conditions, brought us in on Pear 006: a CBT app for depression in Multiple Sclerosis patients. We built a contained chatbot brain that directed patients through guided conversational threads, each one administered by Pear's mental-health experts through a spreadsheet interface. The brain was designed to be replaceable.
- Client
- Pear Therapeutics
- The constraint
- We evaluated Microsoft Bot Framework, Rasa, and DialogFlow against Pear's clinical constraints, and recommended a contained, expert-controlled brain instead.
- What changed
- Pear's clinical team could refine patient interactions without engineers in the loop.
Set a phone courtside and the game films itself.
Ballers turns a phone recording of a basketball game into highlights, stats, clips, and player profiles. We built the React Native app that records the game and the Rails API and admin behind it. We containerized a ball-tracking model and ran it on GPU instances on AWS. Later we built uploads on S3 multipart upload, so a full game goes up in parts that pause, resume, and retry on their own.
- Client
- Ballers
- The constraint
- A full game is a large file recorded on a phone. A dropped connection had to cost one part of the upload, not the whole game.
Every receipt, read and filed.
ReceiptVault keeps every receipt in one searchable place. We built its prototype web app in 2024. A background job sends each uploaded receipt to Google Document AI, which pulls out the receipt details and every line item. Receipts are filed into folders and can be exported as a PDF. A separate proof of concept tested Gemini on the same receipt images.
- Client
- ReceiptVault
A personal AI agent for every teammate. No public URL.
Every Echobind teammate gets a Slack agent with its own bot identity, memory, and allowlist. Each deployment is a Tailscale node: SSH for maintenance, outbound Socket Mode for Slack, no inbound ports. We open-sourced rome-on-rails, the Railway template that deploys them, wrapping the Hermes agent by Nous Research.
- Client
- Echobind, open source
- The constraint
- Private by default: no public URL, no inbound ports, and an explicit Slack allowlist. If the allowlist is unset, the bot refuses every message.
- What changed
- A personal agent for every Echobind teammate, and an open-source template anyone can deploy.
A voice agent that collects patient information.
For a pharma services company, we built a voice agent that collects patient information in a HIPAA-compliant way. We do not have permission to name the client, so we do not. Where we cannot name a client on this page, we say so.
- Client
- A pharma services company
How we start
The Surface Review
Two weeks. A senior engineer and a product partner. We walk the one surface that would hurt if it were wrong.
You leave with one of two things
A constrained spike
Working software you can put in front of the person who owns the risk, plus the constraint we would keep: corpus, tools, escalation, audit.
A written no
And the cheaper thing that actually solves it. If the right answer is do not build this, that is the deliverable.
We do not start with a roadmap of eight AI products. We start with the surface.
You already know which surface this is.
Walk us through it. We will tell you whether we would put our name on the answer.

