Claims Tracker
📅 Filter by Month:
Total Claims
0
All registered · click to view
In Progress
0
Active cases · click to view
Overdue Stages
0
Past stage deadline · click to view
!
Delayed
0
Cycle breached · click to view
Completed
0
PO issued · click to view
Avg Days Late
0
Delayed claims · click to view
Total Reserve
P 0
Sum of reserves · click to view
Total Paid
P 0
Sum of claims paid · click to view
Major Claims
0
Reserve > P300K · click to view
FAC Claims
0
Facultative · click to view
🔗 Graphite Sync Status
Cross-system claim numbers
🔗 Synced
0
Linked to Graphite · click to view
⏳ Pending
0
Will retry automatically · click to view
🚨 Sync Failed
0
Needs admin retry · click to view
Claim Type Summary
Weekly report — counts & reserves by claim type
Claim Type Count In Progress Completed Total Reserve (P) Total Paid (P)
Claims Pipeline
On Time Delayed Empty Stage
Overdue & Delayed Claims
Claim #ClientHandlerStageStatusDays LateCycle DeadlineAction
🏆 Handler Performance Leaderboard
📅 Month:
Rank Claims Handler Total Claims On-Time Rate Panel Beater (90%) Glass Supplier (80%) Overall Score
Scoring: On-Time Rate (40%) + Panel Beater Compliance (30%) + Glass Supplier Compliance (30%) = Overall Score. Handlers with <5 claims show "—" for compliance metrics.
All Claims
🔍
Claim # Client Channel Handler Reported Type Stage Status Comments Days Late Reserve Actions
🏆 Handler Incentive Report
📅 Select Month:
🔧 Panel Beater Incentive (MIS/DOM Motor Claims)
Incentive Criteria
≥ 90% of MIS/DOM Motor claims must use Approved Panel Beaters
0
MIS/DOM Motor Claims
0
Approved Panel
0%
Overall Rate
Claims Handler MIS/DOM Motor Claims Approved Panel Non-Approved Approval Rate Status
🪟 Glass Supplier Incentive (Glass Claims)
Incentive Criteria
≥ 80% of Glass claims must use Approved Glass Suppliers
0
Glass Claims
0
Approved Supplier
0%
Overall Rate
Claims Handler Glass Claims Approved Supplier Non-Approved Approval Rate Status
Note:
Panel Beater Incentive: Tracks Motor claims where Customer Type is MIS or DOM. Handlers must send ≥90% to approved panel beaters.
Glass Supplier Incentive: Tracks all Glass claims. Handlers must send ≥80% to approved glass suppliers.
• Only claims with a supplier assigned are counted.
Claims by Status
Overall status distribution
Pipeline Stage Distribution
Active claims by current stage
Channel Split
Broker vs Direct
Claims by Type
Breakdown by category
Monthly Volume
Claims registered per month
On Time vs Delayed
Completed claims performance
Top Handlers — Claim Load
Claims per handler
📖 Claims Tracker Guide

How the Claims Tracker Works

From registering a claim through team collaboration, decisions, and Graphite sync. Updated for the current production system.

Auto-assigned Claim Numbers Motor + Non-Motor + Glass + Lock&Key Team Comments & @Mentions Approve / Repudiate Workflow Graphite ERP Sync

Adding a New Claim

Click + New Claim in the top-right of the header. Fill in the required fields and Save — the claim saves locally on the SQLite database and kicks off a background call to Graphite ERP to mint the official claim number.

1

Channel + Broker

Choose Broker (default) or Direct. When Broker is selected, a Broker Name dropdown appears below — pick from the 22+ Alpha Direct brokers, or "Others" to type one not yet in the list.

💡 Broker list is admin-editable from Master Data → Approved Brokers.
2

Fill in the Basic Information

Required fields are marked with ✱. The Claim Number is auto-assigned by Graphite — you cannot type into it.

