CORE SYSTEM 1 OF 5

DRMM SOS

End-to-end public safety platform β€” citizen, responder & command

A complete three-app ecosystem connecting ZambaleΓ±o citizens, on-the-ground first responders, and PDRRMO command in real time. Citizens raise alerts. Dispatchers triage and route. Responders accept dispatches, communicate via chat / voice / video / push-to-talk, and report from the field. Leadership monitors live operations across the entire Province.

Emergency Alerts Multi-Agency Dispatch Voice / Video / PTT SOS Panic Live CCTV AI Analysis Live Chat

System Overview

The DRMM SOS is not a single application β€” it is an integrated public-safety operating environment that spans three coordinated applications backed by a common command-and-control backbone. Each app is purpose-built for its user, but all three share live data, communications, and dispatch workflows.

πŸ“±

Citizen Mobile App

For ZambaleΓ±o residents. Submit emergency alerts, chat with responders, browse local services, news, businesses, and book government appointments.

🚨

Responder Mobile App

For PDRRMO, BFP, PNP, and medical responders in the field. Dispatch inbox, voice/video/PTT comms, GPS tracking, SOS panic, incident reporting.

πŸ–₯️

Command Web Dashboard

For PDRRMO command, dispatchers, and department heads. Live alert queue, resource dispatch, CCTV map, citizen chat, AI analysis, reports.

Component Capabilities

πŸ“±

Citizen App

Mobile (Android & iOS) and Web Citizen Portal

Emergency Alert Submission
Send alerts for Fire, Medical, Crime, Disaster, Others β€” with photo, GPS, and description
Live Chat with Dispatcher
Real-time messaging during an active incident; receive updates on responder ETA
Push Notifications
Province- and barangay-targeted alerts (typhoon, evacuation, lost child, etc.)
News & Advisories
Curated PDRRMO and Province news feed with images and links
Appointment Booking
Browse government office schedules and reserve a queue slot
Local Business Directory
Discover Zambales merchants, products, and place orders
Tourism Spots
Curated guide of Zambales destinations with photos and directions
Government Establishments
Directory of LGU offices with contact info and locations
🚨

Responder App

Mobile (Android) for first responders & ground units

Dispatch Inbox
Receive incoming dispatches with full incident detail; Accept / Decline with reason
Status Timeline
Update progression: En Route β†’ On Scene β†’ Resolved, with timestamps captured
Turn-by-Turn Navigation
One-tap navigate to incident location using device's preferred maps app
Group Chat (Messenger-style)
Pre-built groups (e.g., PDRRMO Ops, BFP Bravo Shift, PNP Patrol) with text, photo, voice memo, location pin
Multi-Party Voice & Video Calls
Adaptive: small groups use peer-to-peer; large groups auto-upgrade to server-relayed
Push-to-Talk Radio
Hold button to broadcast on a channel; replay recent transmissions; channel-based scoping
SOS / Officer Down Panic
Hold-to-fire 220-px button broadcasts panic + GPS to all nearby responders + command
Duty Status & Shift
Clock In/Out; status switcher: Available / OnScene / Busy / Break / OffDuty
Live GPS Broadcast
30-second pings while on duty; visible on command map; offline-buffered
Incident Reports
DANA, RDANA, IAP, and After-Action templates for field-submitted reports
πŸ–₯️

Command Web Dashboard

Browser-based for command, dispatchers & department heads

Live Alert Queue
Incoming citizen alerts in real time, filterable by status (Pending / Ongoing / Done / Rejected)
Multi-Agency Dispatch
Route to BFP, PNP, Medical, Engineering, Traffic, or PDRRMO with one click
Resource Assignment
Assign vehicles (fire trucks, patrol cars, ambulances) and personnel to an incident
Live Chat with Citizens
Two-way messaging with the citizen who filed the alert; supports updates and clarifying questions
CCTV Live Map
Province-wide map of registered IP cameras; click marker β†’ live HLS / MJPEG / WebRTC stream
Responder Live Map
Real-time positions of on-duty responders, color-coded by duty status
Citizen Approval Workflow
Review and approve / reject citizen registrations to prevent abuse
Alert Broadcast Composer
Compose province-wide, municipality, or barangay-targeted advisories
News Management
Publish PDRRMO news, advisories, and educational content to the citizen app
AI Analysis
One-click AI summary of any alert, incident, or report; identifies trends and recommends actions
Reports & Exports
Daily / weekly / monthly operations reports; OCD / DILG-compliant formats
Department Multi-Tenancy
Each department sees only their relevant alerts; admin sees everything

