Hello Frisket!
Frisket, a tiny grid-based baby, emerges from its chrysalis
When I teach investigative journalists how to use AI, we're obligated to go through a laundry list of tools and techniques.
Google Pinpoint for extracting people and organizations, Gemini Notebook (née NotebookLM) for general-purpose Q&A, Claude for Sheets (RIP, my child) for extracting structured data from text blocks, MacWhisper for transcribing meetings and interviews, OpenRefine for clustering company names, and a thousand and one ever-changing tools for OCR, scraping, data analysis... The list goes on forever, not to mention that it also changes when your audience is in São Paulo or Dubrovnik or Tokyo.
So, we need a tool. A tool that:
- Does the useful general-purpose AI stuff (classification, extraction, entity recognition)
- Has a reasonable familiar and useable interface, and doesn't require you to be a technical wunderkind (sorry, Pydantic!)
- Has an audit trail so you can undo/redo and understand how you did the work
- Allows easy swapping/comparison between models
- Does stuff with... every kind of file that exists? PDFs? Videos? Audio? Emails?
Earlier this year I saw a few presentations about the New York Times' Cheatsheet, an internal tool used to do all sorts of fun stuff in an investigative context. I hadn't actually seen it at that point, though, my only visions were through pitch-perfect illustrations (hi Juli!) and listening to recordings from NICAR (hi Dylan!).
I'll talk more about the open source ecosystem of journalism later, but let's just say: we needed a public, open-source version of Cheatsheet. Now I knew it was something that could exist, it was time to build it.
A few rounds of automated research and one very detailed spec document later, Claude Code and I had a great hill to climb.

Now after four months of steering coding agents, I'm slamming that "make public" button. The features are mostly in – instead of new bells and whistles, I now spend most of my time making Codex rewrite infrastructure to be slightly less sloppy. But I suppose putting embarrassing, awful code out there is how things work in the vibe-coding era?
Before I provide the list of what Frisket can do, I want to state that there's a Guides button up at the top that walks you through eight separate workflows.

It's difficult to know how AI can aid you in the world of investigative journalism – or even normal journalism or research as a whole – and hopefully the walkthroughs will be able to provide some inspiration. At the very least they'll be more helpful than this long list of what Frisket can supposedly do! The list:
File imports
- CSV, Excel
- JSON, NDJSON, GeoJSON, KML
- PDFs
- Emails (eml, mbox)
- URLs, audio, video
- Probably more things I can't think of
Text analysis
- Ask each row the same question
- Summarize
- Classify/categorize
- Translate
- Find examples of things
- Extract structured fields
- Named entity recognition
Cleaning
- Parse dates
- Build columns from templates
- Regex
- JSON/jq-style extraction
- Substitution/replacement
- Clustering and combining values
- Fill missing values
Documents
- OCR/markdown conversion
- PDF table extraction
- Media metadata extraction
- Transcription
- Video frame extraction
- Scene detection/find visual cuts
- Find topic changes in transcripts
- Extract portions of media
- Split media or transcripts into segments
Web and research
- Download files
- Download video/audio using yt-dlp (YouTube, TikTok, etc)
- Proxy your yt-dlp calls through your own computer to avoid being bot-blocked
- Screenshot web pages
- Download static or dynamic captures of web page HTML
- Process RSS feeds
Other things
- OCR/transcription/etc comparison engines
- Embeddings for semantic search and semantic joins
- Geocoding
- Table joins
- Materialize sheets from lists of objects
- Export CSVs and Excel files
- Extensibility through plugins
I'm also obsessed with having options, so almost every action that does anything important has plenty of models to choose between.
- Transcription can be Whisper, Parakeet, MOSS, VibeVoice, MAI-Transcribe-2
- Scanned PDFs can be text-ified through OCR with RapidOCR, PaddleVL, dots.ocr, Tesseract (boo), Surya, Datalab's hosted offerings
- Translation can be DeepL, Google Translate, all your favorite AI providers.
- If you love switching up your LLMs, you can use the usual OpenAI/Anthropic/Google, but you can also choose local models (LM Studio and Ollama support by default) or the long and varied list that come through OpenRouter.
The world is your oyster, and the guide is waiting! Go ahead and install Frisket on your own machine or request access to the web version.