Stronger Decisions. Smarter Organizations.
DECIVUE is an intelligent decision-monitoring platform that helps teams make adaptive, data-driven decisions with clarity. Monitor decision health, track assumptions, detect conflicts, and adapt before problems escalate.
Core Philosophy: The system does not replace human judgment โ it highlights when judgment is needed.
Organizations make hundreds of strategic decisions, but those decisions can quietly degrade over time as assumptions become invalid, conflicts emerge, or dependencies change. DECIVUE treats decisions as living entities that need continuous monitoring and adaptive governance.
- Silent Decision Degradation: Assumptions change, but old decisions remain unquestioned
- Conflict Blindness: Decisions contradict each other without anyone noticing
- Manual Governance Overhead: Teams waste time tracking dependencies and approvals
- Reactive Crisis Management: Problems are discovered too late
- Real-time health scoring based on assumption validity
- Visual status indicators: Stable, At Risk, Critical, Expired
- Historical health trends with evaluation tracking
- Automated degradation alerts
- Assumption Conflicts: Detects contradictory assumptions across decisions
- Decision Conflicts: Identifies resource competition, contradicting goals
- Constraint Violations: Flags budget, policy, and business rule violations
- Automatic conflict discovery on new decision/assumption creation
- Parameter Templates: Pre-defined categories for consistent decision-making
- Sub-category Dropdowns: Industry-specific templates (tech, retail, healthcare, etc.)
- Assumption Parameters: Structured data capture (numeric ranges, budgets, timelines)
- Universal vs. Custom Assumptions: Org-wide shared assumptions or decision-specific
- Complete decision history with change tracking
- Version snapshots for every substantial change
- Lifecycle transitions: Draft โ Active โ Review Required โ Retired โ Invalidated
- Governance audit logs for approvals and rejections
- Role-Based Workflows: Different capabilities for Members, Leads, Admins
- Tiered Approval System: Operational, Strategic, Critical decision tiers
- Edit Request Workflow: Request โ Review โ Approve/Reject with justification
- Lock/Unlock Mechanism: Prevent changes during critical review periods
- Decision Flow Visualization: Interactive graph showing dependencies and relationships
- Team Member Reports: Individual contribution tracking and decision ownership
- Deprecation Outcomes: Track why decisions were retired (failed, succeeded, superseded)
- Time Jump Simulation: Project decision states forward in time based on expiry dates
- Severity levels: Info, Warning, Critical
- Notification types: Assumption conflicts, constraint violations, review deadlines, health degradation
- User preferences: Email + in-app notifications
- Batch notification processing every 15 minutes
- Bulk upload via CSV/PDF/DOCX
- AI-powered parsing with Gemini API
- Duplicate detection and conflict checking
- Preview and validate before committing
Frontend
- React 18 with Vite
- Tailwind CSS for styling
- Framer Motion for animations
- React Flow for decision visualization
- Lucide React for icons
Backend
- Node.js with TypeScript
- Express.js REST API
- Supabase PostgreSQL database
- Google Gemini AI for document parsing
- Winston for logging
Infrastructure
- Vercel (Frontend hosting)
- Railway (Backend hosting)
- Supabase (Database, Auth, RLS)
- Resend (Email notifications)
decivue/
โโโ frontend/ # React dashboard
โ โโโ public/ # Static assets (logo, videos)
โ โโโ src/
โ โ โโโ components/ # React components
โ โ โ โโโ LandingPage.jsx # Homepage
โ โ โ โโโ DecisionHealthOverview.jsx
โ โ โ โโโ DecisionLogTable.jsx
โ โ โ โโโ DecisionFlowGraph/ # Visualization
โ โ โ โโโ AssumptionsPage.jsx
โ โ โ โโโ TeamPage.jsx # Team management
โ โ โ โโโ ReportsPage.jsx # Analytics
โ โ โ โโโ ...
โ โ โโโ contexts/ # React contexts (Auth, Theme)
โ โ โโโ services/ # API client
โ โ โโโ utils/ # Helper functions
โ โโโ index.html
โ โโโ package.json
โ โโโ tailwind.config.js
โ โโโ vite.config.js
โ
โโโ backend/ # Node.js/TypeScript API
โ โโโ migrations/ # Database migrations
โ โ โโโ 006_add_authentication.sql
โ โ โโโ 007_enable_rls_with_registration_support.sql
โ โ โโโ 033_fix_version_history_timeline.sql
โ โ โโโ 034_fix_edit_approval_change_type.sql
โ โโโ scripts/ # Utility scripts
โ โ โโโ seed-plot-armor-complete.ts # Demo data seeder
โ โ โโโ clear-all-data.ts # Database reset
โ โ โโโ apply-migration-034.ts # Migration tool
โ โ โโโ reload-schema.ts # Schema refresh
โ โโโ src/
โ โ โโโ api/ # REST API routes & controllers
โ โ โ โโโ routes/ # Express routes
โ โ โ โ โโโ auth.ts
โ โ โ โ โโโ decisions.ts
โ โ โ โ โโโ assumptions.ts
โ โ โ โ โโโ assumption-conflicts.ts
โ โ โ โ โโโ decision-conflicts.ts
โ โ โ โ โโโ constraint-violations.ts
โ โ โ โ โโโ notifications.ts
โ โ โ โ โโโ reports.ts
โ โ โ โ โโโ time-simulation.ts
โ โ โ โ โโโ import-decisions.ts
โ โ โ โโโ controllers/ # Business logic
โ โ โ โโโ decision-controller.ts
โ โ โ โโโ conflict-detector.ts
โ โ โโโ services/ # External integrations
โ โ โ โโโ gemini-service.ts # AI parsing
โ โ โ โโโ email-service.ts # Resend integration
โ โ โโโ server.ts # Express app entry
โ โโโ schema.sql # Full database schema
โ โโโ .env # Environment configuration
โ โโโ package.json
โ โโโ tsconfig.json
โ
โโโ docs/ # Feature documentation
โ โโโ DECISION_CONFLICTS_FEATURE.md
โ โโโ QUICK_START_ADVANCED_FEATURES.md
โ โโโ STRUCTURED_DECISIONS_GUIDE.md
โ โโโ TEAM_REPORTS_FEATURE.md
โ
โโโ .gitignore
โโโ nixpacks.toml # Railway build config
โโโ railway.json # Railway deployment config
โโโ package.json # Monorepo root
โโโ README.md # This file
- Node.js v18 or higher
- npm or yarn
- Supabase account (free tier works)
- Gemini API key (for document import feature)
- Resend API key (for email notifications)
git clone https://github.com/your-org/decivue.git
cd decivue# Install root dependencies
npm install
# Install backend dependencies
cd backend
npm install
# Install frontend dependencies
cd ../frontend
npm installBackend (backend/.env):
# Server
NODE_ENV=development
PORT=3001
LOG_LEVEL=info
# Supabase
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_ANON_KEY=your-anon-key
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
# Gemini AI (for document import)
GEMINI_API_KEY=your-gemini-api-key
GEMINI_API_KEY_FALLBACK=your-fallback-key
# Email Notifications
RESEND_API_KEY=your-resend-api-key
EMAIL_FROM=[email protected]
FRONTEND_URL=http://localhost:3000
# Notifications
EMAIL_NOTIFICATIONS_ENABLED=true
NOTIFICATION_CHECK_CRON=*/15 * * * *Frontend (frontend/.env):
VITE_SUPABASE_URL=https://your-project.supabase.co
VITE_SUPABASE_ANON_KEY=your-anon-key
VITE_API_URL=http://localhost:3001/api- Create a Supabase project at supabase.com
- Run the schema:
# In Supabase SQL Editor, execute: cd backend # Copy contents of schema.sql and execute in Supabase
- Run migrations:
# In Supabase SQL Editor, execute in order: # 006_add_authentication.sql # 007_enable_rls_with_registration_support.sql # 033_fix_version_history_timeline.sql # 034_fix_edit_approval_change_type.sql
Or apply migration 034 via script:
cd backend
npx ts-node scripts/apply-migration-034.tscd backend
npm run seed-plot-armorThis creates the "Plot Armor" coffee shop demo organization with:
- 20 business decisions spanning 220 days
- 16 assumptions with structured parameters
- 5 assumption conflicts
- 4 decision conflicts
- 10 decisions with expiry dates
- Complete governance workflow examples
Terminal 1 - Backend:
cd backend
npm run dev
# Server runs on http://localhost:3001Terminal 2 - Frontend:
cd frontend
npm run dev
# App runs on http://localhost:3000- Connect Repository: Link your GitHub repo to Vercel
- Configure Project:
- Framework: Vite
- Root Directory:
frontend - Build Command:
npm run build - Output Directory:
dist
- Environment Variables:
VITE_SUPABASE_URL=https://your-project.supabase.co VITE_SUPABASE_ANON_KEY=your-anon-key VITE_API_URL=https://your-backend.railway.app/api - Deploy: Vercel auto-deploys on git push
- Create New Project: Deploy from GitHub repo
- Configure Service:
- Root Directory:
backend - Build Command: (auto-detected from nixpacks.toml)
- Start Command:
npm run start
- Root Directory:
- Environment Variables: Add all backend env vars from
.env - Generate Domain: Settings โ Networking โ Generate Domain
- Update Frontend: Set
VITE_API_URLin Vercel to Railway URL
- โ Run migration 034 from local machine (connects to Supabase)
- โ
Test API health:
https://your-backend.railway.app/health - โ
Test frontend:
https://your-app.vercel.app - โ Verify login and decision creation
- โ Check governance approval workflow
- View Decisions: See all organization decisions in Decision Log
- Check Health: Monitor decision health indicators
- Submit Edits: Request changes via Edit Request workflow
- Review Conflicts: Check Assumption Conflicts and Decision Conflicts pages
- Receive Notifications: Get alerts for critical issues
Everything Members can do, plus:
- Approve/Reject Edit Requests: Governance oversight
- Create Strategic Decisions: Higher-tier decision authority
- Lock/Unlock Decisions: Prevent changes during review
- Generate Team Reports: View individual contributions
Full system access:
- Manage Organizations: Create and configure org settings
- Oversight All Decisions: Cross-team visibility
- System Configuration: Manage templates and parameter categories
- User Management: Add/remove team members
DRAFT โ ACTIVE โ REVIEW_REQUIRED โ RETIRED/INVALIDATED
- DRAFT: Initial creation, not yet implemented
- ACTIVE: Live decision in effect
- REVIEW_REQUIRED: Health degraded, needs reassessment
- RETIRED: Gracefully ended (succeeded, replaced, or failed)
- INVALIDATED: Forcibly ended due to invalid assumptions
Decisions are scored 0-100 based on:
- Assumption validity (invalid assumptions reduce score)
- Unresolved conflicts (each conflict deducts points)
- Constraint violations (policy/budget breaches)
- Review staleness (time since last review)
- OPERATIONAL: Day-to-day decisions, auto-approved
- STRATEGIC: Mid-level impact, requires lead approval
- CRITICAL: High-stakes decisions, admin approval + lock mechanism
- UNIVERSAL: Org-wide shared assumptions (e.g., "Market growth rate = 12%")
- CUSTOM: Decision-specific assumptions (e.g., "This store's traffic = 500/day")
The seeder creates a realistic coffee shop chain with:
Business Context:
- Regional coffee shop chain expanding in competitive market
- Making decisions about locations, operations, sustainability
- All non-technical business decisions
Demo Features:
- โ Decision conflicts (competing for same budget/resources)
- โ Assumption conflicts (contradictory market assumptions)
- โ Time jump simulation (10 decisions with expiry dates)
- โ Version control (30+ historical versions)
- โ Governance workflow (edit requests and approvals)
- โ Deprecation tracking (succeeded, failed, superseded outcomes)
- โ Evaluation trends (health signal changes over time)
POST /api/auth/register- Create accountPOST /api/auth/login- LoginGET /api/auth/me- Get current user
GET /api/decisions- List all decisionsPOST /api/decisions- Create decisionGET /api/decisions/:id- Get decision detailsPUT /api/decisions/:id- Update decisionDELETE /api/decisions/:id- Delete decisionPOST /api/decisions/:id/retire- Retire decision
POST /api/decisions/governance/request-edit- Request edit approvalPOST /api/decisions/governance/approve-edit/:id- Approve/reject edit
GET /api/assumptions- List assumptionsPOST /api/assumptions- Create assumption (auto-detects conflicts)PUT /api/assumptions/:id- Update assumptionDELETE /api/assumptions/:id- Delete assumption
GET /api/assumption-conflicts- List assumption conflictsGET /api/assumption-conflicts/detect- Manual conflict detectionPOST /api/assumption-conflicts/:id/resolve- Resolve conflictGET /api/decision-conflicts- List decision conflictsPOST /api/decision-conflicts/:id/resolve- Resolve conflict
GET /api/reports/team-member/:userId- Individual contribution report
POST /api/time-simulation/jump- Project decisions forward in time
POST /api/import/preview- Preview CSV/PDF/DOCX importPOST /api/import/commit- Commit imported decisions
# Seed demo data
npm run seed-plot-armor
# Clear all data from organization
npx tsx scripts/clear-all-data.ts
# Apply latest migration
npx tsx scripts/apply-migration-034.ts
# Reload database schema
npx tsx scripts/reload-schema.ts# Development server
npm run dev
# Production build
npm run build
# Preview production build
npm run preview- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
This project is licensed under the MIT License.
- Supabase for database and authentication infrastructure
- Google Gemini for AI-powered document parsing
- Resend for reliable email delivery
- Vercel for frontend hosting
- Railway for backend hosting
For questions, issues, or feature requests:
- Open an issue on GitHub
- Documentation: docs/
Built with โค๏ธ by the PLOT ARMOR Team
Making decisions visible, trackable, and adaptive.