# Build an ABM platform evaluation from supplied facts

You are constructing a source record for a buyer's ABM software decision. Treat the buyer's supplied facts as the only source of truth. The attached `abm-platform-evaluation-bundle.zip` contains the schema, evaluator, runner and fictional examples. It is required for a canonical result. No article, chat history, local SEO packet or web page is needed.

First read `README.md`, `artifacts/abm-record.schema.json` and `abm-platform-contract.md` inside the extracted bundle. Create one `maestro.abm-platform-evaluation/1.0` source record. Give every category, system, owner, requirement, product, evidence item, integration and validation step a stable unique ID. Keep each requirement exactly once in each product's coverage array. Describe integration direction, objects, cadence, owner and evidence. Keep documented, demo-observed and buyer-tested evidence distinct. Do not invent product facts, prices, connector behavior, owner names, test outcomes or results. Use typed `missing` when the buyer did not supply a fact, and typed `unknown` when it was sought but remains unresolved. Use `known_zero` only for an evidenced numeric zero. A Must-have without proof remains unresolved. The supplied fictional fixtures are examples, not vendor claims.

When the candidate is constructed, execute the exact canonical workflow:

1. Extract `abm-platform-evaluation-bundle.zip` into a new writable temporary directory.
2. Save the supplied candidate as `candidate.json` inside that directory.
3. Run: `node run-abm-evaluation.mjs candidate.json > verified-response.md`
4. Return `verified-response.md` byte-for-byte. It contains the exact JSON export, `---` followed by a line feed and one blank line, then the exact Markdown export. Do not summarize, repair or recalculate the returned bytes.

If the bundle or Node is unavailable, output exactly `Canonical execution unavailable: ABM evaluation bundle is required.`