Demo Accounts

Use these credentials in the staging environment to explore role-specific features.

Web Dashboard β€” Admin & Department Logins

Role Username Password Department / Scope
System AdministratoradminAdmin@1234Full system access
Provincial Adminprovincial_adminDemo@1234All Zambales (province-wide)
PDRRMO Provincialpdrrmo_adminDemo@1234PDRRMO Provincial command
Municipal DRRMO (Iba)iba_adminDemo@1234Iba (capital) β€” also: subic_admin, olongapo_admin, botolan_admin, etc.
Fire Dispatcher (BFP)fire_dispatcherDemo@1234Bureau of Fire Protection
Police Dispatcher (PNP)police_dispatcherDemo@1234Philippine National Police
Medical Dispatchermedical_dispatcherDemo@1234RHU / Ambulance services
Engineering Dispatcherengineering_dispatcherDemo@1234Municipal / Provincial Engineering
Traffic Dispatchertraffic_dispatcherDemo@1234Traffic Management Office
Media (read-only)media_userDemo@1234Media / News Center

Mobile App β€” Citizen Logins

Status Username Pattern Password Notes
Approved (50)demo.{firstname}.{lastname}.{nnn}Demo@1234Can log in, send alerts, chat, book appointments, place orders
Pending (10)demo.{firstname}.{lastname}.{nnn}Demo@1234Awaiting admin approval before activation
Rejected (5)demo.{firstname}.{lastname}.{nnn}Demo@1234Rejected accounts (cannot log in)

Responder App β€” Field Logins

Role Username Password Pre-Seeded Group Membership
Provincial Admin (PDRRMO)pdrrmo_adminDemo@1234PDRRMO Provincial Ops + all groups
Fire Responderfire_dispatcherDemo@1234BFP Iba β€” Bravo Shift
Police Responderpolice_dispatcherDemo@1234PNP Olongapo β€” Patrol Bravo
LGU Coordinator (Subic)subic_adminDemo@1234Subic SBMA Liaison
Hazard Watch (Botolan)botolan_adminDemo@1234Botolan Pinatubo Watch
Note: Demo credentials are for evaluation purposes only and reset every 24 hours. Production credentials are issued upon system handover. Citizen accounts may be created via the mobile app's self-registration flow (subject to admin approval).
Default OTP for Demo: Use 1111 for any one-time password prompt β€” registration, login verification, password reset, or sensitive action confirmation. Production environments rotate to live SMS/email-delivered codes.

Roles & Permissions Matrix

Capability Admin Provincial PDRRMO MDRRMO Dispatcher Responder Media Citizen
Submit emergency alertβ€”β€”β€”β€”β€”β€”β€”βœ“
View live alert queueβœ“βœ“βœ“LGUDeptβ€”Viewβ€”
Triage / accept alertβœ“βœ“βœ“LGUDeptβ€”β€”β€”
Create incident & dispatchβœ“βœ“βœ“LGUDeptβ€”β€”β€”
Receive dispatch (responder app)β€”β€”βœ“βœ“β€”βœ“β€”β€”
Accept / decline / statusβ€”β€”βœ“βœ“β€”βœ“β€”β€”
Live chat with citizenβœ“βœ“βœ“LGUDeptβ€”β€”βœ“ (own)
Group chat / voice / video / PTTβœ“βœ“βœ“βœ“β€”βœ“β€”β€”
Fire SOS / Officer Downβ€”β€”βœ“βœ“β€”βœ“β€”β€”
View CCTV live mapβœ“βœ“βœ“LGUDeptβ€”β€”β€”
Compose alert broadcastβœ“βœ“βœ“LGUβ€”β€”β€”β€”
Approve citizen registrationβœ“βœ“βœ“LGUβ€”β€”β€”β€”
Run AI Analysisβœ“βœ“βœ“LGUDeptβ€”β€”β€”
Submit DANA / RDANA / IAPβœ“βœ“βœ“βœ“β€”βœ“β€”β€”
Manage news & advisoriesβœ“βœ“βœ“LGUβ€”β€”Draftβ€”
View / export reportsβœ“βœ“βœ“LGUDeptβ€”Viewβ€”
Scope notation: βœ“ = full access Β· LGU = scoped to assigned municipality Β· Dept = scoped to assigned department Β· own = own records only

