Services

Three things, done end to end.

Every engagement ships working software together with the reasoning behind it. The same two people scope it, build it and hand it over.

Three servicesSeven written deliverables in every one8–14 weeks typical
01

Applied AI delivery


LLM and ML systems from evaluation harness to production: retrieval, agents, fine-tuning, guardrails, observability. We publish the evals alongside the model.

For

  • Operations teams with a queue a model could triage
  • Product teams adding assistants to an existing system
  • Leaders who have a pilot and no path to production

You receive

  • 01Eval set and baseline metrics, published before build
  • 02Production system in your cloud account
  • 03Cost model per request, reviewed with the code
  • 04Runbooks, drift alerts, exit review

Typical duration

8–14 weeks

Stack

Claude · GPT · Gemini · Llama / Mistral self-hosted · pgvector · Qdrant · Python · TypeScript

The eval loop Five stages left to right: label a held-out set with your own experts, publish a baseline, build, run the evals on every pull request, and decide a threshold. A return arrow from the decision back to labelling shows the loop repeating weekly, with a drift alert feeding back from production. drift alert from production: live distribution moves away from the eval set 0102030405 Label held-out setyour experts label it Publish baselinebefore model choice Buildretrieval · prompts Eval on every PRprecision · recall Decide thresholdwritten, run attached review weekly · tighten the band only at a gate, with an eval run attached
Fig. 01The eval loop. Your experts label a held-out set before any model is chosen; every threshold change ships with an eval run attached to the pull request; a drift alert fires when live traffic moves away from the set.
Eval harness config evals/triage.yaml

What the model is for, what it is not for, and how we would know it stopped working

dataset:
  path: evals/sets/triage-v3.parquet
  labelled_by: claims-handlers (senior)   # disagreements kept, not resolved
  size: 2,1xx
  split: held-out

thresholds:                 # change only by PR with an eval run attached
  straight_through: 0.82
  route_to_handler: 0.55

metrics:
  - precision          min: 0.xx
  - recall             min: 0.xx
  - cost_per_request   max: £0.xx   # SOW ceiling; incl. retries
  - latency_p95_ms     max: xxxx

drift:
  compare: live_7d vs dataset
  on: claim_type, region, confidence_histogram
  alert: on-call-claims-platform   # pages your rota, not ours
Sample · redacted · the format, not a client's content
  1. 1The eval set is versioned data in your repository, labelled by your own people, with disagreements kept.
  2. 2Thresholds are numbers in a file, changed by pull request, each with an eval run attached.
  3. 3Cost per request is a metric with a ceiling, evaluated on every run like precision and recall.
  4. 4Drift is defined up front: what is compared, against what, and who gets paged.
Fig. 02Sample eval harness config, as it sits in your repository. Thresholds, metric floors, the cost ceiling and the drift rule are numbers in a file, changed by pull request.
02

Product engineering


Web, API and data products built by the two founders, end to end. Typed, tested, documented, handed over with an architecture decision log.

For

  • A product that must ship on a date
  • A platform rebuild the current team cannot staff
  • An integration layer between systems that do not talk

You receive

  • 01Working software in fortnightly increments
  • 02Architecture decision log in your repository
  • 03Test suite and CI pipeline that your team owns
  • 04Written weekly demo notes

Typical duration

8–14 weeks, or rolling

Stack

TypeScript · Python · Rust · PostgreSQL · React · AWS · Azure · GCP

Architecture decision record ADR-011

Keep the secondary fraud-signal model in-house

# ADR-011 · Secondary fraud-signal model stays in-house
Status: accepted · Date: 2026-xx-xx · Supersedes: —

## Context
The triage layer needs a second signal for fraud flags. Two
options: a third-party scoring API, or a small classifier
trained on the insurer's own labelled claims.

## Decision
Train and host the classifier in the insurer's cloud account.

## Options considered
- Third-party API   rejected: claim text leaves the data
                    boundary; p95 latency 900 ms; per-call fee
