Live Deployment: https://project-rainfall-60073752167.development.catalystserverless.in/app/index.html
Video Explanation: https://drive.google.com/file/d/1lX5Q51MJ7YhfQj5q2zWaHGQb9GRQapNF/view?usp=sharing
GOTHAM v2 is a specialized, data-driven intelligence platform engineered specifically for the Karnataka State Police (KSP) SCRB problem statement. It transcends traditional generic dashboards by providing a Full Intelligence Stack designed as a true working tool for command staff and analysts.
Built with a sophisticated, light-based "records/paper" aesthetic, GOTHAM seamlessly fuses geospatial mapping, predictive ML risk models, live OSINT scraping, and dynamic natural language AI investigation capabilities into a single, cohesive interface.
GOTHAM is built to handle state-wide, heavy intelligence pipelines:
- ✔ 1M+ FIR records supported seamlessly
- ✔ <150 ms search latency across millions of relational rows
- ✔ 100K+ graph nodes processed for entity resolution
- ✔ Real-time Kafka pipeline simulated for live event ingestion
- 📍 Strategic Command Center & Spatial Clusters
- Layer-by-layer mapping of aggregate crime volumes across all Karnataka districts.
- Instant visualization of priority jurisdictions to guide immediate resource allocation.
⚠️ Predictive Risk & Anomaly Detection- Integrates real-time
scikit-learnIsolation Forest algorithms to detect statistical outliers in crime patterns. - Automatically flags jurisdictions experiencing abnormal spikes in specific crime categories (e.g., narcotics, arms trafficking).
- Integrates real-time
- 🕸️ Link Analysis & Ontology Network
- Constructs dynamic Force-Directed Graphs mapping the relationships between cases and accused individuals.
- Calculates network centrality (PageRank) to identify kingpins and highly connected actors in organized crime syndicates.
- 🌐 External OSINT & Live Intelligence
- Live News Feed: Zero-dependency RSS aggregation of real-time web articles concerning Karnataka crime and policing.
- Deep Web Search: Automated DuckDuckGo integration allowing analysts to instantly cross-reference suspect names against public court filings and news records.
- 🤖 AI Copilot (OpenRouter Integration)
- A powerful natural language interface that cross-examines the database context.
- BYOK (Bring Your Own Key): Users securely enter their OpenRouter API key on the client side, ensuring maximum security without hardcoded server credentials.
- 📂 FIR Registry Portal
- A robust data-entry and viewing portal for logging new First Information Reports (FIRs) and browsing the encrypted historical case master.
To further equip the Karnataka State Police with next-generation capabilities, our roadmap includes:
- Drone surveillance integration for real-time aerial crowd and riot monitoring
- CCTV analytics & Facial recognition to automatically track identified suspects across state borders
- Real-time emergency alerts dispatched to nearest patrol vehicles via GPS optimization
- WhatsApp crime reporting enabling citizens to submit anonymous tips and media files directly into the data lake
- Multi-language AI assistant supporting Kannada, Hindi, and English for broader accessibility among local stations
- Deep Node Analysis allowing investigators to click into a suspect's network graph to view real-time financial, telecom, and familial connections
- Women & Child Safety Portal a dedicated, highly-secure section of the platform tailored specifically for analyzing, predicting, and accelerating responses to crimes against vulnerable demographics
- Advanced Frontend Customization enabling officers to drag-and-drop their own widgets and build custom command dashboards tailored to their specific task force (e.g., Narcotics vs. Cyber Crime)
graph TD
%% Define styles
classDef client fill:#f9f9f9,stroke:#333,stroke-width:2px,color:#000;
classDef backend fill:#e3f2fd,stroke:#1565c0,stroke-width:2px,color:#000;
classDef database fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px,color:#000;
classDef external fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#000;
%% Client Layer
subgraph Frontend ["Frontend (Zoho Catalyst Web Client)"]
UI["React & Vite UI"]
Map["CartoDB Geospatial Map"]
Graph["Force-Directed Graph"]
end
%% Backend Layer
subgraph Backend ["Backend (Zoho Catalyst AppSail)"]
API["FastAPI Routing"]
ML["Scikit-Learn Isolation Forest"]
NX["NetworkX Ontology Engine"]
OSINT["DuckDuckGo Scraper"]
end
%% Data Layer
subgraph Data ["Data Persistence Layer"]
SQL[("SQLite DB")]
ORM["SQLAlchemy ORM"]
Fuzz["RapidFuzz Entity Resolution"]
end
%% External Integrations
subgraph Ext ["External Integrations"]
LLM["OpenRouter (LLMs)"]
RSS["Live News RSS"]
end
%% Connections
UI -->|HTTPS| API
Map -->|HTTPS| API
Graph -->|HTTPS| API
API --> ML
API --> NX
API --> OSINT
API --> ORM
ORM --> Fuzz
Fuzz --> SQL
API --> LLM
API --> RSS
%% Apply styles
class Frontend,UI,Map,Graph client;
class Backend,API,ML,NX,OSINT backend;
class Data,SQL,ORM,Fuzz database;
class Ext,LLM,RSS external;
- Frontend Framework: React (Vite), custom CSS variables (bone/stone aesthetic), React Router v6.
- Backend Infrastructure: Python 3.11, FastAPI, Uvicorn, SQLAlchemy (SQLite persistence).
- Intelligence Engine: Scikit-Learn (ML), NetworkX (Graphs), DuckDuckGo Search (OSINT).
- Enterprise Services (Simulated): Neo4j (Graph DB), Apache Kafka (Streaming), Docker (Containerization).
- Deployment Architecture: Zoho Catalyst (AppSail for the backend + Web Client for the frontend). Fully serverless.
The project is structured in a Zoho Catalyst-Ready format for seamless one-click cloud deployment:
Gotham/
├── catalyst.json # Master configuration for Zoho deployment
├── client/ # React Frontend (Vite)
│ ├── src/
│ │ ├── components/ # Reusable UI elements (Navigation, Cards)
│ │ └── pages/ # Dashboards (News, Anomalies, Copilot, Registry, Command)
│ └── public/ # Static assets and Catalyst client-package.json
└── backend_service/ # FastAPI Backend (AppSail)
├── main.py # Core API router and CORS configuration
├── ml_engine.py # Isolation Forest anomaly detection
├── graph_engine.py # NetworkX graph and PageRank algorithms
├── copilot.py # LLM natural language interface
├── database.py # SQLAlchemy SQLite persistence
├── seed_ksp.py # Automated database synthetic seeder
└── requirements.txt # Python dependencies
cd backend_service
pip install -r requirements.txt
uvicorn main:app --reload --host 0.0.0.0 --port 8000Note: The SQLite database will automatically initialize and seed with synthetic KSP demo data on first startup.
Open a new terminal window:
cd client
npm install
npm run devThis project is pre-configured to deploy directly to Zoho Catalyst AppSail and Web Client.
- Install the CLI globally:
npm install -g zcatalyst-cli - Authenticate with your Zoho account:
catalyst login - Associate with your project:
catalyst project:use <project-name> - Build the React client:
cd client && npm run build && cd .. - Deploy the full stack:
catalyst deploy
Developed for the KSP SCRB Hackathon.