Run a takeoff

End-to-end: plan upload → AI assessment → review → approve → canvas symbols. The same sequence ships as an MCP prompt (takeoff_from_plans) and as an Arazzo workflow.

Steps

  1. Create a project (or use an existing one). Upload a plan PDF via POST /v1/files + the presigned R2 URL.
  2. POST /v1/projects/{id}/assessments — starts an async AI pass.
  3. Poll GET /v1/assessments/{id} until status === "awaiting_approval". Or subscribe to the assessment.completed webhook event.
  4. Review detectedElements with the user. Only after explicit confirmation, call POST /v1/assessments/{id}/approve with the approved subset.
  5. Approved elements become symbols. Use GET /v1/projects/{id}/line-items to see what's now bound.

Don't