End-to-End Workflows

Master Workflow β€” Full Incident Lifecycle

From citizen alert through multi-agency dispatch, field response, and post-incident reporting.

flowchart TD subgraph Citizen[Citizen Side] A([Citizen Opens App]) --> B[Tap Send Alert] B --> C[Choose Type
Fire/Medical/Crime/Disaster/Other] C --> D[Capture GPS + Photo + Description] D --> E[Submit] end subgraph Command[Command Dashboard] E --> F[Alert Appears in Live Queue] F --> G[Dispatcher / Admin Triages] G --> H{Severity} H -->|Reject| I[Mark Rejected with Reason] H -->|Accept| J[Create Incident] J --> K[Live Chat Opened with Citizen] K --> L[Assign Department + Resources
Trucks / Patrol / Ambulance] end subgraph Responder[Responder App] L --> M[Dispatch Pushes to Responders] M --> N[Responder Receives in Inbox] N --> O{Decision} O -->|Decline| P[Reason Logged β†’ Reassign] P --> M O -->|Accept| Q[Tap Navigate] Q --> R[En Route] R --> S[On Scene] S --> T[Field Communications
Group Chat / Voice / PTT] T --> U[Mark Resolved] end subgraph Close[Closure] U --> V[Submit Incident Report
DANA/RDANA/IAP/AAR] V --> W[Close in Command Dashboard] W --> X[Citizen Notified of Resolution] X --> Y([Incident Archived for Audit]) end I --> X style A fill:#DBEAFE,stroke:#1E40AF style E fill:#DBEAFE,stroke:#1E40AF style F fill:#D1FAE5,stroke:#065F46 style M fill:#FEE2E2,stroke:#991B1B style Y fill:#E5E7EB,stroke:#4B5563

Workflow A β€” Citizen Emergency Alert

Resident files a fire emergency from the mobile app.

flowchart LR A[Open Citizen App] --> B{Logged In?} B -->|No| C[Login or Register] C --> D[Submit Registration
Pending Admin Approval] D --> E[Wait for Approval] B -->|Yes| F[Tap 'Send Alert'] E --> F F --> G[Select Type:
πŸ”₯ Fire] G --> H[Auto-GPS + Address Lookup] H --> I[Take Photo] I --> J[Add Description] J --> K{Online?} K -->|Yes| L[Submit] K -->|No| M[Queue Locally] M --> N[Auto-Sync When Online] N --> L L --> O[Receive Alert ID + Push Confirmation] O --> P[Live Chat Opens with Dispatcher] style A fill:#DBEAFE style P fill:#D1FAE5

Step-by-Step Procedure

1
Open the Citizen App. Approved citizens land on the home screen with the red "Send Alert" button prominent.
2
Tap "Send Alert" and choose alert type: Fire, Medical, Crime, Disaster, or Other.
3
Confirm location. App auto-fills GPS; user can adjust the pin or type the address.
4
Capture photo β€” required for fire/disaster, optional for others.
5
Add description β€” short text describing the situation.
6
Submit. Receive an Alert ID and instant push notification confirming receipt.
7
Live chat automatically opens once the dispatcher accepts the alert.

Workflow B β€” Dispatcher Triage & Resource Assignment

Department dispatcher reviews incoming alert, creates an incident, and assigns resources.

flowchart TD A[Alert Arrives in Live Queue] --> B[Dispatcher Login
e.g., fire_dispatcher] B --> C[Click Alert to View Detail] C --> D[Review Citizen Photo + Location + Description] D --> E{Valid Alert?} E -->|No| F[Reject with Reason
Citizen Notified] E -->|Yes| G[Click 'Accept Alert'] G --> H[Live Chat Opens with Citizen] H --> I[Optional: AI Analysis
Auto-Summary + Risk Level] I --> J[Create Incident from Alert] J --> K[Assign Department
BFP / PNP / Medical / Eng / TMO] K --> L[Assign Vehicle Resources
FT-01, AMB-02, etc.] L --> M[Assign Responder Personnel] M --> N[Push Dispatch to Responder Apps] N --> O[Status: Ongoing] O --> P[Monitor on Map + Chat] style A fill:#D1FAE5 style F fill:#FEE2E2 style N fill:#FEF3C7 style O fill:#D1FAE5

