Your
agents
should be
specialists

Built on open weights

  • Qwen 3
  • Mistral
  • Phi
  • SmolLM
  • OLMo
  • Granite

How Primitif builds your specialist

01Import your traces

Send one day of traces.

We show you where your agent is inconsistent, where humans still correct it, and which steps a specialist can take over.

02Train your model

We fine-tune open-weight models on your outcome-verified traces: a specialist for each step.

Your data trains your model and nothing else.

03Run evals

Golden traces held out before training.

Nothing swaps until it clears your bar.

04Serve it to your agent

Promoted models run always-warm behind your existing OpenAI-compatible endpoint.

One base URL changes; nothing else in your agent does.

agent/steps/triage.py
@@ -12,8 +12,8 @@ client = OpenAI(-    base_url="https://openrouter.ai/api/v1",+    base_url="https://api.primitif.ai/v1",-    api_key=os.environ["OPENROUTER_API_KEY"],+    api_key=os.environ["PRIMITIF_API_KEY"], )  answer = client.chat.completions.create(-    model="anthropic/claude-sonnet-5",+    model="acme/triage",  # yours, trained on your traces     messages=thread, )
Connect your agent now
Case study

Our fine-tuned model beats Claude Sonnet at customer support

We trained a 4B open-weight model on 8,000 support messages. 400 were held out before training started. Every model answered those same 400, with the same prompt.

modelscore
Trained on your usecase 94.0
Claude Sonnet 5 76.0
Open-weight model before tuning 60.5

Your model keeps improving

The exam never stops growing. New outcomes join your golden set every week, and every retrain has to beat the version before it.

Frontier releases get replayed against your baselines too: when a new frontier model ships, your specialist is retrained and re-proven against it, on an eval set that has been growing the whole time. The model is a snapshot; the loop is what keeps it ahead.