A new data source, onboarded in minutes.

An LLM-driven CLI that runs the same loop a data engineer runs, discover, plan, build, verify, with a person approving every step.

Talk to Upside
object storage · FHIR APIs · your own schemas
etl · onboard

Onboarding a source is mostly grind.

Read the API docs. Poke the endpoints. Stare at the payloads. Work out the shape. Hand-write the glue, then debug it.

Hours of it, per source, before anything useful comes out.

What if that loop had an engine?

The CLI works the task in four stages. You approve the move between each one.

The steps are repeatable. The judgment is not. So the repeatable part runs as an AI-driven loop, and you keep the decisions.

Discover

it browses the files, calls the APIs, reads the data, and works out the shape of what you're dealing with.

Continue to plan?Continue

Plan

it turns your goal and what it found into an implementation plan. You review it, refine it, approve it.

Proposed plan
  1. 1.Read lab-result CSVs for the configured date range.
  2. 2.Fetch Encounters and build the encounter-site lookup.
  3. 3.Emit test_code, site, results, encounters, per_enc.
Approve this plan?Approve

Build

on approval, it generates the code that does the consolidation.

main.py
START_DATE = "2026-07-01"END_DATE = "2026-07-10" def consolidate(results, encounters, sites): … # 214 lines written
Run it on sample data?Run

Verify

it runs that code on sample data and shows you the result. You approve it for the live run.

Sample run SUCCEEDED after 2 attempt(s). Wrote 133 row(s).
test_codesiteresultsencountersper_enc
2345-7site-014121982.08
2345-7site-02196952.06
718-7site-013881981.96
Execute the live run?Execute

It does the grind.You make the calls.

When the task is vague, the data is messy, or the goal and the data don't line up, the tool surfaces it and stops. You decide how to proceed. It takes the reading, the calling, the poking off your plate. It does not take your judgment.

15 to 30

minutes per task.

Onboarding a source, consolidating data, generating a report. Work that runs to hours by hand lands in half an hour, because the loop is fit to the actual process, not a general-purpose agent set loose on it.

The prototype is the floor,not the ceiling.

Fits your systems

customize it to your stack, your schemas, your validation rules. The output is code that plugs into what you already run.

your-stack.config.yaml

Self-healing

a source changes and a working script breaks. The tool catches the failure, re-reads the source, finds what moved, adapts the code, tests it, and ships the fix. Minutes of downtime instead of a morning, with a clear trail of what changed.

etl · results_by_site.py

Runs where your data has to stay

commercial APIs, self-hosted models, or HIPAA and GDPR-grade environments. It runs inside your walls, on Bedrock, on your own Ollama or Qwen deployment, wherever your health data is required to live.

Amazon BedrockHIPAA-eligible managed models
Ollamaself-hosted, your hardware
Qwenself-hosted, open weights

This is a prototype.The capability is the point.

We built it to show what a tightly sequenced LLM workflow does inside a real engineering process. We build these into institutions, tuned to your systems, your data, and your constraints. If that's a problem you have, let's talk.

Talk to Upside
etl