📋 New Claim Form
Broker
Marsh Botswana (PTY) LTD
SHYAM KUMAR CHITTAYIL
DOMG2025146342
Pending — auto-assigned by Graphite
23/05/2026
Motor Claim
P 48,920.17
Driver-side collision, no injuries…
15/06/2026
💡 Description is required for new claims — Graphite uses it on the official claim record. Claim Type determines downstream behaviour: Motor / Non-Motor (with sub-type) / Glass / Lock & Key.
3

FAC Clients & Reinsurer

When you type a client name that matches the Master Data FAC Clients list, a navy 📋 FAC (FACULTATIVE) CLAIM tag appears at the top of the form and a Reinsurer dropdown becomes available — populated from Master Data.

4

Save → Two things happen at once

When you click Save Claim:

🔄 On Save
💾
Saved locally (SQLite)
Stored in claims.db on the server immediately. All users on the same server see it after Refresh.
🔗
Pushed to Graphite
Background call to Graphite ERP fires within ~10 seconds. Graphite returns the official claim number (e.g. G2026000789), which replaces the "Pending…" placeholder. Refresh to see it.
⚠️
If Graphite is unreachable
The local claim still saves. You'll see a yellow "Pending Graphite sync" banner on the View modal; the system retries automatically every 5 minutes (up to 10 attempts). Failures escalate to a red banner with admin retry button.

Tracking & Updating Claims

Use the 📋 All Claims tab to filter, search, and edit. Overdue and delayed claims also surface automatically on the Dashboard.

1

Filters available on All Claims

Eight filter dropdowns above the table:

  • Status — In Progress · Overdue · Delayed · Complete (motor and non-motor variants)
  • Decision — Pending · ✓ Approved · ✗ Repudiated · ↺ Reversed
  • Sync Status — 🔗 Synced to Graphite · ⏳ Pending sync · 🚨 Sync failed
  • Channel — Broker · Direct
  • Claim Type — Motor · All Non-Motor (with sub-type breakdown) · Glass · Lock & Key
  • Stage — 9-stage motor pipeline
  • Month — filter by reported month
  • Search — covers claim number, client, handler, policy, plate
2

Edit a Claim

Click Edit on any row. Update stage dates, status, or any other field. Saves persist instantly to SQLite. Stage SLA calculations re-run on every save.

💡 Existing legacy claims (created before Graphite integration) keep their handler-typed numbers untouched. Only new claims get auto-assigned Graphite numbers.
3

Visual cues on the claim row

Small coloured badges under the claim number tell you the claim's state at a glance:

  • 🚨 MAJOR — Reserve > P300,000
  • 📋 FAC — Facultative client
  • ✓ APPROVED / ✗ REPUDIATED — decision taken
  • 🚨 SYNC FAILED — Graphite sync gave up after 10 attempts; admin must retry
4

Share a Claim

Use the Share button on any claim to send a formatted summary via WhatsApp, email, or clipboard — useful for quick updates to clients or assessors.

5

Export to Excel

The ⬇ Export button downloads whatever's currently filtered into Excel — includes the Graphite Claim Number, Broker, Reinsurer, Awaiting Reason, and all stage dates.

Approve / Repudiate Workflow

Every claim eventually needs a decision. The Claims Tracker captures who decided, when, and why — with a permanent audit trail.

1

Open the Decision panel

Open any claim's Edit modal and scroll to the bottom — above the Save/Cancel buttons you'll see a ⚖️ Decision panel.

2

Pick who is approving / repudiating

The Who is approving? dropdown lists everyone in the Claims Team, Claims Manager, CXO, Head of Operations, Admin, and Superadmin roles. Pre-populated with the logged-in user; change if you're recording a decision someone else made.

3

Approve or Repudiate

Click ✓ Approve (green) or ✗ Repudiate (red). Repudiation requires a note — explain why. Decision date is server-stamped — you can't backdate.

✅ Every decision writes an audit-log entry: who approved/repudiated, when, what note, and who was logged in at the time.
4

