Reporting Highlights

  • Announcing Looper: It’s an open-source tool for any newsroom to run AI over its reporting, one row at a time.
  • Real Investigations, Constrained AI: We learned that we could leverage AI effectively by limiting it to one row in a spreadsheet.
  • Built for Google Sheets: Like many newsrooms, we run on Google Sheets. If you do too, all you need is an AI API key to get started.

These highlights were written by the reporters and editors who worked on this story.

Spreadsheets serve a critical role in many investigations at ProPublica. 

So, when we set out to improve how we responsibly utilize AI, our solution sought to merge the computational power and flexibility of AI with the familiarity and rigor of a spreadsheet. 

We’re happy to formally announce that we’ve open-sourced the result of that work: Looper. Already we’re using this system to sort stacks of nonprofit mission statements, filter hours of YouTube videos, sift through court dockets and even pre-research newsworthy individuals. It’s distributed as a Google Sheets extension, meaning it’s available to anyone with a Google account and a Gemini API key.

A Powerful AI in Your Google Sheets

Looper sits right alongside your Google Sheets. The core flow is simple:

  1. Select the spreadsheet columns you want the AI to look at.
  2. Craft the set of directions you want the AI to follow.
  3. Run the AI over each row.

This approach is remarkably powerful and flexible when merged with the existing features of Google Sheets.

Want to know which officials are racking up the biggest travel bills? Ask the AI to pull the employee’s name and total from each expense report in your Google Drive, then use =SUMIF(A:A, A1, B:B) to create a “Total travel spending” column that you can filter by “Greater than 10,000.”

And because it’s hooked into Gemini, Looper can handle many different types of reporting materials:

  • Drive files (docs, PDFs, images, audio and video)
  • Public web addresses
  • YouTube links

 It’s AI and a “for loop.” The logic is that simple.

What makes Looper special is where it lives. Because it’s a Google Sheets extension, it:

  • Takes very little setup. If you can copy a Google Sheet, and provide a Gemini API key, you can install this tool. 
  • Gets Google Workspace integration out of the box. Want to handle a stack of Google Drive files? Just use the “Import Folder” tool to create a column of links. Want to bring PDF text into a spreadsheet cell? Our “Extract Text” tool uses Drive’s native OCR capabilities.
  • Sits alongside Google Sheets, a workhorse of a reporting tool. It’s free and widely adopted by journalists and newsrooms across the country. 

“Spreadsheets have been an essential tool for every project that I’ve worked on,” said Gabriel Sandoval, a research reporter at ProPublica. “You don’t really have to be a data reporter to use them. We use them to track notes, to understand what we have, what we don’t have, to see things in a different and organized way. It’s as essential a tool as a pen and a paper.”

We’re also excited to see that we’re not the only newsroom that’s hitting on this formula. Cheatsheet from The New York Times, Frisket from Columbia Journalism School and blog posts from reporters are reinforcing the idea that AI-integrated spreadsheets have an important role to play in journalism in the months and years to come. 

Why Spreadsheets? Why Not Chatbots? 

Any conversation around AI-enabled tooling inevitably needs to answer the question: Can’t we do this in a chatbot? By chatbots, I mean applications where your main mode of interaction is a chat interface. 

I love chatbots. But the most common pitfall I see reporters stumble into is asking the AI to do “too much” — essentially a bigger, more complicated question than it can handle — though it will certainly try anyway. If you’ve ever had a meandering 50-turn conversation with a chatbot, you know what I’m talking about. The sparkles ✨ gently beckon. 

Most chat experiences available to newsrooms simply offer up solutions too quickly. In investigative journalism, controlling how a question is approached is just as important as the answer itself. To that end, the tabular structure of spreadsheets reframes AI usage in some really effective ways.

Constraining AI to a single row forces you to break big questions into smaller chunks, which are usually easier for the AI to answer and easier for you to audit. (See below for an example.)

Built-in spreadsheet features encourage you to carefully define how AI output should be packaged. AI spaghetti prose is not useful. Categories, options, short text snippets, things you can manipulate in Google Sheets are what you need. Stopping to define them is good friction.  

And finally, rather than LLM-wikis and big AI-generated reports — which often blur the line between source material and generated content — we can constrain AI output to a single cell or single column without polluting the rest of the sheet. 

“I think that it’s natural for people to start with a chat interface, but it’s not an efficient way to work through a problem,” said Brandon Roberts, a news applications developer at ProPublica. “Any time I send a bunch of documents to another reporter, the first thing they ask for is a spreadsheet. And that’s because spreadsheets really are the common language that all reporters share, technical and nontechnical.”

A Quick Example

