Skip to content27% offProofmatch for ₹10,999 ₹14,999
CloneifyPro

Proofmatch · KYC verification

A KYC form for India that reads each PAN, Aadhaar and driving licence and checks it against what the applicant typed.

Proofmatch walkthrough video
Video

Walkthrough: a sample applicant's documents read and matched, the result, then the reviewer console

1 / 6

What Proofmatch runs

  • A five-step KYC form built for phones, checking PAN, Aadhaar and licence numbers as they're typed
  • Camera or file uploads for the PAN, both sides of Aadhaar and the driving licence
  • Each document read by Tesseract on your own server, or by Claude
  • A loading screen that shows the real steps: reading each card, then matching name, date of birth, IDs and address
  • A result that names every detail that didn't match, with fixing and retaking built in
  • A reviewer console: the documents, form against document, the text read, approve or reject
Platform
Web; the applicant side is phone-first
Best for
Onboarding customers in India
User roles
Applicant (no account), reviewer
Database
PGlite or any Postgres

Who it is for

  • Lending and fintech apps

    Collect KYC details and documents in your own flow, and catch mismatches before anyone has to look.

  • Marketplaces and platforms

    PAN and Aadhaar checks for onboarding sellers, partners or gig workers, with a reviewer for the cases in between.

  • Developers and agencies

    A readable Next.js codebase where the reader, the file store and official lookups are each one interface to swap.

Live now

Demo access

Try it before you download it. Two sample applicants with specimen cards, and a reviewer console with six past applications. Tesseract reads the documents inside your tab. No sign-up.

Open the demo

People in the demo

No password in the demo. The bar at the top switches between the applicant and the reviewer.

  • Ananya Rao

    Sample applicant

    Every detail on her PAN, Aadhaar and licence matches: KYC verified.

    Open the demo
  • Rahul Kumar Mehta

    Sample applicant

    His Aadhaar shows another date of birth and his licence only initials: not verified, with both named.

    Open the demo
  • Neha Kapoor

    Reviewer

    Every application, what each document said, and approve or reject.

    Open the demo

Applications and images stay in this browser's storage. “Reset demo” in the bar starts over.

On your own machine

Install it and sign in

  1. 1
    npm install
  2. 2
    npm run dev

Open http://localhost:3000 to apply, and http://localhost:3000/admin to create the first reviewer account. Specimen cards for six sample people are in public/samples. Set AUTH_SECRET before production.

Features

Grouped by where the work happens.

Applicant

5
  • Five steps: about you, address, ID numbers, documents, review
  • Checked as they type: PAN format and holder type, Aadhaar's Verhoeff checksum, the licence's state code, PIN and mobile
  • Camera or file for each card; photos are scaled down in the browser before upload
  • The Aadhaar number is masked on screen once entered
  • Fix details or retake one document, then check again, without starting over

Verification

6
  • Tesseract OCR on your server by default, with the English model bundled; or Claude reading each image
  • Parsers for the old and new PAN layouts, both sides of Aadhaar and the licence card
  • Names matched in any order, with initials and OCR slips; addresses matched by their words
  • Spots the wrong document in a slot, a masked Aadhaar, a year-only date of birth and an expired licence
  • Each field: matches, close, doesn't match or couldn't read; the thresholds sit in one file
  • Runs on the server and streams each step to the loading screen as it happens

Reviewer console

4
  • Applications by status with counts: needs review, not verified, verified, approved, rejected
  • Search by name, email, PAN or reference
  • Each field, form against document, with the images and the text read off each card
  • Approve, or reject with a note; undo a decision; run the check again

Privacy and extending

3
  • Aadhaar kept as its last four digits and a keyed hash; text read off cards is stored masked
  • Images go only to the applicant's own link or a signed-in reviewer
  • One interface each for the document reader, file storage and official registry lookups

Tech and requirements

Exact versions, because that is the first thing a developer checks.

Stack

Framework
Next.js 16, App Router
Interface
React 19, Tailwind CSS 4
Language
TypeScript
Database
PGlite by default, or PostgreSQL 13+
Reading
Tesseract (tesseract.js) on the server, or Claude through the Anthropic SDK
Sign-in
Reviewers: email and password, signed cookie; applicants: a link per application

To run it

Node.js
22.6 or newer
Database
None to start; Postgres for production
Storage
A disk for uploaded images, or your own object store
Secret
AUTH_SECRET in production

What you get in the download

proofmatch.zip, 1.7 MB: the whole project as it unzips, counted from the zip itself.

  • Complete source code, nothing obfuscated
  • A README: quick start, configuration and deploying
  • An .env.example with every setting and its default
  • The script that builds the browser demo
proofmatch.zip87 files · 1.7 MB
  • Pages and API routes13 files
    18 KB
  • Core logic15 files
    95 KB
  • Server15 files
    33 KB
  • Screens and components14 files
    128 KB
  • Scripts2 files
    15 KB
  • README and configuration28 files
    1.9 MB

Common questions

01. Does it check documents with UIDAI or NSDL?

No. It reads the documents, matches them to the form, and checks the rules the numbers follow: the PAN format, the Aadhaar checksum, the licence's state code and expiry. An official lookup (a PAN API, DigiLocker, your KYC provider) plugs in as a registry check; none is included.

02. Do documents leave my server?

Not with the default reader: Tesseract runs on your server with its English model bundled. If you switch to Claude, each image is sent to Anthropic's API.

03. Is the full Aadhaar number stored?

No. The database keeps the last four digits and a keyed hash, and text read off cards is stored masked. Uploaded images are kept as uploaded, so decide how long to keep them; the README covers what to consider.

04. How well does it read real photos?

Tesseract does well on clear, flat photos and scans. Glare or blur comes back as “couldn't read”, and the applicant can retake that card. Claude is more forgiving of phone photos. Anything in between goes to a reviewer.

05. Can I change which documents are required?

Yes. src/core/config.ts lists the documents, which are required, and the match thresholds. PAN and Aadhaar are required by default; the licence is optional.

More products

All products

Leadtrail

Sales CRM

A sales CRM for any number of companies: enquiries from IndiaMART, JustDial, Facebook and the website, a repeat check on every mobile number, follow-ups, WhatsApp templates, a drag-and-drop pipeline, and one-click invoices in Billcraft.

  • Next.js 16
  • React 19
  • TypeScript
  • PostgreSQL
Files
74
Lines
10,823
Source
₹12,499

Renewly

Membership management

Memberships and fees for gyms, studios, dance academies and coaching classes: members and plans, part payments with receipts, renewals and pauses, WhatsApp reminders, Razorpay payment links, and a Today screen of who to collect from and who to renew.

  • Next.js 16
  • React 19
  • TypeScript
  • PostgreSQL
Files
86
Lines
12,718
Source
₹9,999

Consentdesk

DPDP privacy and consent

Privacy and consent for India's DPDP Act and Rules: a notice in English and Indian languages, a consent banner and form (a parent's email code for under-18s), a receipt for every answer, a privacy page where people withdraw consent or ask to see, correct or erase their data, requests with deadlines, a 72-hour breach register, and a data map with vendors.

  • Next.js 16
  • React 19
  • TypeScript
  • PostgreSQL
Files
84
Lines
10,531
Source
₹12,499