As students living in Chicago, we often hear about all the crime that happens in the city. So we decided to build an app to help people stay safe and informed about anywhere they're going. The name comes from the latin word "Caveat", which means "beware".
What it does
Using the Google Maps API and the Chicago Crime Data updated weekly by law enforcement, Caveat will use matching algorithms to display the radius and severity of a dangerous area near you. Caveat then uses machine learning algorithms to look for any trends in order to predict when and where a type of crime might occur; though there's no way a prediction like this could be perfect, advanced machine learning algorithms are capable of analyzing large amounts of data much better than humans can, leading to more feasible predictions.
1) Create a concise yet informative app to inform users of the dangers of their immediate area.
2) Provide insightful analytics for crime in a region, including prediction of probably future crimes.
How I built it
We split up the project into its major components to start off - a MongoDB server that holds crime data, a Node.js Express Server to serve data to clients, and an iOS app as the end product. Our first step was to then parse Chicago's Crime Data files into the MongoDB server, uniformly assigning a type (assault, theft, etc) and weight (murder is worse than identity theft!) to each crime, along with verifying the crime's data was sufficient - rejecting those lacking in data. Then, we setup the server so client apps could request crimes in their area, along with a radius of danger and its severity. All the while, the team was also developing the iOS client app, which beautifully reports the crime data at the user's local coordinates while offering useful insights into the region.
Challenges I ran into
One of the biggest challenges we ran into was incorporating Python's powerful machine learning libraries into our Node.js server, as the two use entirely different languages. However in the end, we were able to establish a link between the two and effectively utilize them in tandem.
Accomplishments that I'm proud of
Along with overcoming the language barriers, we are especially proud of the independent and encapsulated facets of our products. The Mongo Database by itself could be used by law enforcement to catalog crimes in an effective manner, allowing for quick queries into the past - looking at past crimes on a certain street, for instance. The Node server serves as an open book for any client app - from our own local crime reporting app to a large scale city analyzer or safe home shopping service, the possibilities with a centralized and free server are endless. Overall, we feel like we've created more than just a useful iOS app.
In reality, we came fairly close to realizing the dream we had. Our iOS application offers useful insight into the danger of the user's current area, in-depth analytics, and machine learning-based predictions on what crime might happen next. Voice control and widget extensions allow for ease-of-use while the powerful backend supplies complex yet intuitive information. The police interface allows law enforcement to easily examine crime patterns in a simple interface while being able to respond to crime reports in a timely manner. While some minor kinks still need to be worked out such as the speed of the machine learning algorithm, overall we think we built something very close to what we imagined.
What I learned
A lot of our team experienced their first introduction to Node.js and Mongo, while all of us benefited from learning about artificial intelligence algorithms. We feel that being on the edge of a new technology like machine learning offers a fun way to educate ourselves about how to program the future.
What's next for Caveat
In the future, we feel that our application has possibilities for expansion in many directions. First, we believe that the app's functionality and outreach would be augmented by sourcing data from more cities, working with local and state governments to publish their crime data online. Secondly, we think that our app could be used for more than just displaying information - rather, it could act on it. For example, one idea we had as a team was to combine the crime "ratings" of regions to create foot, bike, or vehicle paths that provide the safest experience for the user.