Skip to content

Repository files navigation

RiskLens AI β€” Credit Analyst Copilot

RiskLens AI is a production-ready demo of an AI-powered credit analyst copilot for SME lending. It combines real-time financial trend analysis, machine learning-based anomaly and fraud detection, LLM-powered risk narratives, intelligent policy Q&A, document extraction, and voice-driven workflows with comprehensive audit trails for regulatory compliance.

Tech Stack: TypeScript (78%) | Python (7.4%) | HTML (5%) | CSS (4.9%) | JavaScript (3.7%) | PL/pgSQL (1%)


🎯 Core Features

1. Role-Based Credit Workflow

The application implements a complete credit analyst workflow with three distinct user personas:

  • Applicant: Track application status, upload financial documents, submit transactions, and monitor fraud alerts in real-time
  • Analyst: Manage application queue, run financial & anomaly analysis, generate AI-powered risk narratives, and forward recommendations to managers
  • Manager: Review forwarded applications, approve/reject loans with documented decisions, monitor portfolio-level fraud patterns, and audit analyst activities

Status pipeline: submitted β†’ under_analysis β†’ forwarded_to_manager β†’ reviewed β†’ approved|rejected|more_info_needed

Implementation: React Router with role-based page access control in src/App.tsx (lines 97-127); state managed via AppContext for applications, risk outputs, audit log, and transactions.


2. Financial Health Dashboard

Real-time dashboard with dual-view layouts optimized for each user role:

Applicant Dashboard

  • Application Tracking: Current status, analyst assigned, submission timestamp, loan purpose/amount
  • Recent Transactions: Last 10 transactions with fraud status indicators
  • Fraud Status Badge: Visual alert for suspicious/confirmed fraud transactions
  • Quick Stats: Active applications count, total pipeline value

Analyst Dashboard

  • Application Queue: Filtered by analyst or manager role, sorted by risk level
  • Anomaly Heatmap: Color-coded risk scores (green/yellow/red) across applications
  • AI Confidence: Statistical confidence scores for risk assessments
  • Pipeline Analytics: Submitted, under_analysis, forwarded, reviewed counts
  • Trend Analysis: Average processing time, anomaly detection rate

Manager Dashboard

  • Pending Decisions: Applications forwarded for approval with decision deadline tracking
  • Fraud Monitor: Real-time transaction heatmap, network graph visualization of fraud relationships
  • Audit Activity Feed: Analyst actions (submitted, analyzed, forwarded) with timestamps
  • Portfolio Risk Metrics: Total loan value at risk, concentration by industry/risk tier
  • Call History: Log of fraud alert calls triggered, outcomes

Implementation: Recharts for visualizations; Framer Motion for animated transitions; responsive grid layouts via Tailwind. Code in src/pages/Dashboard.tsx (lines 33-547).


3. Financial Metrics Engine

Automated computation of lending-relevant financial metrics from uploaded CSV/PDF data:

Computed Metrics

  • Liquidity Ratios: Current ratio, quick ratio, cash ratio
  • Profitability: Gross margin %, net margin %, ROA, ROE
  • Efficiency: Asset turnover, inventory turnover (where applicable)
  • Growth Rates: 12-month revenue growth %, expense growth %, net income CAGR
  • Volatility: Standard deviation of monthly cash flow, expense variance, revenue stability score
  • Debt Metrics: Debt-to-equity, debt service coverage ratio (if debt/interest data present)

Trend Analysis

  • 12-month rolling averages for revenue, expenses, net income, cash flow
  • Month-over-month percentage changes
  • Seasonal decomposition (if data spans 24+ months)
  • Confidence intervals (95%) for trend projections

Implementation: src/services/metricsEngine.ts (lines 58-109); parses CSV transactions and aggregates by month. Zero external dependenciesβ€”all calculation is rule-based for explainability.


4. Anomaly & Fraud Detection

Multi-stage statistical and heuristic anomaly detection without ML black boxes:

Detection Methods

A. Statistical Outliers

  • Z-Score Thresholding: Flag transactions > 2.5Οƒ from mean amount
  • IQR Method: Mark as outlier if Q3 + 1.5Γ—IQR or Q1 - 1.5Γ—IQR
  • Isolation: Detect low-frequency transactions (fewer than 1 per month)

