For one researcher, Dovetail's core is a loop an agent can build in a sitting: drop in interview recordings, transcribe them locally with Whisper, highlight and tag quotes on a transcript that follows the video, search everything, and let a model suggest themes. Clip reels come from ffmpeg. What you give up is the organisation side: a shared repository stakeholders browse on their own, feedback streaming in from support and sales tools, SSO and redaction. With Dovetail now selling only a one-project free plan or an enterprise contract, a local build is the practical step up for a freelancer or a small team.
Before you buildIf you run one study at a time, Dovetail Free (one project with AI summaries) may already be enough.
Build me a local user-research repository to replace Dovetail. Requirements: - Node.js 22 + TypeScript: a Fastify API and a React UI built with Vite; `npm start` serves everything on http://localhost:4650. - Projects hold notes. A note is an uploaded recording (mp3, m4a, wav, mp4, webm), a pasted transcript, or a .vtt, .docx or .txt file. Media goes to ./data/media/; everything else to better-sqlite3 at ./data/research.db. - Transcribe recordings locally with whisper.cpp through the nodejs-whisper package (base.en model by default, set in .env) into timestamped segments, with a progress bar. - Transcript next to the player: clicking a line seeks the media; selecting text creates a highlight with start and end times. Tags come from a project tag list I can create, rename, merge and colour. - A tag board with one column per tag and highlight cards, filters for participant, date and project, and full-text search over all transcripts and highlights with SQLite FTS5. - Optional AI (ANTHROPIC_API_KEY or OPENAI_API_KEY in .env, or OLLAMA_MODEL): summarise a note, suggest tags for untagged highlights that I accept or reject one by one, and group a project's highlights into themes with quotes. - Export: a highlight reel as one MP4 cut and joined with ffmpeg, and a Markdown report of themes, quotes and timestamps. - Single user. No accounts, no telemetry, local-first; only the optional AI calls leave the machine. - Out of scope: recording live calls, feeds from support or review tools, sharing with stakeholders and SSO. - README: installing ffmpeg and the whisper model, where data lives, backups.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Dovetail.
Add a Dovetail importer to the research app in this folder. Requirements: - Accept the CSV files Dovetail exports per project (data, highlights, tags) and the .vtt transcripts downloaded per note. - Read the CSV headers first, show me the column mapping and ask before importing anything. - Create one project per import: notes from the data CSV, highlights and their tags from the highlights CSV, and attach each .vtt to the note with the same title. - Keep highlights without timestamps as text-only quotes. - Print imported, skipped and failed counts; running it twice must not duplicate anything. - Update the README with Dovetail's export steps.
Add speaker labels to transcripts in the research app in this folder. Requirements: - After transcription, run pyannote.audio speaker diarization in a small Python helper (Hugging Face token from .env) and merge the turns with the whisper segments. - Let me name speakers per note (Interviewer, P3) and filter highlights by speaker. - If diarization fails or no token is set, keep the unlabeled transcript. - Update the README with the Hugging Face token and model-terms steps.
Add a shareable report to the research app in this folder. Requirements: - From a project, pick themes and highlights and generate a static folder ./exports/<project>-<date>/ with index.html, the quotes and a short MP4 clip per highlight cut with ffmpeg. - It needs no server: the folder opens from disk or uploads to any static host. - Replace participant names with P1, P2 unless I tick "Include names". - Update the README.
Add a question box over all projects in the research app in this folder. Requirements: - Embed transcript chunks and highlights with nomic-embed-text through Ollama and store the vectors in SQLite with sqlite-vec. - Answer with the model in .env using only the 8 most relevant chunks; every answer cites note, speaker and timestamp, and clicking a citation plays that moment. - Re-embed a note when its transcript changes. - Update the README.
Research teams pay so findings outlive the project: one searchable place where product managers and designers find earlier evidence without asking a researcher. At company scale, security reviews, redaction and links to call and support tools matter as much as the analysis itself.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Free | $0/user | $0/user | 1 project, 1 channel, 1 dashboard; basic AI chat and summaries limited to that project. |
| Enterprise | custom | — | Unlimited projects, channels, dashboards, Docs and agents; semantic search, AI clustering, redaction, SSO, audit log, queries from Slack and Teams. |
| Legacy self-serve plans | custom | — | Older card-billed paid plans that existing customers can keep. |
Free covers one project, one channel and one dashboard, with basic AI chat and summaries inside that project.
Yes. An AI coding agent such as Claude Code, Codex or Cursor can build a usable personal version in one session with the prompt on this page, running on your own machine.
Dovetail's pricing is usage-based or varies by plan.
A shared repository that stakeholders search on their own; Channels: feedback pulled in from support tickets, app reviews and calls; Integrations with Zoom, Slack, Salesforce and HubSpot; Redaction, SSO, audit logs and the HIPAA option; Translation into 75 languages. If any of those matter to you, keep paying.
Yes: QualCoder (open source), Taguette (open source), noScribe (open source).