The fastest way in, for a team with no question sheet and no labelled file yet. Type the company name and one or two lines about what it does. Studio researches the company and its competitors, writes one set of questions for the whole business, drafts labelled examples, has a second model relabel them blind, and trains on what survived. About ten minutes later there is one project you can call, and the page opens on it by itself.
studio compose "Acme Kitchen" \
"Sells cookware online to home cooks in the UK. Support gets returns, delivery and billing emails." \
--watch
# or after sign-in: + New project > Describe your companyWhat happens, in order#
| stage | what it does |
|---|---|
| research | Claude with web search reads the company's own pages and its closest competitors, and writes a brief: every queue of text it handles, the categories and the words customers use, what must reach a person. |
| the questions | one sheet for the whole business: a routing question whose options are every queue it handles, ending with "other" for greetings, tests and anything off-topic, then two to four judgements such as needs a person, urgency or sensitive data. |
| drafted examples | realistic labelled messages, 240 by default, drafted from every use case the research found, including how competitors' versions of each queue look, and about one in ten short the way real traffic is. |
| the blind relabel | a second model labels every example seeing only the questions and the text; examples the two read differently on the routing question are dropped. |
| training | what survived becomes the project's examples, split 60 / 20 / 20, trained and calibrated like any upload, and measured on the fifth it never saw. |
Who reads which message#
Every answer is automatic only when it can stand alone. Two checks send a message to a person instead, from the first training, with no threshold for you to set:
| flag | when it fires |
|---|---|
| abstain | no answer, or more than one, reaches the confidence bar the calibration measured for that question. The project page shows each question's bar. |
| outbound | the message lies further outside what the policy learned than any held-out example did, such as "what is AI" on a farm-advisory policy. |
The project page also shows, on examples it never saw, the share handled automatically, how often those were fully right, and the share sent to a person.
Why the relabel is not optional#
A generator that writes a record and its label in one breath agrees with itself in a way real traffic never does. We measured the failure before we built this: a gate corpus got worse at 4,300 generated rows than at 616, because the generator had labelled the same command both ways. The second model never sees the first model's label, so a record whose label only made sense to its author is the record that gets dropped.
What it costs#
A policy is priced before it starts and paid from your credit: $1.50 plus $0.015 for each drafted example, its first training included. That is $3.30 for 120 examples, $5.10 for the default 240 and $10.50 for 600. A new workspace starts with $10, which builds the default policy and leaves about 2,450 decisions to test it. When the balance cannot cover the size asked for, Studio drafts as many examples as it does cover rather than refusing. A run that fails is refunded in full.
Make it yours: the project grows#
Note
The examples are the starting point; your own data is the product.
On your own machines#
The trained policy downloads as one folder, and laya runs it where the messages are, with nothing leaving your network:
pip install laya
import json, laya
agent = laya.Agent(vegaml=True)
agent.load_calibration("acme-kitchen")
questions = json.load(open("acme-kitchen/questions.json"))
print(agent.predict("my pan arrived with a cracked handle", questions))When a model or a search fails#
Claude writes every step. If it is unavailable, rate limited or declines a request, that step reruns on Qwen on our own GPU, and if Claude's search fails, research runs through Tavily and then LangSearch. Each switch is written in the run's live feed. The reference for every endpoint lives in the product's own documentation.