Reversing a decision (admin only)

Admin and Superadmin roles can reverse a decision from the same panel. The original decision is preserved in the audit history — the reversal is itself an event. Reversed claims can then be re-decided.

Comments, @Mentions & Notifications

Per-claim discussion thread that replaces the old "call them / Teams DM / walk to their desk" workflow. Auditable and permanent.

1

Open the Comments panel

Click the 💬 Comments button at the top-right of any claim's View or Edit modal. A side panel slides in from the right with the full thread for that claim.

2

@-mention a teammate

Type @ in the comment box — a dropdown shows everyone in the user list. Click a name to tag them. For Alpha Direct staff who don't have a Claims Tracker account, type their full @alphadirect.co.bw email.

💡 Only @alphadirect.co.bw addresses are allowed for external mentions (security — prevents accidental leakage to outside emails). Admin can edit the allow-list in Master Data.
3

Set a priority (optional)

Pick a priority dropdown next to the Post button:

  • URGENT — email reminder if not read within 30 min
  • HIGH — 2 hours
  • NORMAL — 4 hours
  • LOW — 24 hours
  • (no priority) — in-app only, no email reminder ever
4

How notifications arrive

When someone tags you:

  • 🔔 Bell icon at the top of the page lights up with an unread count. Click it to see the 5 most recent unread mentions — click any one to jump to that claim's comments panel.
  • Toast popup appears if you're actively using the app when the tag arrives.
  • Email reminder fires only if you haven't acknowledged within the priority window. One email per (you, claim, hour) — not spammy.
5

Mark as Resolved

When the discussion is sorted, click Mark Resolved in the panel header. The thread stays visible (no deletion ever) but is flagged closed. Anyone can re-open it.

💡 Comments are permanent. Edits allowed within 1 minute of posting only. No one — not even admin — can delete a comment. This is by design: comment threads are the audit trail when claims go to dispute.

Reading the Dashboard

Live view of all claims. Filter by month at the top to scope every panel below.

1

10 KPI cards

Total Claims · In Progress · Overdue Stages · Delayed · Completed · Avg Days Late · Total Reserve · Total Paid · Major Claims · FAC Claims. Each card is clickable — drills into the All Claims page with the matching filter applied.

2

🔗 Graphite Sync Status tile

Three cards underneath the main KPIs — Synced (green) · Pending (amber) · Sync Failed (red). Click any to filter the claims list to that sync state. The red card shows an alert dot when failures need admin attention.

3

SLA Breach Panel

The red alert panel lists every claim with an overdue stage or breached SLA — sorted by severity. Click Edit directly from the alert to update.

4

Claim Type Summary

Counts and reserves split by claim type — the same breakdown that ships in the weekly executive email.

5

Pipeline visualisation

Shows how many claims sit at each stage. Tabs for Motor pipeline (9 stages) and Glass pipeline (5 stages). Delayed claims called out per stage.

6

Analytics charts

Switch to the 📈 Analytics tab for Status Distribution, Stage Distribution, Channel Split, Claim Type Breakdown, Monthly Volume, On-Time Rate, and Handler Load charts.

Admin & Setup

The ⚙ Admin ▾ dropdown in the top nav holds all admin-only pages. Below is the guide to each.

1

⚙ Master Data — 15+ reference lists

One page to maintain every dropdown the app uses. Click any tile to expand. Saves to the server immediately and all dropdowns update.

⚙ Master Data tiles
Claims HandlersHandler dropdown
Motor / Non-Motor AssessorsAssessor dropdowns
Non-Motor Claim TypesSub-type dropdown (21 entries)
Approved Panel Beaters / Glass SuppliersForm + Incentive Report
Approved BrokersBroker dropdown (22+ entries)
FAC ReinsurersShown on FAC-flagged claims
Policy Library — Branches/Products/CoveragesWording categorisation
Comment PrioritiesLabel|minutes — reminder timing
Mention Allowed DomainsExternal email allow-list
Graphite Claim Type MapLocal label | Graphite slug
FAC ClientsAuto-flags FAC on client name match
💡 Deleting an entry in Graphite Claim Type Map shows a confirmation if any existing claims use that mapping — so you don't accidentally break sync.
2

