Skip to main content

We use cookies for analytics. Privacy

Back to Work
Media & IntelligenceCase study

Juba

AI-Powered Investigative Knowledge Graph

Project Focus
Next.js 16NestJS 10React 19Graph VisualizationAI/MLPostgreSQLLeading AI Models
Juba
Leading AI models
AI Models
WCAG 2.1 AA Compliant
Accessiblity
Multi-layer fingerprinting + encryption
Security
B+ code quality grade
Test Coverage
01

Challenge

Visualizing complex relationships between entities (people, companies, events) requires intuitive graph rendering while maintaining performance with large datasets. Building an AI research agent that can autonomously discover connections adds another layer of complexity.

02

Solution

Juba maps networks with an interactive force-directed graph. The Research Agent uses leading AI models with tool calling to discover entity connections on its own. Session fingerprinting and encryption protect sensitive investigations across multiple layers. The crime board aesthetic ties the pieces together with pinned cards and connecting threads.

03

Results

  • Interactive force-directed graph visualization
  • AI Research Agent with autonomous tool calling
  • Entity profiles for persons, companies, events
  • Timeline view with chronological event tracking
  • WCAG 2.1 AA accessibility compliance
  • Multi-layer session security and encryption

System Architecture

Investigative journalism platform with AI research agent and network visualization

frontend
backend
database
service
ai
cache
FetchVisualizeValidateQueryStoreAgent taskAdd connectionsCache
Next.js Frontend
React + Graph
NestJS API
REST + WebSocket
Auth Layer
Session security
Entity Management
CRUD operations
Graph Engine
Force visualization
Research Agent
Autonomous discovery
PostgreSQL
Entities + connections
Redis
Session + caching

Investigative journalism platform with AI research agent and network visualization

Facing Similar Challenges?

Every business is different, but the problems tend to rhyme. If someone sent you, get in touch and tell us about yours.

A conversation, not a pitch
No obligation
We reply when we can