Uses Natural Language Processing to protect the legal rights of consumers. Summarizes any terms and conditions agreement with an accessible Google Chrome extension.


Our original motivation came from one of our team members skipping the terms of conditions like they were nothing, and other another one bugging them about it.

The reason someone keeps on pursuing a goal is as important as the reason they started, and hence some source of motivation was a documentary called Terms and Conditions May Apply and an article by CNN business about the worst terms of services ever.

A study conducted at the Boston College Law Review by Uri Benoliel called The Duty to Read the Unreadable gives us these statistics:

  • 70% of agreements had an average sentence length of more than 25
  • The median Flesch Reading Ease was 34, the recommended is 60.
  • The median Flesch-Kncald score was 15 years of school.

Our concerns were fully validated when we got to know that a massive tech company like Google admitted to the unreadability of its own Terms of Service in 2012 and now attempts to make it as readable as possible, but this is just an appearance of a needle in a haystack.

What it does

The main product is the python backend, with our in-house flask-based WebApp API, which we can use for many of our goals, a chrome extension, a flutter-based android and ios app, and Qt-based local apps on mac and windows. This forms somewhat of a microservice architecture.

The microservice we were able to fully develop and use as a proof of concept was the chrome extension, due to its low requirements, but the ability to build sophisticated view controller mechanisms efficiently and fast.

Chrome Extension

The Google Chrome extension is meant to be source of convenience for our users. Simply by installing our extension and selecting their required text, users can get a customized summary of complex legal documents with a single click. They can also adjust the granularity of this summary and download it as desired.

How we built it

The Google Chrome extension is implemented in JavaScript and styled with Bootstrap. It makes use of a background service worker script and injects content scripts upon various events. We were careful about protecting user privacy and site security, with the use of best practices like avoiding identifiers, cross-site scripting and reliance on external scripts.

The landing page / Demo is built with React and Gatsby and styled with Tailwind.

The Python backend was implemented as a flask web-app. Object-oriented programming was used for the natural language processing model. This was an encoder-to-decoder model that applied transfer learning from a generalized dataset to text summarization.

The Flutter app was created to make the product more accessible across different platforms.

Challenges we ran into

Maintaining best site security practices for our chrome extension, which meant being careful about scripting and identifiers.

Integrating the flask backend with our frontend through a custom API and asynchronous calls.

Setting up and training the NLP model

Accomplishments that we're proud of Structuring our microservice architecture and getting the different pieces to communicate through our custom API

What we learned

Utilizing different members' strengths in different areas was important for concurrent development. Consistent communication was essential for putting the moving parts together. Planning and designing our system together was also pivotal in establishing our next steps clearly.

What's next for TermnCo

The Flutter app is a good example of possibly scaling our application to be more accessible to different users across platforms.