Skip to Content
Humans and technology

A teenager’s guide to building the world’s best pandemic and protest trackers

Avi Schiffmann, the brains behind the web’s most popular coronavirus tracking site, just launched a protest tracking site. How did he do it?
June 12, 2020
avi schiffman coronavirus protest tracker
Courtesy Photo

The coronavirus pandemic and the protests sparked by the May 25 murder of George Floyd have been the defining events of 2020 so far, and in both cases one 17-year-old has played a major role online: Avi Schiffmann, the creator of the web’s preeminent covid-19 case tracker and, more recently, a protest tracking site.

The trackers have garnered praise for providing concise, instantly updated information. Schiffmann’s coronavirus tracker is so thorough, in fact, that epidemiologists have used it to predict the disease’s spread. Schiffmann has earned the Webby Person of the Year award along with praise from Anthony Fauci, director of the National Institute of Allergy and Infectious Diseases, who called the teen’s site “essential.”

Schiffmann could have rested on his laurels, but the murder of George Floyd prompted another project. This new site is simple and serves one primary purpose: find local protests.

So how did Schiffmann do it? We spoke to him to find out how he got involved—and what advice he could give anyone else who fancies doing something similar.

The interview has been edited for length and clarity.

Learn from the small projects. I made a website for my high school last fall that tracked sports scores, web-scraping statistics I was getting from the state sports website. The original was a terrible website made like a billion years ago. It’s really hard to read and ugly. So I started remaking the school sports site; I accidentally brought the servers down twice. I coded it so the site figured out whose score was higher. If we had a higher score, there was a green W for “win.” If they [the opposing team] had a higher score, there was a red L for “loss.” That website was a precursor for ncov2019.

The 2020 protest site was pretty similar. I saw the protests happening. I was seeing a lot of people talking but not doing anything but post something on Instagram. I thought I should use my platform and actually do something more. I started the website to help.

Identify the problem from your own experience. I started [ncov2019] in late December, early January. I was curious about the coronavirus numbers, but if I wanted the most up-to-date information, I had to look to the Chinese government—and I don’t speak Chinese. The alternative was to read news articles, but they didn’t update dynamically. I was trying to just find a nice-looking dashboard tracker, but I couldn’t find any.

Ask for help. I have a lot of people helping with researching information. Within 36 hours of posting on some coding sites, I had help. There is a lot of information you have to manually gather. I have a team of 12 high-schoolers, around my age, like seniors. I met them all online, and they’re all over. A lot of them are in Asia.

Be patient. I took [coronavirus] information straight from the sources of these government places and started working on the dashboard. I didn’t expect it to be a global pandemic or for the website to be that popular. For a while, during most of January, traffic was decent, like 30,000 a day—not nothing, but not that great. It was neat to see that people were using it. I dropped it in my local NextDoor as the coronavirus had its first US case, and that’s when people around me were like, ‘This is interesting.’” [Schiffman lives in Washington, which is where early cases of coronavirus were located.] Eventually, two weeks later, someone from NextDoor tipped Geekwire, who wrote an article on ncov, and within 24 hours, it went national. Now there’s tons of trackers, but none of them have close to the traffic of mine, and most of them were not created in early January.

Be willing to learn. I use web scraping. It’s complicated, but it downloads the html of any website, then parses it. So for example, I got the Korean government’s health department information. I’m able to download the tables on the site and then add it to the hundreds of countries, then put the breakdowns and all of that. Maintaining a site like this [ncov] is a lot of hassle, and as more countries get infected, individual things can go wrong. I’m not a professional programmer, and I didn’t have the servers for a lot of traffic, so I taught myself the basics of Linux in a weekend and now I use that to access the servers. For the 2020 protest, it’s now automatic and not manual. 

The thing is, you can learn anything online. Any question I have, I can just literally search it online or go on chatrooms with developers. They’re often willing to help you. And most likely, someone has had the same question you’ve had before.”

Know the limits of what you can do with the information you have. All countries are supposed to make this information available, and with countries like South Korea, it’s probably easy to understand and trust. But there are authoritarian governments like Russia and China where it’s hard to know if we can trust the information. A lot of my users have said there is underreported information in a lot of places that might not have the testing infrastructure, like some countries in Africa. And then there’s the US, which hasn’t done a good job.

