Kpop idol profiles

Displays a chloropleth map of Boston with all the districts highlighted based on misconduct severity. Severity is calculated based on consequences of the misconduct. For example, if the consequence of the misconduct was just a verbal telling-off, severity score assigned was 1. If the officer was suspended for 3 months or less, it was a score of 2. If the officer was suspended for 3+ months or terminated, the score is 3. Officers within the specific district can then be selected to display further statistics and visualizations in terms of how their misconduct has trended over the years. Finally, if the visualizations provided are not sufficient for the user, there is a chatbot feature where a user can prompt an AI to pull data to create new visualizations.

Data was stored on Supabase, front end is vibe coded using Gemini AI in tailwind, and backend was built with flask

We ran into data challenges where officers were not directly linked to the district that they worked in. So we were forced to make assumptions that the district in which the officer was making arrests is also the district in which they were assigned.

It was group members first times trying to connect user prompts to Gemini to producing runnable SQL queries, so each time a user prompt successfully worked, it was a big accomplishment for the team. It was also team members first times applying the MLH AI workshops on front end vibe coding with Gemini to an actual project, and it was quite impressive to see what the AI produced.

Besides learning new programming skills, we also got a deeper look into the police department system and understanding how much overtime police get. For example, it was shocking to learn that police get 4 hours of overtime paid for every 15 minutes of overtime worked. We also gained a lot more skills in terms of linking AI to SQL and getting actionable SQL queries to run.

What's next for BPDpop Profiles: Deep dive into the relationships between officers incidents, overtime pay, and officer arrests, overlay of overtime compensation onto the map to easily visualize districts where officers pull the most overtime, update map so that district shapes are highlighted and colored based on severity instead of districts being represented by points on a graph, and ensure officers are only being compared to officers of a similar case style. For example, ensuring that an officer who works on overseeing parades is not getting their misconduct compared to an officer who oversees breaking up drug cartels.

Built With

Share this project:

Updates