591 lines
28 KiB
Markdown
591 lines
28 KiB
Markdown
# Denya OneCare — Integrated Build Specification
|
||
|
||
> **Merged Design:** Denya Rentals original proposal + Wahab's Product Specification Document
|
||
> **Version:** 1.0 | **Date:** July 16, 2026
|
||
> **Status:** Awaiting CEO/team review before build
|
||
|
||
---
|
||
|
||
## 1. Product Identity
|
||
|
||
| Attribute | Value |
|
||
|-----------|-------|
|
||
| **Product Name** | **Denya OneCare** (formerly "Issue Tracking System") |
|
||
| **Tagline** | Integrated Customer Complaint, Facilities Management & Executive Reporting Platform |
|
||
| **Owner** | Denya Developers |
|
||
| **Site** | Pavilion, Accra — East & West buildings |
|
||
| **Scale** | Est. $609K/yr revenue, 83% margin |
|
||
|
||
---
|
||
|
||
## 2. The Problem (Still True)
|
||
|
||
Maintenance issues and tenant requests at Pavilion are managed across three WhatsApp groups. Key issues:
|
||
|
||
- ❌ No formal tracking — issues buried in chat scroll
|
||
- ❌ No ownership assignment — @mentions rely on people seeing them
|
||
- ❌ No status visibility — impossible to tell open vs resolved
|
||
- ❌ No priority system — urgent electrical vs routine cleaning treated the same
|
||
- ❌ No SLA monitoring — response time targets unenforceable
|
||
- ❌ No reporting — can't spot recurring issues or technician workload
|
||
- ❌ Media/photos critical to diagnosis but get lost
|
||
- ❌ Accountability gap — no escalation if no one responds
|
||
- ❌ No audit trail — who did what, when, and how
|
||
|
||
---
|
||
|
||
## 3. Business Objectives
|
||
|
||
The system will:
|
||
|
||
- Centralize all maintenance requests and customer complaints
|
||
- Improve customer satisfaction through structured follow-up
|
||
- Reduce response and resolution times via clear assignments
|
||
- Increase technician accountability through tracked workflows
|
||
- Automate escalation when SLAs are missed
|
||
- Produce real-time management and executive dashboards
|
||
- Provide CEO-level analytics for strategic decisions
|
||
- Maintain a complete audit history of every issue
|
||
|
||
---
|
||
|
||
## 4. User Roles & Team Structure
|
||
|
||
### Org Chart
|
||
|
||
```
|
||
Scott Murray (CEO)
|
||
|
|
||
Jerome Tabiri
|
||
(Service Provider / Operations Lead)
|
||
|
|
||
Akua / Mercy Duah
|
||
(Head of Customer Service)
|
||
/ \
|
||
Nicholas (FM) Bella (CS)
|
||
FM Dispatcher & QC Sup. CS Representative
|
||
+ Collins (Cleaning Ops) + Ama (Escalation Support)
|
||
| |
|
||
┌────────┼────────┐ ┌──────┴──────┐
|
||
Prosper Sam Steven Agents Tenants
|
||
| | | (report) (report)
|
||
Junior Francis Desmond
|
||
(Samuel) Afful
|
||
```
|
||
|
||
### Role Types in the System
|
||
|
||
| Role | Type | People | Responsibilities |
|
||
|------|------|--------|------------------|
|
||
| **Tenant/Guest** | External | End customer | Report issues via agent or self-service QR |
|
||
| **Homeowner** | External | Property owner | View property maintenance history |
|
||
| **Property Agent** | External | Agencies group | Front-line issue reporting, check-in/out notices |
|
||
| **CS Representative** | Internal | Bella | Receive complaints, verify info, create tickets, close verified issues |
|
||
| **CS Manager** | Internal | Akua/Mercy | Oversee CS team, manage escalations (manager-level, not admin) |
|
||
| **FM Dispatcher** | Internal | Nicholas | Triage, assign technicians, order parts, QC, verifications |
|
||
| **Project Lead / Admin** | Internal | Jerome | Full system admin — all actions, user management, delete tickets, SLA oversight |
|
||
| **Project Lead / Admin** | Internal | Wahab | Full system admin — all actions, close/reopen tickets, user management, final QA oversight |
|
||
| **Technician** | Internal | Prosper, Sam, Steven, Junior, Francis, Desmond, Afful | Execute repairs, update via WhatsApp |
|
||
| **Contractor** | External | Occasional external hires | Limited-duration assignments |
|
||
| **CEO** | Executive | Scott | Read-only analytics, strategic KPIs |
|
||
| **Directors** | Executive | Operations, Finance, Property | Tailored dashboards per domain |
|
||
|
||
---
|
||
|
||
## 5. End-to-End Workflow
|
||
|
||
### High-Level Flow
|
||
|
||
```
|
||
Customer Complaint
|
||
↓
|
||
Ticket Created (auto-numbered: PAV-YYYY-MM-NNN)
|
||
↓
|
||
CS Review (Bella validates info)
|
||
↓
|
||
Triage & Categorization (Nicholas sets category + priority | Wahab oversees)
|
||
↓
|
||
Technician Assigned
|
||
↓
|
||
Execution (with optional escalation branch)
|
||
↓
|
||
On-Field Verification (Nicholas or Bella checks fix on site)
|
||
↓
|
||
Wahab Review (final QA oversight)
|
||
↓
|
||
Close Ticket
|
||
↓
|
||
48-Hour Internal Follow-up (flagged to Wahab/Nicholas)
|
||
↓
|
||
Archive → Executive Reporting
|
||
```
|
||
|
||
### Detailed Ticket Lifecycle (15 Statuses)
|
||
|
||
| # | Status | Description | Who Sets |
|
||
|---|--------|-------------|----------|
|
||
| 1 | **New** | Complaint received (pre-log) | System |
|
||
| 2 | **Logged** | Ticket created with auto-number | Bella / Agent |
|
||
| 3 | **Triage** | Awaiting categorization and priority | Nicholas |
|
||
| 4 | **Assigned** | Assigned to a specific technician | Nicholas |
|
||
| 5 | **Accepted** | Technician acknowledged via `#ack` | Technician |
|
||
| 6 | **Travelling** | Technician en route to site | Technician via WhatsApp |
|
||
| 7 | **On Site** | Technician arrived at unit | Technician via WhatsApp |
|
||
| 8 | **In Progress** | Repair actively ongoing | Technician via `#update` |
|
||
| 9 | **Waiting Parts** | Awaiting materials or spare parts | Technician via `#part` |
|
||
| 10 | **Escalated** | Raised for management review (override, structural, prolonged) | Nicholas / Technician |
|
||
| 11 | **Completed** | Technician finished the repair | Technician via `#done` |
|
||
| 12 | **On-Field Verification** | Nicholas or Bella physically/virtually checks the fix on site | Nicholas/Bella |
|
||
| 13 | **Wahab Review** | Final QA oversight and closure approval | Wahab |
|
||
| 14 | **Closed** | Ticket officially closed | Wahab / Nicholas |
|
||
| 15 | **Reopened** | Issue resurfaces within 7 days | Agent / System |
|
||
|
||
|
||
### Step-by-Step Detail
|
||
|
||
1. **Reporting** — Guest/tenant has an issue → tells their Agent OR calls CS → Agent posts in AGENCIES WhatsApp group OR Bella enters via web dashboard. **Source of complaint is tracked** (WhatsApp, Phone, Agent, Walk-in, QR Code — added when ticket is created).
|
||
2. **Triage** — **Nicholas** triages FM issues (categories, priority, technician assignment). **Bella** triages CS issues. **Wahab** oversees follow-ups and verification. Each ticket is categorized and assigned to the right person.
|
||
3. **Assignment** — System sends WhatsApp message to the technician: `🔧 New Issue PAV-001 | Unit 505E | Plumbing: WC not flushing | Priority: 🟠 High | Reply or send #ack to confirm`
|
||
4. **Acknowledgment** — Technician replies `#ack` or just responds → status moves to Accepted
|
||
5. **Execution** — Technician works on issue. Sends `#update` or voice note with progress update.
|
||
6. **Parts Needed** (if applicable) — Technician sends `#part 505E need flush valve model X` → status → Waiting Parts. Nicholas sees and orders/checks stock.
|
||
7. **Completion** — Technician sends `#done 505E WC fixed` → status → Completed
|
||
8. **On-Field Verification** — Nicholas or Bella physically/virtually checks the fix on site → status → On-Field Verification
|
||
9. **Wahab Review** — Wahab does final QA oversight in dashboard → status → Wahab Review → approves or sends back
|
||
10. **Auto Follow-up** (48 hours later — internal only) — System flags ticket for Wahab/Nicholas: `Issue PAV-001 (505E WC) — resolved 48h ago. Any follow-up needed?` → If issue resurfaces → auto-reopens, escalates to Ama
|
||
|
||
### Reopening & Reassignment
|
||
|
||
- **Reopening:** If a verified-closed issue resurfaces within 7 days, the gatekeeper can Reopen it. A reopened issue auto-escalates to Ama.
|
||
- **Reassignment:** A technician who cannot complete a job can request: `#reassign PAV-001 [technician name]` → Nicholas receives notification and approves/reassigns in dashboard.
|
||
|
||
---
|
||
|
||
## 6. Issue Ticket Data Model
|
||
|
||
Each ticket stores the following 24+ fields:
|
||
|
||
| # | Field | Type | Required | Notes |
|
||
|---|-------|------|----------|-------|
|
||
| 1 | Ticket Number | Auto | ✓ | Format: `PAV-YYYY-NNNNN` |
|
||
| 2 | Date | Auto | ✓ | Creation date |
|
||
| 3 | Time | Auto | ✓ | Creation time |
|
||
| 4 | Customer Name | Text | ✓ | Guest/tenant name |
|
||
| 5 | Property | Select | ✓ | Pavilion East / Pavilion West |
|
||
| 6 | Apartment | Select | ✓ | e.g., 102E, 505W (from apartment_mapping.json) |
|
||
| 7 | Reporter | Text | ✓ | Who reported it (agent, CS, tech) |
|
||
| 8 | Phone | Text | | Contact number |
|
||
| 9 | Email | Text | | Contact email |
|
||
| 10 | Issue Category | Select | ✓ | See complaint categories below |
|
||
| 11 | Priority | Select | ✓ | 🔴 Urgent / 🟠 High / 🟡 Medium / 🟢 Low |
|
||
| 12 | Description | Text | ✓ | What's wrong |
|
||
| 13 | Photos (Before) | Image[] | | Up to 5 images |
|
||
| 14 | Voice Notes | Audio | | Technician voice updates |
|
||
| 15 | Assigned Technician | Select | ✓ | Prosper, Sam, Steven, Junior, Francis, Desmond, Afful, or contractor |
|
||
| 16 | ETA | DateTime | | Expected resolution time |
|
||
| 17 | SLA | Text | | SLA tier + deadline (auto-calculated) |
|
||
| 18 | Resolution Notes | Text | | How it was fixed |
|
||
| 19 | Cost | Decimal | | Parts + labor cost |
|
||
| 20 | Spare Parts Used | Text | | e.g., "flush valve X1, seal X1" |
|
||
| 21 | Photos (After) | Image[] | | Proof of completion |
|
||
| 22 | Customer Rating | 1-5 | | From 48-hour follow-up |
|
||
| 23 | Close Date | Auto | | Timestamp of final closure |
|
||
| 24 | Reopen Count | Integer | Auto | Tracks chronic issues at same unit |
|
||
| 25 | Related Issues | Link[] | | Cross-reference to linked tickets |
|
||
| 26 | Escalated To | Text | | Who was it escalated to |
|
||
|
||
---
|
||
|
||
## 7. Complaint Categories
|
||
|
||
### Maintenance
|
||
|
||
| Category | Sub-categories |
|
||
|----------|----------------|
|
||
| 🔧 **Plumbing** | WC not flushing, leaky tap, pipe burst, blocked drain, water heater |
|
||
| ⚡ **Electrical** | No power, tripped breaker, light fitting, socket repair, voltage issues |
|
||
| ❄️ **HVAC** | AC not cooling, AC leaking, thermostat, fan not working |
|
||
| 🛋️ **Furniture** | Broken bed, chair, table, wardrobe |
|
||
| 🔌 **Appliances** | Fridge, washing machine, microwave, TV, kettle |
|
||
| 🧹 **Cleaning** | Deep clean requested, post-checkout turnover, common area |
|
||
| 🐜 **Pest Control** | Insects, rodents, fumigation |
|
||
| 🔒 **Security** | Lock broken, door not closing, window latch, CCTV |
|
||
| 🌐 **Internet** | WiFi down, slow speed, router reset |
|
||
| 🏗️ **Structural** | Wall crack, ceiling leak, floor tile, paint touch-up |
|
||
|
||
### Customer Service
|
||
|
||
| Category | Description |
|
||
|----------|-------------|
|
||
| 🔑 **Check-in** | Early check-in, key handover, welcome instructions |
|
||
| 🔑 **Check-out** | Late checkout, key return, inspection |
|
||
| 🧹 **Housekeeping** | Mid-stay cleaning, linen change, restocking |
|
||
| 🎒 **Lost Property** | Guest left items behind |
|
||
| 💳 **Billing** | Invoice, payment issue, deposit query |
|
||
| 👤 **Staff Behaviour** | Staff conduct feedback |
|
||
|
||
### Emergency (Auto-Alert to ALL gatekeepers + Jerome)
|
||
|
||
| Category | Examples |
|
||
|----------|----------|
|
||
| 🔥 **Fire** | Smoke, fire, sprinklers |
|
||
| 🌊 **Flood** | Major water leak, burst pipe, overflowing |
|
||
| ⛽ **Gas Leak** | Gas smell, suspected leak |
|
||
| ⚡ **Electrical Hazard** | Sparking, exposed wires, power outage affecting multiple units |
|
||
|
||
---
|
||
|
||
## 8. WhatsApp Interface (Field Team)
|
||
|
||
Technicians use simple text commands **or reply directly to notification messages**:
|
||
|
||
| Action | Command | Voice Note? | Status Change |
|
||
|--------|---------|-------------|---------------|
|
||
| Acknowledge | `#ack` or just reply | ✓ Yes | → Accepted |
|
||
| On the way | `#enroute` | ✓ Yes | → Travelling |
|
||
| Arrived | `#onsite` | ✓ Yes | → On Site |
|
||
| Update progress | `#update [note]` | ✓ Yes | → In Progress |
|
||
| Request part | `#part [what's needed]` | ✓ Yes | → Waiting Parts |
|
||
| Mark complete | `#done [note]` or reply "Done" | ✓ Yes | → Completed |
|
||
| Request reassignment | `#reassign [tech name]` | ✓ Yes | → Triage (notify Nicholas) |
|
||
| List my issues | `#myissues` | — | Returns active list |
|
||
| Check status | `#status [unit]` | — | Returns current status |
|
||
| Help | `#help` | — | Returns command cheat sheet |
|
||
|
||
> **Key design choice:** The technician can simply **reply to the WhatsApp notification message** and the bot infers the issue context. No need to remember issue IDs for most actions.
|
||
>
|
||
> **Decision (July 19):** Text-only for POC (`#ack`, `#done`, `#update`, `#part`, etc.). Voice note support planned for Phase 2 (long-term).
|
||
|
||
---
|
||
|
||
## 9. Dashboard Modules
|
||
|
||
### 9.1 Customer Service Dashboard (Bella, Akua/Mercy)
|
||
|
||
| Card | Metric |
|
||
|------|--------|
|
||
| 🆕 New complaints today | Count |
|
||
| 📋 Open tickets | Count by priority |
|
||
| ⏳ Waiting customers | Oldest unassigned |
|
||
| 🔝 Escalated tickets | Count + list |
|
||
| ⚡ Average response time | Hours:Minutes |
|
||
| ✅ SLA compliance | % met today |
|
||
| 📊 Recent tickets | Sortable table (Newest first) |
|
||
|
||
### 9.2 Facilities Dashboard (Nicholas, Jerome)
|
||
|
||
| Card | Metric |
|
||
|------|--------|
|
||
| 👥 Technician workload | Jobs per tech (active) |
|
||
| 📍 Jobs by building | East vs West distribution |
|
||
| 📅 Jobs due today | Count + list |
|
||
| ⌛ Waiting parts | Tickets stuck at parts |
|
||
| 🚨 Emergency jobs | Count + red alert |
|
||
| 🗺️ GPS technician location | Map view (Phase 2) |
|
||
| 📊 Aging analysis | <24h, 2d, 5d, Overdue |
|
||
|
||
### 9.3 Procurement Dashboard (Nicholas, Jerome)
|
||
|
||
| Card | Metric |
|
||
|------|--------|
|
||
| 📦 Parts requested | Open requests |
|
||
| 💰 Outstanding purchases | Value + count |
|
||
| 🏪 Vendor performance | Avg delivery time, reliability |
|
||
| ⚠️ Stock shortages | Items below threshold |
|
||
| 📋 Pending approvals | Awaiting sign-off |
|
||
|
||
### 9.4 CEO Dashboard (Scott — Read-Only Executive View)
|
||
|
||
**Executive KPI Cards:**
|
||
|
||
| KPI | Type |
|
||
|-----|------|
|
||
| Total Open Tickets | Number |
|
||
| Critical Tickets | Number (Red) |
|
||
| SLA Compliance % | % with color threshold |
|
||
| Customer Satisfaction Score | Average 1-5 |
|
||
| Average Response Time | Hours:Minutes |
|
||
| Average Resolution Time | Hours:Minutes |
|
||
| First-Time Fix Rate | % (closed without revisit) |
|
||
| Cost of Maintenance | $ this month |
|
||
| Repeat Issues | % of tickets that are reopens |
|
||
| Revenue Impact | Est. lost revenue from complaints |
|
||
| Technician Productivity | Jobs per tech this period |
|
||
| Preventive vs Reactive | % split |
|
||
|
||
**Interactive Charts:**
|
||
|
||
- Complaints by Property — Pavilion East vs West
|
||
- Complaints by Category — Plumbing, Electrical, Cleaning, HVAC, etc.
|
||
- Complaints by Apartment — Top 20 recurring units
|
||
- Technician Performance — Jobs completed, avg repair time, customer rating
|
||
- Monthly Trends — 12-month complaint trend line
|
||
- Heat Map — Buildings with highest incident density
|
||
- Root Cause Analysis — Top recurring failure modes
|
||
- Cost Analysis — Maintenance expenditure by property, month-over-month
|
||
|
||
**Executive Risk Indicators (Red/Yellow/Green):**
|
||
|
||
- 🚨 Open emergencies
|
||
- 🔄 Reopened tickets this week
|
||
- ⏰ Overdue jobs (beyond SLA)
|
||
- ⚠️ Critical equipment failures (AC, generator, water pump)
|
||
- 📋 Pending approvals older than 48h
|
||
|
||
### 9.5 Director Dashboards (Tailored Views)
|
||
|
||
**Operations Director:** SLA compliance, open jobs, staff utilization, delayed work orders
|
||
|
||
**Finance Director:** Cost per property, total maintenance spend, vendor invoices pending, budget variance
|
||
|
||
**Property Director:** Tenant satisfaction scores, complaint frequency per building, occupancy impact, property performance trends
|
||
|
||
---
|
||
|
||
## 10. QR Code Integration
|
||
|
||
Every apartment receives QR codes at the entrance or near the main appliance area.
|
||
|
||
**Scanning opens a mobile-optimized page with:**
|
||
|
||
- 🏠 Apartment profile (unit, building, floor plan)
|
||
- 📖 Appliance manuals (PDF links for fridge, AC, washer, TV, etc.)
|
||
- 🔧 Troubleshooting guides (common fixes for known issues)
|
||
- 📋 Maintenance history (past issues reported at this unit)
|
||
- 🚨 Report Issue (opens quick complaint form)
|
||
|
||
**Benefits:**
|
||
- Guests can self-serve for minor troubleshooting → fewer calls to agents
|
||
- Maintenance history visible at the unit — no need to search chats
|
||
- Easy reporting: scan → tap "Report Issue" → done
|
||
- Agents can scan during check-in to verify unit status
|
||
|
||
---
|
||
|
||
## 11. Priority System & Service Level Agreements
|
||
|
||
> ✅ **Defined by Wahab (July 16, 2026)** — Pending review/confirmation by Scott
|
||
|
||
| Priority | Response Target | Resolution Target | Escalation Trigger | Examples |
|
||
|----------|----------------|-------------------|--------------------|----------|
|
||
| 🔴 **Urgent** | **10–15 minutes** | **2–4 hours** | No ack in 15min → alert all gatekeepers + Jerome + Scott | No water, no power, gas leak, sewage, fire, flooding |
|
||
| 🟠 **High** | **30 minutes** | **8–24 hours** | No ack in 30min → alert gatekeeper | AC broken in occupied unit, toilet blocked, no hot water |
|
||
| 🟡 **Medium** | **4 hours** | **2–3 days** | No ack in 4h → alert gatekeeper | Leaky tap, light bulb, cleaning, loose fixture |
|
||
| 🟢 **Low** | **1 day** | **5–7 days** | No ack in 24h → alert gatekeeper | Paint touch-up, cosmetic, furniture replacement |
|
||
|
||
**Holiday Calendar — Ghana 2026:**
|
||
|
||
| Date | Day | Holiday | SLA Adjustment |
|
||
|------|-----|---------|----------------|
|
||
| 1 January | Thu | New Year's Day | Skeleton crew |
|
||
| 7 January | Wed | Constitution Day | Skeleton crew |
|
||
| 9 January | Fri | Substitute for Constitution Day | Skeleton crew |
|
||
| 6 March | Fri | Independence Day | Skeleton crew |
|
||
| 20 March* | Fri | Eid-ul-Fitr | Skeleton crew |
|
||
| 23 March | Mon | Shaqq Day (day after Eid) | Skeleton crew |
|
||
| 3 April | Fri | Good Friday | Skeleton crew |
|
||
| 6 April | Mon | Easter Monday | Skeleton crew |
|
||
| 1 May | Fri | Workers' Day (Labour Day) | Skeleton crew |
|
||
| 27 May* | Wed | Eid-ul-Adha | Skeleton crew |
|
||
| 3 July | Fri | Republic Day | Skeleton crew |
|
||
| 21 September | Mon | Founder's Day / Kwame Nkrumah Memorial Day | Skeleton crew |
|
||
| 4 December | Fri | Farmer's Day | Skeleton crew |
|
||
| 25 December | Fri | Christmas Day | Skeleton crew |
|
||
| 28 December | Mon | Boxing Day holiday | Skeleton crew |
|
||
|
||
> *Islamic holidays (*) depend on moon sighting — dates are provisional per 2026 declarations.
|
||
|
||
---
|
||
|
||
## 12. Permissions Matrix
|
||
|
||
| Action | Bella (CS) | Nicholas (FM) | Ama (Esc) | Akua/Mercy | Jerome | Scott (CEO) | Directors |
|
||
|--------|-----------|--------------|-----------|------------|--------|-------------|-----------|
|
||
| View Dashboard | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
|
||
| View CEO Dashboard | — | — | — | — | ✓ | ✓ | ✓ (own) |
|
||
| View Reports | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
|
||
| Create Issue | ✓ | ✓ | ✓ | ✓ | ✓ | — | — |
|
||
| Assign Technician | ✓ | ✓ | ✓ | — | — | — | — |
|
||
| Reassign Issue | ✓ | ✓ | ✓ | ✓ | ✓ | — | — |
|
||
| Close/Verify Issue | ✓ | ✓ | ✓ | ✓ | ✓ | — | — |
|
||
| Reopen Issue | ✓ | ✓ | ✓ | ✓ | ✓ | — | — |
|
||
| Manage Parts/Procurement | — | ✓ | — | — | ✓ | — | — |
|
||
| Manage Users | — | — | — | ✓ | ✓ | — | — |
|
||
| Override All | ✓ | ✓ | — | ✓ | ✓ | — | — |
|
||
| Delete Ticket | — | — | — | — | ✓ | — | — |
|
||
| Export Reports | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
|
||
|
||
---
|
||
|
||
## 13. Technical Architecture
|
||
|
||
### Preferred Stack (from PSD)
|
||
|
||
| Component | Technology | Rationale |
|
||
|-----------|-----------|-----------|
|
||
| **Frontend** | React or Next.js + Tailwind CSS | Responsive, works on phone/laptop, great for dashboards |
|
||
| **Backend** | Node.js (Fastify/Express) **or** Python FastAPI | Lightweight MVP — FastAPI recommended for faster initial build; migrate to Node.js if scale demands |
|
||
| **Database** | PostgreSQL | Proper relational model for 15-status lifecycle, multi-role permissions, complex queries for analytics |
|
||
| **File Storage** | Local filesystem (MVP) → S3-compatible (Azure Blob / MinIO) | Photos, voice notes, documents |
|
||
| **Authentication** | Email + Password (bcrypt) + JWT tokens → Microsoft Entra ID (future) | Simple but secure for team size |
|
||
| **WhatsApp** | Twilio API for WhatsApp | Reliable 2-way messaging, voice note transcription, media support |
|
||
| **Voice Notes** | Twilio Media Streams + ASR (Google/Azure Speech-to-Text) | Transcribe technician voice updates to text |
|
||
| **Reporting** | Metabase (self-hosted) or embedded chart library (Chart.js / Recharts) | Interactive dashboards without building from scratch |
|
||
| **Notifications** | Email + SMS (Twilio) + WhatsApp in-app | Multi-channel alerts |
|
||
| **Deployment** | Docker Compose on Linux server | Easy setup, automated backups |
|
||
| **Secure Access** | Netbird VPN tunnel (server-side only) | No client on user devices — browser access via HTTPS |
|
||
|
||
### Architecture Diagram
|
||
|
||
```
|
||
┌──────────────────────────────────────────────────────────────┐
|
||
│ SERVER (Homelab / Cloud) │
|
||
│ │
|
||
│ ┌─────────────────┐ ┌──────────────┐ ┌────────────────┐ │
|
||
│ │ FastAPI / │ │ PostgreSQL │ │ Netbird Proxy │ │
|
||
│ │ Node.js Backend │──│ (Database) │──│ (Auth Gateway) │ │
|
||
│ │ │ │ │ │ → HTTPS │ │
|
||
│ └────────┬────────┘ └──────────────┘ │ → JWT Auth │ │
|
||
│ │ └───────┬────────┘ │
|
||
│ ┌────────▼────────┐ │ │
|
||
│ │ React / │ │ │
|
||
│ │ Next.js │ │ │
|
||
│ │ Frontend │ │ │
|
||
│ └─────────────────┘ │ │
|
||
│ │ │
|
||
│ ┌────────────────────────────────────────────────┘ │
|
||
│ │ File Storage (uploads/) │
|
||
│ └─────────────────────────────────────────────────────────── │
|
||
└────────────────────────────────────────────────────────────────┘
|
||
│
|
||
┌──────────────┼──────────────────┐
|
||
│ │ │
|
||
┌──────────▼──────┐ ┌─────▼────────┐ ┌─────▼──────┐
|
||
│ Users │ │ Twilio │ │ QR Codes │
|
||
│ (Web Browser) │ │ WhatsApp API │ │ (Mobile │
|
||
│ No VPN needed │ │ ↔ Bot │ │ Phone) │
|
||
└─────────────────┘ └──────────────┘ └─────────────┘
|
||
```
|
||
|
||
---
|
||
|
||
## 14. Reporting Module
|
||
|
||
### Export Formats
|
||
|
||
| Format | Use Case |
|
||
|--------|----------|
|
||
| 📄 PDF | Executive summaries, formal reports |
|
||
| 📊 Excel | Data analysis, filtering, pivot tables |
|
||
| 📋 CSV | Raw data for external systems |
|
||
|
||
### Scheduled Delivery
|
||
|
||
| Frequency | Reports | Recipients |
|
||
|-----------|---------|------------|
|
||
| Daily | Daily Operations Report | Jerome, Akua/Mercy |
|
||
| Weekly | Technician Productivity, SLA Compliance, Executive Summary | Scott, Jerome |
|
||
| Monthly | Cost Analysis, Customer Satisfaction, Preventive Maintenance | All Directors |
|
||
| Quarterly | Repeat Fault Report, Contractor Performance, Asset History | Scott |
|
||
|
||
### Standard Reports
|
||
|
||
1. Daily Operations Report — new, open, closed tickets today
|
||
2. Technician Productivity — jobs completed, avg time, top performer
|
||
3. SLA Compliance — % met per priority, worst offenders
|
||
4. Executive Summary — KPIs, trends, risks
|
||
5. Customer Satisfaction — average rating, low-score tickets
|
||
6. Cost Analysis — maintenance spend per building, per category
|
||
7. Repeat Fault Report — units with most recurring issues
|
||
8. Contractor Performance — if external hires used
|
||
9. Asset Maintenance History — per building, per system (AC, water pump, generator)
|
||
10. Preventive Maintenance Report — scheduled vs completed PM tasks
|
||
|
||
---
|
||
|
||
## 15. AI Features (Phase 2 — Post-MVP Stabilization)
|
||
|
||
| Feature | Description | Value |
|
||
|---------|-------------|-------|
|
||
| 🤖 **AI Ticket Classification** | Auto-categorize issue from description text | Saves Bella 30s per ticket |
|
||
| 🔮 **AI Priority Prediction** | Suggest priority based on category + description + unit history | Consistent prioritization |
|
||
| 👤 **AI Technician Assignment** | Recommend best tech based on skill + location + workload | Optimal dispatch |
|
||
| 🔧 **AI Maintenance Recommendations** | Suggest related maintenance based on patterns | Preventive insights |
|
||
| 🖼️ **AI Image Analysis** | Detect defect type from technician photos | Faster triage, auto-categorize |
|
||
| 💬 **AI Tenant Chatbot** | Self-service FAQ and troubleshooting for guests | Reduce agent calls |
|
||
| 📝 **AI Executive Summaries** | Auto-generate weekly/daily narrative from raw data | Saves Scott time |
|
||
| 🔮 **Predictive Maintenance** | Predict failures from usage + history patterns | Reduce downtime |
|
||
| ⚙️ **Asset Failure Forecasting** | When does the AC at 102E likely fail next? | Proactive replacement |
|
||
|
||
> **AI Readiness Requirement:** The MVP must capture clean, structured historical data for at least 3 months before AI features can be trained on Denya-specific patterns.
|
||
|
||
---
|
||
|
||
## 16. Implementation Roadmap
|
||
|
||
### Phase 1: MVP (3 Weeks — Weeks 1-3)
|
||
|
||
| Week | Deliverables |
|
||
|------|-------------|
|
||
| **1** | Server setup (Linux + Docker), PostgreSQL, domain/Netbird, auth system |
|
||
| **2** | Backend API core: CRUD for tickets, users, units; WhatsApp bot (Twilio + commands) |
|
||
| **3** | Dashboard + Create Issue + All Issues table + Issue Detail + QA with Nicholas & Bella + go-live |
|
||
|
||
> **Note:** POC starts with a **manual spreadsheet** built from existing QR request logs (what Wahab is already collecting). QR code scanning deferred to Phase 2.
|
||
|
||
### Phase 2: Enhancement (Weeks 7-12)
|
||
|
||
- QR code system for apartments
|
||
- CEO dashboard with KPI cards
|
||
- Reporting module with scheduled exports
|
||
- Full 15-status lifecycle (if not already in MVP)
|
||
- Procurement workflow
|
||
- Director dashboards
|
||
|
||
### Phase 3: Intelligence (Months 4-6)
|
||
|
||
- AI ticket classification
|
||
- AI priority prediction
|
||
- Technician performance analytics with trends
|
||
- 48-hour follow-up survey automation
|
||
|
||
### Phase 4: Advanced AI (Months 7-12)
|
||
|
||
- Image analysis for defect detection
|
||
- Tenant chatbot
|
||
- Predictive maintenance
|
||
- GPS technician tracking
|
||
- Asset failure forecasting
|
||
|
||
---
|
||
|
||
## 17. What's Needed from the Team to Proceed
|
||
|
||
Please discuss and decide:
|
||
|
||
1. ✅ **Workflow approval** — Does the merged end-to-end flow match how you work?
|
||
2. 🎯 **SLA targets** — What response/resolution times are realistic for each priority?
|
||
3. 📅 **Holiday calendar** — Which Ghanaian public holidays should the system know about?
|
||
4. 👥 **Permissions** — Is the permissions matrix about right?
|
||
5. 📱 **WhatsApp number** — Dedicated business number for the bot
|
||
6. 💻 **Server** — Homelab machine available, or prefer cloud hosting?
|
||
7. 🎤 **Voice notes** — Will techs actually use voice notes over typing?
|
||
8. 🚀 **MVP scope** — Is the Phase 1 scope (Weeks 1-6) sufficient to start, or do we need more/less?
|
||
|
||
---
|
||
|
||
## 18. Supporting Documents
|
||
|
||
| Document | Path | Description |
|
||
|----------|------|-------------|
|
||
| Product Specification (PSD) | `denya_onecare_psd.docx` | Wahab's full enterprise PSD |
|
||
| Original Proposal | `issue_tracking_system_proposal.md` | Initial design with team details |
|
||
| Wahab's Briefing | `wahab_briefing_and_task_list.md` | Full project brief for Wahab |
|
||
| Apartment Mapping | `apartment_mapping.json` | Unit aliases, building groupings |
|
||
| Financial Report | `denya_summary_report.txt` | Revenue $609K, 83% profit |
|
||
|
||
---
|
||
|
||
*Prepared by Agent Zero for Denya Developers — July 16, 2026*
|
||
*This is a living document — updated as field data comes in from Wahab.*
|