An identity document image goes in. Pass, fail or unreadable comes out, with the age worked out in Python against the jurisdiction's own minimum and an audit log the merchant can export.
Nothing opens in this browser — this one takes a job and does the work on our own graphics cards in Oregon. The free allowance below is how you try it: 25 checks, no card and no payment, on the key you are issued.
Checks are metered one each and an unreadable document is not charged. Nothing is kept that could leak.
The problem
A dozen states now require age verification, and the obvious suppliers are enterprise identity companies priced for a platform, selling a service that keeps every document it ever saw. That leaves a small merchant choosing between a contract they cannot afford, a vendor whose breach becomes their breach, or going dark. The statute is not the hard part; the shape of the available answers is.
The document is read, the age is computed, the verdict is logged, and the image is gone. No document store, no face template, no customer identity database. There is no breach of ours that could become yours.
The age against the jurisdiction's minimum is arithmetic on two dates, done in code. The model reads the document; it never decides whether somebody is old enough.
A document that cannot be read comes back as unreadable and is not charged. Charging for a failed read would pay this program to be worse at reading.
Most verification services return a confidence score, which pushes the decision — and the liability — back onto a merchant who has no way to judge it. Doorman returns pass, fail, or unreadable. Unreadable means ask for a better photo; it does not mean fail, because failing somebody over a bad camera is both wrong and the thing that makes customers leave. And it is not charged.
How it works
A photo of an identity document, from your own flow, on your own page. Doorman is the check behind it, not the front end — your customer never sees us.
The model on Tower 1 reads the document. Python computes the age against the minimum for the jurisdiction you named. Two steps, the soft one reading and the hard one deciding.
The verdict, the timestamp and the jurisdiction go into an audit log you can export. The image does not go anywhere. What an inspector wants is the log; what a breach wants is the image, and only one of those exists.
What it will never do
Every other age-verification product is built around keeping what it saw, because keeping it is how you sell identity services later. This one is built around not being able to.
Pricing
A check is one document read. Unreadable documents are not charged, so the number you pay for is the number of real verdicts you got. Twenty-five free on every key is enough to wire it into your flow and test it properly before any money moves.
Enough to wire it in and test the flow end to end.
A working storefront in the states that require it.
A platform with real traffic.
Per check, with unreadable free. No per-seat fee, no minimum commitment, no annual contract — the three things that make the enterprise alternatives unavailable to a small merchant. Your licence key is emailed to you within two working days of payment.
Checkout is our own bitcoin server, not a card processor. The units you buy are added to your key: buy from the Buy more box inside the program and they arrive on their own once the payment confirms, or buy here and paste the invoice number from your receipt into that box.
Questions
The audit log. A verdict, a timestamp, the jurisdiction and the minimum applied, exportable whenever you want it.
That is what an inspection asks for. Nobody asks you to produce the customer's driving licence eighteen months later — and if you had kept it, that would be the thing a breach took.
It performs the check the statutes describe and gives you the record they ask you to keep. Whether your overall posture is compliant depends on things outside this program.
Gatehouse is the program that tracks what each state actually requires and how that is changing. Doorman is the check; Gatehouse is the posture. They are sold separately because they are different jobs.
Once, to our machines in Oregon, and no further. There is no hosted vision API in the path.
That is the whole reason this product can exist at the price it does, and the reason it can promise the image is gone afterwards — nobody else's retention policy is involved.
Every check is independent. There is no recognition, no token and no linkage.
That means a returning customer verifies again, which is a real cost in friction. It is the price of there being no database of who buys adult content, and it is a trade we made deliberately.
A key. One line of text, issued to you and shown exactly once — only its hash is kept here, so it cannot be looked up later and we could not tell you what yours is. Every key arrives with a free allowance already on it, which is the tier at the top of the pricing above, and the work starts the first time you send a job with that key on it.
Each job is metered in the unit named in the pricing, and a unit that fails — a file that will not read, a row the model held back — is not charged and is named in the job report rather than silently skipped. When an allowance runs out the next job is refused before any work starts, with the number it used printed on the refusal.
More units are bought in bitcoin. The checkout is a bitcoin server we run ourselves. Buy from the Buy more box inside the program and the units are added to your key on their own as soon as the payment confirms; buy from the plan buttons above and paste the invoice number from your receipt into that same box. Each payment adds its units once, to one key.
Run your own document through it, then run a deliberately bad photo. The second one is the one worth watching — it comes back unreadable, uncharged, rather than failing a real adult.