Apps
Qript
Experimental AI-powered transcription tool with speaker diarization using PostgreSQL and Google Gemini
Status: Experimental — Build is skipped in CI. Not yet deployed.
Overview
Qript is an AI-powered transcription tool for conference recordings with speaker diarization. It is the only app in the monorepo that does not use Convex — instead it uses PostgreSQL + Drizzle ORM for the database, better-auth for authentication, and Google Gemini for AI transcription.
Key Features
- File Upload — Drag-and-drop upload zone for audio files
- AI Transcription — Google Gemini 2.0 Flash with automatic speaker diarization
- Speaker Editor — Rename speakers and assign colors for visual distinction
- Transcript Viewer — Timeline-based segment viewer with speaker labels
- Export — Download transcripts in Markdown, plain text, or SRT subtitle format
- AI Summaries — AI-generated meeting summaries from transcript content
- Multi-Language — Supports 9 languages: en, de, es, fr, it, pt, ja, ko, zh
Stack Differences
Qript deliberately uses a different stack from other monorepo apps:
| Aspect | Other Apps | Qript |
|---|---|---|
| Database | Convex | PostgreSQL |
| ORM | Convex queries/mutations | Drizzle ORM |
| Auth | @convex-dev/auth | better-auth |
| AI Provider | Anthropic Claude (via OpenRouter) | Google Gemini 2.0 Flash |
| File Storage | Convex files | Hetzner Storage Box (filesystem) |
Database Schema (Drizzle)
Auth tables (better-auth): users, sessions, accounts, verifications
Application tables:
| Table | Description |
|---|---|
transcriptions | Main records with title, status, language, speaker count, duration, file path |
segments | Transcript segments with speaker label, start/end timestamps, text |
speakers | Speaker display names and assigned colors |
summaries | AI-generated meeting summaries |
Transcription status progresses through: pending -> processing -> completed (or failed).
Key File Paths
| Path | Description |
|---|---|
src/lib/db/schema.ts | Drizzle database schema |
src/lib/transcription/gemini-provider.ts | Gemini transcription provider |
src/lib/auth.ts | better-auth configuration |
src/lib/repositories/transcription.repository.ts | Data access layer |
src/app/api/upload/route.ts | File upload endpoint |
src/app/api/transcriptions/[id]/process/route.ts | Process uploaded audio |
src/app/api/transcriptions/[id]/export/route.ts | Export to MD/TXT/SRT |
src/components/transcript-viewer.tsx | Timeline-based segment viewer |
src/components/speaker-editor.tsx | Speaker name/color editor |
src/components/upload-zone.tsx | Drag-and-drop upload |
Development Phases
- MVP (Complete) — File upload, AI transcription with diarization, speaker editor, transcript viewer
- In Progress — Export (MD, TXT, SRT), email sending
- Planned — Live browser recording (MediaRecorder API)
- Planned — AI meeting summaries
- Planned — Clawdbot integration
Shared Packages
@hn-monorepo/ui, @hn-monorepo/i18n, @hn-monorepo/ai, @hn-monorepo/storage, @hn-monorepo/email, @hn-monorepo/analytics, @hn-monorepo/shared