What it does
The rental contract checker will accept a PDF document and tell users if there are missing fields or any breaches of the law in the contract; this will help protect tenants’ rights. In this hackathon, we based our laws off of British Columbia and our algorithm will be analyzing BC Residential Tenancy Act to determine if any clauses violate it. (https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/02078_01)
How we built it
- Throughout the development of this project, heavy usage of Github features have been implemented including:
- Commits, Pull Requests, Issues, Labels, Project Boards, Organizations, Github Secrets.
- Github Actions for Continuous Integration and Vercel for Continuous Deployment.
- The front end is built using the Next.JS framework, ReactJS and Typescript.
- We used Deso authentication to sign into the application and access the personalized wishlist
- For the swift designing process, we used Tailwind and Figma for basic prototyping.
- We analyze the PDF of the rental agreement using python and detect the missing keywords in the rental contract
- All these are packed with FastAPI to open endpoints for Next.js
- Heavy usage of GitHub CodeSpace to code and as a temporary API server.
Challenges we ran into
- Machine Learning models cannot improve their accuracy after reaching a balance point. We used smaller batches sizes and then changed how we split the sentences then, which improved their accuracy a lot.
- Having four people work vigorously on one project meant that we had to be very careful about version control. There were some merge conflicts that were challenging to fix.
- Deso was hard to set up, and there wasn’t enough documentation online for the user profile section.
- Building the code for production was another hassle. Because of the hackathon environment, everyone in the team was in a rush and was pushing not-linted or ones with small/medium bugs. Fortunately our CI/CD was able to capture and let us know. Looking back it helped us keep our codebase clean and prevent future disasters.
Accomplishments that we're proud of
- We built a Natural Language Processing ML model to analyze the semantics of sentences, which is challenging.
- We have really organized the GitHub repo, including branch management and issue boards.
- The UI we made is clean and easy to use for the user using Next.JS
What we learned
- This project gave us a better understanding of an NLP model, including how to build one, debug it, and the different layers used in NLP models.
- We learned how to deal with PDF files in Python, mainly how to read the text from a pdf file
- Due to our heavy use of Git, we learned how to do source control.
- Sleep is important.
What's next for SOTERIA