During the last semester of my undergraduate degree, I took a special study course called CS 4984: Open Source Intel Lab. This was a fantastic class that taught us how the intelligence community uses Open Source information to solve crimes and expose online disinformation campaigns.
The final project for this course was to create a tool that can be used to aid in Open Source investigations. To inspire us, Giancarlo Fiorella, an expert OSINT investigator from Bellingcat, talked with our class about his existing investigative toolkit and some of the areas that are most in need of additional software tools.
As he put it, there are certain tasks critical to the OSINT process that are extremely mundane and repetitive, but there is no good way to automate them yet. For instance, many times he has footage of a crime taking place but the location is unknown, so Google Maps is used to find an area of land that matches the background of the video. Even though this task of searching the world for a matching plot of land is a highly repetitive task that requires a relatively low amount of expertise in OSINT investigations, there is currently no way to automate this task with artificial intelligence. As a result, he is forced to spend days, even weeks of his valuable time searching Google Maps until he can find a match.
This is a great example of a task that would benefit from crowdsourcing. By gathering a large group of people with relatively little experience in OSINT but with the human intelligence to be able to determine if a section of land matches the background of the video, the expert investigator can focus on tasks that require greater knowledge of OSINT investigations while the crowd divides and conquers this time-consuming task.
To his benefit, Giancarlo has a large following of fans online that would like to volunteer to help him, but unfortunately, there is no great way to facilitate this crowdsourcing.
Without a dedicated platform for the experts and their crowds to organize crowdsourced OSINT investigations, it is very difficult to capitalize on all of this collective human intelligence.
Through this problem, I saw an opportunity to create a platform where expert investigators could create investigations and post tasks that they need help completing, and crowdsourcers could respond to these tasks.
To promote collaboration within the platform, the site would have a chatroom so crowdsourcers could ask questions to the expert and discuss the tasks amongst themselves.
Eventually, this idea evolved into a full-fledged social media site for collaborative OSINT investigations, complete with user bios, teams, and a notification system.
To build this site, I first made a mock design of what all the common designs would look like using Figma:
(Expand the frame for a better view)
Common Components
After creating the common components, I then used them to create mock designs for the desktop and mobile views:
(Expand the frame for a better view)
Desktop View
Mobile View
With these mock designs as a point of reference, I set out to build the real thing using React and Material UI on the frontend and Node, Express, and MongoDB on the backend. To create the chatroom, I relied on Socket.io for real-time communication.
At the time this was probably the biggest project I had ever worked on, and it taught me a lot about what to do and not do when building out a social media platform.
There is certainly a lot I could do to improve this project, but after the class ended I was forced to put this project on the shelf and move on to bigger things. Perhaps one day I will pick it back up and expand it from a proof of concept to a real product for the world to use.