Safe default
Test modeLearn the workflow before live spend.Checkpoint
Dataset versionInputs never drift under a run.Control
Human approvalCredentials, spend, and rollout stay yours.The mental model
Distill is a loop, not a one-click fine-tune. Evidence moves through six named stages, and each durable object gives both you and the copilot a reliable place to resume.
- 1Capture
Collect representative teacher calls and feedback.
- 2Data
Filter or import rows, then freeze a version.
- 3Rewards
Choose and test the signals training should optimize.
- 4Plan & train
Dry-run the exact recipe, approve it, then start live work.
- 5Prove
Read holdout evidence and inspect regressions.
- 6Serve
Promote from shadow to percentage to full traffic.
Create your first loop
Start in test mode with a descriptive name. Keep the returned loop_id; later datasets and sources can be scoped to it.
curl -X POST "https://<your-lizzy-host>/v1/distill/loops" \
+ -H "Authorization: Bearer $LIZZY_API_TOKEN" \
+ -H "Content-Type: application/json" \
+ -H "Idempotency-Key: quickstart-loop-001" \
+ -d '{"name":"Support quality","description":"Reduce cost while preserving resolution quality"}'import os, requests
response = requests.post(
"https://<your-lizzy-host>/v1/distill/loops",
headers={
"Authorization": f"Bearer {os.environ['LIZZY_API_TOKEN']}",
"Idempotency-Key": "quickstart-loop-001",
},
json={"name": "Support quality", "description": "Preserve resolution quality"},
)
response.raise_for_status()
loop = response.json()const response = await fetch("https://<your-lizzy-host>/v1/distill/loops", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.LIZZY_API_TOKEN}`,
"Content-Type": "application/json",
"Idempotency-Key": "quickstart-loop-001",
},
body: JSON.stringify({ name: "Support quality", description: "Preserve resolution quality" }),
});
if (!response.ok) throw await response.json();
const loop = await response.json();Work with the copilot
Open the copilot from any Distill page. Page context is attached to the conversation, so you can ask “what is blocking this run?” without pasting IDs. The same workflow appears in the full copilot page and the dock.
The copilot reports a phase, resource references, blockers, and a closed set of next actions. If a workflow stalls, inspect or resume that same workflow instead of opening a duplicate.