📚 Policy Library

SharePoint-pointer system for policy wording PDFs. Add a wording with: title, SharePoint URL, branch (Commercial / Domestic / Instant), product(s), coverage(s), visible-to roles, version. Older versions of replaced wordings stay visible marked Inactive.

💡 SharePoint enforces actual file access. Our app stores only the URL + metadata; clicking a wording opens SharePoint in a new tab.
3

🔗 Graphite ERP integration

Every new claim POSTs to Graphite's /api/claims-tracker/create endpoint to receive an official claim number. Fully automated — no admin work needed for happy-path syncs.

  • Sweeper retries failed syncs every 5 minutes (up to 10 attempts over ~50 minutes)
  • Daily summary email to all admins listing any claims stuck at the cap
  • Manual retry button appears on the red banner of failed claims — admin can re-trigger immediately after fixing the root cause (usually a missing master-data mapping)
  • Audit log filter "🔗 All Graphite events" surfaces every Linked / SyncFailed / ManualRetry event together
4

🔍 Audit Log

Every claim action, decision, comment, Graphite sync, master-data edit. 10 entries per page (server-paginated). Search by claim number / actor / detail; filter by action type.

5

🔧 Setup Guide

Maintenance mode toggle, server status, weekly report recipient list, backdate-request approvals, and the system maintenance message shown to non-admin users when maintenance is on.

6

⏱ Backdate Control

Handlers can't set claim dates in the past — admin protection. To handle legitimate cases, admins issue a time-limited backdate grant to specific handlers for specific claims. Handlers can also submit a request from inside a claim that admin approves via email link.

7

🔑 API Access

Recent API calls log (IP, user, status), and the trusted-sources IP whitelist for service-account access.

8

Email Schedules

Recurring email reports — Weekly Executive Brief, Daily Claims Report, monthly summaries. Edit recipient list, frequency, hour, and content per schedule. Sends via Mailgun.

9

User Management

Under Master Data → System Users. Create accounts (auto-provisioned via Entra ID SSO on first login as pending), approve pending users, assign roles, and grant per-user page access (e.g. who can see the Policy Library tab).

📚 Policy Library
Pointers to policy wording PDFs stored in SharePoint. Click any entry to open it in SharePoint.
Title Branch Products Coverages Version Roles Status Actions
Loading…
Setup Guide

🖥 Step 1 — Start the Local Server

1

Prerequisites

Ensure Node.js is installed on the machine that will run the server. Download it from nodejs.org if needed. You only need to do this once.

2

Start the server

Open a terminal in the claims folder and run:

node server.js

You should see: Alpha Direct Claims Server — http://localhost:4000

3

Open the app

Navigate to http://localhost:4000 in any browser. The server status dot in the top bar will turn green when connected. All claims data is stored in data.json in the same folder.

⚙ Step 2 — Configure Master Data

1

Open the Master Data tab

Click ⚙ Master Data in the navigation bar (or the top-right button). You will find six reference lists that drive all the dropdowns in the claim form.

2

Review the default lists

The lists are pre-populated with defaults from vendors.js. Review each section — Claims Handlers, Motor Assessors, Non-Motor Assessors, Approved Panel Beaters, Approved Glass Suppliers, and FAC Clients — and add or remove entries to match your current team and approved suppliers.

3

Changes are saved automatically

Every addition or removal is saved to the server immediately. All users connecting to the same server will see the updated lists in their forms without any page refresh needed.

👥 Step 3 — Team Access

1

Share the server on your network

Run the server on a machine that all team members can reach. Find that machine's local IP address (e.g. 192.168.1.50) and share the URL http://192.168.1.50:4000 with your team. Everyone accesses the same live data.

