Alert Types
Severity Levels
How Notifications Are Generated
Notifications are computed byalertService.js — a pure function that evaluates your data and produces a list of alerts. Sync happens in two ways:
On Login
When you sign in, a fire-and-forgetPOST /notifications/sync runs in the background. This ensures your alerts are current every time you open the app.
Daily Background Job
A cron job runs at 8am daily for all users:- Fetches each user’s data (tax home, assignments, expenses, credentials, quarterly payments)
- Computes alerts
- Syncs to the database
- Sends an email digest to users with email notifications enabled
Auto-Resolution
When the underlying issue is fixed, the alert auto-resolves on the next sync. For example:- Update your visit date →
visit_overdueresolves - Upload tax home docs →
missing_docsresolves - Record a quarterly payment →
quarterly_overdueresolves
Deduplication
The notification service deduplicates by(user_id, type). If you already have an active visit_overdue alert, syncing won’t create a duplicate — it updates the existing one.
Notification Center
Access notifications via the bell icon in the header:- Unread count badge on the bell
- Dropdown panel with severity-colored rows
- Mark individual notifications as read
- Mark all as read
- Dismiss (soft-delete) individual notifications