Workflow C β€” Responder Dispatch & Field Response

Fire responder receives a dispatch, navigates to scene, communicates with the team, and resolves.

flowchart LR A[Open Responder App] --> B[Clock In] B --> C[Set Status: Available] C --> D[Dispatch Tab] D --> E[Incoming Dispatch Push] E --> F[Open Dispatch Detail] F --> G{Decision} G -->|Decline| H[Choose Reason
Equipment / Distance / Other] H --> I[Dispatcher Reassigns] G -->|Accept| J[Status: En Route] J --> K[Tap πŸ—Ί Navigate
Opens Maps with Turn-by-Turn] K --> L[Arrive at Scene] L --> M[Status: On Scene] M --> N[Communicate with Team] N --> O[Group Chat / Voice Call / PTT] O --> P[Coordinate Multi-Agency Response] P --> Q[Update Citizen via Chat] Q --> R[Incident Resolved] R --> S[Status: Resolved] S --> T[Submit DANA / Incident Report] style A fill:#FEE2E2 style J fill:#FEF3C7 style M fill:#FEF3C7 style S fill:#D1FAE5

Responder Tab-by-Tab Procedure

1
Dispatch tab β€” pull-to-refresh inbox; chips filter by status (All / Pending / Accepted / OnScene / Resolved).
2
Tap dispatch β€” see citizen's photo, location, description, status timeline.
3
Accept β€” status auto-updates to "En Route"; dispatcher and citizen are notified.
4
Tap πŸ—Ί Navigate β€” turn-by-turn directions launch in the device's maps app.
5
Mark "On Scene" when arrived β€” captures arrival timestamp.
6
Groups tab β€” open the relevant group (e.g., "BFP Iba Bravo"), use chat / voice / video / PTT to coordinate.
7
Mark "Resolved" β€” close out, then submit incident report (DANA / RDANA / IAP / AAR as applicable).

Workflow D β€” Real-Time Communications (Chat / Voice / Video / PTT)

Responders coordinate during a multi-agency response.

flowchart TD A[Open Groups Tab] --> B[See Pre-Built Groups
PDRRMO Ops, BFP Bravo, PNP Patrol, Pinatubo Watch] B --> C[Tap Group β†’ Chat View] C --> D{Communication Mode} D -->|Text| E[Type or Voice-to-Text] E --> F[Send with Photo / Voice Memo / Location Pin] D -->|πŸ“ž Voice Call| G[Multi-Party Voice] G --> H{Group Size} H -->|≀10| I[Peer-to-Peer Mesh] H -->|>10| J[Server-Relayed Auto-Upgrade] D -->|πŸŽ₯ Video Call| K[Multi-Party Video] K --> L{Group Size} L -->|≀6| M[Peer-to-Peer Mesh] L -->|>6| N[Server-Relayed Auto-Upgrade] D -->|πŸŽ™ PTT| O[Hold Button to Transmit] O --> P[Channel Members Hear Live] P --> Q[Recent Transmissions Replayable] F --> R[All Members Receive in Real-Time] I --> R J --> R M --> R N --> R style A fill:#FEE2E2 style R fill:#D1FAE5

Workflow E β€” SOS / Officer Down Panic

Responder in distress fires the panic button; broadcast to all nearby responders + command.

flowchart LR A[Responder in Distress] --> B[Open SOS Tab] B --> C[See Big Red HOLD TO FIRE Button] C --> D[Press & Hold 2 Seconds] D --> E[App Auto-Captures GPS
Last-Known Fallback] E --> F[Optional 300-char Note] F --> G[Panic Fired] G --> H[Broadcast Province-Wide] G --> I[Broadcast LGU-Specific] G --> J[Push Notification to All Responders] G --> K[Highlighted on Command Map] H --> L[Nearest Units Self-Dispatch] I --> L J --> L K --> M[Command Coordinates Response] L --> N[Backup Arrives] M --> N N --> O[All Clear / Resolved] style A fill:#FEE2E2 style G fill:#FCA5A5,stroke:#991B1B,stroke-width:3px style O fill:#D1FAE5

Workflow F β€” CCTV Live Map Monitoring

Command observes the province via the CCTV Live Map during an event.