Imagine you’re an investigative reporter and you want to review video interviews between Glen Beck and Ken Paxton. So, you head to Glen Beck’s YouTube channel, search “Ken Paxton” and copy links to the 45-ish videos that come up. There are both interviews with Paxton and offhand mentions of him — and you think AI can save you a few hours of sorting.

You could dump the list of links into your favorite AI assistant and ask it to “find all the interviews between Glen Beck and Ken Paxton.” It might even get you the right answer… or it might not. But unless you direct it very specifically, you’re letting AI decide how it answers that question.

Now try sticking the YouTube links into a spreadsheet column. On each row ask: “Does this video contain an interview between Glen Beck and Ken Paxton (Yes/No)?” Now you’ve got a record of what the AI thought about each video. Filter on the yeses and you’ve got your list.  

Could you do all this in something like Claude CoWork or ChatGPT Work? Sure, but you’re also replicating the structure spreadsheets give us for free. And I can almost guarantee that your next step with that filtered list of YouTube videos will be to stick it in a spreadsheet and start annotating.  

How We Got Here

When I joined ProPublica a year ago as one of their AI engineering fellows, I was told to help the newsroom figure out how it could use AI for investigations. We’d recently published a set of AI principles, but I had to see what the need looked like on the ground.

So, I introduced myself to every journalist in the newsroom who would make eye contact with me: “Hi, I’m Aaron. I know about AI. I’m here to help you report stories. Please ask me questions. I’ll help you with anything.”

The requests trickled in:

  • “Hey, I have this list of 38,000 nonprofit mission statements, could your AI tell if they’ve removed the DEI language?” (That led to “Deleting DEI” in December 2025.)
  • “I’m working with the U.S. legal code, but thousands of different statutes like ‘42 U.S.C. § 1382’ mean nothing to me, could you use AI to create a dictionary of human-friendly section titles?” (This assisted with our newsroom’s investigation into dropped Justice Department cases in March 2026.)
  • “I have this big folder of scanned court documents, but all the interesting files are the exhibits with a big yellow sticker on them. Could AI filter the rest out?”
  • “I want a list of law enforcement agency FOIA submission URLs; could the AI go out and find those?”

After about a month or so I started to notice the pattern:

  1. Every journalist had a big list of stuff: mission statements, court documents, law enforcement agencies. 
  2. They wanted to do something to each item in that list: compare the text, classify a document, find the one relevant link.

I started satisfying these requests in a code notebook using a pretty simple formula: import the data, workshop an AI prompt and, finally, run the prompt once over each row of data.

It didn’t occur to me what I was really building until I attended one of the newsroom’s regular “how we got this story” meetings. In this case, it was about the investigation into the Trump administration’s deportation of Venezuelan men, many of them without criminal records, to El Salvador’s CECOT maximum-security prison. The centerpiece of the discussion was a meticulously maintained Google Sheet with over 200 names on it and a painstaking accounting of each man’s life — where they were from, their social media accounts, even the kinds of tattoos they had. 

All those things reporters were asking me to do? They were really asking me to do stuff to their spreadsheets. So, I got to work building software that would meet our reporters exactly where they worked. 

What’s Next?

We’re announcing this tool now because it’s already demonstrated the ability to help reporters investigate. But, we’re going to continue making Looper and the methodology underpinning it easier for reporters to adopt and more powerful overall. 

Right now, the trickiest maneuver for our reporters is turning their reporting question/intuition into a prompt they can execute over each row of their dataset. We’re testing a new skill called /looper-prompt-guide to make this process easier.  

And while we continue to make Looper more accessible, we’re expanding its capabilities to capture the most ambitious applications of AI in a spreadsheet. 

Since I got to ProPublica, the majority of tasks I see involve AI operating over information already in the spreadsheet: “extract this birthdate from this PDF,” “summarize this court document in a single sentence,” etc. But, there is a sizable class of requests that require the AI to go out into the world and bring information back. Requests similar to:  

  • “Can you take this list of names and find indications on the internet of criminal charges?”
  • “Here’s a list of companies, can the AI search the Better Business Bureau and the company website and give me the names of their chief operators?”
  • “Given this list of truck crashes, let’s use AI to identify instances where the operator was a contractor.” 

The goal is still to define a task for an AI to execute row by row. The spreadsheet is still the starting point and the home base for the investigation. What’s different is the larger scope of what you’re asking the AI to do and the types of capabilities it needs to complete the task. 

We’re still in the early stages of operationalizing this workflow — making it easier for reporters to set up and control. Because as always, the more you ask AI to do, the higher the likelihood it does something you don’t expect.  

Ultimately, our goal here is to enable ProPublica reporters to produce high-quality, impact-driven journalism. As long as the Looper format helps journalists get where they want to go, we’ll continue building on this work.