A Step Towards Ending Child Homelessness

Neil Tschopp
5 min readJul 30, 2021

Over this past month, I have had the pleasure of working on an application for the Family Promise organization in Spokane, Washington. This non-profit’s primary focus is to keep children off the streets and they hope for a future where no child has to experience homelessness. Family Promise strives to achieve this goal in three different ways: preventing families from becoming homeless through rental assistance and targeted case-management, providing emergency shelter to homeless families, and preparing families for sustained career and financial success.

The organization has a mobile application being developed to assist their project managers with documenting and determining the proper services necessary for a family. I was joined by a combination of seven other data scientists and web developers in helping Family Promise develop this app. Our team was in charge of taking over application development left from a prior team where we were tasked with updating the user dashboard, creating functionality for determining the eligibility of a family towards specific services, and making visualizations to show who has been helped by these services.

Visualizing Success

When meeting with the stakeholder of the organization he emphasized that the visualizations were important for not just making the data clearer for the project managers, but they would also be very useful for receiving grants. As this is a non-profit organization, I felt that this was the task most worth putting my effort towards.

My team inherited some mock datasets with detailed information regarding the age, sex, and veteran status among other demographic features, as well as service dates, service types, and locations of services provided. The primary feature I wanted to showcase was how many services were used monthly while also breaking down the frequency of specific services used that month. I broke down the service types into the top ten most used and combined all of the other services together to avoid a messy graph. After grouping the data points by month, I created a Pandas crosstab that showed the frequency and types of services used each month. From there I was able to use Plotly Express to execute a wide bar chart (pictured below) from the crosstab. This visualization should prove to be very important when applying for grants, as the organization can accurately show the growth rates of services over time when plugged in with real data.

One challenge I was presented with was that the stakeholder wanted the software for the application to be applicable across other organizations from just his own. This wound up being a little tricky at times, as I was unsure of how to efficiently group values in a series together. I initially started by getting the unique values of a series and plugging those into a for loop that made conditional statements filtering for only rows containing that value in the given data frame. I added those unique values and the corresponding lengths of their filtered data frames into a dictionary and created a bar graph showing the results.

I did not like that there was a useless legend off to the side of the graph, and I also wanted to be able to group these service categories into uses by demographics. This led me to reach out to the other data scientists on the team to come up with a better solution. After going over the code and possible solutions to our problem, we came to the conclusion that a Pandas crosstab would automatically group together all unique values of multiple series and compare them to each other. This wound up with each service on the chart being split by a specified demographic, and making the legend useful as well. The final step was then to develop a function that takes inputs for both a series of services and a demographic and outputs a bar graph showing their relationship to each other. This keeps the function generalizable enough that it could be used across other organizations with similar goals.

Final customizable function that compares demographic distribution within a used service.

Passing the Baton

Over the past month I had been working with another team’s code and adding my contributions to it, but now it is time to pass my team’s work onto the next. We accomplished much of what we brainstormed in the first week. The frontend team fixed many bugs associated with the user dashboard, the backend team better optimized the use of the application on a tablet, there is now an outline set in place for an eligibility form that takes in specifications for potentially determining if a family meets the requirements for given services, and finally, there are functions made that can create visualizations depicting the distribution of service uses.

Although my team made progress on the app, there is still plenty of work that needs to be done. There are desires by the stakeholder to be able to upload spreadsheets that add to the database, one of the visualization endpoints currently uses a very slow geo map that needs to be updated, and there needs to be endpoints added to utilize the created visualization functions. I did receive some feedback from my data science teammates indicating that I should update the team on my contributions more often, and perhaps we could have finished the visualization endpoints sooner if I had done so. I look forward to improving this aspect of my career in the next team project I get the opportunity to participate in. Overall, I am very thankful for the opportunity to work with a full team on this project, and the exposure to the processes of the web development side has been very valuable to me as a data scientist. I wish Family Promise and the next team good luck, and I look forward to seeing what developments and features come of the software in the future!

--

--