NewConnect Brain to your approved inventory, CRM records, documents and business tools.Explore Live Data Connectors
QualiBot
Log inBook a Demo
WhatsApp Radar

The market talks in WhatsApp. Radar keeps the receipts.

Brokers move Dubai inventory in group chats — a price list here, an availability sheet there, a payment plan buried in a forwarded PDF. WhatsApp Radar captures those groups as permanent evidence, reads what the documents actually say, and turns it into information you can search, compare and defend.

Observation onlyNever sends messagesAuthorized groupsEnglish · العربية · فارسی

A price you cannot trace is a price you cannot act on. Every number Radar reports points back at the bytes it came from — the message, the PDF page, the spreadsheet cell — with a hash of the source.

How it works

Four stages, in this order, every time

Each stage only ever hands the next one something it can trace back to a source file.

01Capture

Groups you already belong to

Messages and attachments are captured from authorized groups and stored byte-for-byte, deduplicated by hash. Radar reads; it never posts.

02Preserve

Evidence before interpretation

The original file is kept intact and addressable before anything parses it, so any later answer can be checked against the document a broker actually sent.

03Extract

Native text, OCR, then rules

Each file is routed by what it is. Spreadsheets are read natively, PDFs take their embedded text where it exists, and only genuinely scanned pages pay for OCR.

04Ask

Time-aware search

Prices, availability, payment plans and handover dates become observations with timestamps — so price history and “what did we know in March” are queries, not projects.

The console

One workspace, from group to source document

Groups, messages, files and extracted evidence sit in a single screen. Selecting a file never leaves the conversation it arrived in.

The Scanned Groups workspace: a list of monitored groups on the left, a message stream in the centre, and files with extraction detail on the right.
Scanned Groups. Every monitored group with its scanning state, file count and last activity. Filters across the top narrow by channel, observation date, file type, status and confidence.
A price list PDF selected, showing its extraction summary: pages, characters, tables, claims, confidence and duration, with tabs for extracted text, tables and real-estate JSON.
Extraction detail. For each attachment: how it was classified, which route read it, how long it took, and how many claims came out. The tabs hold the extracted text, the reconstructed tables and the canonical real-estate record — with the original always one click away.
A group selected, showing its message history with attached documents and their extraction state.
In context. Documents stay attached to the message that carried them, with the sender and arrival time intact.
The Channels page, listing connected WhatsApp accounts and their connection state.
Channels. Connect an account by scanning a QR code once. Connection state, reconnection and per-group scanning are managed here.
Ask

A question in words, and the queries behind the answer

“How many two-bedroom units are available in Aljada?” is a question the console answers directly — from the catalogue, never from a model’s memory.

Every answer carries the queries that produced it and how many records each returned, shown at the weight of a citation rather than hidden behind a debug toggle. An answer produced without consulting the catalogue is marked unverified instead of being presented as fact.

Why it is shown this way

A fluent sentence about availability with no visible source is indistinguishable from one that was invented — so the catalogue queries travel with the answer.

Reading real documents

Measured on twenty genuine broker files

Fourteen PDFs and six spreadsheets — availability sheets, price lists and inventory reports from a dozen developers — run end to end with no model involved.

100%Price cells kept

2,527 of 2,527 populated price cells reach the output.

100%Area cells kept

3,352 of 3,352, each keeping its original heading and unit.

1,693Unit records

1,579 carry a unit code; all six spreadsheets reach 100%.

20/20Rows accounted

Every source row is accepted, unresolved or rejected — with a reason.

Those are completeness figures, not accuracy marketing: they say no populated price or area cell was silently dropped. They are also post-fix — several of these documents exposed defects that were then corrected, so read them as what the parser does today rather than as a cold first pass. Where Radar cannot map a column it says so on the document rather than quietly discarding it — across the same twenty files, 114 units carry no unit code and 19 documents raise at least one warning. Both are reported, both are visible in the console.

Routing

The cheapest correct reader wins

Each file is classified before it is read, so an expensive route is only ever paid for by the pages that genuinely need it.

DocumentRoutePagesOCR’dClaims
Al Mamsha availability (xlsx)spreadsheet101,245
Aljada availability (pdf)mixed native and OCR1821,691
Hado Dubai Islands (pdf)native text and tables10157
Masaar 3 availability (pdf)mixed native and OCR91712
Price list photograph (jpeg)OCR1196

