Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Frisket

I wanted a spreadsheet that did AI things for investigative journalism. The NYT made one for itself, so I made one for the rest of us. Use Frisket to analyze zillions of documents, decades of audio, centuries of video, all in a friendly (???) spreadsheet format.

A screenshot

Quickstart

Use the cloud version or run locally with Python 3.12:

pip install 'frisket-data[standard]'
frisket ./my-workspace

What Frisket can do

Frisket can analyze spreadsheets, PDFs, images, videos, probably a hundred other things. You drop content in, then run AI against it in a structured way. It's a new way to do projects like:

Those were all done the old-fashioned hard-work way, though. No one has done anything with Frisket yet, so you can be the first.

Installation

Frisket requires Python 3.12.

Single-user

If you just want to run Frisket on your own computer, use solo mode.

pip install 'frisket-data[standard]'
frisket ./my-workspace

If you want more shiny extras, use pip install 'frisket-data[complete]'.

Team

If you're running Frisket on a server or want to support multiple uers, go for team mode.

  1. Download the server install bundle (frisket-server-<version>.tar.gz)
  2. Extract it, then run sudo ./frisket-install from the extracted directory
  3. The installer asks a few questions and then you should be good to go. It can keep Frisket behind an SSH tunnel or serve a public domain using Caddy for HTTPS.

Codex claims it requires Linux, Docker Engine, and Docker Compose. It installs Frisket under /srv/frisket.

Hosted (cloud)

You're lazy, I get it! Go to app.frisket.dev and request access. This is a Frisket instance that I personally run.

CAVEAT: The big, fancy parts

Frisket is split into a few parts, including a lightweight server and a heavier sidecar to optionally offload intensive work. As a result, different installs have slightly different features.

For example, for OCR local/team installs can add Surya 2 natively with the sidecar's ocr extra and an upstream-supported inference backend. The standard sidecar container and Cloud uses dots.mocr instead. I haven't set the local sidecar up to easily publish yet but I promise you can ask your agentic coding environment and it can walk you through the process.

For the models included in the standard sidecar container, build the image yourself by downloading the repo and running the following commands from the repo root.

docker build -t frisket-models:local ./sidecar

Then run the sidecar and connect it to Frisket.

MODELS_TOKEN="$(openssl rand -hex 32)"

docker run -d \
    --name frisket-models \
    --restart unless-stopped \
    -p 127.0.0.1:8500:8500 \
    -e FRISKET_MODELS_TOKEN="$MODELS_TOKEN" \
    -v frisket-models-cache:/models \
    frisket-models:local

export FRISKET_MODELS_URL=http://127.0.0.1:8500
export FRISKET_MODELS_TOKEN="$MODELS_TOKEN"

frisket ./my-workspace

Extras

Local models

Fair warning: some of these aren't yet available without some additional setup.

It's easy to set up an API key to talk to AI providers like OpenAI, Anthropic, OpenRouter and Gemini. But! You can also do most everything on the privacy of your own machine.

  • LM Studio and Ollama are supported out-of-the-box for local LLMs/VLMs
  • Local transcription can be powered by Parakeet, Whisper, MOSS, VibeVoice-ASR
  • spaCy or GLiNER for local entity extraction
  • Plenty of OCR engines like RapidOCR, Surya 2, dots.mocr, PaddleOCR-VL, Tesseract
  • PDF to Markdown conversion with Markitdown, Docling

Write a plugin

Plugins can add actions, panels, imports, integrations: pretty much anything. They're easy to make!

frisket plugin init --id example.my-plugin --output ./my-plugin --with action
frisket plugin build ./my-plugin
frisket plugin validate ./my-plugin

Me

Hi, I'm Soma!

I teach data journalism at Columbia's J-School where I run a year-long Data Journalism MS and a nice short summer program. I give a lot of talks on AI and wrote history's friendliest PDF-processing library.

Email me at jonathan.soma@gmail.com.

People say things like "oh buy me a coffee if you like this" but no, I'm more demanding: go look at these poor cats and then donate to my cat rescue.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

frisket_data-0.1.1a70.tar.gz (8.8 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

frisket_data-0.1.1a70-py3-none-any.whl (9.3 MB view details)

Uploaded Python 3

File details

Details for the file frisket_data-0.1.1a70.tar.gz.

File metadata

  • Download URL: frisket_data-0.1.1a70.tar.gz
  • Upload date:
  • Size: 8.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for frisket_data-0.1.1a70.tar.gz
Algorithm Hash digest
SHA256 f541487fe6626cb1efcd3347345596f23c247b89a59c561e0c95d6309146b34f
MD5 2c223bf6218c60224064299a4b0e925e
BLAKE2b-256 0c982d1028ab63823573e8a77c5bf53084a87166a6b8cb6f1f91fba6cd70f74f

See more details on using hashes here.

File details

Details for the file frisket_data-0.1.1a70-py3-none-any.whl.

File metadata

  • Download URL: frisket_data-0.1.1a70-py3-none-any.whl
  • Upload date:
  • Size: 9.3 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for frisket_data-0.1.1a70-py3-none-any.whl
Algorithm Hash digest
SHA256 4195013e94f3e780e80c6646a9ae8ceeadec21411e4c4763933952f10a3b26f1
MD5 23178611698adf71bf7e7c55cac58c3f
BLAKE2b-256 44ef1f1da0142f4c1484348092839150ac2f7bb05e37973bb0530e71c06a7ca1

See more details on using hashes here.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page