flowchart LR A[Admin / Dispatcher Login] --> B[Open CCTV Live Map] B --> C[See All Cameras as Markers
🟒 Online Β· πŸ”΅ PTZ Β· βšͺ Offline] C --> D[Filter by LGU / Type
Traffic / Public Safety / Coastal / etc.] D --> E[Click Marker] E --> F[Info Window
Address, IP, PTZ Status, Online State] F --> G[Click β–Ά View Live] G --> H{Best Stream Available} H -->|HLS| I[Browser HLS Player] H -->|MJPEG| J[MJPEG Stream] H -->|WebRTC| K[Sub-Second Latency Stream] H -->|Snapshot| L[Periodic Image Refresh] I --> M[Live Footage in Modal] J --> M K --> M L --> M M --> N[Cross-Reference with Alert / Dispatch] N --> O[Confirm Situation Visually] O --> P[Adjust Response Accordingly] style A fill:#D1FAE5 style M fill:#DBEAFE style P fill:#D1FAE5

Workflow G β€” Mass Alert Broadcast

PDRRMO issues a typhoon advisory to coastal municipalities.

flowchart TD A[Trigger: Typhoon Forecast] --> B[Admin / PDRRMO Login] B --> C[Open Alert Broadcast Composer] C --> D[Choose Template
Typhoon / Flood / Earthquake / Lost Child / Health] D --> E[Customize Message Body] E --> F[Choose Audience] F --> G{Scope} G -->|Province-Wide| H[All Citizen Apps] G -->|Municipality| I[Specific LGUs] G -->|Barangay| J[Specific Barangays] H --> K[Push Notification + In-App Banner] I --> K J --> K K --> L[Citizens Receive on Mobile] L --> M[Read Receipts Tracked] M --> N[Delivery Dashboard Shows Reach] style A fill:#FEF3C7 style K fill:#D1FAE5 style N fill:#D1FAE5

Use Case Scenarios

SCENARIO 1

Fire Emergency β€” Full Lifecycle

Citizen reports fire in a residential area; multi-agency response engaged.

  1. Citizen submits Fire alert with photo + GPS
  2. fire_dispatcher accepts, opens chat with citizen
  3. AI Analysis flags "structure fire, residential, possible occupants"
  4. Incident created; dispatches FT-01 and FT-02
  5. BFP responders accept on app, navigate, mark On Scene
  6. BFP Iba Bravo group chat opens for unit coordination
  7. Voice call started for tactical comms
  8. Police dispatched via cross-agency request for traffic control
  9. Citizen receives live updates throughout
  10. Fire resolved; DANA report submitted; case archived
SCENARIO 2

Medical Emergency β€” Single Agency

Citizen reports cardiac event; ambulance dispatched.

  1. Citizen submits Medical alert (no photo required)
  2. medical_dispatcher accepts immediately
  3. Live chat collects symptoms while waiting
  4. AMB-01 dispatched; responder accepts
  5. Responder navigates with turn-by-turn
  6. Status updates: En Route β†’ On Scene β†’ Resolved
  7. Patient transported; chat used to brief receiving facility
  8. Incident closed; ePCR submitted
SCENARIO 3

Officer Down β€” SOS Panic

Police officer in distress during a foot pursuit.

  1. Officer presses & holds SOS button for 2 seconds
  2. App captures GPS automatically
  3. Panic broadcast fires province-wide + LGU-specific
  4. All on-duty responders within Olongapo receive push notification
  5. Nearest 3 units self-dispatch within 30 seconds
  6. Command sees panic flag on responder map; coordinates
  7. Backup arrives; incident contained
  8. After-Action Report submitted
SCENARIO 4

Typhoon Approach β€” Mass Alert

PDRRMO broadcasts typhoon advisory 72 hours out.

  1. PDRRMO admin opens Alert Broadcast composer
  2. Selects "Typhoon Advisory" template
  3. Targets all coastal barangays
  4. Broadcast pushed to citizen apps + SMS gateway
  5. Delivery dashboard shows 87% reach
  6. Pinatubo Watch group activated
  7. Pre-positioned dispatches readied for evacuation
  8. Live CCTV monitoring of coastal areas commences
SCENARIO 5

CCTV-Verified Incident

