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.
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.
Four stages, in this order, every time
Each stage only ever hands the next one something it can trace back to a source file.
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.
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.
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.
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.
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.
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.
A fluent sentence about availability with no visible source is indistinguishable from one that was invented — so the catalogue queries travel with the answer.
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.
2,527 of 2,527 populated price cells reach the output.
3,352 of 3,352, each keeping its original heading and unit.
1,579 carry a unit code; all six spreadsheets reach 100%.
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.
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.
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.
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.
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.
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.
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.
The same evidence, in the palm of your hand
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.
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.
WhatsApp Radar is a QualiBot product. WhatsApp is a trademark of its respective owner; this product is not affiliated with or endorsed by it.