3,901 evidence-linked claims. The eighteen-page PDF took embedded text for sixteen pages and OCR’d only the two that were genuinely scanned; the spreadsheet never touched OCR; the photographed price list did.

Design decisions

Three commitments that shape everything else

Evidence is the product

Every value carries a pointer back to its source — message, page and pixel region, or cell range — plus a hash. Answers are auditable by construction, not by an export step bolted on later.

Observations, never overwrites

A new price does not replace the old one; it is a new observation with its own timestamp. “Current price” is a query. Price history, change detection and re-running extraction with a better parser all become safe.

The model is optional

Native parsing, OCR and deterministic rules are the product. Language models are an enrichment stage that is off by default, cannot write evidence, must cite sources, and return nothing rather than guess.

Observed — read from the documentDerived — computed by the applicationNeeds review — reported, never hidden
Beyond one price

A whole document, in one canonical record

An availability sheet is more than a list of prices. Radar produces a single portable record per document, holding what the file genuinely contained.

Project profile
Developer, master development, community, city, launch and expected handover — with the handover keeping its real precision, so “Q4 2028” never silently becomes 1 October.
Unit offers
Code, building, floor, view, bedrooms, status and price, each row traced to the table row it came from.
Areas
Plot, built-up, saleable, GSA, internal, balcony, terrace and gross stay separate facts, each keeping its exact column heading and its original unit — sqft and sqm are never merged.
Payment plans
Milestones with their percentages and their timing kept as the document expressed it: a date, an offset such as “60 days from booking”, or an event such as “on handover”.
Fee schedules
Registration, admin, service charge and the rest — a percentage fee and a fixed amount stay different fields, and neither is derived from the other.
Inventory snapshots
Counts the document printed, kept apart from counts the application computed.
Extraction issues
Everything that could not be resolved, said out loud. An empty issue list on a document with unmapped columns would be a lie.
Language

Built for a market that works in three scripts

Gulf availability sheets arrive in Arabic as often as English, and Tehran-facing price lists arrive in Farsi. Radar reads column headings, statuses, milestones and fees in all three.

English — Latin scriptالعربية — Arabic scriptفارسی — Persian script

Arabic and Farsi letter variants are folded so a heading still matches, right-to-left and zero-width marks that survive a copy-paste out of a PDF are stripped, and Eastern-Arabic and Persian digits are handled without shifting the character offsets that evidence highlighting depends on.

On any screen

The same evidence, in the palm of your hand

The console on a narrow mobile screen, with the workspace panes collapsed into a tabbed layout.
Mobile. The four-pane workspace collapses into tabs rather than being cut down — every pane is still reachable.
The WhatsApp Radar sign-in screen, a dark card over a sweeping radar scope on a burnt-orange field.
Sign in. Administrator access, cookie sessions that expire, and login throttling. The only decorated screen in the product — the console itself stays flat so it never competes with the data on it.
Under the hood

Self-hosted, boring on purpose

Deployed on your own infrastructure, like QualiBot's self-hosted enterprise option.

Console
Next.js 15, holding no database credentials — it reaches data only through the versioned REST API.
API and workers
Fastify 5 with a WhatsApp connector and background job queues. The single writer to the database.
Extraction
Python 3.11 with PaddleOCR, PyMuPDF, pdfplumber and openpyxl. CPU only — no GPU anywhere.
Storage
PostgreSQL 16 with pgvector, Redis for queues, and S3-compatible object storage for original files.
AI access
A read-only MCP server, so an assistant can query the same evidence without a path to write it.
Deployment
Docker Compose on your own infrastructure. Nothing leaves the host unless you enable a remote model.
Verification
1,512 automated tests across every package, with zero type errors.
Getting started

See it read one of your own price lists

The most useful demonstration is your own document. Send a real availability sheet and we will show you what comes out — and, just as importantly, what it reports that it could not read.

What Radar is, and is not
Monitors only groups you are a member of and permitted to observeReads and preserves — it never sends a messageNot a CRM: it produces evidence, not a pipelineSelf-hosted, so original files never leave your infrastructure

WhatsApp Radar is a QualiBot product. WhatsApp is a trademark of its respective owner; this product is not affiliated with or endorsed by it.