The COVID-19 crisis led to a constant barrage of information from academia, news outlets and governmental organisations. This meant that a team had to collect, synthesize and summarize all the information available to inform our nation’s public health policies.
That was the task entrusted to the public health intelligence team I was a part of. We had to scan and compile information from a set list of websites daily, and we tagged and forwarded our articles along to the rest of the team for further synthesis and compilation for policy stakeholders.
When I first joined, I found the work very menial and thought that there had to be a better way of doing things. The team was sending out the same articles multiple times and it was up to individual team members to search our inboxes and make sure the same thing was not shared before.
A few of us suggested syncing our Google Chrome browsers to the same profile; we would bookmark articles before sharing so as to avoid the duplicates arriving in our mailboxes. However, with 20+ people syncing to the same Google Chrome profile and concurrently adding bookmarks at the same time, Google soon rate-limited us and rendered our initial solution unviable.
I decided to pick up a JavaScript course and programmed a simple bookmarking Chrome Extension in 2 days. The backend was built with Flask, tortoise and an sqlite database, hosted in an Ubuntu container and exposed via an API endpoint, while the frontend makes use of the chrome API to listen for user actions in the browser and interact with the backend API.
It has been 2 months since my team started using the solution, and my database has collected over 45,000 unique urls. This means 45,000 less manual queries for checking that an article had not been shared before! With this initiative, I brought the productivity benefits of a less cluttered inbox, lighter mental load and faster scanning overall to my team.
It works just like the chrome bookmarking feature, except without the rate-limits - exactly what my team needed :) GitHub repo here - open to feedback and suggestions!
This was an interesting first attempt at javascript - it was fun being able to make something that made a huge difference to my team’s workflow in such a short amount of time.
I also finally figured out what asynchronous programming is all about. Challenge completed!