The QC iReport Dashboard is an analytics tool built for the Quezon City Local Government Unit. It connects directly to the QC iReport case management system (Microsoft Dynamics 365) and displays real-time data about citizen complaints and service requests — without requiring staff to export any files.
The dashboard is designed for department heads, supervisors, and executive management to monitor case volumes, track how quickly departments are resolving citizen concerns, and identify patterns that need attention.
All data is pulled live from QC iReport (Dynamics 365) using your QC LGU Microsoft account. No spreadsheet uploads are required. The data is always current as of when you generate the report.
Click the Sign Out button (visible next to your name on the connect screen, or use the "New Report" button on the dashboard to return to the connect screen). Your session is only stored in your browser tab and is cleared when you close it.
Once a report is loaded, the dashboard automatically refreshes in the background every 5 minutes. A countdown chip in the header (↻ 4:59) shows how long until the next refresh. When the timer reaches zero, all data — cases, activities, KPIs, and charts — is silently re-fetched from D365 without interrupting your view.
The connect screen automatically stores your last 5 generated reports in your browser's local storage. These appear under the date range picker as "Recent Reports."
The dashboard supports a dark mode that is easier on the eyes in low-light environments and reduces screen glare in meeting rooms.
Keyboard shortcuts let you navigate the dashboard without scrolling:
| Key | Action |
|---|---|
| 1 – 0 | Jump to dashboard sections 1–10 (in order of appearance) |
| D | Toggle dark / light mode |
| ? or / | Open the keyboard shortcuts reference panel |
| Esc | Close any open panel (share modal, timeline, shortcuts) |
Click the Print button in the dashboard header (or press Ctrl+P / Cmd+P) to open the print dialog.
The dashboard includes a print-optimized layout that automatically:
The five cards at the top of the dashboard give an at-a-glance overview of the reporting period. These are the first things to check when opening a report.
Cases in QC iReport follow this general progression:
Cases that remain at New for a long time indicate they have not been picked up by any department.
Each KPI card shows a small delta chip — a colored badge showing the percentage change between the current reporting period and the equivalent previous period of the same length.
How the previous period is calculated: If your report covers Jan 1–Jan 31 (31 days), the previous period is Dec 1–Dec 31 (the 31 days immediately before). The dashboard fetches both periods from D365 when you load a report.
Delta chip color guide:
Below the delta chip on each KPI card, a small sparkline bar chart shows the trend for that metric across the last 6 equivalent periods.
If more than 10% of cases in the current report are missing classification or district data, an amber warning banner appears just below the KPI cards.
Three visualizations that show when cases are coming in, what stage they are at, and which departments are handling them.
What it shows: The number of new cases filed on each day within the reporting period. Each bar represents one day.
How it is measured: Uses the Date Filed (createdon) of each case. Bars are grouped by calendar date and counted.
What to look for:
What it shows: The proportion of cases in each status as of the time the report was generated.
How it is measured: Each case's current statuscode from Dynamics 365 is grouped and counted. The slice size is proportional to the percentage of total cases.
What to look for:
What it shows: A ranking of departments by total number of cases assigned to them.
How it is measured: Cases are grouped by the kti_department option set field in D365. The department with the most cases gets the full-width bar; all others are shown relative to it.
What to look for:
A funnel visualization showing how cases move through the resolution pipeline — from the total filed, down to those with any action, down to those fully resolved.
A day-of-week × hour-of-day heat map showing when during the week citizens file the most cases in the reporting period.
What it shows: The most common types of complaints or service requests filed by citizens. Categories are ranked from most to least frequent.
How it is measured: Uses the Incident Category lookup field from D365 (_kti_incidentcategory_value). Cases without a category are grouped as "(Not Classified)".
What to look for:
What it shows: For each department, the breakdown of their cases by current status. Each bar is one department; each colored segment is a status.
How it is measured: Cases are grouped by department and status simultaneously. Each segment's height is the count of cases in that status for that department.
What to look for:
Below the classification and department charts, a sortable table lists all complaint categories found in the current period, ranked by case count. Each row shows:
| Column | What it means |
|---|---|
| Classification | The complaint category (Incident Classification) as recorded in D365. |
| Cases | Number of cases with this classification in the current period. |
| % of Total | This category's share of all cases in the period. |
| Share bar | A visual width bar proportional to the percentage, for quick comparison. |
Click any column header to sort. The note below the table shows the overall volume change vs the prior period (e.g. "Case volume up 12% vs prior period — 83 → 93 cases").
What it shows: A matrix of every department vs. their case counts broken down by status. Each row is one department; columns show each status and a total.
How it is measured: Counts are the same as the charts above — cases grouped by department × status. The Classification column lists all incident categories handled by that department.
| Column | What it means |
|---|---|
| Department | The department abbreviation and full name (e.g. TTMD — Traffic & Transport Management Department) |
| Classification | The distinct incident categories handled by that department in this period |
| New / Validating / etc. | Number of cases in each status for that department. A dash (—) means zero. |
| Total | Total cases assigned to the department in the period |
| TOTAL row | Sum across all departments for each status column |
What it shows: Automatically generated plain-language findings based on the data in the current report. These highlight the most significant patterns without requiring the reader to interpret all the charts manually.
How they are generated: The dashboard calculates specific conditions from the data — such as which department has the highest caseload, what percentage of cases are still unactioned, and which issue category is most common — and writes a sentence describing each finding.
Observation cards use three color styles:
This section measures how well departments are serving citizens — not just how many cases they have, but how fast and how thoroughly they respond and resolve them. It uses data from both the Incidents table and the Case Activities table in D365.
What it shows: How quickly resolved cases were closed, grouped into six time ranges. Each bar is one time bucket; the height is the number of cases resolved in that timeframe.
How it is measured: For every resolved case, the resolution time is computed as deactivatedon − createdon (in hours). Cases are then sorted into buckets:
What to look for: A healthy distribution has most bars on the left (fast resolution). A distribution heavy on the right means cases are sitting open too long before being closed.
What it shows: Of all currently open (unresolved) cases in the report, how old are they? Each slice represents an age range.
How it is measured: For every case that is not Resolved, the age is calculated as today's date − date filed (in days). Cases are grouped into four brackets:
What to look for: Any cases in the red (>90 days) or orange (30–90 days) bucket should be investigated and escalated. These are citizen complaints that have been waiting for months.
A stacked bar chart showing the open case backlog split by department and age band. Each bar represents one department; the segments show how many of their open cases fall into each age bracket relative to the configured SLA threshold:
This chart answers the question "which departments have the oldest backlog?" at a glance. Departments with tall red segments need immediate attention. The age bands adjust automatically when you change the SLA threshold in the Targets modal.
What it shows: The average resolution time (in hours) per department. Only departments that have at least one resolved case are included.
How it is measured: For each department, takes all resolved cases and computes the mean of deactivatedon − createdon. Displayed in hours; tooltips show the value in human-readable form (e.g. "5.6 days").
Color coding:
What to look for: Departments with red bars should be reviewed for process issues, understaffing, or case complexity. Departments with green bars are meeting or exceeding the service standard.
The SLA Breach section lists every currently open case that has been waiting for more than 72 hours (3 days) without being resolved. This is your priority escalation list — these are citizen complaints where the service level agreement has already been missed.
What it shows: All open (unresolved) cases whose age exceeds 72 hours at the time the report is loaded. Cases are sorted most-overdue first so the most urgent appear at the top.
Age badge color coding:
The Activities column shows how many case activity records exist for the case. A value of 0 means no department has taken any documented action — these cases deserve immediate attention regardless of status.
Immediately below the SLA Breach table, a second list highlights cases that are approaching the SLA threshold — open cases aged between 48 and 72 hours. These are not yet in breach but will become SLA violations within the next 24 hours if not resolved.
The Department Scorecard provides an at-a-glance tier rating for every department, displayed as compact cards just before the full Department Performance Table. Each department receives a composite score and is assigned a tier — A, B, or C — based on three key performance metrics.
The composite score is the average of three rates, each expressed as a percentage (0–100):
The composite score formula: Composite = ROUND( (Resolution Rate + SLA Rate + Actioned Rate) ÷ 3 )
Each scorecard card displays: the department abbreviation, the tier letter (A/B/C) with color coding, the composite score, and a mini three-bar chart showing the individual component rates side by side.
What it shows: A comprehensive scorecard for every department — all performance metrics side by side in one table. Departments are ranked by total case volume (highest first).
| Column | How it is measured | What is good |
|---|---|---|
| Department | Full name and abbreviation from D365 kti_department option set | — |
| Cases | Total cases assigned to this department in the period | Context-dependent — volume reflects citizen demand, not performance |
| Resolved | Cases with status = Resolved for this department | High relative to Cases |
| Resolution Rate | Resolved ÷ Cases × 100% | Green ≥70% · Amber ≥40% · Red <40% |
| Avg Resolution Time | Mean of (deactivatedon − createdon) for resolved cases | Lower is better; 72h or less is the SLA |
| SLA ≤72h | % of this dept's resolved cases closed within 72 hours | Green ≥70% · Amber ≥40% · Red <40% |
| Activities | Total Case Activity records linked to cases of this department | Higher = more documented work |
| Actioned Rate | % of this dept's cases that have at least one Case Activity | Green ≥60% · Amber ≥30% · Red <30% |
| Avg First Response | Mean time from case filed to first activity logged (in hours/days) | Lower is better; shows same-day response |
The Staff Performance table ranks individual staff members by their contribution to case resolution during the reporting period. It is derived from the modifiedBy field in D365 — the user who last modified each resolved case is counted as its resolver.
Columns explained:
| Column | What it means |
|---|---|
| Rank | Position ordered by number of resolved cases (highest first). Gold badge = 1st, silver = 2nd, bronze = 3rd. |
| Staff Member | The D365 username who last modified the resolved case. This is a proxy for the person who closed the case. |
| Resolved | Number of cases resolved by this staff member in the period. |
| Total Handled | Total cases this staff member touched (resolved + still open). Gives context for the resolution rate. |
| Resolution Rate | Resolved ÷ Total Handled × 100%. A high rate means most of what the person handles gets resolved. |
| Avg Resolution Time | Mean time (hours) from case creation to resolution for the cases they closed. Lower is better. |
Three additional columns show the statistical distribution of resolution times for each staff member — a more reliable picture than the average alone:
| Column | What it means |
|---|---|
| p50 (Median) | Half of this person's cases were resolved faster than this time, half slower. More robust than the average because it isn't distorted by a few very slow cases. |
| p75 | 75% of their cases were resolved within this time. A high p75 signals that a meaningful portion of their cases take much longer than typical. |
| p90 | 90% of their cases were resolved within this time. The p90 highlights worst-case outlier behavior — high p90 means occasional very slow resolutions even if the median looks acceptable. |
All three columns are color-coded: green = within SLA threshold, amber = within 2× SLA, red = beyond 2× SLA. The columns show a dash (—) for staff members with fewer than 2 resolved cases.
modifiedBy field reflects whoever last saved a resolved case — not necessarily the sole person who worked on it. Cases handled collaboratively or reassigned multiple times may attribute resolution to the final editor. Use this data as a directional indicator, not a definitive individual performance metric.The Overdue Case Escalation section highlights open cases that have had no recorded activity for 7 or more days. These are cases that appear to be stalled — no department has logged any action in over a week.
How "idle" is measured: The dashboard checks the most recent activity log date in gActByInc for each open case. If the last activity was 7 or more days ago — or if there are no activities at all — the case is included in the overdue list.
Cases are grouped by department so supervisors can immediately see which units have the most stalled cases. A count badge next to the department name shows the number of overdue cases in that group.
"None recorded" in the Last Activity column means no Case Activity has ever been logged for that case in D365. This typically indicates the case was never assigned or actioned.
What it shows: The total number of cases filed per district in the reporting period.
How it is measured: Uses the District lookup field (_kti_incidentdistrict_value) from D365. Cases without a district are grouped as "(No District Assigned)".
What to look for: Districts with high volumes may need more resources deployed. A large "(No District Assigned)" bar means data quality is poor — staff need to set the district on cases.
What it shows: For each district, the breakdown of cases by current status — same concept as the Department by Status chart, but geographically organized.
What to look for: Districts with a large New portion indicate areas where citizen complaints are not being acted on. This can help prioritize geographic coverage.
Below the district bar charts, an interactive map of Quezon City shows the density of cases geographically, using the exact GPS coordinates recorded on each incident in D365.
What it shows: A smooth heat layer overlaid on a street map of QC. Areas with more incident reports appear in warmer colors (red/yellow); sparse areas appear in cooler colors (dark blue).
How it works: Each incident in D365 that has a kti_latitude and kti_longitude value populated contributes one point to the heat map. Cases without GPS coordinates are excluded from the map (though they are still counted in all other sections of the dashboard).
GPS data fields:
Using the map:
What it shows: A searchable, filterable list of every individual case in the report. This is used to investigate specific cases, verify data, or look up a particular department's or district's cases.
Four dropdown filters appear above the table. You can filter by any combination:
Click ✕ Clear to remove all filters and show all cases again. The case count updates automatically to show how many cases match your current filters.
| Column | Description | Source in D365 |
|---|---|---|
| Case No. | Unique case ticket number (e.g. CAS-001234-XYZ) | ticketnumber |
| Classification | The incident category / type of complaint | _kti_incidentcategory_value |
| Dept. | Department abbreviation (hover to see full name) | kti_department |
| Status | Current case status shown as a color-coded badge | statuscode |
| District | Geographic district of the case | _kti_incidentdistrict_value |
| Date Filed | When the case was created in D365 | createdon |
| Last Update | When the case was last modified | modifiedon |
| Modified By | Name of the staff member who last updated the case | _modifiedby_value |
The table shows 15 cases per page. Use the Previous / Next buttons at the bottom of the table to navigate between pages.
Each row in the drill-down table is clickable. Clicking any case row opens an Activity Timeline panel showing every action logged against that case in chronological order.
The timeline shows activities in newest-first order (most recent action at the top). Each entry shows:
Each drill-down row also shows a small activity count badge (e.g. 3 acts) indicating how many activity records exist for that case. Cases showing 0 have no logged department action.
To close the timeline, click the × button in the top-right corner of the panel, click anywhere outside the modal, or press Esc.
Any generated report can be shared as a single link. The link embeds all case data and activity data directly inside it — no login, no QC account, no file download required for the recipient. Recipients see the complete dashboard including all performance metrics.
Anyone with the link can open the full dashboard — no Microsoft account or QC LGU login is required. This means you can share reports with:
Shared links include everything visible in the dashboard at the time of generation:
| Data | Included in shared link? |
|---|---|
| All case records (status, dept, district, dates) | ✓ Yes |
| Resolution Rate & Resolution Time | ✓ Yes |
| SLA compliance rate | ✓ Yes |
| Case Activities (incl. activity statuses in timeline) | ✓ Yes |
| Department Performance Table (all columns) | ✓ Yes |
| All charts and Key Observations | ✓ Yes |
| Case Drill-Down table | ✓ Yes |
| Period-over-Period Trend Chart & KPI Sparklines | ✓ Yes |
| Executive Narrative Summary | ✓ Yes |
| Report Card Grade & Health Banner | ✓ Yes (re-computed from data) |
Both case data and case activity data are compressed and encoded directly into the URL (using deflate compression + base64 encoding). Nothing is sent to any server when the link is shared or opened — the data lives entirely in the URL itself. The recipient's browser decodes and renders the full dashboard locally.
In the Export dropdown, click "Open Cases CSV" to download a spreadsheet containing only the currently open and unresolved cases. Unlike the full CSV export (which includes all filtered cases), this export is pre-filtered to status ≠ Resolved and includes an extra "Age (hours)" column showing how long each case has been open. This is useful for sending to department heads as a follow-up action list.
Click "Print" in the Export dropdown (or press Ctrl+P) to open the browser's print dialog. The dashboard applies a print-optimized layout automatically:
For best results, use landscape orientation and set margins to "Minimum" or "None" in the browser print dialog. The PDF option in the Export dropdown uses html2canvas + jsPDF for a programmatic export if you prefer a one-click approach.
Use the PNG or PDF buttons in the dashboard header to export the entire dashboard as an image file or PDF document. This is useful for attachments in official reports or presentations where a link is not appropriate.
Several features are designed specifically for quick executive review — giving the Mayor, department heads, and supervisors a one-glance health check without needing to scroll through all sections.
A large letter grade (A+ through F) appears directly below the KPI grid. It is a composite score computed from three weighted metrics:
The resulting 0–100 score maps to letter grades: A+ ≥ 93, A ≥ 90, B ≥ 80, C ≥ 70, D ≥ 60, F below 60. The grade and score number are color-coded green, amber, or red. The grade card also shows a summary line: total open cases, SLA breaches, and resolution/SLA rates at a glance.
A colored banner (green / amber / red) below the KPI grid that shows the overall health status of the current report with individual chips for each metric:
Each chip shows a check (✓), warning triangle (△), or alert (⚠) icon beside the metric name and current value. The banner also includes an Inflow/Outflow chip (see Section 20) showing the ratio of new cases to resolved cases. The banner only appears after a report is loaded.
A thin banner at the top of the dashboard (below the header) that compares the current report to the last time you viewed a report in this browser. It shows the change in:
The baseline is updated automatically each time you load a report. Click "Update baseline" on the banner to reset the reference point to the current data without reloading.
A plain-English paragraph generated automatically from the current data, ready to paste into a briefing document, email, or presentation. It covers:
Click the Copy button on the narrative card to copy the full paragraph to your clipboard. The narrative is also included in shared links so recipients see it without needing to regenerate it.
The "Email Mayor" button on the Report Card banner opens your default email client with a pre-written message containing:
Fill in the Mayor's email address in the To field and add any additional context before sending. The email body is plain text formatted for readability.
A line chart showing case volume across multiple periods, positioned below the Summary Indicators. It uses the same historical period data that powers the KPI sparklines and displays four trend lines:
The X-axis labels are P−5, P−4, P−3, P−2, P−1, Now — where "Now" is the current loaded period and each "P−N" is the equivalent prior period (same span length). This chart only appears when prior-period history data is available (i.e., when you generate a live report, not when first opening a shared link from before this feature was added).
Small circular SVG arcs overlaid in the top-right corner of the Resolution Rate and SLA Compliance KPI cards, showing what percentage of the configured target has been achieved. The arc fills clockwise from the top; the percentage shown inside is "actual ÷ target × 100%". Color follows the same green/amber/red scale as the health chips.
The arcs only appear when KPI targets are set (see Section 19). If no targets are configured, no arc is shown.
The Set KPI Targets panel (accessed from Tools → Set KPI Targets in the header) lets you define performance benchmarks. These targets are used by the Report Card grade, the Health Banner chips, the KPI progress arcs, and the target badges on individual KPI cards.
| Field | What it controls |
|---|---|
| Resolution Rate | Target % of cases that should be resolved. Default: 80%. Used to color the Resolution Rate KPI badge and compute the Report Card score. |
| SLA Compliance | Target % of resolved cases that should meet the SLA threshold. Default: 90%. Used to color the SLA Rate badge. |
| Actioned Rate | Target % of cases that should have at least one Case Activity logged. Default: 60%. |
| Max Total Cases | Alert threshold for total caseload. A badge appears on the Total Cases KPI card when the count exceeds this number. Leave blank to disable. |
| SLA Threshold (hours) | The number of hours within which a case should be resolved. Default: 72 hours (3 days). Changing this value updates every section that references the SLA: SLA Breach list, aging bands, performance table, narrative summary, and report card. |
The SLA threshold is the single most important configuration value in the dashboard. It is used in:
Targets are saved in your browser's localStorage and persist between sessions. They apply only to your browser — each user's targets are independent.
These features provide deeper operational insight for power users, enabling bottleneck detection, backlog trend analysis, and geographic risk identification.
A horizontal bar chart located in the Classification & Department Breakdown section, below the Classification Breakdown table. It shows the average resolution time (in hours) for each complaint category, sorted from slowest to fastest (top to bottom). Only classifications with at least 2 resolved cases are shown; a maximum of 12 categories are displayed.
Bar colors follow the SLA threshold:
Hover over any bar to see the exact average resolution time, the number of resolved cases in that category, and whether the category is within SLA. Use this chart to answer: "Which complaint types take the longest to close?" and to prioritize process improvements for chronic bottleneck categories.
The Period-over-Period Trend Chart (Section 18) now includes a SLA % compliance line as a dashed purple line plotted on a secondary Y-axis (right side, 0–100%). This line shows the percentage of resolved cases that met the SLA threshold for each historical period, giving you a direct view of whether SLA compliance is improving or declining over time.
The SLA % line only appears if historical period data is available (i.e., sparkline history has been loaded by fetching a live report — the line is not available on static shared links). The secondary axis is labeled in purple % values on the right edge of the chart and does not interfere with the case volume scale on the left.
The KPI Health Banner now includes an Inflow/Outflow chip showing the ratio of new cases filed (inflow) to cases resolved (outflow) in the current period:
For example, an Inflow/Outflow of 1.43× means 43% more new cases are being filed than resolved — the backlog is growing. Hover over the chip to see the tooltip label "New cases filed vs resolved this period." This metric is especially useful for tracking whether a surge response is working.
The Geographic Heat Map (Section 14) district bubble overlays are now colored by SLA breach rate rather than raw case count. Breach rate = open cases exceeding the SLA threshold ÷ total cases in that district.
| Color | Breach rate | Interpretation |
|---|---|---|
| ■ Green | ≤ 10% | District is performing well; few open cases exceed SLA |
| ■ Amber | 11–30% | Moderate breach rate; some follow-up needed |
| ■ Red | > 30% | High breach rate; district requires urgent attention |
Click any district bubble to see a popup with the total case count, percentage of all cases, number of SLA breaches, and breach rate percentage. The bubble size still reflects the relative case volume (bigger = more cases), while the color communicates the severity of the SLA problem — making a small district with a high breach rate visually distinct from a large district with manageable compliance.
The dashboard is optimized for desktop use but includes responsive breakpoints for tablets (≤768px) and phones (≤480px):
The dashboard is best experienced on a desktop or large tablet in landscape orientation. On phones, the executive summary KPIs, trend chart, and health banner are fully usable; deep analysis sections (drill-down table, staff table) may require horizontal scrolling.
| Term | Definition |
|---|---|
| Case / Incident | A single complaint or service request filed by a citizen through QC iReport. Each case has a unique ticket number (e.g. CAS-001234). |
| Case Activity | An action logged by a department against a case (e.g. initial validation, field visit, status update). Stored in the kti_caseactivitieses table in D365. |
| createdon | The date and time when a case was first created in QC iReport. This is the "Date Filed." |
| deactivatedon | The date and time when a case was closed/resolved. Used to calculate resolution time. |
| modifiedon | The date and time when any field on the case was last changed. |
| Resolution Time | The elapsed time from createdon to deactivatedon. Only meaningful for Resolved cases. |
| First Response Time | The elapsed time from createdon (case filed) to the earliest Case Activity createdon (first action taken). |
| SLA (Service Level Agreement) | The target resolution time. In this dashboard the SLA threshold is 72 hours (3 days). Cases resolved within this window are counted as SLA-compliant. |
| Actioned Rate | The percentage of cases that have at least one Case Activity logged. Cases with 0 activities have no documented department action. |
| Resolution Rate | The percentage of total cases that have status = Resolved in the reporting period. |
| kti_department | The D365 field that identifies which QC LGU department a case is assigned to. It is an option set (dropdown list), not a free-text field. |
| Option Set | A fixed list of choices in D365 (like a dropdown). The department field is an option set; each choice has a numeric code and a label. |
| Lookup | A D365 field that links to another record (e.g. the District field links to a District record). The dashboard displays the linked record's name. |
| D365 / Dynamics 365 | Microsoft Dynamics 365 — the CRM platform that powers QC iReport on the backend. The dashboard connects to it via the Dataverse Web API. |
| Dataverse Web API | The programming interface used to read case data from D365. The dashboard calls this API using your Microsoft account credentials to fetch records in real time. |
| Reporting Period | The date range selected on the connect screen. The dashboard only shows cases with a createdon date within this window. |
| Period Comparison | The automatic comparison of the current reporting period's KPIs against the previous equivalent period of the same length. Displayed as delta chips (▲/▼ %) on each KPI card. |
| Delta Chip | A small colored badge on a KPI card showing the percentage change between the current and previous period. Green = favorable change; Red = unfavorable change; Grey = no change or neutral metric. |
| SLA Breach | A case that has been open (unresolved) for more than 72 hours, thereby exceeding the target Service Level Agreement window. The SLA Breach section lists all such cases sorted by age. |
| Overdue Case | An open case with no recorded Case Activity in the past 7 or more days. Indicates a stalled case where no department action has been documented recently. See the Overdue Case Escalation section (Section 13). |
| Staff Performance | A ranking table that groups resolved cases by the staff member who last modified them (modifiedBy). Used to assess individual contribution to case resolution. See Section 12. |
| Activity Timeline | A modal panel that shows the full chronological list of Case Activities for a single case. Opened by clicking any case row in the drill-down table, the SLA Breach list, or the Overdue Escalation list. |
| Auto-Refresh | The dashboard's automatic background data refresh that runs every 5 minutes while a report is active. A countdown chip in the header shows the time until the next refresh. Click the chip to refresh immediately. |
| modifiedBy | The D365 field that records which user account last saved changes to a case record. Used by the Staff Performance feature as a proxy for who resolved a case. |
| Report History | The last 5 generated reports stored automatically in the browser's local storage. They appear on the connect screen under "Recent Reports" and can be loaded instantly without re-fetching data from D365. History is stored only in your browser and is not shared with other devices. |
| Dark Mode | An alternative color scheme that uses a dark background and lighter text, easier on the eyes in low-light environments. Toggled with the 🌙 button in the header or by pressing the D key. Preference is saved in the browser. |
| Keyboard Shortcuts | Single-key actions available while the dashboard is open. Keys 1–0 jump to sections 1–10; D toggles dark mode; ? or / opens the shortcut reference panel; Esc closes any open modal. Shortcuts are disabled while typing in an input field. |
| Data Quality Callout | An amber warning banner that appears when more than 10% of cases are missing Incident Category (unclassified) or District (no district assigned) data. Dismissible for the current session by clicking ×. |
| Scorecard Tier | The A/B/C rating assigned to each department based on a composite score (average of Resolution Rate, SLA ≤72h Rate, and Actioned Rate). Tier A ≥ 70, Tier B 40–69, Tier C < 40. Displayed in the Department Scorecard section (Section 10). |
| Geographic Heat Map | An interactive Leaflet.js map of Quezon City showing where cases are being filed, using GPS coordinates from each incident. The heat layer uses color gradients (dark blue → red → yellow) to indicate case density by location. Located in Section 14 (Cases by District & Geographic Heat Map). |
| kti_latitude / kti_longitude | D365 decimal fields on the incident record that store the GPS coordinates of the location where a case was reported. Used to plot incidents on the Geographic Heat Map. Cases without these fields populated are excluded from the map. |
| Case Resolution Funnel | A funnel chart in Section 4 that shows how many cases progress through each pipeline stage — from total filed down to actioned down to resolved. Narrow sections between stages highlight where cases stall. |
| Filing Heat Map | A day-of-week × hour-of-day grid in Section 4 that shows when during the week citizens file the most cases. Useful for identifying peak complaint times and optimizing staff scheduling. |
| KPI Sparkline | A small inline bar chart below each KPI card's delta chip, showing the trend for that metric over the last 6 equivalent periods (e.g. last 6 months for a monthly report). Helps identify whether a trend is improving or declining over time. |
| Report Card Grade | An A+–F letter grade shown on the dashboard based on a composite score of resolution rate, SLA compliance, and breach count vs configured targets. Located below the KPI grid. See Section 18. |
| KPI Health Banner | A colored (green/amber/red) status bar below the KPI grid showing overall performance health with per-metric chips. "On Track" = all targets met; "At Risk" = some missed; "Critical" = majority missed. |
| Snapshot Comparison | A comparison banner showing how key metrics (total cases, resolved, breaches) have changed since the last time you loaded a report in the same browser. Baseline is stored in localStorage. |
| Executive Narrative | An auto-generated 3–4 sentence plain-English paragraph summarizing the current report. Includes a Copy button. Located below the KPI grid and included in shared links. |
| SLA Threshold | The configurable number of hours within which a case should be resolved. Default is 72 hours. Changeable in Tools → Set KPI Targets. Affects every SLA-related metric and chart in the dashboard. |
| p50 / p75 / p90 | Percentiles of resolution time for a staff member or department. p50 = median (half faster, half slower); p75 = 75th percentile; p90 = 90th percentile (worst-case performance indicator). Shown in the Staff Performance table. |
| Open Cases CSV | A CSV export of only the open (unresolved) cases, including an "Age (hours)" column. Available from the Export dropdown. Useful for generating department follow-up lists. |
| Email Mayor | A one-click button on the Report Card banner that opens the default email client pre-filled with the report grade, narrative summary, key metrics, and top departments. Recipients need only add the Mayor's address before sending. |
| Aging by Department | A stacked bar chart showing open case backlog per department split into four age bands relative to the SLA threshold. Identifies which departments have the oldest unresolved cases. Located in the Service Performance section. |
| Classification Breakdown Table | A sortable table below the classification charts showing each complaint category, its case count, and percentage share of the total for the current period. Includes a note on overall volume vs prior period. |
| Resolution Time by Classification | A horizontal bar chart showing average resolution time per complaint category, color-coded by SLA compliance (green = within SLA, amber = over SLA, red = over 2× SLA). Helps identify chronically slow complaint types. Located in the Classification & Department Breakdown section. See Section 20. |
| Inflow/Outflow Rate | The ratio of new cases filed (inflow) to cases resolved (outflow) in the current period. Displayed as a chip in the KPI Health Banner. A ratio >1 means the backlog is growing; <1 means it is shrinking. See Section 20. |
| SLA Breach Rate | The percentage of cases in a district (or other group) that are open and have exceeded the SLA threshold. Used to color district bubbles on the Geographic Heat Map: green ≤10%, amber 11–30%, red >30%. See Section 20. |
| SLA Compliance Trend | A dashed purple line on the Period-over-Period Trend Chart showing the SLA compliance % across historical periods. Plotted on a secondary right-side Y-axis (0–100%). Only visible when multiple prior periods have been fetched. See Section 20. |