Login using email or Social Media
Register using email or Social Media
Main Page: User has a high Risk
Main Page: User has a Medium Risk
Main Page: User has a Low Risk
Main Page: User 'making contact' with another user using QR codes
Self Reporting: Users can report symptoms or report diagnoses
With the outbreak of the Corona Virus and the varying responses from different counties, Social Beat aims to be another tool that can be used by health officials to utilize the ever-expanding power of social media to help with contact tracing efforts. As countries begin lifting the stay at home orders, especially here in the US, the importance of contact tracing becomes even more important.
What it does
Social Beat allows people to report when they go to places or interact with other people. It uses Linear Algebra to build adjacency matrices of your network and compute your risk value of getting or being sick based on symptoms that you self report through the apps and the risk values of people around you.
How I built it
The application was built using Angular 9 as the frontend and Firebase as the backend. Though this decision was not made because of anything special about Angular 9 or Firebase, but simply because I'd had some experience using Angular and since this app does not require and overly robust backend, it was an easy decision to make it serverless by using Firebase as the backend. Other Libraries/Tools used:
- Figma Studio: For designing the User Interface
- Qrcodejs: For generating the QR codes
Challenges I ran into
Seeing as to how healthcare is not my field, there was a good amount of cursory reading I had to do on the topic of contact tracing and how it is implemented. Even after that, although I was able to come up with a general formula/algorithm to compute risk factors, there are a lot of parameters that will need to be set by healthcare officials based on observed characteristics of the disease such as their infection rate, the incubation period, etc.
Privacy and Anonymity
Privacy and anonymity were two major concerns for me, though its difficult to implement as a web application. Ideally, I would like to make this as a native application so I have access to the devices MAC or some other way to generate a UUID for each user so rather than having to link to their social media, they can stay anonymous (AND not need to log in) but for the system to still identify them based on their device. At the same time, the application would not be much use if healthcare workers did not have a way to identify who they should be checking out next. I will need to work on some kind of opt-in option for people who want their information available for healthcare workers to maybe reach out if their risk factors reach a certain value.
Self Report and Malicious Actors
With the fact that this app is based on self-reporting and require honest users to make reports, one concern I had was of bad actors who may report faulty information. However, with the nature of how the risk factors are computed, it will be hard for a single bad actor to have a major effect on the network as the risk factor is computed by taking an aggregation of data from many people in the network. Additionally, as the degree of separation increases, the significance of their fault data drops significantly. Say the disease has a 0.05 or 5% chance to infect someone you come in contact with, someone who is 2 degrees of separation would have 0.0025 or 0.25% chance of having been infected from you. The principle is similar to how blockchains work to validate a public ledger by making sure everyone is an agreement, social beat should work as well as long as there are enough good actors and the network and sufficiently large. Just like blockchains it is still susceptible to a 51% attack if there are a significant number of bad actors.
Accomplishments that I'm proud of
Coming up with the equation was particularly fun as I got to directly use the things I had learned for Linear Algebra to apply to this problem. The technique is nothing novel, as it's used by search engines to rank sites, I'm just applying the same idea to ranking how likely someone may be sick.
Another thing I liked about the idea is the use case is applicable to more than just specifically Covid-19 since it could be used for literally any disease, given healthcare providers can provide the necessary parameters to input into the system. In fact, many of the papers I read on contact tracing involved other diseases like STIs and in some cases utilizing social networks led to a nearly 64% increase in finding potential cases
What I learned
Doing my own research, I learned a lot about how contact tracing works and some initial attempts to use social media as well with it. Some interesting sources I found include:
- COVID-19 CONTACT TRACING TRAINING: GUIDANCE, RESOURCES, AND SAMPLE TRAINING PLAN
- Case and Contact Management for STIs: Internet-Based Contact Tracing
- Incorporating a social networking approach to enhance contact tracing in a heterosexual outbreak of syphilis
What's next for Social Beat
As much of a buzz word it is, I would like to eventually implement Social Beat using Blockchains. I feel it would add to the anonymity as well as the data integrity, though at the time of making this, I do not have enough knowledge of blockchains to say how helpful the change would be.
Another eventual improvement I'd like to make once I've converted this to a native application, it will be easier to get geotag data though the whole privacy issue would be a concern. Also being able to access Bluetooth would be a helpful way of maybe allowing the apps to automatically 'register' contact between two people when their devices are close enough without the user having to take out their phones and do it.