B. Fraud Heuristics

  • Round-Tripping: Detect circular cash flows (A β†’ B β†’ C β†’ A) within 7-day window; flag as high-risk
  • Amount Spikes: Transaction 200%+ above recent average in same category
  • Irregular Timing: Transactions outside business hours (23:00–06:00)
  • Frequency Anomalies: 3x+ increase in transaction count vs. baseline week
  • Duplicate Patterns: Same amount/recipient within 24 hours

C. Business Logic Flags

  • Weekend/holiday transactions for B2B businesses (configurable)
  • High-velocity small transactions (structuring indicator)
  • Cross-border transfers with insufficient documentation

Anomaly Scoring

Each detected anomaly receives a confidence score (0–100):

  • High severity (80–100): Round-tripping, >300% amount spike
  • Medium severity (50–79): 200% spike, irregular timing + unusual frequency
  • Low severity (20–49): Minor spikes, isolated frequency anomalies

Implementation: src/services/anomalyDetector.ts (lines 11-199); rule-based classification ensures explainability for credit committees.


5. AI Risk Explanations (Gemini 1.5)

LLM-powered narrative generation for risk assessments using Google's Gemini API with production-grade safety and resilience:

Risk Narrative Generation

Generates a 200–400-word narrative covering:

  • Financial Health Summary: Key metrics interpretation (e.g., "healthy cash flow but declining margin")
  • Red Flags Identified: Prioritized list of anomalies and their business implications
  • Fraud Risk Assessment: Probability estimate based on detected signals
  • Recommendation: APPROVE / REVIEW / REJECT with confidence level
  • Regulatory Notes: Compliance considerations (e.g., structuring indicators)

Prompt Engineering: Context-aware prompts with transaction history, metrics, anomalies, and loan parameters to guide response tone and structure.

Per-Anomaly Explanations

When an analyst clicks "Explain with AI" on an individual anomaly:

  • What It Means: Plain-language interpretation of the detected pattern
  • Why It Matters: Business risk implications
  • Frequency Baseline: How unusual this pattern is statistically
  • False Positive Likelihood: Confidence that this is genuine concern vs. noise

Example: For a round-tripping anomaly: "Three transactions form a circular pattern (Invoice A β†’ Check to Vendor B β†’ Vendor B transfers to your account) within 48 hours, suggesting potential cash acceleration or layering activity. This pattern appears in ~2% of legitimate SME transactions."

Safety & Reliability

  • Caching: Identical requests within 24 hours use cached responses (reduces latency, cost)
  • Retry Logic: Exponential backoff (3 attempts, 1–4 second intervals)
  • Safety Settings: Blocked content categories disabled for financial context; all outputs reviewed before display
  • Fallback: Pre-computed explanations for demo mode; graceful degradation if API unavailable

Implementation: src/lib/gemini.ts (lines 37-479); integration points in src/pages/ApplicationDetail.tsx (lines 602-654) and src/components/dashboard/AnomalyAlerts.tsx (lines 168-193).


6. Policy Copilot & Q&A

Intelligent policy assistant combining keyword search with optional LLM summarization:

Policy Retrieval

  • Synthetic Policy Database: 70+ pre-loaded credit policy snippets covering loan criteria, fraud triggers, documentation requirements, industry exceptions (src/data/policySnippets.ts, lines 13-94)
  • Keyword Search: TF-IDF-like matching on query against policy snippet titles and content
  • Multi-Match: Returns top 3–5 relevant snippets with relevance scores

Gemini Summarization

  • Takes retrieved snippets and user query
  • Generates concise direct answer (2–3 sentences)
  • Includes policy reference number and approval criteria
  • Maintains consistency with bank's tone

Example Workflow

User Query: "Can we approve seasonal businesses?" Retrieved Snippets:

  1. "SME Criteria: Industry-specific guidelinesβ€”seasonal businesses may require higher reserves"
  2. "Cash Flow: Minimum 12-month operating history required"

Gemini Summary: "Yes, seasonal businesses are eligible under SME criteria, provided they document 12+ months of operating history and maintain reserves 20% above average monthly expenses. Reference: Policy 4.2.1."

