From the initial announcement of the challenge at the opening ceremony, our team felt that there was a major gap between the availability of immigrant-directed resources, and the ability of immigrants to identify and access them. While service providers do try to become well-known in the community, they are ultimately limited by lack of personnel and reach. Samaritan is designed to address this problem -- since it can run autonomously, any number of people can use it to identify local resources. Since it is text-based, it's accessible -- it doesn't require Wifi, can be used in multiple languages, and doesn't put any time pressure on the respondent.
What it does
Samaritan is comprised of two parts: one is immigrant-facing, and one is provider-facing. The first part is used as a texting service, with appropriate chatbot responses. A user is prompted to state their language of choice -- all subsequent messages will be in this language. The user is then asked, "what do you need?" Any response will be analyzed using NLP (natural language processing) to identify the intent of the user. Depending on this intent, the user will be asked a series of follow-up questions to determine eligibility or suitability of certain relevant resources. Finally, the user will be provided a tailored list of local resources, in areas ranging from healthcare, to legal assistance, to childcare, to employment.
On the service provider side, a webapp is used to input resource data. Providers access a spreadsheet-like interface linked to the chatbot. While the webapp is initially populated with common fields (address, languages spoken, etc.) the provider can extend this functionality by adding new columns. Any new fields are associated with a question, and automatically integrated into the chatbot. This allows providers to maintain a database of up-to-date, specific information for local immigrants, with no effort into maintaining the chatbot service itself.
How we built it
Samaritan is largely built in React and Python. The chatbot uses the Dialogflow API to determine user intent, and makes use of Microsoft Azure's Translate Text API to ensure that many languages are supported. Texting services are provided by twilio, and the chatbot itself is written in Python. The webapp is built in React, and uses Firebase for the service provider database. We also made use of Handsontables to create a spreadsheet-like user experience, since we wanted the database to be as accessible as possible to service providers.
Challenges we ran into
We realized on the second day that the venue Wifi wouldn't be able to support a messenger bot, so we turned to twilio for an alternative solution. We struggled to learn and work with react for the first time. In general, learning how to use many of the languages and APIs which were entirely new to us was a major challenge.
Accomplishments that we're proud of
There were a couple of insidious bugs which were quite satisfying to finally stamp out. However, the proudest moment for all of us was when we first saw the product work in its entirety, with the customization on the provider database side affecting the immigrant-side experience. We saw the power and potential of a largely automated, yet highly specific service.
What we learned
We learned how to use dialogflow, react, twilio, and how to get every component to cooperate properly. Perhaps more importantly, all of our team members learned a great deal about the unique challenges facing immigrants, and many of the legal and emotional particularities of the situation.
What's next for Samaritan
While we do feel that Samaritan is ready to be deployed in the community, we hope to form relationships with more immigration service providers, to broaden our database as well as the nuance of our chatbot.