Employment verification that refuses the number on the form.

Every mortgage needs it. When the payroll database has no record — which it does for most small employers, and for every country without one — somebody picks up a phone. Certa makes those calls, asks only what consent covers, and writes a typed answer back into your table.

Get Certa Watch the demo See how it works Download, then double-click. The console runs on your own machine — nothing is hosted.
The gap
“Takes days or weeks, and often fails entirely when the employer does not respond.”
How the industry describes the manual fallback used whenever the payroll database has no record — on The Work Number’s coverage gaps
Screening market
$0bn — upper estimate, 2026

Estimates for global employment screening run from $5.3bn to $8.0bn, heading to roughly $13.7bn by 2034. Employment verification is a core segment.

Boundary two

The applicant’s number is never dialled

Fraudulent applications supply working numbers, with staffed call centres and directory listings. It is the one field an applicant fully controls, and the manual process calls it anyway.

Independently sourced Written on the application
Evidence gate

Nothing verified without contact

A positive result requires extracted evidence that a person was actually reached — never a status field alone.

Refusal

“No” is a complete answer

An employer declining to confirm has not failed. That outcome is terminal and never retried.

Audit

Hash-chained, tamper-evident

Written and flushed to disk before the call it authorises can ring.

Rows become calls. Answers become columns.

A queue in Airtable, and what Certa does with it. Watch the second row: its employer number came from the applicant, so it is never dialled.

Verification Requests · Ready to verify —
Request Employer Employer number Reached Employed Title Status
VR‑0001 Kestrel Logistics official site+44 20 •••• 4417 — — — Ready
VR‑0002 Sterling Corp from the application+1 415 •••• 9931 — — — Ready
VR‑0003 Atlas Freight business registry+61 2 •••• 7720 — — — Ready

Preview first. Nothing is dialled until you confirm.

Three steps, and none of them is a terminal.

Certa runs on the operator’s own machine and opens in their browser. The queue stays in the Airtable base they already use.

1

Open it

Double-click Certa.command on macOS or run.bat on Windows. The console opens in your browser.

With no credentials it starts on sample data, so the first thing you see is the product working.

2

Connect your base

Paste an Airtable token, your base, a CALL-E key and your organisation’s name. Stored in a local file only you can read.

Your answer columns become the extraction schema — a single select’s choices are the allowed answers, its description is the instruction.

3

Preview, then run

You see every row in scope, every row skipped and why, how many the filter is hiding, the spend, and the verbatim script that will be spoken.

Results land back in your base as each call finishes.

Who actually makes these calls.

Verification of employment is not a niche. It is a step somebody performs by phone, every working day, because the answer lives with a person rather than in a database.

Lending

Before a loan closes

An underwriter must confirm the applicant works where the application says. For large employers a payroll database answers. For everyone else — small firms, contractors, most of the world outside the US — somebody calls HR and waits.

Certa runs the queue from the view the underwriter already works in, and refuses any row whose employer number came from the applicant.

Tenancy

Before a lease is signed

A letting agent checks that a prospective tenant is employed and earning consistently enough to cover rent. The check is nearly always a phone call to an employer the applicant named.

The applicant naming the employer is exactly why the number must be sourced independently. That is a boundary, not a setting.

Background screening

Before an offer is confirmed

Screening firms verify claimed employment history for candidates. Volume is high, the questions are fixed, and the work is almost entirely hold music.

Three questions, eight prohibitions, a typed answer per row, and an audit record of who was called under which consent.

Immigration

Before a filing goes out

Employment letters get verified by phone against the employer named on the filing. A refusal to confirm is a real and acceptable outcome that has to be recorded as one.

A refusal ends the call and is terminal, never retried. Redialling somebody who declined is harassment, and the code treats it that way.

The same shape every time: a third party who did not ask to be called, a consent that has to be provable, a short bounded set of questions, and an answer that must be typed rather than transcribed.

Enforced by construction, not by policy.

Types that cannot be built the wrong way, with tests that fail if that ever stops being true.

Fails closed, always
Low confidence, a positive claim with no supporting evidence, or any internal contradiction all route to a human. No rule can promote a result.
Nothing reachable from outside
The console binds loopback only and needs a one-off token the app generates for itself. Its run endpoint accepts a view name — never a destination — so no request can introduce a phone number.
Numbers are never repaired
Strict E.164, with no inferred country code. A malformed number is a data problem for a person, not something to guess at.
Masked everywhere
Last four digits only — console, logs and audit records alike. Consent tokens are stored as a prefix: enough to correlate, not enough to replay.
Re-running never re-dials
The idempotency key binds the request, the exact number, the question set and the consent. Re-consenting after an edit correctly creates a new intent.

What it is not.

Saying so plainly is part of the design, not a disclaimer.

Not a collections tool Not a credit decision engine Not a background check Not a salary lookup Not a replacement for a payroll database