I don’t want to be hated by people, but a lot of things were very disorganized [in the US compared with other countries]. The world wasn’t prepared for a pandemic like this, and everything was chaotic, but the US was really not prepared for a pandemic of this scale.

Keep costs in mind. I talked to one guy who made a similar tracking site and was paying $700 a month. I’m paying like nothing, like zero cents. I’m using a private server and had a $100 referral credit through Linux that got me far. I think I had to put in $5 at one point because there were so many people concurrently on the website.

The Cloudflare CEO sent me some shirts once after they saw that I used their stuff through an interview. They said they never see themselves portrayed positively and got me an unlimited Cloudflare account with free hosting. So both of them [ncov and the protest tracking site] are hosted for free right now. Otherwise, I’d be paying a couple thousand [dollars] a month.

Remember your role and responsibility. Being the biggest site out there for coronavirus information is really cool! It’s insane. It’s used by epidemiologists. So many people rely on the website, and there’s a lot of international pressure. If something comes up and it’s daytime in Africa but I’m sleeping, well, I have to deal with it and get up and address it.

Don’t let the trolls deter you. A lot of times I wake up at 3 a.m. to search through the web server and figure problems out. A lot of sketchy things have happened. I’m not a professional developer, so it takes me time. A lot of people have said, “Oh this is so easy to program, any experienced developer could have made this in a week or so.” I’m like, “If it’s so easy, why didn’t you do it?”

School is fine, but passions count. I didn’t go to boot camp or college or anything. I just have a lot of self-motivation in figuring things out. The best way to learn programming, or anything in general, is to just try something simple and figure things out as you go along.

I’m not a really good student. No, really—I was a really bad student. I had a 1.7 GPA. I focused my time on programming-related stuff. In ceramics class the teacher would turn around and I was just working on my coronavirus site, which is what I was passionate about. I couldn’t focus in any class. I’d stay up late working on programming—my attendance rate was 60%. My parents were always hassling me about it. They didn’t care about my programming thing. School is something I was terrible at, so I did dual enrollment at community college and Mercer High School [where he attended], but even there, I was always programming things. 

Remember who you are—even if it’s tempting not to. A lot of adults have asked me why I haven’t taken any deals for selling the site. And honestly, I don’t want to. I can see why adults are against my decision. I just want to make really high-impact stuff. I could have made something really big and lived the rest of my life in the Bahamas. But I guess I don’t care to do that; I want to continue to make high-impact stuff for a lot of people. Also, if I sold, there would be advertisements. That would have caused a lot of problems in case I wanted to shut it down in the future, and would make the site really ugly. I like being in control of my own projects.

What’s next? I have a lot of ideas, I guess. I want to do more. I am thinking about the election, about the user experience, about how to make a good interface. I’m getting better and better at user experiences. I don’t want to track things forever. I also like to sleep a lot. I’m still sleeping all day.

I sort of plan to go to college eventually, maybe? [Pause] I probably won’t go to college. I’m working on more interesting things.

Deep Dive

Humans and technology

Unlocking the power of sustainability

A comprehensive sustainability effort embraces technology, shifting from risk reduction to innovation opportunity.

Drive innovation with a tech culture of ‘connect, learn, and apply’

Offer an ongoing curriculum that aligns to strategic priorities and the latest technology to drive innovation, productivity, and social-good efforts.

People are worried that AI will take everyone’s jobs. We’ve been here before.

In a 1938 article, MIT’s president argued that technical progress didn’t mean fewer jobs. He’s still right.

Building a data-driven health care ecosystem

Harnessing data to improve the equity, affordability, and quality of the health care system.

Stay connected

Illustration by Rose Wong

Get the latest updates from
MIT Technology Review

Discover special offers, top stories, upcoming events, and more.

Thank you for submitting your email!

Explore more newsletters

It looks like something went wrong.

We’re having trouble saving your preferences. Try refreshing this page and updating them one more time. If you continue to get this message, reach out to us at with a list of newsletters you’d like to receive.