Implementation: src/components/dashboard/PolicyCopilot.tsx (lines 27-95); policy data in src/data/policySnippets.ts.


7. Document Processing & Extraction

LLM-powered document understanding for bank statements, tax returns, and financial reports:

Supported Formats

  • CSV (direct import, auto-parsed into transaction records)
  • TXT (parsed as semi-structured data)
  • PDF (metadata only; content extraction planned)

Extraction Pipeline

  1. Upload & Preview: User uploads file; content displayed in preview pane
  2. Gemini Analysis: Sends document content to Gemini with extraction prompt
  3. Structured Output: Extract key fields:
    • Business name, tax ID, industry
    • Period covered (start/end date)
    • Total revenue, expenses, net income
    • Key line items (by category)
    • Anomalies detected in document (e.g., unusually high expense categories)
  4. Validation: Check for required fields; flag incomplete/ambiguous data

Extraction Example

Input Document (Bank Statement):

Statement for: Acme Corp
Period: Jan 1 – Mar 31, 2025
Deposits: $150,000
Withdrawals: $120,000
Average Daily Balance: $25,000

Extracted Data:

{
  "business_name": "Acme Corp",
  "revenue": 150000,
  "expenses": 120000,
  "net_income": 30000,
  "analysis_period": "Q1 2025",
  "anomalies": ["Unusual spike in withdrawals on Feb 15"]
}

Implementation: src/pages/DocumentsPage.tsx (lines 31-182); Gemini integration via src/lib/gemini.ts (lines 481-538).


8. Transaction Monitoring & Fraud Analysis

Real-time transaction submission and fraud scoring with optional voice-based fraud alerts:

Transaction Submission (Applicant)

  • Submit individual transaction record: date, amount, payee, category, description
  • Each transaction auto-scored for fraud likelihood
  • Immediate feedback: βœ… Low Risk / ⚠️ Suspicious / 🚨 High Risk
  • Pattern matching against historical anomalies

Fraud Analytics (Manager)

  • Heatmap Visualization: Transactions plotted on 2D grid (amount vs. frequency) with color intensity indicating fraud probability
  • Network Graph: Visualize transaction relationships; identify circular patterns, common counterparties, money flow clusters
  • Filtering & Sorting: By amount, date, category, payee, fraud score
  • Batch Actions: Flag multiple transactions, initiate voice call

Fraud Scoring Algorithm

  • Baseline Score: 0–100 derived from anomaly detection
  • Boosters:
    • Round-tripping detected: +40 points
    • Amount spike (>200%): +25 points
    • Irregular timing: +15 points
    • Frequency spike: +20 points
    • Known fraud patterns in network: +30 points
  • Suppressors:
    • Transaction matches documented invoice: -15 points
    • Payee is known vendor: -10 points
    • Within seasonal variance: -10 points

Voice Alert Integration

  • Manager clicks "Call to Verify" on high-fraud transaction
  • Triggers Python FastAPI voice-agent service to initiate Twilio call
  • Voice agent asks standard verification questions
  • Call outcome logged in audit trail

Implementation:

  • Transaction submission: src/pages/TransactionsPage.tsx (lines 59-116)
  • Fraud analytics: src/pages/TransactionsPage.tsx (lines 445-683)
  • Fraud scoring: src/lib/gemini.ts (lines 551-646)
  • Voice agent: voice-agent/main.py (lines 73-285) and voice-agent/websocket_handler.py

9. Voice Assistant & Briefings

Multi-modal voice interaction powered by ElevenLabs or browser TTS:

Executive Risk Brief (Text-to-Speech)

One-click generation of spoken 2–3 minute briefing covering:

  • Top 3 Risk Factors: Ranked by severity
  • Overall Recommendation: APPROVE / REVIEW / REJECT
  • Key Anomalies: Most critical findings
  • Next Steps: Suggested follow-up actions

Voice Engine Options:

  1. ElevenLabs TTS (production): Premium natural voice, 11 voices available, streaming support, accent/emotion control
  2. Browser TTS (fallback): Native browser SpeechSynthesis API, works offline, no API key required

