Demo playbook
How to run the Zenith AI demo, reset state, and use test accounts.
Run the demo
From the repo root:
pnpm --filter @zenith/zenith-demo dev
Default URL: http://localhost:3010
Key workflows
- Community operations via Atlas chat
- Onboarding: invites, directory import, vendor onboarding, document ingestion
- Governance workbench: policy config, extraction diff/apply, board motions
- Operations control tower: work graph, automation config, routing, SLA/closure
- Resident/vendor portal: inboxes, invite acceptance, notices
- Budget forecasting, calendar, notifications, audit evidence
Dana test account (design QA)
For authenticated demos without Clerk, use the dev-auth flow:
- Enable API dev auth in repo root
.env:ZENITH_DEV_AUTH=true,ZENITH_DEV_AUTH_JWT_SECRET=<secret> - In repo root
.env:ZENITH_DEMO_DEV_AUTH_ENABLED=true - Open /dev-auth and click Sign in as Dana (Admin + Board)
Dana: dana.design.qa@zenith.local — board/admin access for full onboarding and governance walkthroughs.
Demo seed and reset
Objectives
- Deterministic demo behavior every run
- Fast reset without production side effects
- Stable persona logins across web, PWA, and mobile
- Replayable fake operations for risky workflows
Baseline seed
Use packages/db/prisma/seed.ts: community seed-community-1 (Valleyheart West HOA), actor seed-actor-1, governance baseline.
pnpm db:seed
Demo mode
ZENITH_DEMO_MODE=true. No real payments, dues, or production-facing side effects.
Resettable state
Reset preserves baseline entities; purges cases, dispatches, notices, uploads, queue jobs; re-seeds scripted fixtures. Run before rehearsals, release-gate replays, or nightly in staging.
Verification checklist
- Reset command completes and logs run ID
- Baseline entities remain stable after reset
- Demo narrative runs identically twice after reset
- Fake automation/mail proofs appear in audit timeline
- Mobile personas can log in and run scripted flows