About
A bench instrument, not an oracle
Witness reads a photograph of a returned rotating part and writes a failure record against a published standard. It gives the inspector a starting position and a citation. It does not replace the inspector, and it does not pretend to be certain when it is not.
The problem it addresses
A gearbox part comes back from the field with a complaint attached to it and very little else. Someone photographs it, someone writes a sentence in a spreadsheet, and the part goes in a bin. Six months later the same mode appears on a different batch, and nobody can prove it, because the first record said “worn” and the second said “pitting” and neither cited anything.
The failure was never the hard part. The record was. Witness makes the record the product: a damage mode with a clause number, a severity with an action attached, a cause mechanism, and a link back to the batch that produced the part.
Who it is for
The bench inspector
Gets a starting position and a clause number instead of a blank field, and keeps the final call.
The quality engineer
Gets a defensible record that cites a standard, and a fleet view that separates a supplier problem from a duty problem.
The warranty team
Gets findings linked to batches and a printable report, so a repeated mode becomes a case rather than an anecdote.
How the detector is built
Witness uses two stages, because the two questions are different and a single model answers them both badly.
Is this part abnormal?
A PatchCore-style memory bank holds patch features from the workspace's own known-good photographs. A new part is scored against that bank. The output is an anomaly score and a heat map that shows where the score came from.
This stage needs no labels. It only needs examples of normal, which every plant already has.
Which ISO mode is it?
The abnormal region is put to a forced choice against the standard's own list of modes. The model must pick from that list. It cannot invent a label, and it cannot answer 'defect'.
A forced choice keeps the vocabulary closed, which is what makes the output auditable against the document.
A confidence gate sits after stage two. High confidence files the record. Low confidence queues it for a person. The gate is the only place in the system where the software decides whether a human is needed, and its threshold is visible rather than buried.
What the vocabulary covers
ISO 15243 bearing modes
ISO 10825 gear modes
Cause mechanisms
Severity grades
The modes carry the standard’s own numbering. The cause mechanisms are a separate axis on purpose: the same pit can come from fatigue at end of life or from a contaminant dent that seeded it early, and the action a fleet takes is different in each case. The taxonomy page lists every code.
Where the data lives
Each workspace is a tenant. Postgres row-level security scopes every reference photograph, finding and batch to the tenant that created it, so one workspace cannot read another’s rows. The anomaly model runs as a stateless function that receives feature vectors and returns a score. It holds no database credentials.
Confirmed records export as JSON on demand, with the model’s suggestion and the human decision side by side. That pairing is the asset. It belongs to the plant that produced it.
What it does not do
- It does not measure. A photograph gives no hardness, no roughness and no dimension. Witness classifies appearance, and appearance alone cannot close every diagnosis.
- It does not judge remaining life. Severity maps to an action, not to a number of hours.
- It does not work outside its two part families. A part that is neither a rolling bearing nor a gear tooth is out of scope, and the system says so rather than guessing.
- It does not treat its own suggestion as a fact. An unconfirmed record stays marked as unconfirmed until a person confirms or corrects it.
An inspection tool that hides its uncertainty is worse than no tool, because it moves the error somewhere nobody is looking. The model card states the current limits in full.
How it continues
- 1
Enrol the reference set
Normal is defined per workspace. A plant that runs its gearboxes hot has a different normal from one that does not, and the memory bank must hold the right one.
- 2
Accumulate confirmed records
Each confirmation or correction is a labelled pair. The set grows with use rather than with a separate labelling project.
- 3
Train on the plant's own labels
Once the confirmed set is large enough, it trains a classifier that matches the parts this plant actually returns, not a public benchmark.
- 4
Close the loop back to the batch
Findings link to batches and suppliers. The fleet cube then shows which mode concentrates where, which is the point of the whole exercise.
The person behind it
“I build the thing, then I ship it.”
That is the whole method. Prototypes are cheap and plentiful. What is rare is a system that survives contact with real data, real users and real failure modes, which is why Witness is built around gates that fail loudly rather than dashboards that look reassuring.
The confidence gate marks an unsure record unconfirmed rather than filing it. A set of design invariants breaks the build when a known defect returns. Where a claim is not earned, the model card says so. That posture is not modesty. It is what makes the claims that are made worth anything.
Background
Eighteen months in US fintech, rebuilding monolithic systems into event-driven services carrying more than 500 concurrent users, and moving from data engineer to lead developer over that stretch. The habits in this app come from there: idempotent decisions, logged propensities, and the assumption that anything unlogged did not happen.
Currently reading for an M.Sc. in Big Data and Business Analytics at FOM Hochschule, alongside peer-reviewed research on rainfall estimation through data fusion, published in IRJMETS in March 2025.
- Role
- Founder and AI engineer
- Focus
- AI and LLM products, full-stack engineering, data engineering, event-driven architecture
- Based
- Germany and India
- Study
- M.Sc. Big Data and Business Analytics, FOM Hochschule, through August 2027
- Research
- Rainfall estimation via data fusion, IRJMETS, March 2025
- Open to
- Data, software and AI engineering roles
Other things that are live
Each of these is running, not a screenshot in a deck.
Bud
A habit tracker built on game mechanics, local-first so it works with no account and no network.
Cartwise
Turns a photographed receipt into a nutrition summary using OCR and product matching.
FirstChair
Monitors how law firms are represented by AI assistants across ChatGPT, Gemini and Perplexity.
Knock
A local services booking platform built to handle users competing for the same slot without double-booking it.
See all of it at kandula.studio.
Why this one is called Witness
In metrology a witness mark is the trace one surface leaves on another: the fret, the brinell dent, the scored flank that records a contact that already happened. It is physical evidence, read after the fact.
That is the whole product. The part cannot tell you what went wrong, but the marks on it can, if someone reads them against a standard. Witness turns those marks into a record with a clause number and a cause, so the evidence outlives the part.
The wordmark is the same idea reduced: a bearing ring with one rolling element marked, the single element the eye should reach first.
Get in touch
Questions about the system, the evidence behind it, or working together.
See it run
The console is open. Enrol a reference set, score a part, accept or correct the mode, and watch the finding appear against its batch.