Output: Audio streamed to browser with play/pause/download controls.

Voice Call Integration (Python Service)

  • Real-Time Conversational Agent: Powered by ElevenLabs Conversational AI + custom prompts
  • Fraud Alert Calls: Automated outbound calls for suspicious transactions
  • Agent Types: Fraud verifier, KYC interviewer, loan status checker
  • Call Routing: Dynamic transfer between agents mid-call
  • Audio Bridge: Browser WebSocket ↔ ElevenLabs Conversational WS ↔ Twilio SIP

Implementation:

  • Text-to-speech: src/components/voice/VoiceAssistant.tsx (lines 75-105)
  • Voice agent service: voice-agent/main.py, voice-agent/websocket_handler.py
  • Frontend dialer: voice-agent/static/app.js (lines 100-331)

10. Risk Report Generation

Downloadable PDF risk assessment reports with comprehensive metrics and visualizations:

Report Sections

  1. Executive Summary: 1-page overview with recommendation, confidence, key metrics
  2. Financial Analysis: Charts for revenue, expenses, net income trends (12-month); calculated ratios
  3. Anomaly Report: Detailed table of all detected anomalies with severity, confidence, explanation
  4. AI Risk Narrative: Full LLM-generated narrative (from feature #5)
  5. Decision Log: Analyst and manager notes, timestamps, approval/rejection reason
  6. Appendix: Policy references, methodology (z-score, IQR, heuristics explained)

Visualizations

  • Line charts: Revenue/expense trends with confidence bands
  • Heatmap: Monthly net income by year
  • Table: Anomaly details with color-coded severity
  • Waterfall: Revenue β†’ Expenses β†’ Net Income flow

Export Options

  • PDF (with branding, formal layout)
  • CSV (metrics, anomalies, decision log)

Implementation: src/lib/pdfReport.ts (lines 8-298); uses jsPDF + HTML2Canvas for PDF generation.


11. Audit Trail & Compliance

Comprehensive logging of all analyst and manager actions for regulatory review:

Logged Events

  • Application submission (with auto-generated timestamp, applicant ID)
  • Analysis start/completion (analyst ID, duration, AI models used)
  • Forward to manager (analyst notes, risk score snapshot)
  • Approval/Rejection/More Info (manager ID, decision, rationale, timestamp)
  • AI explanation generated (model version, prompt hash for reproducibility)
  • Transaction fraud call initiated (manager ID, transaction ID, call outcome)
  • Policy query (analyst query text, retrieved snippets, timestamp)

Audit Log Table (audit_log in Supabase)

CREATE TABLE audit_log (
  id UUID PRIMARY KEY,
  application_id UUID REFERENCES applications(id),
  action VARCHAR (e.g., 'submitted', 'analyzed', 'forwarded', 'approved'),
  actor_id VARCHAR,
  actor_role VARCHAR,
  details JSONB (action-specific data),
  timestamp TIMESTAMP WITH TIME ZONE,
  ip_address INET (optional)
);

Audit Dashboard (Manager-Only)

  • Timeline view of all actions on an application
  • Filter by actor, action type, date range
  • Export audit log for compliance reports

Implementation: Logged in src/pages/ApplicationDetail.tsx (lines 602-654); accessible in src/pages/AuditTrailPage.tsx; stored in Supabase audit_log table.


12. Supabase Backend Integration

Optional SQL backend for persistent storage, authentication, and real-time sync:

Database Schema (supabase/migrations/001_initial_schema.sql)

applications Table:

- id (UUID primary key)
- applicant_id (foreign key to auth.users)
- analyst_id (optional, assigned when analysis starts)
- manager_id (optional, assigned when forwarded)
- status (pending β†’ analyzing β†’ reviewed β†’ approved/rejected/more_info)
- industry (e.g., retail, manufacturing, services)
- loan_amount (numeric, in currency)
- loan_purpose (text)
- business_size (e.g., micro, small, medium)
- years_in_business (integer)
- created_at, updated_at (timestamps)
- metadata (JSONB: custom fields)

documents Table:

- id (UUID primary key)
- application_id (foreign key)
- file_name (text)
- file_type (csv, pdf, txt)
- uploaded_by (user ID)
- extracted_json (JSONB: structured extracted data)
- created_at

risk_outputs Table:

- id (UUID primary key)
- application_id (foreign key)
- financial_metrics (JSONB: computed metrics)
- anomalies (JSONB array: detected anomalies + confidence)
- ai_explanation (text: full LLM narrative)
- recommendation (APPROVE/REVIEW/REJECT)
- confidence_score (0–100)
- risk_factors (JSONB array: top 5 risk factors ranked)
- created_at

audit_log Table: (As described in feature #11)

transactions Table:

- id (UUID primary key)
- application_id (foreign key)
- date, amount, payee, category, description
- fraud_score (0–100)
- fraud_status (low_risk, suspicious, high_risk)
- created_at

Row-Level Security (RLS)

  • Applicants can view only their own applications
  • Analysts can view applications assigned to them + those forwarded to their manager
  • Managers can view all forwarded applications + audit logs
  • Audit logs are append-only (insert-only, no updates/deletes)

Real-Time Sync (Optional)

  • Frontend subscribes to application status changes
  • Notifications push to dashboard when application forwarded or decision made
  • Audit log updated in real-time for manager monitoring

Implementation:

  • Supabase client: src/lib/supabase.ts (lines 3-10)
  • SQL migrations: supabase/migrations/001_initial_schema.sql (lines 11-131)
  • Optional backend integration points in src/App.tsx (lines 57-70)

πŸ—οΈ Architecture

Frontend (TypeScript, 78%)

src/
β”œβ”€β”€ main.tsx                     # React root entry
β”œβ”€β”€ App.tsx                      # Global context, routes, role-based pages
β”œβ”€β”€ types/                       # TypeScript interfaces (Application, RiskOutput, Transaction, etc.)
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ layout/                  # Sidebar, header, outlet (Framer Motion animations)
β”‚   β”œβ”€β”€ dashboard/               # Dashboard views (applicant, analyst, manager)
β”‚   β”œβ”€β”€ upload/                  # File upload, CSV parsing, preview
β”‚   β”œβ”€β”€ voice/                   # Voice assistant UI, TTS controls
β”‚   └── [other UI components]
β”œβ”€β”€ pages/
β”‚   β”œβ”€β”€ Login.tsx                # Demo mode switcher (applicant/analyst/manager)
β”‚   β”œβ”€β”€ Dashboard.tsx            # Role-specific dashboards
β”‚   β”œβ”€β”€ ApplicationDetail.tsx     # Full application view + analysis pipeline UI
β”‚   β”œβ”€β”€ DocumentsPage.tsx        # Document upload & extraction
β”‚   β”œβ”€β”€ TransactionsPage.tsx     # Transaction submission & fraud analytics
β”‚   β”œβ”€β”€ PolicyPage.tsx           # Policy Q&A interface
β”‚   └── AuditTrailPage.tsx       # Manager-only audit log
β”œβ”€β”€ services/
β”‚   β”œβ”€β”€ metricsEngine.ts         # Financial metrics calculation
β”‚   β”œβ”€β”€ anomalyDetector.ts       # Statistical & heuristic anomaly detection
β”‚   β”œβ”€β”€ analysisPipeline.ts      # Orchestrate parse β†’ metrics β†’ anomalies β†’ AI
β”‚   └── fileParser.ts            # CSV/PDF/TXT parsing
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ gemini.ts                # Gemini API integration (caching, retry, safety)
β”‚   β”œβ”€β”€ elevenlabs.ts            # ElevenLabs TTS integration
β”‚   β”œβ”€β”€ supabase.ts              # Supabase client + optional backend calls
β”‚   β”œβ”€β”€ pdfReport.ts             # PDF report generation
β”‚   └── utils.ts                 # Common utilities (formatting, validation)
β”œβ”€β”€ data/
β”‚   β”œβ”€β”€ synthetic.ts             # 3 pre-baked SME applications + synthetic transactions
β”‚   β”œβ”€β”€ policySnippets.ts        # 70+ policy snippets for Q&A
β”‚   └── constants.ts             # UI strings, color scales, thresholds
└── styles/
    └── globals.css              # Tailwind + custom CSS

Backend (Python, 7.4%)

voice-agent/
β”œβ”€β”€ main.py                      # FastAPI app, routes, Twilio webhooks
β”œβ”€β”€ config.py                    # ElevenLabs, Twilio, LLM config
β”œβ”€β”€ agents.py                    # Agent personas, prompts, transfer logic
β”œβ”€β”€ websocket_handler.py         # WS bridge: browser ↔ ElevenLabs Conversational
β”œβ”€β”€ requirements.txt             # FastAPI, ElevenLabs, Twilio, python-dotenv
└── static/
    β”œβ”€β”€ index.html               # Phone dialer UI
    └── app.js                   # Phone UI logic + WebSocket client

Database (PL/pgSQL, 1%)

supabase/migrations/
└── 001_initial_schema.sql       # Tables: applications, documents, risk_outputs, audit_log, transactions

πŸš€ Getting Started

Prerequisites

  • Node.js 18+ (for frontend)
  • Python 3.9+ (for voice-agent service, optional)
  • Supabase account (optional, for persistent backend)
  • API Keys (optional, for live AI/voice):
    • Google AI Studio API key (Gemini)
    • ElevenLabs API key
    • Twilio account (for voice calls)

Installation

1. Frontend Setup

git clone https://github.com/smshozab/RiskLens-AI.git
cd RiskLens-AI

# Install dependencies
npm install

# Copy environment template
cp .env.example .env.local

# Optional: Add API keys to .env.local
# VITE_GEMINI_API_KEY=your_key
# VITE_ELEVENLABS_API_KEY=your_key
# VITE_SUPABASE_URL=your_url
# VITE_SUPABASE_ANON_KEY=your_key

# Start dev server
npm run dev

Access: Open http://localhost:5173 in your browser

2. Backend Setup (Optional)

cd voice-agent

# Create Python virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Configure environment
cp .env.example .env
# Edit .env with Twilio, ElevenLabs, Gemini credentials

# Start FastAPI server
uvicorn main:app --reload --port 8000

3. Supabase Setup (Optional)

# Create Supabase project at https://supabase.com
# Copy project URL and anon key to .env.local

# Run migrations
# Option A: Use Supabase UI β†’ SQL Editor β†’ paste supabase/migrations/001_initial_schema.sql
# Option B: Use CLI
supabase db push

# Create private Storage bucket named "documents"

Quick Demo (No Setup Required)

  1. Open http://localhost:5173
  2. Click "Launch Demo Experience"
  3. Select persona: Applicant, Analyst, or Manager
  4. Explore pre-loaded applications and synthetic data

Demo Applications:

  • QuickTrade Logistics: High-risk case with multiple anomalies (round-tripping, amount spikes)
  • GreenLeaf Organics: Healthy profile, low risk, strong metrics
  • Meridian Textiles: Borderline case (declining revenue, but stable cash flow)

πŸ“‹ Environment Variables

Frontend (.env.local)

# Supabase (optional)
VITE_SUPABASE_URL=https://your-project.supabase.co
VITE_SUPABASE_ANON_KEY=your_anon_key

# AI Services (optional)
VITE_GEMINI_API_KEY=your_gemini_api_key
VITE_GEMINI_MODEL=gemini-1.5-pro  # or gemini-1.5-flash

# Voice Services (optional)
VITE_ELEVENLABS_API_KEY=your_elevenlabs_key
VITE_ELEVENLABS_VOICE_ID=Adam  # or other voice ID

# Feature Flags
VITE_ENABLE_VOICE_AGENT=true
VITE_ENABLE_SUPABASE=false

Backend (voice-agent/.env)

# ElevenLabs
ELEVENLABS_API_KEY=your_key
ELEVENLABS_AGENT_ID=your_agent_id

# Twilio
TWILIO_ACCOUNT_SID=your_sid
TWILIO_AUTH_TOKEN=your_token
TWILIO_PHONE_NUMBER=+1234567890

# LLM
OPENAI_API_KEY=your_key  # or Gemini key

# Server
FRONTEND_URL=http://localhost:5173
VOICE_AGENT_PORT=8000

πŸ› οΈ API Reference

Frontend Services

Anomaly Detection

import { detectAnomalies } from '@/services/anomalyDetector';

const anomalies = detectAnomalies(transactions, {
  zScoreThreshold: 2.5,
  iqrMultiplier: 1.5,
  detectRoundTripping: true,
  detectFrequencySpikes: true,
});

// Output: Array<Anomaly>
// - type: 'amount_spike' | 'round_trip' | 'irregular_timing' | ...
// - severity: 'low' | 'medium' | 'high'
// - confidence: number (0-100)
// - explanation: string

Metrics Engine

import { computeMetrics } from '@/services/metricsEngine';

const metrics = computeMetrics(transactions, options);

// Output: FinancialMetrics
// - revenue: number
// - expenses: number
// - netIncome: number
// - cashFlow: number
// - ratios: { currentRatio, quickRatio, debtToEquity, ... }
// - trends: { revenueGrowth%, expenseGrowth%, volatility, ... }

Gemini Integration

import { generateRiskNarrative, explainAnomaly, generateFraudScore } from '@/lib/gemini';

// Risk narrative
const narrative = await generateRiskNarrative(application, metrics, anomalies);

// Per-anomaly explanation
const explanation = await explainAnomaly(anomaly, context);

// Fraud scoring
const score = await generateFraudScore(transaction, historicalContext);

PDF Report

import { generateRiskReport } from '@/lib/pdfReport';

const pdf = await generateRiskReport(application, metrics, anomalies, narrative);
// Returns Blob; trigger download or email

Backend API (Voice Agent)

Endpoints

POST /api/agents - List available agents

{
  "agents": [
    { "id": "fraud_verifier", "name": "Fraud Verification Agent", "prompt": "..." },
    { "id": "kyc_interviewer", "name": "KYC Interviewer", "prompt": "..." }
  ]
}

POST /api/trigger-fraud - Initiate fraud alert call

{
  "phone": "+1234567890",
  "transaction_id": "txn_123",
  "amount": 5000,
  "payee": "Unknown Vendor",
  "callback_url": "https://yourapp.com/webhook"
}

WS /ws/call - Real-time call audio bridge

  • Browser streams audio β†’ Python β†’ ElevenLabs Conversational WS β†’ Twilio SIP
  • Bidirectional audio; supports agent transfer via message

WS /ws/signal - Call events (incoming, missed, transfer, etc.)


πŸ” Security & Compliance

Data Privacy

  • Row-Level Security (RLS): Supabase RLS policies enforce data isolation by role/ownership
  • Encryption in Transit: HTTPS (frontend) + TLS (API)
  • Encryption at Rest: Supabase Postgres encryption enabled
  • No PII in Logs: Personal info redacted from audit trail (only IDs, not names)

Responsible AI

  • Advisory Only: All AI outputs explicitly labeled as recommendations; final credit decisions with human analysts
  • Explainability: Anomaly detection uses transparent heuristics (z-score, IQR) not ML black boxes
  • Audit Trail: Every AI explanation logged (model version, prompt hash, timestamp)
  • Bias Mitigation: Synthetic data only in demo; production requires fairness assessment

Limitations & Risks

  • False Positives: Anomaly detection may flag legitimate business patterns (seasonal spikes, one-time large transactions)
  • False Negatives: Sophisticated fraud may evade heuristic-based detection; requires ML models in production
  • Synthetic Data: Demo uses made-up applications; real deployment requires validated pipelines and access controls
  • Policy Q&A: Currently keyword-based; production needs RAG (retrieval-augmented generation) over official policy documents
  • Voice Call: May trigger false positives; always require human verification before credit decision impact

πŸ“¦ Tech Stack Details

Frontend Dependencies

  • React 18.2.0: UI framework
  • TypeScript 5.x: Type safety
  • Vite 6.x: Build tool (fast dev server, optimized builds)
  • TailwindCSS 3.x: Utility-first CSS framework
  • Framer Motion 10.x: Animation library (smooth page transitions, micro-interactions)
  • Recharts 2.x: React charting library (line, bar, heatmap visualizations)
  • React Router 6.x: Client-side routing with role-based access
  • @google/generative-ai: Gemini API client library
  • jsPDF + html2canvas: PDF generation
  • date-fns: Date formatting utilities

Backend Dependencies (Voice Agent)

  • FastAPI: Async web framework
  • python-dotenv: Environment variable management
  • ElevenLabs SDK: Conversational AI + TTS integration
  • Twilio SDK: Phone call management
  • aiohttp: Async HTTP client
  • websockets: WebSocket server for audio bridge

Database

  • PostgreSQL 15 (via Supabase): ACID compliance, JSON support, RLS
  • PL/pgSQL: Stored procedures for audit logic (optional)

Deployment-Ready

  • Docker: Containerization ready for voice-agent (Dockerfile can be created)
  • CI/CD: GitHub Actions workflows can be added
  • Scaling: Vite builds to static assets (CDN-ready); FastAPI auto-scales with ASGI server (Gunicorn + Uvicorn)

πŸ—ΊοΈ Roadmap & Planned Features

Phase 2 (Planned)

  • Policy RAG: Full retrieval-augmented generation over bank policy documents; semantic search with embeddings
  • Document LLM (Enhanced): PDF content extraction, bank statement parsing, automated categorization
  • ML Anomaly Detection: Isolation Forest + LSTM models for temporal pattern detection (production-grade fraud scoring)
  • Portfolio Views: Sector concentration, watchlist, stress testing scenarios
  • Supabase Auth: Full authentication integration (currently demo-mode)
  • Mobile App: React Native client for applicants and field analysts

Phase 3 (Future)

  • Graph Analysis: Network analysis to detect fraud rings, money laundering patterns
  • Regulatory Reporting: Automated SAR (Suspicious Activity Report) generation
  • Multi-Language: Localization for credit copilot in 5+ languages
  • API for Third Parties: Expose RiskLens API for bank partners

πŸ“ Demo Flow (Recommended)

For Analysts

  1. Login: Select "Analyst" in demo mode
  2. Dashboard: View application queue (3 apps: high/healthy/borderline risk)
  3. Open QuickTrade Logistics: See high-risk application
  4. Explore Analysis:
    • View 12-month financial trends (declining revenue, volatile cash flow)
    • Check anomalies detected (round-tripping, 3x transaction spike)
    • Click "Explain with AI" on a specific anomaly
    • Read full AI-generated risk narrative
  5. Decision: Click "Forward to Manager" with analyst notes
  6. Alternative: Upload a CSV file to run the full pipeline in real-time

For Managers

  1. Login: Select "Manager" in demo mode
  2. Dashboard: See forwarded applications awaiting decision
  3. Fraud Monitor: Visualize transaction heatmap; identify suspicious patterns
  4. Open QuickTrade Logistics:
    • Review analyst's recommendation
    • Check audit trail (who analyzed, when, AI explanation used)
    • Make decision: Approve / Reject / Request More Info
  5. Decision Logged: See decision recorded in audit trail with timestamp

For Applicants

  1. Login: Select "Applicant" in demo mode
  2. Dashboard: See application status, assigned analyst, submission date
  3. Submit Transaction: Add a sample transaction; view fraud score
  4. Monitor Status: Check for analyst progress, manager decision

🀝 Contributing

Contributions welcome! Areas for help:

  • Add ML anomaly detection models (Isolation Forest, LSTM)
  • Implement full Supabase auth + edge functions
  • Build mobile app (React Native)
  • Add i18n (internationalization)
  • Expand policy database with real bank policies
  • Write integration tests for analysis pipeline

πŸ“„ License

[Specify your license here, e.g., MIT, Apache 2.0]


πŸ’¬ Support & Questions


πŸ™ Acknowledgments

Built with ❀️ for hackathons, credit teams, and responsible AI practitioners. Special thanks to Supabase, Gemini, and ElevenLabs for powerful APIs.


Last Updated: June 2026 | Version: 1.0 | Status: Production-Ready Demo

About

RiskLens AI is a production-ready demo of an AI-powered credit analyst copilot for SME lending. It combines real-time financial trend analysis, machine learning-based anomaly and fraud detection, LLM-powered risk narratives, intelligent policy Q&A, document extraction, and voice-driven workflows

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages