6
Dutch data sources, in the dossier
Novilla · AI real-estate case study
An AI automation suite for an independent appraiser in the Netherlands. It brings work spread across about 13 separate platforms into one dossier-based workbench: an AI valuation agent, mail, billing and PDF reports. The AI drafts. The appraiser decides.

Novilla is an AI automation suite we designed and built for an independent appraiser in the Netherlands. Her work ran across about 13 platforms that did not talk to each other. Novilla brings that work into one dossier-based workbench.
Each appraisal is one dossier. An AI valuation agent gathers the comparables and market data for it. An operations dashboard handles its mail, invoices, payment links and PDF reports.
One rule runs through all of it: the AI drafts, the appraiser decides. It can write a reply, but it cannot send one. It can never mark an invoice or a payment as done.

Our walkthrough of one appraiser's day with Novilla.
Dutch data sources, in the dossier
A dossier and a Dutch reply per email
The AI writes, the appraiser sends
Her own workbook, to the euro
PDF reports, rendered from the dossier
Mail, the report, invoices, payments, market data and validation each lived in a different place. The appraiser was the only link between them.
Requests arrive in one place. The dossier they belong to lives in another.
The appraisal report platform, with 687 rows that only appear when an earlier answer calls for them.
Invoices in one system, payment links in another.
Comparables, listings and cadastral records in three portals, with validation through NWWI.
First, we watched the work.
Before writing any code, we extracted, translated and analysed eight YouTube tutorials of the appraiser's own process.
They showed eight workflow steps, full of manual data entry.
Novilla was designed from that map.
Each appraisal is one dossier, and every part of Novilla works from it. Novilla connects to the platforms the appraiser already relies on, instead of asking her to give them up.
A dossier's status is split into six tracks: report, delivery, billing, archive, review and QA. One status column cannot say “delivered, but not yet paid”. Six tracks can.
A dossier only enters Novilla when it is explicitly picked up. From there, the work is shared between the parts below.
Pulls comparables and market data from Brainbay, Funda, Kadaster, PDOK, BAG and zoning records. We built it twice, as a LangGraph agent and as a lighter OpenAI runner, and compared the two.
Imports NWWI requests as dossiers and moves them across an eleven-stage board. Matches incoming mail to its dossier and drafts the reply in Dutch. Billing runs through adapters for Snelstart and Mollie, and the PDF reports are rendered in code.
Our own report pane, built to match Provadie's screen exactly. We reverse-engineered the form language behind Provadie instead of replacing it.
The onderbouwing is the case for the value. This module recomputes the appraiser's own workbook: three indexation columns per comparable, a euro trail for every adjustment, and a cap of 15% either way.
The appraiser's own ChatGPT prompt became the spec. Fixed parsers, with no AI touching the numbers, read NVM quarterly figures and Funda demand scans.
Real screens from the working product. Client names, addresses and contact details are blurred.
The board runs through eleven stages, from request and terms to delivery, payment and closed. Each card says what the dossier is waiting for, such as the client's akkoord or an inspection to book, and how many drafts need approval. Filters pull out the dossiers with a draft waiting or a deadline passed. If a dossier is pinned to a stage by hand, the card still says where the facts put it.

Open a dossier and its status reads as separate tracks: report, delivery, billing, archive, review and QA, next to the dossier's state in NWWI and Provadie. Below it, the stage map shows how far the dossier has come. A stage that still needs attention, such as an akkoord that has arrived but is not signed off, is flagged instead of skipped.

Every outgoing message waits in the dossier's draft list as needs approval. The appraiser opens it in a full editor, can switch the template or attach the PDF report, and only then presses Approve & send. Nothing leaves on its own.

Asked for comparables, the agent inspects the dossier, reads its data, gathers candidates and compares them, and reports each step as it completes. The answer is a table: sale date and price, living area and plot, distance, the indexed price and the adjusted value for every reference it kept, with a range and a confidence score on top. It also lists what still needs checking.

When the agent fills part of the Provadie report, the fields open in a pane beside the conversation. Each field shows where its value came from: Provadie, Novilla's own record, or the agent. Fields the agent filled are marked for review, and a block can be filled again or handed to the agent in one click.

Novilla keeps the facts of a dossier from each source next to each other: Provadie, NWWI, Brainbay and its own record. When two sources disagree, the field is flagged, and the appraiser compares the values and picks the one that counts. Once the report is signed, the subject facts and comparables lock.

Invoices and payments bound for Snelstart queue up as pending writes. The appraiser can open the exact payload first, and only approved writes are booked. Shown here on the development adapters.

Once a quarter, the appraiser sets the quarter labels and pastes the new NVM summary. The structure and wording of the section stay fixed in code so the figures stay exact, and the agent fills the numbers from the NVM Kwartaalcijfers PDF.

Brainbay holds the comparables an appraiser needs, but it offers no API. So a Playwright bot-worker drives it through a browser, with its jobs queued in BullMQ on Redis. Funda listings arrive through Apify.
Mail arrives through a Microsoft Graph webhook. A language model proposes the dossier, the intent and a reply in Dutch, and then it stops. The appraiser approves every send. The AI can never mark a billing or payment step complete, and never touches payment links or invoice numbers. Every sent message is kept as a snapshot that cannot change, and idempotency keys stop a retry from sending twice.
Provadie is the appraiser's report platform, so Novilla works beside it. We reverse-engineered the form language behind its screens. An extractor turns that language into a 4.8 MB generated catalog, and an interpreter draws our own report pane from it. A parity harness compares the pane with Provadie: page by page offline, and live but read-only across about 20 sections. Every gap is ranked by its cause, not by where it shows up.
An extractor can lose meaning without throwing a single error. So a conformance audit reads Provadie's form language a second time, sharing no code with the extractor. Where the two readers disagree, something was lost. A reveal probe then answers every conditional question by itself, to prove that all 687 conditional rows can appear. It takes about 9 seconds.
We built the onderbouwing module from the appraiser's real, completed workbook. It showed rules a blank template hides: her typed overrides beat formulas, Excel's AVERAGE skips empty cells, and multipliers change per dossier. One row, the energy label, cannot be decoded from the file at all, so the module flags it instead of guessing. Where the module helps, it offers evidence, never amounts. Kitchen, bathroom and boiler come from her inspection, so there it stays silent.
Market analysis started from the appraiser's own ChatGPT prompt, which became the spec. The figures never pass through a model. Fixed parsers read NVM quarterly figures and Funda demand scans and reproduce her reference output line for line. Live connectors now fetch both: the NVM figures by download, and Funda's demand figures from the chart data on its result page.
Business results, like time saved, are not in yet, so they are not on this page. These are engineering checks. Each one compares Novilla's output with something the appraiser made by hand, or with Provadie itself.
Reproduced to the euro, overrides and all
Audit findings from an independent second reader
Parity findings, narrowed to gaps ranked by cause
Form rows revealed in about 9 seconds
NVM quarterly cells, matched one for one
Funda demand values, matching her report
Every appraisal in one dossier
The AI drafts. The appraiser sends.
Our pane, checked against Provadie's own screen.
Let's build the one workbench that connects them.