01
Four answers, and no guessing
Every vehicle gets exactly one of four results: match, no match, needs review, or unreadable. There is no path where thin evidence turns into a plate string presented as fact. If the picture is too poor, or two characters are genuinely ambiguous, or confidence is low, the case goes to a person instead of into a report.
02
A match has to earn it
An automatic match needs a watch-list hit, the same reading across at least three separate frames, two-thirds agreement between them, and high confidence. If a competing reading shows up in more than a quarter of the frames, the system assumes it may have blended two vehicles and steps back to review. The trade is deliberate: on the frozen generated set every automatic match was correct, and it only fired for under a quarter of the watch-list vehicles present.
03
A person confirms before anything is kept
The software never quietly builds a history. A reviewer looks at the cropped plate and confirms or rejects it, and confirming is the act that writes the stored record. A rejection appends only the fact that a candidate was rejected - no plate text is kept - so the thing you decided was not worth keeping is not kept.
04
Nothing happens to a driver automatically
There is no automatic report to law enforcement, no automatic gate denial, no automatic notice, no automatic accusation. This is a written operating rule, not a setting. The software's output is a candidate for a human to look at, and whatever happens next is a decision a person made and can be asked to explain.
05
A watch list needs a written, signed reason
You cannot just paste plates in. Loading a watch list requires a signed reason and a site scope, cryptographically bound to that exact list of entries, with an expiry. Change the list and the authorization no longer matches. Without a valid, unexpired authorization no match against an authorized target is possible at all.
06
Records expire in 24 hours by default
A stored observation carries its own expiry and is deleted after 24 hours unless a documented policy change says otherwise, and the deletion is itself written into the log. Long retention is the thing that turns a parking record into a movement history of your residents, so the default is short and the clock is enforced by an expiration job you run and can check.
07
Only the plate crop moves through the system
Plates are cropped out as soon as they are found, and it is the crop, not the full frame, that moves through the rest of the system. Full frames are handled in memory and are not written to disk. The system performs no face or person detection of any kind - there is no face model in it - so incidental people in a frame are never analyzed, identified or stored. Keeping people out of frame in the first place remains an operator responsibility, because the software does not blur anything for you.
08
A review console in English and Spanish
The console runs on your own machine and shows numbered detections with the plate crop, the proposed reading, the result, a confidence band, how many frames backed it, and review status. You can filter by camera, by result, by review status, by date window or by part of a plate, and switch the whole interface between English and Spanish.
09
A log that shows if it was touched
Every observation, review decision, expiry and purge is chained into a tamper-evident record, each entry sealing the one before it. A single command re-verifies the whole chain, and any edit, deletion or reordering breaks it visibly. If you ever have to show that a record was not altered after the fact, that is the check you run.
10
Results you can hand to someone else
A result can be sealed into a signed receipt that expires shortly after it is issued and is bound to the audience it was written for. Someone else can verify it without you handing over imagery, coordinates or raw scores. A receipt that is altered, expired, or presented to a different audience fails verification rather than quietly passing.
11
Thresholds cannot be quietly lowered
Every threshold that governs the four outcomes lives in one versioned place with a hard floor beneath it - and a ceiling above the one where a higher number would loosen the gate. The check runs inside every single decision, not only at startup, and a weakened configuration raises an error and refuses to run rather than degrading into a system that produces more matches. Tightening a threshold bumps the recorded policy version, so every stored result traces back to the exact rules in force when it was made.
12
Reads sanity-checked against real state plate formats
Current plate formats for all 50 states and the District of Columbia - 51 jurisdictions - are recorded and can be switched on to sanity-check a finished reading: which states a plate shape could belong to, or, when it matches none, a note that one confusable character might explain it. It is an operating mode you select for US work, not the default, and it is advisory in every mode - it annotates the reviewer's note and never rewrites the reading, because a corrected guess is still a guess.
13
Camera choices you own, connected to nothing by default
Six families of open camera hardware are scaffolded, from a global-shutter unit suited to fast traffic down to bench boards, each with honest notes on what it is good for and what its licensing allows - including one popular retrofit whose streaming firmware is non-commercial and would have to be replaced or licensed first. A lens calculator tells you whether a given camera at a given distance will even produce a readable plate before you buy anything. Live capture is planned, not enabled: it takes two independent authorizations, and this build ships no command to run a live feed.
14
It refuses malformed input rather than choking on it
File size, image dimensions, total pixels, decompression ratio, clip length, frame rate and frame count all have explicit limits, and anything outside them is refused at the door. Camera addresses with credentials embedded in them are rejected outright, and still-image endpoints must be on your own network. These limits are covered by their own tests, including deliberately hostile inputs.
15
The failures are published too
Accuracy is measured on frozen evaluation sets that are never used for tuning, results are broken out by condition rather than averaged into one number, and the write-ups include the changes that were measured and then rejected for making the end result worse - a detector fine-tune that lifted recall but produced crops the reader read worse, and two reader variants that improved clean-crop reading and hurt end-to-end results. When a number was measured on generated images rather than photographs, it says so next to the number.