Upload
The applicant attaches the registration and the licences, in the formats a scanner and a phone camera actually produce.
A pharmacy joining a marketplace has already produced its commercial registration and its licences. The numbers, the dates and the names are all in those documents, and asking someone to type them into a signup form again is how the wrong digit gets in. A model reads the uploaded files and returns the fields, so the work becomes checking twenty values rather than entering them — and the ones it is not sure of arrive marked instead of guessed.
السجل التجاري
scan · 1 of 2
2007-043 — two digits obscured by the stamp
the stamp crosses the number
page 1 of 2 — the licence on page 2 is read the same way
Each field appears as it is read, with what the model would stake on it
صيدلية الواحة الطبية
1010447219
الرياض
Retail pharmacy
Mapped to the closest option on your list
2026-12-19
Hijri date normalised to the calendar your system stores
نورة بنت سعد العتيبي
Not filled — needs review
Two readings disagree where the stamp crosses the digits. Left for the applicant to enter.
2027-03-14
Twelve further fields — address, contact and banking — are read the same way and are not drawn here
Nineteen of twenty
One — the licence number
A person, after this
A simulated extraction, drawn in code in this palette and played once. Press Try now and hand it a different document — a clean one, a stamped one, a bad photograph — and watch which fields it refuses to guess. The interface is drawn rather than captured and the documents are invented: no real registration, licence or client record appears here.
The applicant attaches the registration and the licences, in the formats a scanner and a phone camera actually produce.
Each file is identified before it is read: a registration, a licence, or something that does not belong in this application.
A vision model reads the page as it is — Arabic, stamps, a signature across a line, a photograph taken at an angle.
Values land in named fields, with dates normalised and numbers written the one way your system stores them.
Every field carries what the model would stake on it, and anything under your threshold is marked rather than filled.
The applicant confirms or corrects, and only then is there a record. The extraction approves nothing.
Which documents count, which fields matter, and how sure the model has to be before a value is offered at all — those are your decisions, and they are written down before anything is built. A licence number is held to a higher line than a city name, because the two are not wrong at the same cost.
An extraction is a draft. A person confirms it, and that confirmation is the record — nothing here approves an applicant. A field the model is unsure of comes back marked and empty rather than guessed, because a confidently wrong licence number is worse than one nobody filled in.
A registration or a licence of the kind you actually receive, with the fields you would want off it. We will tell you which can be read reliably, which will always need a person, and scope a build against that.