Relieving the Burden of Proof
Making life easier for human rights defenders
Human Rights First is an organization that seeks to help people from all over the world achieve entry into the USA. Formed in 1978, HRF is dedicated to connecting asylum-seekers with legal teams that work pro bono to help them navigate the ever changing legal waters. It is made up of passionate women and men who view it as an American moral obligation to help those who are fleeing violence and looking for a better future. In addition they work globally to spur on policy changes anywhere human rights are disrespected. If you (like me) did not know how the asylum process works before you read this article, here is a helpful chart to break down the steps to achieving asylum:
One of the problems HRF faces is the need to centralize all of the information surrounding the cases that they have been a part of. An app that would hold all these cases would give lawyers and legal teams easy access to case information where they could track trends in rulings and see if precedence is available for any new cases they are putting together. This app would also track trends in the judges who rule on these cases. Biases could easily be identified and arguments that had prior positive reception could all go into setting a new case up for success. Our product would scrape relevant data from PDFs uploaded to the system and separate useful information in an easily searchable database. This information would be tracked and maintained by the app administrator. Going into this project I was little intimidated as it handles a heavy issue and could potentially affect people’s lives.
Easy Does It
One of the main goals my team had was to improve the user experience in this app. These lawyers need to find what they are looking for quickly. To this end I contributed the visualization of information by reorganizing the main information tables, connecting profiles for individual cases and judges, and adding HRF logos to the page headings. I trimmed down the columns in the main tables presenting information on individual cases and judges and updated the search categories to match the column headers. The previous team had set up the skeleton for each of the judges to have a profile page where the cases they ruled on and the trends in their rulings are tracked. I connected this profile with the main tables. Now that the user could look more indepthly at the judges, the cases themselves needed the same type of profile page. This page I created and connected with the main table and the corresponding judge’s profile. Everything the lawyer could want to know about a particular case or judge is now quickly accessible.
Now you’ll notice that under the case information it says “Update this Case”. This feature exists but it doesn’t exist. If the user were to click on this link it would take them to a blank page. This is because the API endpoints for this feature do not yet exist. Essentially we know behind which door the functionality to make this feature work exists but the door itself has not materialized yet. The “Update this Case” feature was brand new to this app whereas all of the other features of our app were inherited from the previous team. New endpoints would have been needed for this feature to be fully functional. Due to time constraints we were not able to create these endpoints but the next team that inherits our codebase should be able to put them in place.
If you take a close look at the data presented in our app you will notice it is very generic. This is the result of a technical issue that our team faced early on and had to find a workaround for. From the onset of our project our Data Science team let us know that the codebase they were working with was very messy. They improved upon the codebase to the best of their abilities with the help of some senior developers, but in the end we were not able to connect the Web and Data Science pieces. In order to have a working frontend (the app that you see) our Web team had to create filler data from a handful of PDFs instead of pulling from the whole data base of thousands of documents.
Taken for a spin
The link below the picture of the app will take you to a demo of all the features. These features include:
- Fully functional Login page
- A Case View table listing of the asylum cases along with the ability to view the original case PDF and/or download the case as a PDF or CSV
- Any of the cases from the table can be selected and sent to the Saved Cases tab by checking the box on the left and clicking the Save Cases button on the right. The Saved Cases page has a table displaying information about each saved case, the ability to download a PDF or CSV, and a delete button to remove individual cases from the list when the user is done with them.
- Case Profile page for each case showing more in-depth information than what is found in the case table. This page also links to the ‘Update Case’ function which is not fully functional yet
- A Judge View table listing all of the judges from asylum cases in the database
- Judge Profile page for each judge showing all of the cases they have ruled on and charts to track trends in their rulings
- Any of the judges from the table can be selected and sent to the Saved Judges tab by checking the box on the left and clicking the Save Judges button on the right. The Saved Judges page has a table that displays information about each saved judge. The judges can be deleted from the table when they are no longer relevant to the user.
- Search By function at the top of both of the tables allows the user to set specific search parameters and filter out irrelevant rows in the tables.
- Upload Case page has a form that allows the user to upload a case PDF from their device and save it to the database. Once uploaded it would be scraped for relevant information, this information would be added to the database and then would display in the app for all the users to see.
- Fully functional Logout button logs the user out and redirects to the Login page.
Overall our final product did meet our goal of making it easy for the user to navigate the app and find what they needed. Although it is not perfect yet, I think we made great strides towards having an efficient app that meets all the requirements of HRF lawyers. Team work and communication were essential to our progress in building this product and I am sure this experience will help me in any web development position I find myself in in the future. I am confident that the future teams that inherit our codebase will be able to create the endpoints to make the ‘Update Case’ feature operational. The biggest challenge facing future teams will be connecting the Web product with the Data Science database. In our time working on this product the two teams worked parallel to each other; building out the product that they had independent of what the other team was working on. It is my hope for future teams to be able to work more in tandem in order to have a finished product that the lawyers at HRF are able to utilize in helping asylum seekers.