{"kind":"demo-deployment-launch-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"},"deploymentPlan":{"deploymentHeadline":"Deployment launch plan for RidgeQuote","deploymentSummary":"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.","hostingModel":"Single Next.js application deployed from GitHub to Netlify, with demo subdomains rewritten into app-only routes and canonical SEO pages kept on ideas-realized.com.","repository":"Idea-R/ideas-realized-page","branchStrategy":"Ship from a reviewed feature branch into the existing Netlify production site, then attach the selected client subdomain as a named domain alias after acceptance gates pass.","previewDomain":"roofing-estimator.ideas-realized.com","productionDomain":"roofing-estimator.ideas-realized.com","environments":[{"name":"Sales preview","url":"https://roofing-estimator.ideas-realized.com","purpose":"App-only demo surface used in sales calls and embedded from the canonical landing page.","dataMode":"Seeded client-side preview data only; no tenant secrets or live customer records.","status":"complete"},{"name":"Deploy preview","url":"Netlify deploy preview URL from the feature branch","purpose":"Review branch before domain aliasing, schema checks, browser QA, and stakeholder sign-off.","dataMode":"Seeded demo data plus import template samples.","status":"in-progress"},{"name":"Pilot production","url":"https://roofing-estimator.ideas-realized.com","purpose":"Roofing estimate and proposal software pilot package launch for the first buyer cohort.","dataMode":"Load a controlled roof-system price book, validate markup math with the sales manager, then let reps build review-ready estimates while proposal export remains template-based.","status":"queued"}],"domainRecords":[{"label":"Preview subdomain","host":"roofing-estimator.ideas-realized.com","type":"CNAME","value":"Ideas Realized Netlify site alias or wildcard domain","owner":"Ideas Realized technical lead","status":"ready","detail":"Keeps the app-only demo available as the sales URL while the canonical page remains on ideas-realized.com."},{"label":"Client production subdomain","host":"roofing-estimator.ideas-realized.com","type":"CNAME","value":"Client DNS points to the approved Netlify site alias","owner":"Client DNS owner","status":"needs-client","detail":"Use estimates.clientdomain.com or proposals.clientdomain.com for production and keep roofing-estimator.ideas-realized.com as the sales preview."},{"label":"Domain ownership verification","host":"_netlify.roofing-estimator.ideas-realized.com","type":"TXT","value":"Netlify verification token issued during domain setup","owner":"Client DNS owner","status":"needs-client","detail":"Required before SSL issuance and production cutover when the domain is client-owned."}],"environmentVariables":[{"name":"NEXT_PUBLIC_SITE_URL","scope":"Build and runtime","owner":"Ideas Realized technical lead","status":"template","detail":"Set to https://roofing-estimator.ideas-realized.com for pilot production and keep canonical demo routes pointed at ideas-realized.com."},{"name":"NEXT_DISABLE_IMAGE_OPTIMIZATION","scope":"Netlify runtime","owner":"Ideas Realized technical lead","status":"ready","detail":"Use when the host requires unoptimized Next images for generated poster assets and demo previews."},{"name":"AUTH_PROVIDER_CONFIG","scope":"Runtime secret","owner":"Implementation lead","status":"needs-client","detail":"Sales team email login for pilot users, with customer proposal links isolated from staff workspaces."},{"name":"NOTIFICATION_SENDER","scope":"Runtime secret","owner":"Implementation lead","status":"template","detail":"In-app: Estimate needs margin approval"},{"name":"ANALYTICS_WRITE_KEY","scope":"Runtime secret","owner":"Growth lead","status":"template","detail":"Instrument roofing estimator landing CTA, app preview, estimate edit, margin approval, price-book drift review, proposal export, and spec download."}],"releaseGates":[{"label":"Update roof scope and recalculate margin","owner":"Estimator","status":"complete","evidence":"Scope, sell price, and gross margin update together."},{"label":"Block proposal send under margin floor","owner":"Sales manager","status":"in-progress","evidence":"Approval checks are visible; send gate needs production workflow."},{"label":"Assemble branded proposal packet","owner":"Sales lead","status":"queued","evidence":"Proposal sections exist; PDF output provider is not selected."},{"label":"Canonical and noindex routing verified","owner":"Technical lead","status":"complete","evidence":"Main-domain landing pages remain canonical while app-only routes are used for subdomain launch URLs."},{"label":"Client proposal and implementation spec approved","owner":"Client sponsor","status":"queued","evidence":"RidgeQuote pilot proposal and JSON/Markdown implementation spec are reviewed before production domain cutover."}],"monitoring":[{"signal":"Demo app availability","threshold":"Homepage and app route return 200 from production domain after DNS cutover.","owner":"Technical lead","response":"Rollback DNS alias to preview or pause launch announcement until the route passes."},{"signal":"Proposal packets generated with approved margin and current price-book evidence","threshold":"Pilot usage is visible in the buyer dashboard within the first review cycle.","owner":"Growth lead","response":"Review analytics key, event mapping, and privacy guardrails before widening access."},{"signal":"Client-specific price book and warranty language are required.","threshold":"No open launch blocker can affect first user workflow.","owner":"Implementation lead","response":"Hold go-live and keep the app in preview mode until the blocker has owner-approved evidence."}],"rollbackPlan":["Keep the sales preview subdomain live until the client production domain passes route, SSL, auth, and acceptance checks.","If client DNS or SSL fails, remove the production alias and route users back to the preview subdomain.","If data import fails, restore the last approved seed/import snapshot and hold workflow edits until the exception report is reviewed.","If notification or integration credentials fail, disable outbound automation and continue with manual review queues.","Document the rollback decision in the operations ledger and add the next action to the live ops command center."],"goLiveSequence":["Merge the reviewed branch after typecheck, lint, build, schema validation, and browser QA pass.","Create or confirm the Netlify domain alias for the sales preview subdomain.","Request client DNS records for roofing-estimator.ideas-realized.com and verify ownership before SSL issuance.","Load tenant brand tokens, roles, launch assets, import templates, and acceptance evidence.","Run release gates, verify monitoring signals, and approve the first pilot user cohort.","Publish SEO/AEO links for Roofing estimating software and route launch CTAs to the canonical demo landing page."],"supportHandoff":["Pilot support scope: $900-$3.2k/month recurring for hosting, support, and workflow tuning.","Price-book import template","Margin approval rule sheet","Proposal packet sample","Select first roof package: Sales manager; Pilot with one common shingle package and target margin floor.","Approve price book formulas: Estimator lead; Finalize material, labor, waste, markup, and warranty formulas."],"seoLaunchChecks":["/demo-library/roofing-estimator remains the canonical landing page for roofing estimating software.","https://roofing-estimator.ideas-realized.com remains app-only and noindex for thin duplicate prevention.","Confirm internal links mention roofing proposal software.","Confirm internal links mention roofing estimate calculator app.","Confirm internal links mention roofing sales workflow software.","Answer target: What should roofing estimating software include?","Answer target: How do roofing contractors control estimate margins?"]},"implementationManifest":{"markdownPath":"/demo-library/roofing-estimator/deployment-launch","jsonPath":"/demo-library/roofing-estimator/deployment-launch.json","launchRoomPath":"/demo-library/roofing-estimator/launch-room","clientLaunchPlanJsonPath":"/demo-library/roofing-estimator/client-launch-plan.json","openApiSpecPath":"/demo-library/roofing-estimator/openapi.json","productionDataContractJsonPath":"/demo-library/roofing-estimator/data-contract.json","sampleDataPackageJsonPath":"/demo-library/roofing-estimator/sample-data-package.json","tenantClonePackageJsonPath":"/demo-library/roofing-estimator/tenant-clone-package.json","firstProofUrl":"https://roofing-estimator.ideas-realized.com?screen=proposal","firstProofScreen":"proposal","environmentCount":3,"domainRecordCount":3,"environmentVariableCount":5,"releaseGateCount":5,"monitoringSignalCount":3,"rollbackStepCount":5,"goLiveStepCount":6,"seoLaunchCheckCount":7,"needsClientCount":3,"blockedOrQueuedCount":3}}