LizzyDocs

Quickstart · 12 minutes

From first call to a safe training plan.

Set up a Distill loop, capture representative traffic, freeze a dataset, and let Lizzy’s copilot prepare the next safe action without losing the thread.

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.

  1. 1
    Capture

    Collect representative teacher calls and feedback.

  2. 2
    Data

    Filter or import rows, then freeze a version.

  3. 3
    Rewards

    Choose and test the signals training should optimize.

  4. 4
    Plan & train

    Dry-run the exact recipe, approve it, then start live work.

  5. 5
    Prove

    Read holdout evidence and inspect regressions.

  6. 6
    Serve

    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.

curlexample
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"}'
Pythonexample
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()
TypeScriptexample
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.

What happens next

Built for humans and copilots.

Every risky action has an explicit handoff, validation, or approval boundary.

Recovery guide