Financial Compliance Assistant
The Financial Compliance Assistant is a specialized RAG system designed for financial institutions to help compliance officers navigate complex regulatory requirements and ensure adherence to financial regulations.
Overview
User Story: Financial Compliance Assistant for Bank
Key Features
- Regulatory Terminology Expansion: Automatically expands queries with compliance-specific terms and abbreviations
- Authority-Weighted Reranking: Prioritizes official regulatory guidance from authoritative sources
- Legal Disclaimers: Automatically includes appropriate legal disclaimers with all responses
- Escalation Detection: Identifies queries requiring human compliance officer review
- Audit Logging: Maintains comprehensive audit trails for compliance tracking
- Compliance Validation: Validates responses for accuracy and regulatory compliance
Supported Regulation Types
- AML (Anti-Money Laundering): SAR filing, suspicious activity monitoring, AML programs
- KYC (Know Your Customer): Customer identification, due diligence, verification
- BSA (Bank Secrecy Act): CTR reporting, recordkeeping requirements
- Sanctions: OFAC compliance, SDN list screening, blocked transactions
- Tax Compliance: FATCA, CRS, foreign account reporting
Quick Start
Basic Usage
import asyncio
from packages.agents.compliance_agent import ComplianceAgent
async def main():
# Initialize agent
agent = ComplianceAgent()
# Define user context
user_context = {
"user_id": "compliance_officer_001",
"user_role": "compliance_officer",
"department": "risk_management",
"regulation_type": "AML",
"jurisdiction": "US"
}
# Query
query = "What are the SAR filing requirements?"
# Handle query
response = await agent.handle_compliance_query(query, user_context)
print(f"Answer: {response['answer']}")
print(f"Legal Disclaimers: {response['legal_disclaimers']}")
asyncio.run(main())
API Usage
curl -X POST http://localhost:8000/compliance/query \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-token" \
-d '{
"query": "What are the SAR filing requirements?",
"regulation_type": "AML",
"jurisdiction": "US",
"compliance_level": "high"
}'
Architecture
Components
- ComplianceConfig: Configuration for compliance-specific settings
- ComplianceQueryExpander: Expands queries with regulatory terminology
- ComplianceReranker: Reranks results with regulatory authority weighting
- ComplianceSystem: Main orchestration system
- ComplianceAgent: High-level agent interface
- ComplianceAPI: FastAPI endpoints
Data Files
data/compliance_knowledge_base.json
: Regulatory documents and guidancedata/regulatory_terminology.json
: Regulatory terminology mappingsdata/compliance_abbreviations.json
: Compliance abbreviation definitions
Configuration
Default Configuration
from packages.rag.compliance_config import ComplianceConfig
config = ComplianceConfig(
llm_model="gpt-4-turbo-preview",
llm_temperature=0.02, # Very low for accuracy
retrieval_k=30, # More candidates
rerank_k=10,
compliance_level="high",
enable_legal_disclaimers=True,
enable_audit_logging=True
)
Custom Configuration
config = ComplianceConfig(
llm_temperature=0.01, # Even lower
retrieval_k=50, # More retrieval
max_cost_per_query=0.30 # Higher cost limit
)
Response Structure
{
"query_id": "comp_1234567890",
"answer": "Detailed compliance response...",
"regulatory_context": {
"regulation_type": "AML",
"jurisdiction": "US",
"compliance_level": "high"
},
"legal_disclaimers": [
"This information is for general guidance only",
"Specific situations may require legal counsel"
],
"regulatory_citations": ["FinCEN", "SEC"],
"compliance_recommendations": [
"Ensure your AML program is up to date"
],
"related_regulations": ["BSA", "KYC"],
"escalation_required": false,
"processing_time_ms": 1250.5
}
Examples
AML Query
query = "What are the suspicious transaction reporting requirements?"
user_context = {"regulation_type": "AML"}
response = await agent.handle_compliance_query(query, user_context)
KYC Query
query = "What are the customer verification requirements?"
user_context = {"regulation_type": "KYC"}
response = await agent.handle_compliance_query(query, user_context)
Sanctions Query
query = "What are the OFAC sanctions compliance requirements?"
user_context = {"regulation_type": "Sanctions"}
response = await agent.handle_compliance_query(query, user_context)
API Endpoints
/compliance/query
- Process Compliance Query
Handles compliance queries with regulatory focus.
Request:
{
"query": "What are the SAR filing requirements?",
"regulation_type": "AML",
"jurisdiction": "US",
"compliance_level": "high"
}
Response: Full compliance response with legal disclaimers and citations.
/compliance/search
- Search Compliance Documents
Searches the compliance knowledge base.
Request:
{
"query": "suspicious activity reporting",
"filters": {"regulation_type": "AML"},
"top_k": 10
}
Response: List of matching compliance documents.
/compliance/regulatory-lookup
- Look Up Regulation
Looks up specific regulatory information.
Request:
{
"regulation": "SAR",
"jurisdiction": "US"
}
Response: Regulatory details and status.
/compliance/health
- Health Check
Checks compliance service health.
/compliance/regulations/types
- Get Regulation Types
Returns available regulation types.
/compliance/jurisdictions
- Get Jurisdictions
Returns available jurisdictions.
/compliance/regulatory-authorities
- Get Authorities
Returns recognized regulatory authorities.
Escalation Handling
Queries are automatically escalated for:
- Requests for legal advice
- References to specific cases
- High-risk terms (fraud, criminal, terrorism)
- Unclear or conflicting regulations
- Emergency situations
if response['escalation_required']:
print(f"Escalation Reason: {response['escalation_info']['reason']}")
print(f"Priority: {response['escalation_info']['priority']}")
Audit Logging
All compliance queries are automatically logged:
{
"query_id": "comp_1234567890",
"timestamp": "2024-10-08T12:00:00Z",
"user_id": "user_123",
"user_role": "compliance_officer",
"query": "What are the SAR filing requirements?",
"response_length": 1500,
"escalation_required": false
}
Testing
Run compliance tests:
pytest tests/test_compliance_assistant.py -v
Run example:
python examples/compliance_assistant_example.py
Documentation
- Usage Guide: Comprehensive usage guide
- User Story: Complete user story
- API Reference: API documentation
Integration
Add to FastAPI App
from packages.rag.compliance_api import router as compliance_router
app.include_router(compliance_router)
Use in Production
from packages.agents.compliance_agent import ComplianceAgent
from packages.rag.compliance_config import ComplianceConfig
config = ComplianceConfig(
enable_audit_logging=True,
compliance_level="high"
)
agent = ComplianceAgent(config)
Best Practices
- Always provide complete user context with role, department, and regulation type
- Review legal disclaimers before displaying to users
- Handle escalations appropriately by routing to human compliance officers
- Monitor audit logs for compliance tracking and reporting
- Keep knowledge base updated with latest regulatory guidance
Support
- Documentation: See compliance-assistant-usage.md
- Examples: See compliance_assistant_example.py
- Tests: See test_compliance_assistant.py
- Issues: Report on GitHub
Related Stories
License
MIT License - See LICENSE file for details.