Install the CLI, run five commands. Timings below are from a real run against the hosted service: 60 labelled rows fitted and calibrated in 63 seconds, a decision in about 2.
npm install -g embedding-studio-cli # or: curl -fsSL https://studio.embedding.in/cli.py -o studio
export STUDIO_API_KEY=esk_... # issued once, in the Studio console
studio create --name "Support routing" --template support-routing
studio upload support-routing cases.csv --watch
studio band <fit_id> --precision 0.9
studio decide support-routing --text "I was billed twice, refund one"
studio calibration support-routing -o calibration.jsoncases.csv is one row per past case: your text column, one column per question, the answer your team gave. 50 rows minimum, and what each row count buys is documented rather than implied. decide returns one field to branch on: route is auto or review. The calibration file is yours to keep.
Note
No key yet?
Create a workspace: $10 of credit, 10,000 decisions, no card. The console walks the same five steps visually, with example files prepared.
The engine, in nine lines#
Self-hosting, or just exploring: the open source engine answers the same questions locally, no account. Python 3.10+.
import vegaml
v = vegaml.load() # vega-U with the 0.8B reader
out = v.decide(
"Third notice. Pay now or we escalate.",
{"team": {"type": "choice",
"instructions": "Which team should handle this?",
"criteria": {"billing": "payments and invoices",
"technical": "product faults",
"sales": "new business"}}})
print(out["answers"]["team"]["choice"]) # 'billing'
print(out["answers"]["team"]["probs"]) # calibrated, sums to 1Every question on a sheet is answered from one read of the record, which is the economics of the whole thing. The full engine surface, states as dicts or images, and every response field: Questions and answers.