- Prompted LLM only rejected: recall 0.xx on held-out set
- In-house model    accepted: recall 0.xx, p95 40 ms

## Consequences
+ Data stays in-region; no new vendor contract
+ Inference cost per claim falls by ~xx%
- Re-labelling runbook needed (owned by claims ops, quarterly)
- One more model in the drift alert

Decided by: A. Rathi · Reported in: weekly note wk 07
Sample · redacted · the format, not a client's content
  1. 1Numbered Markdown files in your repository, next to the code they describe. They leave with the code.
  2. 2Options we rejected are recorded with the reason, so the next engineer does not re-argue them.
  3. 3Consequences include the cost, not just the architecture.
  4. 4Every ADR names the person who made the call and links the weekly note it was reported in.
Fig. 03Sample architecture decision record. One file per significant decision, in your repository, with the options we rejected and why.
03

Data platforms


Warehouses, pipelines and the governance that lets the first two actually work. Lakehouse-first, vendor-neutral, cost-modelled before build.

For

  • Reporting that depends on a dozen legacy marts
  • ML teams blocked on data they cannot trust
  • Finance teams surprised by the warehouse bill

You receive

  • 01Lineage map and migration plan with costs
  • 02Iceberg or Delta lakehouse with IAM and governance
  • 03Parallel-run reconciliation reports
  • 04FinOps alerts and a decommission schedule

Typical duration

10–14 weeks

Stack

Apache Iceberg · DuckDB · dbt · Spark · PostgreSQL · Airflow · Terraform

In every engagement

What you receive regardless of which service you buy.

If it cannot be written down, it is not done. These are the written things.


Deliverables in every engagement
DeliverableWhenFormat
Findings documentEnd of discoveryWritten report in your wiki; go / no-go recommendation
Eval set and baseline metricsBefore build startsLabelled data and harness in your repository
Cost modelWeek 4, revised fortnightlySpreadsheet plus per-request telemetry
Architecture decision logEvery significant decisionADR files alongside the code
Weekly demo noteEvery FridayOne page: built, decided, why, next
Runbooks and on-call rotaTwo weeks before exitMarkdown in your repository; shadowed on-call
Exit reviewFinal weekWritten, delivered whether or not we are re-engaged
Straight answers

Questions a first call usually covers.


Do we actually need AI?
Sometimes no. Many problems are better served by a clean data model, one well-placed automation or a faster system than by a model. The discovery sprint says which is true for you, and we will say "not yet" when it is.
Is our data used to train someone else’s model?
No. We build on enterprise API tiers where inputs are not used for training, or on models self-hosted in your cloud. An NDA is signed before you share anything sensitive, and every credential sits in your accounts, not ours.
What happens when the model gets it wrong?
It will. That is why the eval set is built before the model is chosen, every decision carries its evidence and a confidence band, and anything below the band goes to a person. Accuracy is measured on your own data before roll-out, not promised in advance.
Who owns what at the end?
You do: code, prompts, eval sets, infrastructure definitions, runbooks and the accounts it all runs in. Any team can take over. A monthly care plan is available, never required, to keep it online.
Why a two-person firm and not a larger vendor?
Because the people who scope the work build it. Large firms sell senior judgement and deliver junior capacity; freelancers can disappear. We are two senior people, accountable by name, and we will tell you when you need fifty engineers instead.
We are not in India. Does that matter?
No. Remote by default, on site by arrangement. Work runs with weekly demos and a written note; we keep 09:00–20:00 IST, which covers the Gulf working day and most of the European and UK one.
What is the smallest way to start?
A two-week discovery sprint at a fixed fee. You get a findings document, a prototype and a costed build plan, and you keep all three whoever you build with.
How do you price?
Fixed price for scoped work, billed by milestone, never a large lump sum up front. We do not publish a rate card; a fixed itemised quote follows the discovery call, and you can stop after any milestone and keep what was built. No hourly billing.

Not sure which one you need?

That is what the discovery sprint is for. Two weeks, fixed fee, a findings document you keep.