Desktop application for qualitative interview research. Audio transcription via Gemini, manual and AI-assisted tagging with a three-level codebook (cluster -> category -> tag), per-second audio-to-transcript linking, and five export formats (CSV, Markdown, REFI-QDA, stats, codebook).
Status: Alpha. Built for personal research use. May be open-sourced once it stabilises.
Linux / Wayland note: Sorry — Tauri currently forces client-side window decorations in some Wayland setups, so Faden may show an ugly custom titlebar instead of your compositor defaults. Upstream bug: tauri-apps/tao#1046
Website: https://faden.space
- Project-per-folder. Each project is a directory with
project.sqlite, amedia/folder for original audio, and acache/folder for transcoded WAV chunks. - Multi-format import: audio only, transcript text, transcript JSON, or audio plus matching transcript.
- Cloud transcription via Google's Gemini models with chunked retry and a progress bar per chunk.
- Three-level codebook (cluster / category / tag) with colors, descriptions, and reorder.
- Selection-based tagging with per-quote memos and shared-tag rollups.
- Audio playback driven by transcript clicks, plus loop-current-span.
- AI assists, all explicitly user-triggered (no background calls): codebook generation, pre-tagging, "find more like this".
- Export to CSV (per-quote), Markdown, REFI-QDA XML, stats reports (frequencies and co-occurrences), and standalone codebook (JSON or CSV).
- English and Czech UI.
- Rust toolchain (
rustup) - Node.js 18+
ffmpegandffprobeinstalled on the system- A Gemini API key (https://aistudio.google.com/apikey)
- System WebKitGTK on Linux (Tauri runtime)
git clone <repo-url> faden
cd faden
npm install
npm run tauri dev # development build with hot reloadTo produce a release bundle:
npm run tauri buildOutput bundles land in src-tauri/target/release/bundle/ (deb, AppImage,
or platform-specific installers).
- Launch the app. The project picker opens. Click New project, choose an empty folder. The picker also lists recent projects with inline rename / remove.
- Add your API key. Open Settings (gear icon in the workspace). Paste your Gemini key. Faden stores it in your OS keychain / credential store, not in plaintext project settings. Optionally set the default transcription / AI model and UI language.
- Import an interview. In the left pane click + From audio, pick
an audio file. The app transcodes a working copy via the system
ffmpegand creates a new interview row. - Transcribe. Click Transcribe next to the interview. Long files are chunked; progress is shown per chunk. Failed chunks can be retried.
- Build a codebook. In the left pane add clusters, then categories, then tags. Or use AI -> Generate codebook to draft one from selected interviews.
- Tag quotes. Select transcript text and apply a tag. Optionally add a memo. Tagged spans appear in the right pane with their tags and the underlying audio loop.
- AI pre-tag (optional). Pick an interview, open the AI panel, choose Pre-tag. Review the staged proposals and accept individually or in bulk.
- Export. From the workspace menu choose Export. Pick scope (current interview / whole project / by tag), formats (CSV, Markdown, REFI-QDA, stats, codebook), and an output directory.
- Gemini API key - required for any AI feature. Stored in the OS keychain / credential store.
- Default transcription model / Default AI tagging model - the
model identifiers to pass to Gemini. Default is
gemini-3-flash-preview. - UI language - Auto (OS default), English, or Czech.
- Prompts - per-project overrides for transcription, codebook generation, pre-tagging, and find-more system / user prompts. Empty fields fall back to the built-in defaults.
my-project/
project.sqlite # codebook, interviews, segments, spans, settings
media/ # imported originals (audio, transcripts)
cache/ # transcoded WAV chunks, transient files
Projects are portable: zip the folder, move it to another machine with the same app installed, and reopen via Open folder....
- Rust toolchain (
rustup) - Node.js 18+
ffmpeg+ffprobe- WebKitGTK + libsoup3 (Linux desktops)
npm install # install JS deps
npm run dev # vite-only dev server
npm run tauri dev # full Tauri dev shell
npm run build # tsc + vite production frontend build
npm run tauri build # signed/unsigned platform installer
cargo test --manifest-path src-tauri/Cargo.tomlLinux builds use the system ffmpeg / ffprobe and Arch packaging is
handled via the AUR metadata generated in scripts/generate-aur-package.sh
and scripts/generate-aur-git-package.sh.
- Rust backend:
cargo testfromsrc-tauri/. - Frontend type-check:
tsc --noEmit. - No end-to-end harness yet; manual smoke list lives in
docs/superpowers/plans/.
src-tauri/- Rust backend, Tauri commands, SQLite layer (db/queries/), AI providers (ai/), transcription pipeline (transcription/), export adapters (export/).src/- React 19 frontend. State in Jotai (src/state/), routing via TanStack Router (src/router.ts). No CSS-in-JS, no Tailwind - plain CSS modules.src/ipc/- typed wrappers aroundinvoke(...)Tauri commands. Always add a wrapper rather than callinginvokefrom view code.src/i18n/{en,cs}.json- translations. Files must stay in structural parity; an audit script lives in the polish plan.
See docs/superpowers/plans/ for per-feature plans (01 through 08) and
docs/superpowers/roadmap.md (if present) for the high-level outline.
MIT - see LICENSE.