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:

AspectOther AppsQript
DatabaseConvexPostgreSQL
ORMConvex queries/mutationsDrizzle ORM
Auth@convex-dev/authbetter-auth
AI ProviderAnthropic Claude (via OpenRouter)Google Gemini 2.0 Flash
File StorageConvex filesHetzner Storage Box (filesystem)

Database Schema (Drizzle)

Auth tables (better-auth): users, sessions, accounts, verifications

Application tables:

TableDescription
transcriptionsMain records with title, status, language, speaker count, duration, file path
segmentsTranscript segments with speaker label, start/end timestamps, text
speakersSpeaker display names and assigned colors
summariesAI-generated meeting summaries

Transcription status progresses through: pending -> processing -> completed (or failed).

Key File Paths

PathDescription
src/lib/db/schema.tsDrizzle database schema
src/lib/transcription/gemini-provider.tsGemini transcription provider
src/lib/auth.tsbetter-auth configuration
src/lib/repositories/transcription.repository.tsData access layer
src/app/api/upload/route.tsFile upload endpoint
src/app/api/transcriptions/[id]/process/route.tsProcess uploaded audio
src/app/api/transcriptions/[id]/export/route.tsExport to MD/TXT/SRT
src/components/transcript-viewer.tsxTimeline-based segment viewer
src/components/speaker-editor.tsxSpeaker name/color editor
src/components/upload-zone.tsxDrag-and-drop upload

Development Phases

  1. MVP (Complete) — File upload, AI transcription with diarization, speaker editor, transcript viewer
  2. In Progress — Export (MD, TXT, SRT), email sending
  3. Planned — Live browser recording (MediaRecorder API)
  4. Planned — AI meeting summaries
  5. 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

HanseNexus 2026