01 · Practice

Spend less per task, keep the quality.

Your agents and assistants work, and the bill grows with every user. We review what the systems you already run spend and where, then cut it: better use of your current provider, synthetic training data, and small tuned models that take over routine steps. Nothing changes until an evaluation built on your own cases says quality held.

01 · Services

Three ways to spend less per task.

Take one, or run them in order. The review usually shows which of the other two is worth doing.

01

Cost and usage review

We read the traces, token counts and invoices of the systems you already run and work out the cost of each completed task, not each token. You get a report that ranks changes by saving and by risk: prompt caching and shorter context, routing simple steps to cheaper models, batch endpoints for work that is not urgent, and the steps a tuned small model could take over. Each recommendation comes with the test that would prove quality held.

02

Synthetic datasets

Training and evaluation data built from your own records, for tasks where real examples are scarce, sensitive or cannot leave your environment. Seeds come from real data, variety is set on purpose with personas and taxonomies, and every sample that code or tests can check is checked. Duplicates and overlap with your evaluation set are removed, and each dataset ships with a datasheet recording where every row came from, which is what EU AI Act Article 10 and procurement reviews ask for.

03

Fine-tuning and distillation

LoRA adapters on open-weight models (Qwen, Llama, Mistral, Gemma) that take over a defined job from a larger, more expensive model: classification and routing, extraction, tool calling, a task assistant, or a coding agent inside the harness your team already uses. Supervised tuning first, then reinforcement learning with rewards computed by code where the task allows it. You own the weights, can run them on your own infrastructure, and several adapters can share one base model.

02 · In progress

Neomi moves to its own model.

Work in progress, not a result yet. Figures below are published research and vendor list prices, September 2026.

The review

Traces show where the money goes per basket: the system prompt and tool definitions resent on every turn, long search results in context, the large model used for steps a lookup could answer. Caching and trimming come first, before any training.

The data

A sandboxed copy of the catalogue and basket API. Synthetic shoppers built from budgets, diets and household sizes, and every conversation checked by code: each item exists, is in stock, meets the request, and the total fits the budget. Real anonymised sessions stay in the mix, and a held-out set of them decides sign-off.

The model

A small open model with a LoRA adapter: supervised tuning on verified conversations, then reinforcement learning scored by the same checks. In published research a 4B model trained this way scored 63.5% on a long shopping benchmark against 64.5% for GPT-5. Managed training for a model this size costs under $20.

The goal

Neomi owns the adapter and serves it on hardware it rents, so cost per basket stops following a provider's pricing and the product stays affordable as it grows. The frontier model remains a fallback for conversations the small model is unsure of, and no release reaches shoppers without passing the same evaluation.

03 · Approach

Measure, change, prove.

The evaluation is agreed before anything changes, and a change that fails it goes back a step.

%%{init: {"theme":"base","themeVariables":{"background":"#0a0b0c","primaryColor":"#a9dbe6","primaryTextColor":"#efefe8","primaryBorderColor":"#a9dbe6","lineColor":"rgba(239,239,232,.3)","secondaryColor":"#0d0f11","tertiaryColor":"#0d0f11","textColor":"#efefe8","mainBkg":"#0d0f11","secondBkg":"#0a0b0c","border1":"rgba(239,239,232,.12)","border2":"rgba(239,239,232,.06)"}}}%%
flowchart LR
  subgraph Phase1["Review"]
    R1[Traces and invoices]
    R2[Cost per task]
    R3[Evaluation baseline]
  end
  subgraph Phase2["Data"]
    D1[Real seed records]
    D2[Synthetic generation]
    D3[Verify and dedup]
  end
  subgraph Phase3["Tune"]
    T1[Model choice]
    T2[LoRA fine-tuning]
    T3[RL with coded rewards]
  end
  subgraph Phase4["Evaluate"]
    E1[Held-out real cases]
    E2[Cost and latency]
    E3[Quality gate]
  end
  subgraph Phase5["Ship"]
    S1[Shadow traffic]
    S2[Canary routing]
    S3[Monitoring]
  end
  Phase1 --> Phase2
  Phase2 --> Phase3
  Phase3 --> Phase4
  Phase4 -->|Pass| Phase5
  Phase4 -->|Fail| Phase2
      
04 · Also covered

The rest of the stack.

Cost is rarely the only problem. These sit alongside the work above.

Retrieval that cites

Hybrid dense and sparse retrieval with cross-encoder reranking. Vector database tuning (Qdrant, Milvus, pgvectorscale). Source citations on every answer, so responses can be audited.

Prompt engineering

Structured output patterns, prompt versioning and regression tests, and A/B comparisons on real traffic. Shorter prompts that score the same are a saving on every call.

Inference performance

Continuous batching, KV-cache management and quantisation (AWQ, GPTQ) for self-hosted models. Several LoRA adapters served from one base model, so a new task does not mean a new GPU.

Evaluation harness

Golden datasets kept current, task-specific suites in CI, RAGAS for retrieval (faithfulness, answer relevance, context precision), and drift monitoring with alerts in production.

05 · Fieldwork

Fine-tuning for insurance.

Related case study

Insurance-specific fine-tuning with policy grounding.

Llama 3 70B fine-tuned on 25,000 anonymised claim interactions, RAG grounded in policy documents, RAGAS in CI with canary rollback. Manual load down 80%, citations on 100% of responses.

Read the case →
06 · Questions

Cost and tuning questions.

01

What does the review need from us?

Read access to traces or logs for a representative period (two to four weeks is usually enough), your provider invoices, and an hour with the people who own the system. If access is restricted we work from exports, and personal data can be masked before we see it.
02

Do we have to change provider?

No. Many savings come from how the current provider is used: caching, shorter context, batch endpoints and routing. We recommend moving a step to a tuned open model only where both the cost and the evaluation support it.
03

How do you know quality held?

We agree the evaluation before changing anything: a held-out set of your real cases that no generator or model has seen, plus the metrics you already watch. A new model ships only if it passes that set, then runs on shadow traffic and a canary before taking full load.
04

Do you train on our current provider's outputs?

Not by default. Several providers' terms restrict using their outputs to train other models, so we generate training data with open-weight models, from your own records, or both, and the datasheet records which.
05

Can you work with our existing models?

Yes. We work with open base models (Qwen, Llama, Mistral, Gemma) and with fine-tunes you already have, adapting through LoRA, QLoRA or full fine-tuning depending on the accuracy and cost you need.
06

How do you prevent hallucinations?

Retrieval with reranking, and tool or database grounding, anchor every response in data you control. Faithfulness is measured per response and gated in CI; RAGAS faithfulness above 0.92 is our default gate, with domain targets agreed in the statement of work.
07 · Engage

Scope a cost review.

30-minute call. Engineering discovery memo within five working days.