{"kind":"demo-tenant-cutover-plan","version":"wave-1","sourceDemo":{"slug":"roofing-estimator","title":"Roofing Estimator","archetype":"A3","canonicalPath":"/demo-library/roofing-estimator","appPath":"/demo-apps/roofing-estimator","subdomain":"roofing-estimator.ideas-realized.com"},"cutoverPlan":{"headline":"RidgeQuote tenant cutover plan","summary":"A buyer-and-implementation cutover packet for moving Roofing Estimator from polished demo to branded live tenant: commercial approval, domain, data dry-run, access, automation, release gates, rollback, support, and SEO/AEO publication.","productName":"RidgeQuote","tenantName":"Northline Roofing Co.","previewUrl":"https://roofing-estimator.ideas-realized.com?screen=proposal","previewScreen":{"id":"proposal","label":"Proposal","proof":"proposal package and estimate margin proof","url":"https://roofing-estimator.ideas-realized.com?screen=proposal"},"productionDomain":"roofing-estimator.ideas-realized.com","launchWindow":"Medium","cutoverScore":72,"cutoverDecision":"Ready for buyer input on tenant brand and production domain.","nextCutoverMove":"Client confirms launch name, brand tokens, CNAME/TXT ownership, and fallback preview URL https://roofing-estimator.ideas-realized.com.","primaryOwner":"Estimator launch thread","phases":[{"id":"commercial-signoff","label":"Commercial signoff","owner":"Client sponsor","timing":"Before kickoff","status":"implementation","summary":"Confirm the buyer wants this demo rebranded as a paid tenant and accepts the commercial boundaries.","entryCriteria":["Buyer has reviewed the live app proof route.","Recommended offer, setup range, and recurring range are understood."],"exitCriteria":["Order packet approved.","SOW and rebrand rights accepted.","Implementation kickoff can be scheduled."],"gateIds":["commercial-approval"],"assets":[{"label":"Client launch plan","href":"/demo-library/roofing-estimator/client-launch-plan","kind":"commercial","detail":"Buyer-facing launch plan with order, data, SEO/AEO, and support steps."},{"label":"Statement of work","href":"/demo-library/roofing-estimator/statement-of-work","kind":"commercial","detail":"Buyer-signable scope, milestones, responsibilities, service levels, and change controls."},{"label":"Statement of work JSON","href":"/demo-library/roofing-estimator/statement-of-work.json","kind":"commercial","detail":"Machine-readable scope and acceptance manifest."},{"label":"Deal desk package","href":"/demo-library/roofing-estimator/deal-desk","kind":"commercial","detail":"Order form, pricing bands, approval gates, add-ons, and redlines."},{"label":"Deal desk JSON","href":"/demo-library/roofing-estimator/deal-desk.json","kind":"commercial","detail":"Machine-readable commercial close manifest."}]},{"id":"tenant-identity","label":"Tenant identity and domain","owner":"Implementation lead","timing":"Kickoff day 1","status":"buyer-input","summary":"Swap the demo identity into the buyer tenant, confirm DNS, and preserve the preview fallback.","entryCriteria":["Client name, logo, colors, and launch domain are available."],"exitCriteria":["Production domain is confirmed.","Tenant seed package references the buyer identity."],"gateIds":["brand-domain"],"assets":[{"label":"White-label kit","href":"/demo-library/roofing-estimator/white-label-kit","kind":"deployment","detail":"Naming, domain, terminology swaps, copy blocks, brand assets, and checklist."},{"label":"White-label kit JSON","href":"/demo-library/roofing-estimator/white-label-kit.json","kind":"deployment","detail":"Machine-readable rebrand manifest."},{"label":"Tenant clone package","href":"/demo-library/roofing-estimator/tenant-clone-package","kind":"deployment","detail":"Rebrand-and-launch handoff for a buyer tenant."},{"label":"Tenant clone JSON","href":"/demo-library/roofing-estimator/tenant-clone-package.json","kind":"deployment","detail":"Machine-readable tenant clone package."},{"label":"Tenant seed package","href":"/demo-library/roofing-estimator/tenant-seed-package","kind":"deployment","detail":"Users, roles, data sources, integrations, feature flags, automations, and notifications."},{"label":"Tenant seed JSON","href":"/demo-library/roofing-estimator/tenant-seed-package.json","kind":"deployment","detail":"Machine-readable tenant seed manifest."}]},{"id":"data-cutover","label":"Data dry-run and tenant seed","owner":"Estimator lead","timing":"Kickoff days 1-2","status":"buyer-input","summary":"The first pilot should prove estimate consistency before full CRM, e-sign, or PDF automation. The import plan focuses on material/labor line items, margin guardrails, and proposal-ready sections.","entryCriteria":["Source exports and sample CSV templates are available."],"exitCriteria":["Dry-run import passes validation.","Required source fields and tenant boundaries are accepted."],"gateIds":["source-data"],"assets":[{"label":"Sample data package","href":"/demo-library/roofing-estimator/sample-data-package","kind":"data","detail":"CSV templates, sample rows, and import validation gates."},{"label":"Sample data JSON","href":"/demo-library/roofing-estimator/sample-data-package.json","kind":"data","detail":"Machine-readable data dry-run manifest."},{"label":"Production data contract","href":"/demo-library/roofing-estimator/data-contract","kind":"data","detail":"Entities, source systems, events, boundaries, and API-shaped routes."},{"label":"Production data contract JSON","href":"/demo-library/roofing-estimator/data-contract.json","kind":"data","detail":"Machine-readable production data contract."}]},{"id":"access-automation","label":"Access, roles, and automations","owner":"Product lead","timing":"Kickoff days 2-4","status":"buyer-input","summary":"Confirm buyer seats, permissions, integration credentials, notification owners, and disabled-by-default automation rules.","entryCriteria":["Named users and roles are available.","Required credentials and sender identities have owners."],"exitCriteria":["Access checks pass.","Automation fallbacks have owners.","No buyer-facing automation fires without signoff."],"gateIds":["access-roles","automation-integrations"],"assets":[{"label":"Sample data package","href":"/demo-library/roofing-estimator/sample-data-package","kind":"data","detail":"CSV templates, sample rows, and import validation gates."},{"label":"Sample data JSON","href":"/demo-library/roofing-estimator/sample-data-package.json","kind":"data","detail":"Machine-readable data dry-run manifest."},{"label":"Production data contract","href":"/demo-library/roofing-estimator/data-contract","kind":"data","detail":"Entities, source systems, events, boundaries, and API-shaped routes."},{"label":"Production data contract JSON","href":"/demo-library/roofing-estimator/data-contract.json","kind":"data","detail":"Machine-readable production data contract."},{"label":"White-label kit","href":"/demo-library/roofing-estimator/white-label-kit","kind":"deployment","detail":"Naming, domain, terminology swaps, copy blocks, brand assets, and checklist."},{"label":"White-label kit JSON","href":"/demo-library/roofing-estimator/white-label-kit.json","kind":"deployment","detail":"Machine-readable rebrand manifest."}]},{"id":"go-live-release","label":"Release, monitoring, and support","owner":"Estimator launch thread","timing":"Go-live day","status":"implementation","summary":"A production handoff plan for taking Roofing Estimator from sales preview to a client-owned launch domain with Netlify hosting, environment gates, monitoring, rollback, and canonical SEO/AEO checks.","entryCriteria":["Release gates are reviewed.","Support owner is assigned.","Monitoring thresholds are documented."],"exitCriteria":["Production route is promoted.","Monitoring is active.","Support and rollback owners are known."],"gateIds":["release-gates","monitoring-support"],"assets":[{"label":"Live sales preview","href":"https://roofing-estimator.ideas-realized.com?screen=proposal","kind":"app","detail":"First proof screen: Proposal."},{"label":"Canonical landing page","href":"/demo-library/roofing-estimator","kind":"canonical","detail":"Indexable buyer proof page and primary demo-library route."},{"label":"White-label kit","href":"/demo-library/roofing-estimator/white-label-kit","kind":"deployment","detail":"Naming, domain, terminology swaps, copy blocks, brand assets, and checklist."},{"label":"White-label kit JSON","href":"/demo-library/roofing-estimator/white-label-kit.json","kind":"deployment","detail":"Machine-readable rebrand manifest."},{"label":"Tenant clone package","href":"/demo-library/roofing-estimator/tenant-clone-package","kind":"deployment","detail":"Rebrand-and-launch handoff for a buyer tenant."},{"label":"Tenant clone JSON","href":"/demo-library/roofing-estimator/tenant-clone-package.json","kind":"deployment","detail":"Machine-readable tenant clone package."}]},{"id":"seo-aeo-launch","label":"SEO/AEO publication","owner":"Growth lead","timing":"Go-live week","status":"implementation","summary":"A publish-ready growth kit for using the Roofing Estimator demo as an industry pillar, answer-engine proof source, comparison asset, and sales-qualified routing path.","entryCriteria":["Buyer proof claim is approved.","Canonical and industry routes are available."],"exitCriteria":["Industry pillar, answer blocks, and internal links route demand back to the demo proof."],"gateIds":["seo-aeo-publication"],"assets":[{"label":"Canonical landing page","href":"/demo-library/roofing-estimator","kind":"canonical","detail":"Indexable buyer proof page and primary demo-library route."},{"label":"Industry SEO/AEO page","href":"/industries/roofing-estimating-software","kind":"industry","detail":"Roofing estimating software"}]}],"gates":[{"id":"commercial-approval","label":"Commercial order and SOW approval","phase":"commercial-signoff","owner":"Client sponsor","timing":"Before kickoff","status":"implementation","source":"Commercial","proof":"Order packet, SOW, and rebrand rights point to RidgeQuote as the client launch product.","acceptanceCriteria":"Sponsor accepts scope, $20k-$42k pilot build, then $1k-$4k/month for hosting, price-book maintenance, PDF/e-sign support, and CRM handoff, launch boundaries, and payment milestone.","rollback":"Hold tenant setup and keep the app as sales-preview only until pricing or scope redlines are resolved."},{"id":"brand-domain","label":"Tenant brand and production domain","phase":"tenant-identity","owner":"Client DNS owner","timing":"Kickoff day 1","status":"buyer-input","source":"Brand and domain","proof":"Northline Roofing Co. is seeded for roofing-estimator.ideas-realized.com; 3 DNS records are tracked.","acceptanceCriteria":"Client confirms launch name, brand tokens, CNAME/TXT ownership, and fallback preview URL https://roofing-estimator.ideas-realized.com.","rollback":"Keep traffic on https://roofing-estimator.ideas-realized.com and delay production alias activation until DNS checks pass."},{"id":"source-data","label":"Source data dry-run","phase":"data-cutover","owner":"Estimator lead","timing":"Kickoff days 1-2","status":"buyer-input","source":"Data import","proof":"3 source groups and 3 tenant seed sources are mapped.","acceptanceCriteria":"Sales manager signs off on three representative estimates.","rollback":"Use seed data and read-only import review until source exports satisfy required fields and validation gates."},{"id":"access-roles","label":"Access roles and permission boundaries","phase":"access-automation","owner":"Implementation lead","timing":"Kickoff days 2-3","status":"implementation","source":"Access control","proof":"3 roles, 3 scopes, and 3 launch permission groups are documented.","acceptanceCriteria":"Customer signer restrictions align with proposal handoff scope.","rollback":"Revert affected users to internal-only review access and disable buyer-facing invitations until roles are corrected."},{"id":"automation-integrations","label":"Automation and integration readiness","phase":"access-automation","owner":"Product lead","timing":"Kickoff days 3-4","status":"buyer-input","source":"Integrations","proof":"4 integrations, 3 automations, and 2 notifications are in the tenant seed package.","acceptanceCriteria":"Credentials, sender identities, fallback owners, and disabled-by-default automations are confirmed before live users enter.","rollback":"Disable automation rules, keep manual queue ownership, and preserve audit entries for replay after credentials are repaired."},{"id":"release-gates","label":"Release gates and first proof screen","phase":"go-live-release","owner":"Estimator","timing":"Go-live day","status":"implementation","source":"Deployment","proof":"5 release gates protect Proposal: proposal package and estimate margin proof","acceptanceCriteria":"Scope, sell price, and gross margin update together.","rollback":"Keep the sales preview subdomain live until the client production domain passes route, SSL, auth, and acceptance checks."},{"id":"monitoring-support","label":"Monitoring and support handoff","phase":"go-live-release","owner":"Estimator launch thread","timing":"Go-live day + 1","status":"ready","source":"Support","proof":"3 monitors and 2 support levels are defined.","acceptanceCriteria":"Estimator launch thread: Business days during pilot. Renewal signal: Estimator software inquiry: 2 qualified roofing inquiries per quarter.","rollback":"Pilot support scope: $900-$3.2k/month recurring for hosting, support, and workflow tuning."},{"id":"seo-aeo-publication","label":"SEO/AEO publication and internal links","phase":"seo-aeo-launch","owner":"Growth lead","timing":"Go-live week","status":"implementation","source":"SEO/AEO","proof":"/industries/roofing-estimating-software anchors 3 launch-calendar entries and 3 answer blocks.","acceptanceCriteria":"Canonical page /demo-library/roofing-estimator, industry page /industries/roofing-estimating-software, and app proof URL are internally linked with buyer-ready CTA language.","rollback":"Noindex unfinished support pages, preserve the canonical landing page, and republish after the buyer proof claim is verified."}],"rollbackControls":[{"label":"DNS promotion rollback","trigger":"Production domain fails verification, SSL, or route rewrite checks.","owner":"Client DNS owner","response":"Keep the sales preview subdomain live until the client production domain passes route, SSL, auth, and acceptance checks.","evidence":"roofing-estimator.ideas-realized.com: ready; roofing-estimator.ideas-realized.com: needs-client; _netlify.roofing-estimator.ideas-realized.com: needs-client"},{"label":"Data import rollback","trigger":"Required field validation, duplicate detection, or record counts fail during dry-run.","owner":"Estimator lead","response":"Keep tenant in seed-data mode and rerun the import after source mapping changes are approved.","evidence":"Margin math acceptance: blocking; Proposal copy approval: warning; CRM handoff rule: info"},{"label":"Automation rollback","trigger":"Notification, escalation, integration, or automation action sends to the wrong owner or channel.","owner":"Product lead","response":"Disable automation rules, keep manual workflow ownership, and replay audit events after correction.","evidence":"Low-margin approval gate: ready; Proposal follow-up reminder: template; Price book drift review: needs-client"},{"label":"SEO/AEO claim rollback","trigger":"Buyer proof, KPI claim, or industry language is not yet approved for public publication.","owner":"Growth lead","response":"Noindex unfinished support routes and keep only the canonical demo page published until claims are approved.","evidence":"Roofing estimate proposal software for margin-controlled sales teams: Service + SoftwareApplication + FAQPage; Roofing price book drift checks before customer proposals: Article + HowTo/FAQPage; Roofing proposal builder vs spreadsheet estimates: Article + FAQPage"}],"routeMap":[{"label":"Live sales preview","href":"https://roofing-estimator.ideas-realized.com?screen=proposal","kind":"app","detail":"First proof screen: Proposal."},{"label":"Canonical landing page","href":"/demo-library/roofing-estimator","kind":"canonical","detail":"Indexable buyer proof page and primary demo-library route."},{"label":"Industry SEO/AEO page","href":"/industries/roofing-estimating-software","kind":"industry","detail":"Roofing estimating software"},{"label":"Client launch plan","href":"/demo-library/roofing-estimator/client-launch-plan","kind":"commercial","detail":"Buyer-facing launch plan with order, data, SEO/AEO, and support steps."},{"label":"Statement of work","href":"/demo-library/roofing-estimator/statement-of-work","kind":"commercial","detail":"Buyer-signable scope, milestones, responsibilities, service levels, and change controls."},{"label":"Statement of work JSON","href":"/demo-library/roofing-estimator/statement-of-work.json","kind":"commercial","detail":"Machine-readable scope and acceptance manifest."},{"label":"Deal desk package","href":"/demo-library/roofing-estimator/deal-desk","kind":"commercial","detail":"Order form, pricing bands, approval gates, add-ons, and redlines."},{"label":"Deal desk JSON","href":"/demo-library/roofing-estimator/deal-desk.json","kind":"commercial","detail":"Machine-readable commercial close manifest."},{"label":"Sample data package","href":"/demo-library/roofing-estimator/sample-data-package","kind":"data","detail":"CSV templates, sample rows, and import validation gates."},{"label":"Sample data JSON","href":"/demo-library/roofing-estimator/sample-data-package.json","kind":"data","detail":"Machine-readable data dry-run manifest."},{"label":"Production data contract","href":"/demo-library/roofing-estimator/data-contract","kind":"data","detail":"Entities, source systems, events, boundaries, and API-shaped routes."},{"label":"Production data contract JSON","href":"/demo-library/roofing-estimator/data-contract.json","kind":"data","detail":"Machine-readable production data contract."},{"label":"White-label kit","href":"/demo-library/roofing-estimator/white-label-kit","kind":"deployment","detail":"Naming, domain, terminology swaps, copy blocks, brand assets, and checklist."},{"label":"White-label kit JSON","href":"/demo-library/roofing-estimator/white-label-kit.json","kind":"deployment","detail":"Machine-readable rebrand manifest."},{"label":"Tenant clone package","href":"/demo-library/roofing-estimator/tenant-clone-package","kind":"deployment","detail":"Rebrand-and-launch handoff for a buyer tenant."},{"label":"Tenant clone JSON","href":"/demo-library/roofing-estimator/tenant-clone-package.json","kind":"deployment","detail":"Machine-readable tenant clone package."},{"label":"Tenant seed package","href":"/demo-library/roofing-estimator/tenant-seed-package","kind":"deployment","detail":"Users, roles, data sources, integrations, feature flags, automations, and notifications."},{"label":"Tenant seed JSON","href":"/demo-library/roofing-estimator/tenant-seed-package.json","kind":"deployment","detail":"Machine-readable tenant seed manifest."},{"label":"Tenant cutover plan","href":"/demo-library/roofing-estimator/tenant-cutover-plan","kind":"deployment","detail":"Downloadable cutover packet for buyer and implementation signoff."},{"label":"Tenant cutover JSON","href":"/demo-library/roofing-estimator/tenant-cutover-plan.json","kind":"deployment","detail":"Machine-readable cutover manifest for automation and QA."}],"buyerSignoff":["Approve commercial order, SOW, rebrand rights, and first payment milestone for RidgeQuote.","Confirm production domain roofing-estimator.ideas-realized.com, buyer sponsor, launch window, and support owner.","Provide source exports for Price book, Estimate templates, Proposal content and approve import validation results.","Approve role matrix for Estimator, Sales manager, Customer signer before inviting live users.","Approve public proof language for /industries/roofing-estimating-software and /demo-library/roofing-estimator."],"implementationHandoff":["Seed tenant package: /demo-library/roofing-estimator/tenant-seed-package and /demo-library/roofing-estimator/tenant-seed-package.json.","Data contract: /demo-library/roofing-estimator/data-contract and /demo-library/roofing-estimator/data-contract.json.","First proof screen: Proposal at https://roofing-estimator.ideas-realized.com?screen=proposal.","Monitoring: Demo app availability under Homepage and app route return 200 from production domain after DNS cutover.; Proposal packets generated with approved margin and current price-book evidence under Pilot usage is visible in the buyer dashboard within the first review cycle.; Client-specific price book and warranty language are required. under No open launch blocker can affect first user workflow..","North-star analytics: Proposal packets generated with approved margin and current price-book evidence; instrumentation phase: Instrument roofing estimator landing CTA, app preview, estimate edit, margin approval, price-book drift review, proposal export, and spec download.."],"seoAeoPublication":["Canonical page: /demo-library/roofing-estimator","Industry page: /industries/roofing-estimating-software","Roofing estimate proposal software for margin-controlled sales teams: /industries/roofing-estimate-proposal-software","Roofing price book drift checks before customer proposals: /resources/roofing-price-book-drift-checks","Roofing proposal builder vs spreadsheet estimates: /compare/roofing-proposal-builder-vs-spreadsheets","RidgeQuote canonical demo: /demo-library/roofing-estimator","RidgeQuote app-only preview: https://roofing-estimator.ideas-realized.com","Roofing Estimator demo: /demo-library/roofing-estimator"]},"implementationManifest":{"markdownPath":"/demo-library/roofing-estimator/tenant-cutover-plan","jsonPath":"/demo-library/roofing-estimator/tenant-cutover-plan.json","launchRoomPath":"/demo-library/roofing-estimator/launch-room","firstProofUrl":"https://roofing-estimator.ideas-realized.com?screen=proposal","firstProofScreen":"proposal","productionDomain":"roofing-estimator.ideas-realized.com","phaseCount":6,"gateCount":8,"blockedGateCount":0,"buyerInputGateCount":3,"rollbackControlCount":4,"handoffRouteCount":20}}