Skip to content
Nitai AharoniNitai Aharoni← Index
2026In progress

Mechanic AI

Turns the data a car's own computer already records into a mechanic's diagnosis and a plain note the owner can actually act on

129real trips behind the calibration

The problem

An independent garage has two conversations about the same car. One is with the mechanic, who wants findings, causes and something to check. The other is with the owner, who wants to know whether this is serious and what it will cost, and who has no way to tell a real recommendation from an upsell. That second conversation is where the trust goes, and it is why a lot of necessary repairs never get authorised.

Meanwhile the car's engine computer has been logging the answer the whole time.

What I built

A pipeline that takes an ECU or OBD-II log from a trip and produces two documents: a mechanic report with ranked probable causes and specific verification steps, and a customer report in plain language with a traffic-light severity and one recommended action, shareable as a link.

One trip, two reports: the ranked diagnosis on the left, what the owner sees on the right

The rule the whole thing is built around

The model never computes a number.

Deterministic Python reads the log and produces a findings object: every statistic, every threshold breach, every event, each carrying the evidence that produced it. The model reads that object and writes prose. A validator then checks the prose, and every figure in it has to trace back to a specific piece of evidence or the report does not ship.

That inverts the usual arrangement, where the model does the analysis and a human hopes it was right. Here the analysis is code that can be tested and the model does the part it is actually good at, which is explaining.

Three related rules hold it together. Thresholds come from physics and manufacturer specification first; per-model fleet baselines and same-car history may tighten a rule or add a finding but may never define what normal is or loosen a guard. A signal the car does not report is absent from the data, never filled with a plausible guess. And the datasets are real logs from real cars, with all their mess intact: a header typo in one, a phantom trailing column, another logging at eleven times the rate in a different text encoding with broken degree symbols.

Calibrating it

Rules that fire on everything are useless and rules that fire on nothing are worse. The gate is a batch run over 129 real Toyota Etios trips, checked against what a garage would expect:

  • One action-severity finding across the whole batch, which is the known low-voltage event, and no others invented.
  • 78 per cent of trips producing a green customer report, against an expectation of roughly 80.
  • A separate differential gate comparing each trip to the same car's own history, tuned until the false-positive rate came down to 9.5 per cent while still catching a deliberately injected fault.

Every batch run is recorded with its date and its numbers, so a rule change that quietly widens the net shows up as a moved figure rather than as a feeling.

Building something in this territory? Start a conversation →