Lead/MCP is the schema every WoodStock project is born from. Forward an email, drag in a Dropbox folder, paste a CVR, or throw a 4 GB IFC zip at it — the same fields come out the other side. Missing data is guessed from context, marked in amber, and waits for a human to confirm before the SupaQuote™ clock starts.
If a Lead/MCP record validates against this shape, it can become a Hytte Rødsjø, a SupaQuote, a receipt, a factory route. If a field is null and not guessable, the lead stays in the inbox.
One email (“Hej Morten, vil du give en pris på denne tilbygning”) and one zip of 4 PDFs. Below is what the MCP returned, field by field, with sources. Amber = guess. Black = extracted.
{
"lead_id": "001",
"received_at": "2026-05-19T23:52:00+02:00",
"source": "email+attachment",
"project": {
"slug": "skolekrogen-56a",
"kind": "tilbygning",
"ask": "Vil du give en pris på denne tilbygning"
},
"client": {
"name": "Hørsholm Entreprise ApS",
"cvr": "40712127",
"ean": "5790002391194",
"address": "Nybrovej 87, 2820 Gentofte",
"contact": {
"name": "René Franck",
"role": "Projektleder, sælger og partner",
"email": "rf@hh-e.dk",
"phone": "+4531714939"
}
},
"site": {
"address": "Skolekrogen 56A",
"postcode": "2820",
"city": "Gentofte",
"area_m2_estimate": 42,
"storeys": 1,
"_guess": ["address", "postcode", "area_m2_estimate"]
},
"ifc": null,
"bom": { "parts": 0, "ready": false },
"files": [
{ "name": "Ringbind-forslag-1.pdf", "bytes": 242207, "cat": "GA" },
{ "name": "Ringbind-eksisterende-tegninger.pdf", "bytes": 221489, "cat": "GA" },
{ "name": "Ringbind-forslag-1-trae.pdf", "bytes": 236522, "cat": "GA" },
{ "name": "Ringbind-forslag-2.pdf", "bytes": 248078, "cat": "GA" }
],
"next": [
"human_confirm_address",
"request_ifc_from_aec_prefac",
"start_supaquote_when_permits_in"
]
}The BOM dropdown on /hytte-rodsjo and /skolekrogen-56a is not a one-off. It is the SupaQuote Receipt™ — the canonical artefact every Lead/MCP lead resolves into. These are the house rules. Soon every project gets one.