Inspiration

In December 2025, a local Bengaluru resident named Venkataramana, a father of two, collapsed due to a sudden medical emergency. His panicked family received immediate rejection while trying to get an ambulance and emergency medical assistance. Since his family could not find the required assistance, Venkataramana tragically passed away.

This tragedy highlights a fatal flaw in Bangalore’s crisis support; in crisis, over 200 emergency organisations exist; however, the information required to access them is scattered and difficult to utilise. Bangalore citizens’ pleas for assistance during a crisis are often turned down when they do not follow the exact protocol or know what critical information to lead with. A single miscommunication can lead to a pile of rejections, which can be the difference between life and death. Therefore, citizens can not afford to guess what to do or where to go in times of emergency.

This inspired us to build CrisisConnect so we could bridge the gap between Bangalore’s existing resources and the residents who desperately need them in the moment that matters the most.

What it does

CrisisConnect takes a plain-language description of a crisis and returns a single high-priority action card.

A user types their situation: a flooded home, an elderly parent who has fallen, a family that has not eaten. The system classifies the input across twelve crisis categories, cross-references a structured database of ten Bangalore support organisations tagged by resource type, geographic coverage, and last-confirmed availability, and surfaces the best match. The output card shows the organisation name, a callable phone number, a scripted sentence to say when someone picks up, and a list of documents to carry. Two ranked fallback options appear below. The emergency numbers 108, 100, 1916, and the iCall mental health line appear on every result regardless of query type.

Using artificial intelligence, CrisisConnect handles classification and matching instantly; the Bangalore resident only has to describe the problem. This makes it easier for residents to receive assistance in times of crisis.

How we built it

The entire application runs as a single index.html file with no framework, no build step, and no backend. HTML, CSS, and JavaScript are co-located in one file that opens directly in a browser. The core logic works as follows- on submission, the application injects the full organisation database as JSON into a structured system prompt and sends the user's message to the Groq API via a browser fetch call. The system prompt instructs the model to return a strict JSON object containing the crisis classification, a plain-language summary of the user's situation, the primary recommendation with a call script and a document list, and two fallback organisations. The application parses that JSON file and renders the action card section by section with a staggered 150ms fade animation. The organisation database is synthetic, retrieved from publicly available information about real Bangalore relief organisations, including BBMP Disaster Relief, Akshaya Patra, Victoria Hospital, Bowring and Lady Curzon Hospital, Nightwatch Shelter, iCall, and the Vandrevala Foundation. The API key is entered by the user at runtime and held in a JavaScript variable for the session. It is not stored, transmitted to any third party, or written to disk

Challenges we ran into

Getting the model to return strict JSON on every call, without preamble or markdown fences, required careful system prompt design. Early iterations produced well-formed prose responses that broke the parser. The fix was explicit instruction in the system prompt, combined with a JSON cleaning step before parsing, stripping any residual backtick fences the model occasionally inserted. The second challenge we ran into was the action card rendering sequence. Displaying sections progressively with staggered animation while keeping the DOM structure clean required separating the render logic from the parse logic and using setTimeout chains rather than CSS transitions alone, since the content does not exist in the DOM until the API response arrives. Designing for genuine crisis usability was a harder constraint than it sounds. Every word on the output card had to earn its place. We cut anything that required the user to make a decision or hold two pieces of information in mind simultaneously.

Accomplishments that we're proud of

The call script feature is the detail we return to most. Rather than surfacing a phone number and leaving the user to work out what to say, every primary result includes a single sentence: "Tell them you have two children and need emergency shelter tonight in Koramangala." In a crisis, that sentence removes one more point of friction between a person and the help they need. The responsible AI boundary is also explicit in the UI rather than buried. The notice that the AI routes but does not adjudicate sits on the card itself, not in a separate terms page. We wanted that distinction to be visible to the user at the moment they are reading their result.

What we learned

We realised the complexity of prompt engineering for structured responses : the model needed to understand not just what to return, but also avoid format violations. We discovered that treating the model’s output format as a strict contract rather than a simple suggestion made our results significantly more consistent and reliable.

We also learned that a carefully built synthetic dataset can demonstrate a real use case. Every organisation in our database reflects real phone numbers, real coverage areas, and real resource types Furthermore, several of us got hands-on experience implementing APIs and building databases for the first time, which elevated our knowledge in software engineering principles.

What's next for CrisisConnect

Upon the submission of this website, we can now look towards connecting to local NGOs such as the Rapid Response foundation, Active Bengaluru foundation, and the Bembala foundation, which each encompass different yet equally vital crisises. Through this connection, we will be able to maximise the app's efficiency and spread awareness of it, thereby increasing its overall usefulness. Additionally, we can look to connecting with the Bengaluru government, creating a medium of alert transmissions between the government and the general population. In case of a citywide emergency, the government can also alert the citizens to ensure city-wide safety. We can also look towards moving the website to a mobile app, making the software more accessible to the general public.

Built With

Share this project:

Updates