IRIS-Intelligence Risk Insight System
AI early warning for crime and unrest across India
Created on 6th December 2025
•
IRIS-Intelligence Risk Insight System
AI early warning for crime and unrest across India
The problem IRIS-Intelligence Risk Insight System solves
The Problem It Solves
Emerging public-safety risks in India—such as unrest, crime spikes, and misinformation-driven tensions—often go undetected until they escalate. Early warning signals exist across news, social media, and local reports, but the information is fragmented, unstructured, and not easy to interpret in real time. Without a unified view of evolving threats, authorities, analysts, and citizens struggle to recognize patterns early, respond proactively, or make informed decisions.
Key gaps IRIS addresses:
- Critical signals are scattered across multiple platforms and are difficult to monitor consistently.
- Existing tools are largely reactive, offering insights only after incidents occur.
- There is no centralized dashboard that visualizes real-time state-wise risk levels.
- Manual data collection slows down analysis and reduces accuracy.
- Citizens lack accessible tools to understand safety trends in their region.
- The absence of early-warning intelligence leads to delayed responses and preventable escalation.
IRIS bridges these gaps by unifying fragmented data into a single, real-time risk insight system that highlights emerging threats clearly and enables faster, more informed decision-making.
Challenges we ran into
Challenges I Ran Into
While building IRIS, I encountered several technical hurdles that required rethinking my implementation and debugging approach:
-
GeoJSON map integration issues:
The India state boundaries did not initially load correctly due to mismatched property names and inconsistent identifiers. I resolved this by standardizing the dataset fields and updating my mapping logic to handle the GeoJSON structure reliably. -
State details not appearing on hover or click:
Event listeners were not being applied correctly to each GeoJSON layer, causing the map to show “unknown” labels. Rebuilding the layer initialization and attaching listeners within theonEachFeature
function fixed the issue. -
Left-side trend panel not rendering:
The panel remained empty because asynchronous fetch calls returned before the UI was ready. I restructured the data-loading sequence to ensure the panel only rendered after the required data was fully retrieved. -
Risk color coding not updating:
Risk levels were stuck on a default color because the color function lacked a proper return path. Debugging the logic and verifying thresholds solved this. -
PDF report showing only the heading:
The export function wasn't capturing dynamic content, so I revised the rendering workflow to ensure the DOM element was fully generated before creating the PDF. -
Deployment paths returning 404 errors:
Initial deployments failed because the hosting platform couldn’t detect the correct output directory. Switching to Netlify with a simple drag-and-drop deployment solved the problem immediately.
Each challenge improved the project’s structure, pushed me to optimize my code, and helped build a more reliable and polished final system.
Technologies used