Telegram Mini App for discovering Ukrainian music
A TikTok-style feed of 30-second previews that learns your taste and lets through only songs in Ukrainian — so small Ukrainian artists finally get found. Like tracks, follow artists, get notified about new releases.
- Language check
- Every track gets three independent opinions: its lyrics and title, the audio itself (Whisper speech features and a trained classifier), and an artist dossier from MusicBrainz and Wikipedia that Claude Haiku reads, quoting its sources. One confident “this is Russian” is enough to reject a track; letting one in needs all three to agree. Disputed tracks go to a moderator right in the bot.
- Recommendations
- Audio embeddings (CLAP), a map of similar artists and weights learned from real likes and dislikes. Every change is first replayed against past listener reactions: the share of correctly predicted likes and dislikes went from 61% to 73%.
- Engineering
- TypeScript monorepo with a layered architecture held together by 650+ automated tests. It runs in Docker Compose on a small 2-core ARM server: the app, an ML worker (Whisper and CLAP on ONNX Runtime), PostgreSQL, Caddy and automated backups.
Three independent language checks (lyrics, audio, artist dossier) keep Russian-language songs out; recommendations learned from real reactions predict likes correctly 73% of the time, up from 61%; 650+ automated tests.
Node.js 24 · Hono · grammY · Drizzle + PostgreSQL · React 19 + Vite · ONNX Runtime · Docker Compose
Open in Telegram