An OSINT link-analysis and suspect correlation engine built to assist investigative teams in mapping cybercrime networks.
Live Demo: orionerakshak.vercel.app β’ Demo Video: Demo Video Link
To access the website for demo use credentials
Username - INV-001
Password - Password123!
Cybercrime investigations often stall due to highly fragmented data. Evidence scattered across different domainsβWHOIS records, certificate logs, data breaches, and social media footprintsβis incredibly difficult to piece together manually. Investigative teams lack a unified, automated tool to cross-correlate disparate aliases, crypto wallets, domains, and phone numbers to reveal the hidden networks behind cybercrimes.
Orion is an intelligent, automated OSINT ingestion and correlation engine. It automatically normalizes raw suspect data, queries a wide array of external intelligence databases, detects hidden pivot points, and generates comprehensive evidentiary dossiers. By utilizing an XGBoost refinement layer over a NetworkX correlation engine, Orion empowers analysts to map complex criminal networks in a fraction of the time.
- Cyberpunk Desktop Paradigm: A window-based operating system UI tailored for complex multi-tasking investigations.
- Interactive Graph Visualizations: Cytoscape.js powered suspect correlation node map to visually explore entity relationships.
- Geo-Intelligence Mapping: 3D interactive globe visualizations for spatial mapping of IP intelligence and suspect locations.
- Cross-Correlation Window: Advanced interface to cross-reference attributes across multiple distinct cases simultaneously.
- Pluggable OSINT Connector Registry: Concurrent asynchronous querying of 19 external sources (WHOIS/RDAP, crt.sh, Web Archive CDX, WhatsMyName, HIBP, etc.).
- Auto-Type Detection & Sanitization: Regex categorization and standardizing inputs automatically upon ingestion.
- Link Correlation Engine: Fellegi-Sunter probabilistic matching with an XGBoost refinement layer to calculate edge confidence scores.
- Automated Pivot Detection: Automatically flags critical hub entities (nodes with 3+ connections) to highlight investigative pivot points.
- Generative AI Case Narrative: Built-in OSINT AI Assistant powered by Groq (LLaMA-3.3-70B) to synthesize evidence packs into dossier narratives.
- Multilingual Text-to-Speech (TTS): Built-in Edge TTS engine reading out dossier intel in English, Hindi, and Gujarati.
- Standalone Transliteration & i18n: Dynamically transliterates native Indic scripts (Hindi, Gujarati) to Latin form for unified searching.
- Guided AI Assistant & Tour: Interactive onboarding led by 'LeoAvatar' to guide new investigators.
- Evidentiary Dossier Reports: One-click generation of comprehensive case reports in JSON, CSV, and print-ready PDF formats.
- Legal Offense Mapping: Automatically maps findings to 17 Indian law sections based on extracted evidence.
- Security & Auditing: Cryptographically signed chain-of-custody logging system tracking all investigator actions.
The repository is built as a monorepo containing both the React frontend and FastAPI backend.
Click to expand full directory tree
ERakshak/
βββ backend/ # FastAPI Backend Server
β βββ app/
β β βββ analytics/ # Time-series and mapping logic
β β βββ connectors/ # 19+ OSINT Connectors (WHOIS, crtsh, HIBP, OCR)
β β βββ correlation/ # XGBoost and NetworkX correlation engine
β β βββ middleware/ # Auth, Security, and Rate Limiting
β β βββ routers/ # API Route endpoints (Auth, Cases, Websockets)
β β βββ resources/ # Trained XGBoost models and RAG knowledge base
β β βββ main.py # Application entrypoint
β β βββ models.py # SQLAlchemy Database Models
β β βββ schemas.py # Pydantic validation schemas
β β βββ database.py # PostgreSQL connection config
β βββ docker-compose.yml
β βββ requirements.txt # Python dependencies
βββ frontend/ # React (Vite) Frontend UI
β βββ public/
β βββ src/
β β βββ api/ # Axios endpoints and Mock data
β β βββ components/ # Reusable UI components
β β β βββ cases/ # Case management & chat UI
β β β βββ graph/ # Cytoscape visualization logic
β β β βββ tutorial/ # 14-Step LeoAvatar Demo Tour
β β β βββ ui/ # Cyberpunk desktop window UI elements
β β βββ hooks/ # Custom React hooks (WebSockets, Auth)
β β βββ locales/ # i18n Translation files (en, hi, gu)
β β βββ pages/ # Main application screens
β β βββ state/ # Zustand global stores
β β βββ types/ # TypeScript interfaces
β βββ tailwind.config.js
β βββ package.json # Node dependencies
β βββ vite.config.ts
βββ render.yaml # Infrastructure as Code (Backend deploy)
Orion is built on a highly concurrent, decoupled architecture for maximum scalability and modularity.
graph TD
UI[React / Cytoscape Frontend] <--> API[FastAPI Gateway]
API --> DB[(PostgreSQL on Neon.tech)]
API --> OSINT[Async Connector Engine \n19 Data Connectors]
API --> ML[NetworkX / XGBoost Engine]
ML --> Correlate[Pivot Detection & Correlation]
- Frontend (React/Vite): Operates a cyberpunk-style desktop OS paradigm. Uses
Cytoscape.jsfor heavy graph rendering andreact-globe.glfor 3D geospatial IP mapping. - Backend (FastAPI): Serves as the gateway, executing concurrent OSINT requests utilizing
asyncio.gatherfor rapid fan-out to 19 external connectors. - Correlation Engine: Utilizes Fellegi-Sunter probabilistic matching for a baseline score, refined by an XGBoost ML classifier. High-confidence nodes are assembled via NetworkX to detect network pivot points.
- AI/LLM Tier: Leverages Groq APIs (Llama 3.3 70B for narrative reports/chat, Llama 3.2 11B Vision for OCR extraction).
The database utilizes PostgreSQL managed via SQLAlchemy ORM.
Click to expand Entity-Relationship (ER) Diagram
erDiagram
INVESTIGATOR ||--o{ CASE : leads
INVESTIGATOR ||--o{ IDENTIFIER : creates
INVESTIGATOR ||--o{ AUDIT_LOG : actions
CASE ||--o{ IDENTIFIER : contains
CASE ||--o{ AUDIT_LOG : has
CASE ||--o{ CASE_NOTE : has
CASE ||--o{ LINK_FEEDBACK : has
CASE ||--o{ ALERT : has
CASE ||--o{ NOTIFICATION : has
IDENTIFIER ||--o{ FINDING : produces
INVESTIGATOR {
string id PK
string badge_id UK
string full_name
string hashed_password
}
CASE {
string id PK
string title
string status
string lead_investigator_id FK
}
IDENTIFIER {
string id PK
enum type
string raw_value
string normalized_value
string case_id FK
string investigator_id FK
}
FINDING {
string id PK
string identifier_id FK
string connector_name
string result_type
float confidence
json raw_payload
}
Core Tables:
investigators: Core investigator profiles with bcrypt hashed passwords.cases: Container for an investigation.identifiers: Raw seed inputs (IP, email, domain, photo, etc.).findings: Extracted intel discovered by the OSINT connectors, linked directly to an identifier.audit_logs: Append-only, cryptographically signed activity tracking for evidentiary chain-of-custody.link_feedbacks: Stores investigator corrections to graph edges, which are continuously used to retrain the XGBoost model.
Orion utilizes a RESTful JSON API via FastAPI.
Click to expand Core API Routes
POST /auth/login: Authenticates an investigator and returns an HS256 JWTaccess_token.POST /auth/signup: Registers a new investigator (requires Lead Investigator approval).
POST /cases/: Creates a new case workspace.GET /cases/{case_id}: Retrieves case metadata.GET /cases/cross-correlate: Scans the entire database to find identical identifiers shared across multiple separate cases.GET /cases/{case_id}/graph: Retrieves the computed NetworkX graph (nodes and edges) for Cytoscape rendering.GET /cases/{case_id}/evidence: Exports the entire case (identifiers, findings, notes, audit logs) as a signed JSON payload.POST /cases/{case_id}/chat: Sends a query to the LLM (RAG) to chat with the case evidence.GET /cases/{case_id}/narrative: Triggers Llama 3.3 70B to auto-generate a comprehensive markdown case report.
POST /identifiers/: Manually injects a new seed identifier into a case.POST /identifiers/{identifier_id}/run-connectors: Triggers the async fan-out of 19 OSINT connectors to pull intel for a specific identifier.
POST /api/tts: Uses Edge TTS to stream generated audio buffers in English, Hindi, and Gujarati.WS /ws/cases/{case_id}: Live WebSocket feed for case updates.
Backend (Python 3.10+):
- Core API:
fastapi,uvicorn,pydantic - Database:
sqlalchemy,pymysql(PostgreSQL) - Security:
python-jose(JWT),passlib,bcrypt - ML / Graphing:
networkx,xgboost,rapidfuzz(string matching) - AI Integrations:
groq,edge-tts(Text-to-Speech) - OSINT:
httpx,dnspython,anyascii(transliteration)
Frontend (Node.js 18+):
- Core Framework:
react19,react-dom,typescript,vite - Styling:
tailwindcss,framer-motion,lucide-react - State & Data:
zustand,axios,react-router - Visualizations:
cytoscape,react-globe.gl,three - Localization:
react-i18next,@indic-transliteration/sanscript
- Clone this repository:
git clone https://github.com/YourOrg/Orion.git
- Set up a PostgreSQL database (e.g., local install or free tier via Neon.tech).
- Create a
.envfile in thebackend/directory based onbackend/.env.example:DATABASE_URL=postgresql://user:password@host/dbname GROQ_API_KEY=your_groq_key SECRET_KEY=your_jwt_secret
cd backend
python -m venv venv
# Windows: venv\Scripts\activate | macOS/Linux: source venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000The API will be available at http://localhost:8000
# In a new terminal window
cd frontend
npm install
npm run devThe UI will be available at http://localhost:5173
The project is designed to be deployed entirely on free-tier infrastructure.
- Import the project into Vercel and select the
frontenddirectory as the Root Directory. - Build Command:
npm run build - Output Directory:
dist - Set Environment Variables:
VITE_API_BASE_URL: The URL of your deployed backend (e.g.,https://orion-backend.onrender.com)VITE_WS_BASE_URL: The websocket URL of your backend (e.g.,wss://orion-backend.onrender.com)
- Connect your repo to Render and create a new Web Service.
- Root Directory:
backend - Environment:
Python 3 - Build Command:
pip install -r requirements.txt - Start Command:
uvicorn app.main:app --host 0.0.0.0 --port $PORT - Add your
.envvariables to Render's Environment section.
- Create a free Neon.tech PostgreSQL instance.
- Copy the Connection String and add it as the
DATABASE_URLenvironment variable on your Render backend. The backend usesBase.metadata.create_allto automatically initialize the schema on first boot.
Hackathon: ERakshak (2026)
Track: PS_01: Advanced Multi-Platform OSINT Intelligence Aggregator
- Nishchay Mittal
- Neel Mhaske
- Leon Lobo
- Shreya Ashar
This project is licensed under the MIT License.