Hi, my name is Jason Kao. I am a data journalist and developer open to freelance opportunities. Most recently, I wrote about Palestine and U.S. immigration at Bloomberg News. Here is some of my past work~

–– –– ––

Satellite Analysis Shows Where Mass Graves Were Found by Gaza Hospitals (Bloomberg News, April 2024)

Role: Israel’s sieges on Gaza hospitals left mass graves in their courtyards. We pitched a story that used OSINT, satellite imagery, and maps to show where the graves were found.

Tools: OSINT to geolocate graves. Photo by Ahmad Salem.

Gaza Reduced to 42 Million Tonnes of Rubble. What Will It Take to Rebuild? (Bloomberg News, Aug. 2024)

Role: We pitched a story about Gaza’s destruction that would be rooted in visualizing the debris. We worked with several editors, reporters, and photographers to construct the story’s flow. I coded the main interactive elements.

Tools: JavaScript/Svelte for animations; R for 3D renders; Python for data processing. Photo by Ahmad Salem.

Satellite Imagery Shows Gaza’s Destruction and Resilience With War Unresolved (Bloomberg News, March 2025)

Role: Pitching, directing story flow, coding interactive elements.

Tools: JavaScript/Svelte; OSINT geolocation; GDAL for coloring and raster processing. Photo by Ahmad Salem.

A Detailed Map Shows How Airstrikes and Refugees Reshaped Rafah (Bloomberg News, April 2024)

Role: Krishna developed a tent detection algorithm on satellite imagery from Gaza. My responsibility was to tell a timely story using the algorithm’s output. I worked with our team to mock up and sketch the story’s form. I coded the story’s interactive elements.

Tools: JavaScript/Svelte for animation; GDAL for raster processing; Illustrator for annotations. Photo by Ahmad Salem.

Paralyzing Curbs on West Bank Obstruct Path to Palestinian State (Bloomberg News, Nov. 2024)

Role: We pitched a story on Israel’s increased repression in the West Bank. I designed and developed an interactive map of the occupation’s physical barriers.

Tools: WebGL for animation; JavaScript/Svelte for interactivity; D3 for vector mapping; GDAL for preprocessing. Photo by Sergey Ponomarev/Getty Images.

Where New York’s Asian American Neighborhoods Shifted to the Right (The New York Times)

Role: Pitching, reporting, processing and analyzing data, and coding the visualizations.

Tools: Python for data processing; R for data exploration; mapshaper for generating map layers; Svelte for presentation

Body Cameras Were Sold as a Tool of Police Reform. Ten Years Later, Most of the Footage Is Kept From Public View. (ProPublica)

Role: Design and development of main interactive elements.

Tools: Svelte/Javascript for interactivity; ffmpeg for image processing

Trump Mass-Deportation Push Overcrowds Miami Krome ICE Center (Blomberg News)

Role: Scraping and database management to break data-driven stories about ICE detention.

Tools: Web scraping; R for data analysis; traditional investigative reporting

Role: The data side of the story.

Tools: Traditional investigative reporting; Python and R for data analysis

React Scrollama: A library for clean scrollytelling in React

Role: Creating the React version of Scrollama! And being an open source maintainer.

Role: Tipped off by a source, began a monthlong investigation into how the law was affecting Texas schools. Reported and wrote the story.

Tools: Traditional investigative reporting; FOIA requests. Photo by Eric Lee.

Hungry, Scared and Sick: Inside the Migrant Detention Center in Clint, Tex. (The New York Times)

Role: Investigative reporting and annotation on top of Jeremy White’s 3D models.

Tools: OSINT; traditional investigative reporting; Illustrator for presentation