A radiology transcription and reporting platform that combines real-time medical transcription with AI-powered report generation.
The canonical docs live in ../Documentation/:
- Start here:
../Documentation/README.md - Architecture:
../Documentation/Architecture.md - Database:
../Documentation/Database.md - Credits:
../Documentation/Credits.md - Admin:
../Documentation/Admin.md - Templates:
../Documentation/Templates.md - Pipeline:
../Documentation/Pipeline.md - ASR:
../Documentation/ASR.md - Testing:
../Documentation/Testing.md - Self-hosting:
../Documentation/SelfHosting.md
- Real-time Medical Transcription: Voice-to-text transcription using advanced ASR (Automatic Speech Recognition) technology
- AI-Powered Report Generation: Automated radiology report generation from clinical notes using LLM technology
- Template Management: Flexible template system supporting multiple modalities (CT, MRI, USG, X-Ray)
- Session Management: Organize and manage radiology reporting sessions with Supabase backend
- Multi-modality Support: Support for CT, MRI, Ultrasound, and X-Ray imaging modalities
- Template-driven Reports: Deterministic, template-driven report generation that preserves structure while filling content
- Safety Validation: Built-in validation to catch contradictions and ensure clinical accuracy
- Frontend: SvelteKit 5 + TypeScript + Tailwind CSS
- Backend: SvelteKit API routes (serverless)
- Database: Supabase (PostgreSQL + Auth + Storage + Realtime)
- AI/ML: DeepInfra, Soniox ASR
- Deployment: Railway
- Node.js 18+ and npm
- Supabase project (Auth + Postgres)
From the repository root:
cd frontend
npm installCreate frontend/.env (you can copy from frontend/env.example).
Required:
# Supabase
PUBLIC_SUPABASE_URL=
PUBLIC_SUPABASE_ANON_KEY=
# LLM (at least one)
GROQ_API_KEY=
# DEEPINFRA_API_KEY=
# ASR (Soniox)
SONIOX_API_KEY=Apply the migration in frontend/supabase-migrations/001_production_saas_setup_v2.sql (SQL editor or Supabase CLI).
At minimum this creates:
user_preferencescredit_transactionsusage_analytics- credit functions like
deduct_credits_atomic()andgrant_credits_admin()
npm run devOpen http://localhost:5173.
npm run build
npm run previewPreview runs on http://localhost:4173.
npm run electronnpm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run test- Run Playwright testsnpm run test:unit- Run unit tests with Vitestnpm run check- Type check with svelte-checknpm run lint- Lint codenpm run format- Format code with Prettiernpm run electron- Run Electron appnpm run electron:build- Build Electron app
# E2E
npm run test
# Unit
npm run test:unitfrontend/
├── src/
│ ├── lib/
│ │ ├── pipeline/ # Report generation pipeline
│ │ ├── llm/ # LLM client abstraction
│ │ ├── asr/ # ASR transcription
│ │ ├── templates/ # Template management
│ │ └── ...
│ ├── routes/ # SvelteKit routes
│ └── ...
├── static/ # Static assets
└── tests/ # Test files
The system uses a multi-stage pipeline for generating radiology reports:
- Template Canonicalization: Parses and normalizes report templates
- Reasoner: Extracts findings and derives clinical implications using LLM
- Composer: Fills template structure with generated content
- Validation: Ensures structural and semantic correctness
- Assembly: Final report assembly and formatting
- Real-time voice transcription using Soniox ASR
- Post-processing for medical terminology normalization
- Voice Activity Detection (VAD) for optimal transcription quality
MIT License