Over the course of 7 years, the rate of homeless people has increased over 40% and just in 2018, Los Angeles Homeless Services Authority’s Homeless Count reports that over 65% of homeless adults have lived in Los Angeles County over 20 years. This count reports over 52,000 individuals and family members experiencing homelessness in LA County. With homelessness being a large issue in LA, we decided to create a hack that would help address a small part of it.
Despite being homeless, however, a large portion of this community still have or have access to a smartphone that will allow them to interact with our hack. In LA, a study found that over 58% of homeless people currently own a smartphone and over 51% can access the Internet on their device. These numbers put an estimate that our hack can help over 26,000 homeless people in LA.
What it does
Our web-app connects homeless people with food, hygiene, and shelter resources that they may not have access to. By texting a number available on our website, they are prompted with a series of messages. These messages will ask them for the service that they are in need of and for their location. We then use this information to find the 3 nearest organizations (in our database) that provide the service they desire and send them markers on Google Maps that will allow them to get to said locations. Organizations that would like to assist in our effort can also add themselves to our database by accessing the add organizations tab on our website. They are then asked to provide basic information such as their phone number and address.
How we built it
Auxilium’s backend was programmed in Python and makes use of the Twilio API to simultaneously send messages to users as well as update user sessions in our database depending on the user’s response. Our web-app also relies on the Google Maps API to dynamically grab and send the closest known homeless aids (limited to our database) to the user.
Challenges we ran into
The biggest challenge we faced developing auxilium was that we could not test most of our Twilio functions until the very end as they required the application to be deployed on a public server. We found a workaround by hosting it via ngrok so that we had a server to test Twilio. However, we also ran into issues when hosting our web application on ngrok because we had to find the correct way to route the number and receive the URL’s specific to the client. This was eventually fixed through Python’s Flask library and through setting states specific to who was texting the number. On the frontend, we also faced challenges in formatting it to match our initial wireframes. Thus, we ended up sacrificing a little bit of the responsiveness of our website for a more appealing design. The shody internet was also a big challenge to deal with as most of our testing required a stable internet connection. We found a workaround for this by testing at night when it was much more stable.
Accomplishments that we're proud of
For the backend side, we are proud of how we were able to track a single user through states and rework Twilio’s API to pertain solely to that user, especially when we found a way to locate the user using their IP address since that was one of our biggest challenges. This was done by learning how to read and write to a JSON file as our database. Specifically for Twilio, we are excited that we got our Twilio number to work properly when routing to our web application.
And in general, we are proud of the fact that we were able to finish a project that we pivoted to after working on a different idea for 12 hours.
What we learned
What's next for auxilium
During the development of this system, we found that there were definitely areas to be improved upon. Auxilium could benefit greatly from improving its database as a larger database would be able to provide homeless users with more options that are closer. Another aspect that could be improved upon is auxilium’s searching algorithm. Currently, the searching algorithm can be somewhat slow because our application depends on the google maps API to work with our database. In the next iteration, we would be able to improve how our system selects which organizations to test with the maps API in order to improve on the speed of our system. We are also looking into caching past results in case they are relevant to other people. Additionally, we would like to implement a voice or video call option for the users to make it friendlier to those who may have disabilities that would hinder the texting feature useless.