2

Single source of truth

All claims, audit logs, and master data are stored in data.json on the server. There is no per-user configuration required — every team member sees the same data as soon as they load the page.

3

Backup your data

Periodically copy data.json to a safe location. You can also use the ⬇ Export Excel button to export all claims to a spreadsheet at any time.

Audit Log
🔍
⚙ Master Data
Reference tables for form dropdowns — future-ready for database migration
👤
Claims Handlers
Staff who manage claim assignments
0
🔍
Motor Assessors
Assessors for motor claims
0
📋
Non-Motor Assessors
Loss adjusters for non-motor claims
0
📂
Non-Motor Claim Types
Shown when Claim Type = Non-Motor Claim
0
🏗️
Approved Panel Beaters
Used for incentive compliance reporting
0
🪟
Approved Glass Suppliers
Used for incentive compliance reporting
0
📚
Policy Library — Branches
Top-level groups for the Policy Library (Commercial / Domestic / Instant)
0
📦
Policy Library — Products
e.g. Motor, Glass, Hospital Cashback, Funeral, Mobile Electronic
0
🛡️
Policy Library — Coverages
e.g. Comprehensive, Third Party, All Risk
0
⏱️
Comment Priorities
Format: Label|Minutes (e.g. Urgent|30). Email reminder sent after this many minutes if mention is unread.
0
🔗
Graphite Claim Type Map
Format: <Our label>|<graphite slug> (e.g. Motor Claim|accident). For Non-Motor sub-types, use Non-Motor Claim — <sub-type>|<slug>. Used when posting a new claim to Graphite.
0
🌐
Mention — Allowed Email Domains
Comment tags by typed email are restricted to these domains (e.g. alphadirect.co.bw).
0
🔁
FAC Reinsurers
Shown on claims that are auto-flagged as FAC (Facultative)
0
🤝
Approved Brokers
Shown when Channel = Broker on a claim
0
🏢
FAC Clients
Auto-flagged as Facultative claims
0
🔐
System Users
Login accounts & module permissions · Future: Graphite DB / SSO integration
0
🔍
NameUsernameRoleModule AccessStatusActions
🔒 Superadmin can manage all users. Admin can manage non-admin roles only. Users sign in via Microsoft SSO — no passwords stored. Non-admin accounts inactive for 30+ days are auto-suspended.
API Access Monitor
Monitor API usage, manage trusted source IPs, and block suspicious activity.

Trusted Sources (IP Whitelist)

When at least one active IP exists, only those IPs can call /api/*. Empty list = all IPs allowed. Set an IP to blocked to deny access.

Recent API Access Logs

Every /api/* request — IP, user, endpoint, status.
Backdate Control
Manage time-limited backdating permissions for claims-managers, monitor backdate events, and configure safety limits.

⏱ Pending Backdate Requests

Submitted by claims-team / claims-managers. Approve to issue an automatic time-limited grant.

Settings

Caps and notification channels for the backdate workflow.
Hard floor: (current FY start). Even with a grant, dates earlier than this are always rejected.
Posts an Adaptive Card to your Teams channel for every backdate event.
Comma-separated. Receives: (1) backdate alerts, (2) immediate notification when a new user auto-provisions as pending, (3) daily 08:00 digest of all pending approvals (skipped when nothing is pending). Configured via Mailgun.

📧 Email Schedules

Configure recurring emails — daily / weekly / monthly digests & reports for different recipient groups. Each schedule fires independently.
Report types: weekly / daily / monthly = claims summary email · pending-digest = pending users + backdate requests. JSON endpoints: GET /api/reports/{weekly|daily|monthly}.

Active Grants

Currently in effect — claims-managers can backdate during these windows.

Recent Backdate Events

Last 50 changes to date fields (admin override + grant-authorised).

Grant History

All grants ever issued (active, expired, revoked).

Delete Claim?

This will permanently remove the claim record. The action will be logged in the audit trail.