Samples
A sample is a labeled example — an input paired with the correct label. Samples are how you teach the model what each label means.
{
"data": "My order never arrived and nobody has responded to my emails.",
"labelName": "Complaint"
}
Beyond the visible label and data, every sample also carries metadata captured at invocation time (prediction, confidence, embedding) that powers automatic training, outlier detection, and AutoML.
What makes a good sample
- Representative — matches the distribution of inputs your function will see in production
- Unambiguous — clearly belongs to exactly one label
- Varied — covers different phrasings, formats, and edge cases within the label
How many samples do you need?
Nyckel can start making predictions with as few as 2 samples per label. Accuracy improves as you add more. A good starting point is 10–20 samples per label, then use the feedback loop to improve from real-world data.
| Samples per label | Expected accuracy |
|---|---|
| 2–5 | Rough — useful for testing |
| 10–20 | Good enough to deploy |
| 50+ | High accuracy for most tasks |
| 200+ | Production-ready for demanding use cases |
Annotations
An annotation is a label you apply to an existing prediction. When your application routes a prediction to review and a human confirms or corrects it, that correction becomes an annotation — and automatically becomes a new training sample.
This is how Nyckel functions improve over time without requiring you to manually curate training data. See The feedback loop for the full mechanism, or Build a feedback loop for the API.