Citizen reports vehicle accident; dispatcher confirms via CCTV before deploying.

  1. Citizen submits accident report at intersection
  2. Traffic dispatcher opens CCTV Live Map
  3. Locates camera nearest the GPS pin
  4. Views live HLS stream β€” confirms 2-vehicle collision, no fire
  5. Dispatches AMB-01 + traffic motorcycle TM-01
  6. Engineering held in reserve in case of structural damage
  7. Real-time CCTV monitoring continues throughout response
SCENARIO 6

Cross-Jurisdiction Coordination

Pinatubo lahar threat spans Botolan and neighboring municipalities.

  1. Geological monitoring triggers alert
  2. "Botolan Pinatubo Watch" group activated (cross-jurisdiction)
  3. Provincial admin joins voice call with all LGU heads
  4. PTT radio channel opened for field teams
  5. Mass evacuation alert broadcast to affected barangays
  6. Multiple LGU MDRRMOs coordinate via group chat
  7. CCTV monitoring along river routes
  8. Live responder map shows resource positioning
  9. Post-event RDANA reports compiled by PDRRMO

System Outputs

DASHBOARD
Live Operations Map
Active alerts, responders, CCTV in real time
REPORT
Daily Operations Brief
Alerts handled, incidents, response times
ANALYTICS
Alert Reach Metrics
Delivery & acknowledgment rates per channel
REGISTRY
Citizen & Responder Records
Approval status, activity history
REPORT
DANA / RDANA / IAP / AAR
Standard incident report formats
EXPORT
OCD / DILG Compliance
Pre-formatted submissions
AI
Auto-Generated Briefings
AI summary of incidents and trends
AUDIT
Full Activity Log
Every action timestamped for accountability

Frequently Asked Questions

What's the default OTP code for testing?

In the staging / demo environment, use 1111 for any OTP prompt β€” citizen registration, login two-factor, password reset, sensitive action confirmation, or first-time admin approval. Production environments switch to live OTP delivered via SMS or email and the override no longer applies.

How are the Citizen App and Responder App different?

They are two separate mobile apps with different package identifiers and visual identity (citizen blue vs. responder red). The citizen app is for the public β€” alert submission, services, news. The responder app is for first responders only β€” dispatch inbox, group chat, voice/video/PTT calls, SOS, and field reporting. Both connect to the same backend.

Does the Citizen App work offline?

Alert submissions are queued locally if offline and auto-sync when connectivity returns. Browsing news, services, and chat history works offline using cached data. Live chat and new alerts require internet.

How does the multi-party voice/video calling work?

Small groups (≀10 voice / ≀6 video) use peer-to-peer mesh for direct, low-latency communication. Larger groups automatically upgrade to a server-relayed mode. The transition is seamless β€” responders don't need to choose; the system picks the best topology based on group size.

What happens when a responder fires SOS?

A panic broadcast fires province-wide and to the responder's specific LGU. Push notifications hit every on-duty responder. The panic appears highlighted on the command map with last-known GPS. Nearby units self-dispatch automatically. Command can coordinate response while backup is en route.

How does the citizen approval workflow work?

New citizen registrations are flagged "Pending" and cannot send alerts until approved. Admin reviews the registration (name, contact info, optional ID) and approves or rejects. This prevents abuse and ensures alerts come from verifiable residents. The approval queue is visible to admins, provincial, and LGU-scoped personnel.

Are CCTV streams secure?

Yes. Camera credentials never reach the browser β€” only the centralized streaming bridge handles authentication. Streams are served over TLS, and access is role-restricted (LGU dispatchers only see their own cameras + province-wide; provincial admin sees everything). All viewing is logged for audit.

What languages does the Citizen App support?

English and Filipino out of the box. Sambal and Ilocano are on the roadmap for future Zambales-specific localization.

Does the Responder App track GPS continuously?

Only while a responder is clocked in (on duty). The app pings location every 30 seconds during active shifts. When the responder clocks out, GPS broadcasting stops. Off-duty responders are not tracked. All location data is purged per the configured retention policy.

How does AI Analysis help dispatchers?

AI Analysis is a one-click feature on the dashboard. It reads the alert/incident details and produces a concise summary, identifies likely risk factors, recommends resource types, and flags trends (e.g., "third fire in this barangay this month"). It assists β€” not replaces β€” human decision-making.

How does this system integrate with the other 4 systems?

Incidents and CCTV cameras plot on GIS; dispatch routes to vehicles in Fleet Management; responder profiles tie to HRIS; and incidents near mining sites can flag Environmental Monitoring for compliance verification.