Human Rights Matter

Sheldon Sutherland
5 min readMar 4, 2021

My team and I partnered with the members of the Human Rights First organization. This organization has been a clarion voice in defense of human dignity and the rights and freedom of people everywhere.

In America, many persons wish to seek asylum. In many cases, it is hard to measure and analyze what factors would lead a judge to reject or approve an asylum request.

My team and I decided to develop a web application that would aggregate data on asylum cases. Users will then be allowed to explore that data and then predict and visualize how a judge might rule on a specific asylum case.

Our biggest fear was performance and speed. No user likes slow load times. They can have real consequences for your business. If your application is slow, users won’t wait. They’ll leave. This is the reality of web application development issues today.

Overcoming Challenges

One of the main features of this application was an instant case review in which I worked on. When a user uploads a case file, the system will give them the values it was able to detect and prefill, and with empty inputs for those it wasn’t able to. I mainly worked on the front-end side of the application and worked on how the information would be sent and received from the backend API.

The main challenge I discovered when implementing this feature is how I would obtain certain values from an uploaded case file and display them within a form format.

I overcame this challenge through communication with my fellow team members as well as utilizing react-redux online resources on the web. I first had to communicate with my backend team members to provide me a route that I would be able to use. This route would be used to first upload a case file and then have that route return in the response the relevant information from that case file that I would need.

Once the case data was uploaded using the backend API route. The backend would then send that case file to the data science side where they would obtain the relevant information from the case file using a Data Scraper. Once the data is scraped then it would be sent back to the backend side to be stored. Once stored in the backend, the data would return to the frontend side of the application to be displayed within the form.

React with redux was utilized to send the case file to the backend API as well as to retrieve the scraped data from the case file. The scraped data was then displayed within a form for users to edit and then submit.

The code snippet below demonstrates how I used redux to send the case file to the backend API, once the file is sent to the backend, the relevant data from the case file is stored within a payload to be used by the case form.

The payload retrieved from the snippet above is then saved in a react state component and displayed within a form. The snippet below shows how that was done.

Once the data is uploaded within the form a user has the option to edit that data and then submit that form to be reviewed by an admin user.

Future of the Product

In the final version of this application the main features:

  1. Upload case information using a form.
  2. Search through approved cases based on various fields eg, case id and refugee origin.
  3. Filter cases by time periods.
  4. View approved case files.

Demo of product: https://youtu.be/AlVtTCo3Ec8

Future features that may be implemented:

  1. View a judge’s approval percentage.
  2. View a judge’s denial percentage.
  3. View the key factors that resulted in a case denial.
  4. View the key factors that resulted in a case approval.

Technical challenges when trying to implement these new features may be:

  1. Figure out how to analyze each case file to extract the key factors that would make a judge approve or deny an asylum request.
  2. Figure out how to quantify and measure each judge’s approval or denial rate.

During this endeavor, I have had the pleasure of working with a wonderful team. We always try to give feedback wherever possible. My team has commented on the fact that I am an extremely talented and passionate software engineer who enjoys helping other team members overcoming their challenges. They also commented on the fact I could be better at communicating my problems and asking for help when I come upon a problem. Hearing the positive feedback felt good but hearing the negative feedback really allowed me to grow and get better. When I get stuck on a problem now I am better able to ask for help instead of toughing it out on my own.

This project really furthered my career goals. I was able to work on a real-world project with a full team consisting of a front-end, back-end, and a data science team. Working on this team really improved my communication skills, I am better able to communicate what I require from a backend developer and I am better able to express to stakeholders what an application is doing without too much technical jargon. I was able to build upon my existing problem-solving skills by learning how to implement a product that I have never built before. I am better able to appreciate the planning process and the importance of taking sufficient time to plan. Effective planning may reduce hours of redundant code and we should all practice that.

Overall this was a great experience and the skills I learned over this time period will be treasured.

--

--