{
  "status": "client_portal_preview_ready_local_only",
  "id": "demo-client",
  "brandName": "Atelier Preview Client",
  "packageName": "Atelier Signature Website",
  "portalUrl": "/portal/demo-client",
  "apiUrl": "/api/client-portal/demo-client",
  "timeline": [
    {
      "id": "intake",
      "label": "Scope confirmation",
      "state": "draft",
      "owner": "Atelier + client",
      "proof": "Human-approved brief before build."
    },
    {
      "id": "assets",
      "label": "Assets and access",
      "state": "waiting_on_client",
      "owner": "client",
      "proof": "No passwords requested; least-privilege access only."
    },
    {
      "id": "design",
      "label": "Design direction",
      "state": "planned",
      "owner": "Atelier",
      "proof": "Preview route before publication."
    },
    {
      "id": "review",
      "label": "Preview approval",
      "state": "approval_required",
      "owner": "client",
      "proof": "Written approval before launch mutation."
    },
    {
      "id": "handoff",
      "label": "Handoff vault",
      "state": "draft",
      "owner": "Atelier",
      "proof": "Ownership, renewal, QA, and care-plan checklist."
    },
    {
      "id": "care",
      "label": "Care plan",
      "state": "optional_draft",
      "owner": "client",
      "proof": "No recurring charge until separately approved."
    }
  ],
  "assetChecklist": [
    {
      "id": "brand_assets",
      "label": "Logo, colors, photography, and usage preferences",
      "state": "requested"
    },
    {
      "id": "authority_proof",
      "label": "Reviews, credentials, case notes, guarantees to avoid, and regulated-claim limits",
      "state": "requested"
    },
    {
      "id": "service_copy",
      "label": "Services, pricing boundaries, FAQs, process notes, and exclusions",
      "state": "requested"
    },
    {
      "id": "access_inventory",
      "label": "Domain, DNS, hosting, CMS, analytics, and email provider inventory",
      "state": "no_passwords"
    },
    {
      "id": "legal_review",
      "label": "Terms, privacy, refunds, revision policy, and regulated content review",
      "state": "human_review"
    }
  ],
  "approvals": [
    {
      "id": "scope_approval",
      "label": "Scope and package approval",
      "requiredBefore": "quote or build start",
      "granted": false
    },
    {
      "id": "content_approval",
      "label": "Content/factual claim approval",
      "requiredBefore": "preview signoff",
      "granted": false
    },
    {
      "id": "preview_approval",
      "label": "Preview approval",
      "requiredBefore": "deployment, DNS, publishing, or message sending",
      "granted": false
    },
    {
      "id": "launch_approval",
      "label": "Launch approval",
      "requiredBefore": "any live mutation",
      "granted": false
    }
  ],
  "revisionNotes": {
    "includedRound": "One structured preview review round in the selected scope unless contract says otherwise.",
    "smallCorrections": "Typos, factual corrections, and broken links are separated from direction changes.",
    "changeRequests": "New pages, new offers, provider setup, automation, or major direction changes become scoped change requests.",
    "noUnlimitedRevisions": true
  },
  "handoffVault": {
    "state": "draft_not_final",
    "items": [
      "Project summary and selected package",
      "Final page inventory and component map",
      "QA receipt and unresolved risk notes",
      "Ownership/access closure checklist",
      "Domain, hosting, renewal, and provider inventory",
      "Care-plan options and support path",
      "Upgrade roadmap and next safe recommendations"
    ]
  },
  "carePlan": {
    "state": "optional_draft",
    "options": [
      "Launch warranty",
      "Continuity care",
      "Growth support",
      "Emergency support"
    ],
    "activationRequires": "Separate approval, scope, payment method, and receipt."
  },
  "noLiveActionsTaken": true,
  "blockedLiveActions": [
    "public publishing",
    "payment processing",
    "payment link creation",
    "message sending",
    "DNS mutation",
    "hosting purchase",
    "domain purchase",
    "account mutation",
    "provider mutation",
    "external API call",
    "Vercel deployment",
    "Supabase mutation"
  ]
}