Documentation Index
Fetch the complete documentation index at: https://grantmaster.dev/llms.txt
Use this file to discover all available pages before exploring further.
Engineering reference: For service contracts, EventBus events, and data-layer details see src/features/compliance/compliance.md.
Compliance
Overview
The Compliance feature provides comprehensive policy management, monitoring, and enforcement across grant projects. It enables organizations to:
- Extract & manage compliance policies from grant documents via AI or manual creation
- Monitor journal entries and expenses against policies with real-time alerts
- Track audit trails of all compliance actions and policy changes
- Report on compliance status with risk scoring and trend analysis
- Map donor requirements to platform policies for efficient adoption
This feature bridges policy engine logic (what rules apply) with monitoring logic (what violations occur), providing auditors, finance leads, and compliance officers with visibility into organizational compliance posture.
Data Model
Firestore Collections
| Collection | Document Type | Description |
|---|
complianceRules | CompliancePolicy | Organization and project-level compliance policies (AI-extracted or manually created) |
complianceSummaries | ComplianceSummary | Monthly aggregated compliance metrics per organization (journals, expenses, reports) |
auditLogs | AuditLog | Immutable audit trail of all system actions (logins, resource changes, approvals) |
expense_audit_logs | ExpenseAuditLog | Audit trail specific to expense actions (created, approved, rejected, exported) |
complianceAlerts | ComplianceAlert | Compliance violations and warnings with status tracking (active → acknowledged → resolved) |
tenantDonorConfigs | TenantDonorConfig | Donor type configuration per organization; links to recommended platform policies |
Key TypeScript Types
| Type | Purpose |
|---|
CompliancePolicy | Core policy document: categories, severity, status, AI metadata, versions, adoption source |
ComplianceAlert | Violation instance: type (journal/expense/report), severity, status, resolution metadata |
ComplianceSummary | Monthly snapshot: overall score, journal/expense/report counts by status, risk level |
ComplianceTrend | Historical data points: compliance score, submission rate, approval time, risk counts over time |
ActivityRule | Personnel eligibility rule: allowed activities, restrictions (max hours, pre-approval), citations |
PolicyViolation | Policy breach record: type (missing_evidence, threshold_exceeded), status, resolution notes |
Key Behaviors
When a grant document (contract, RFP) is uploaded, the compliance service:
- Sends document text to Google Gemini for analysis
- Extracts compliance requirements with AI confidence scores (0-1)
- Creates
CompliancePolicy records in draft status
- Logs extraction metadata (processing ID, timestamp, AI model version)
- Emits
COMPLIANCE_RULE_VIOLATED for critical thresholds
Extracted policies must be reviewed and approved by a manager before enforcement.
Manual Policy Creation
Users can manually create policies:
- Via
CompliancePolicyEditor component (form-based)
- Without AI metadata; marked
isManuallyCreated: true
- Require approval before applying to projects
Approval Workflow
Policies transition through statuses:
AI_EXTRACTED → manager reviews → APPROVED | REJECTED
MANUALLY_CREATED → manager reviews → APPROVED | REJECTED
NEEDS_REVIEW → awaiting action
- Rejections include reason; edit history preserved for audit
Real-Time Monitoring
ComplianceMonitoringService evaluates submissions (journals, expenses) against active policies:
- Journal entries: Validates description quality, activity allocation percentages, eligibility dates, eligibility against
ActivityRule
- Expenses: Checks against project budgets, policy thresholds, supporting documentation
- Reports: Tracks due dates and submission deadlines
Violations create ComplianceAlert records with severity levels (GREEN/YELLOW/RED).
Alert Lifecycle
- Active: Violation detected; manager notified
- Acknowledged: Manager reviewed; action in progress
- Resolved: Violation corrected or marked as false positive
Resolution requires user action and audit logging.
Donor-to-Policy Mapping
GrantorComplianceService manages grantor (donor) compliance logic:
- When a donor type is added to organization, system recommends matching platform policies
- When a donor is removed, detects orphaned rules and warns of affected projects
- Tracks adoption source (
donor_profile, manual, template, platform_default)
- Maintains
TenantDonorConfig document per organization
Policy Versioning
Policies support multiple versions:
currentVersion increments with updates
versions[] contains history: policy text, category, severity, timestamps
editHistory[] tracks all changes: field, old/new value, reason, editor
Audit Event Emission
The feature emits compliance-specific events (see EventBus rule):
COMPLIANCE_ALERT_RAISED: Policy violation detected
COMPLIANCE_ALERT_RESOLVED: Violation resolved
COMPLIANCE_RULE_VIOLATED: Policy threshold breached
Service Contract
| Service | Owns | Key Methods |
|---|
ComplianceService | Policy CRUD, AI extraction, approval workflows | saveCompliancePolicies(), extractRulesFromDocument(), analyzeDocument() |
ComplianceMonitoringService | Real-time compliance checking, alerts, summaries | getComplianceSummary(), raiseComplianceAlert(), resolveAlert() |
ExpenseAuditService | Expense audit logs (approval, rejection, export) | logExpenseAction(), getExpenseAuditLogs() |
JournalComplianceService | Journal entry compliance validation | validateAllocation(), validateDescription(), validateEligibility() |
GrantorComplianceService | Donor config, policy recommendations, orphan detection | analyzeDonorChange(), getRecommendedRules() |
AuditService | Cross-cutting audit logs (all resource changes) | logAuditEvent(), queryAuditLogs() |
AuditLogService | Firestore audit log queries (organization/resource) | getOrganizationAuditLogs(), getResourceHistory() |
Events
Emitted
| Event | Trigger | Severity | Persisted |
|---|
COMPLIANCE_ALERT_RAISED | Journal/expense violation detected | HIGH | ✓ |
COMPLIANCE_ALERT_RESOLVED | Manager resolves alert | MEDIUM | ✓ |
COMPLIANCE_RULE_VIOLATED | Policy threshold breached (e.g., 80% budget) | HIGH | ✓ |
Consumed
| Event | Handler Behavior |
|---|
JOURNAL_SUBMITTED | JournalComplianceService evaluates; raises COMPLIANCE_ALERT if violations found |
EXPENSE_APPROVED | ExpenseAuditService logs action; checks against budget policies |
PROJECT_DONOR_UPDATED | GrantorComplianceService recommends policies; detects orphaned rules |
Dependencies
-
Depends on:
documents (compliance policies extracted from documents)
expenses (expense audit logs, budget threshold checks)
journals (journal compliance validation)
organizations (tenant donor config, organization context)
projects (project policies, budget, eligibility dates)
ai (Gemini-based document analysis and rule extraction)
-
Depended on by:
auditor (audit log queries, compliance reports)
dashboard (compliance metrics, alert summaries)
reports (export audit logs, compliance trend reports)
File Structure
src/features/compliance/
├── README.md # This file
├── ComplianceContext.tsx # Project-level policy state & operations
├── index.ts # Public API barrel export
├── public.ts # Re-export utilities (if any)
│
├── components/ # 20 UI components
│ ├── ComplianceDashboard.tsx # Main compliance view
│ ├── ComplianceConsolidated.tsx # Multi-tab consolidated view
│ ├── CompliancePoliciesList.tsx # Policy listing & filtering
│ ├── CompliancePolicyEditor.tsx # Create/edit policies
│ ├── CompliancePolicyExtractor.tsx # AI extraction workflow
│ ├── AIProcessingLogViewer.tsx # View extraction metadata
│ ├── AlertsTab.tsx # Alert management
│ ├── AuditLogsTab.tsx # Audit log viewer
│ ├── ComplianceReportsView.tsx # Export & reporting
│ ├── ProjectComplianceOverview.tsx # Project-specific view
│ └── ... (others: Coverage, Policy Recomm, GrantDocumentAI, etc.)
│
├── hooks/ # Custom React hooks
│ ├── useCompliance.ts # Compliance state management
│ └── useCompliancePoliciesFilters.ts # Filter & search logic
│
└── services/ # Business logic & data access
├── complianceService.ts # Policy CRUD & AI extraction
├── complianceMonitoringService.ts # Alert monitoring, summaries
├── expenseAuditService.ts # Expense audit logging
├── journalComplianceService.ts # Journal validation rules
├── GrantorComplianceService.ts # Donor → policy mapping
├── auditService.ts # (Re-export from @/shared)
├── auditLogService.ts # Audit log queries
├── auditorAccessService.ts # Auditor permission checks
├── auditEventSubscriber.ts # Event listener for audit logging
│
├── compliance/ # Sub-services
│ ├── documentAnalysis.ts # AI document analysis
│ ├── personnelCompliance.ts # Activity & role validation
│ └── policyLifecycle.ts # Policy versioning & history
│
└── compliance-monitoring/ # Client wrapper around monitoring
├── ComplianceMonitoringServiceClient.ts
├── summary.ts # Build compliance summary
├── dateUtils.ts # Period calculations
└── types.ts # Alert filters & types
Generated: 2026-03-17 — Feature documentation for GrantMaster compliance system.