CodeVibers case studies Find business applications
Neuro Music: Generative Product and User Experience
Neuro Muzyka — an internal generative product by CodeVibers, developed to test AI music pipelines and user adoption. The case covers how we reached MVP in 3 weeks, where we got stuck, and how this experience now helps us offer AI integrations to clients.
What is Neuro Muzyka?
Neuro Muzyka is an MVP product developed by CodeVibers for internal testing of its generative AI music stack. It generates short (15–60 sec) background tracks from text descriptions (e.g., “lo-fi hip-hop, rain outside the window, 80 BPM”) and lets users rate, save, or regenerate results. The goal is not monetization but learning: understanding how users respond to AI-generated music, identifying barriers to adoption, and designing UX for generative products.
Example user journey
User visits the site → enters a description → selects a style (default: “neuro low,” “cyber pop,” or “eco jazz”) → clicks “Generate.” After 8–12 seconds, receives a track with waveform visualization, BPM, and tags. Next, can:
- Listen with the built-in player;
- Download in MP3 (128 kbps);
- Save to personal playlist;
- Rate (👍/👎) and leave a comment;
- Generate a similar one (with variation).
All actions are logged anonymously: generation time, clicks, ratings, comments—for UX frustration analysis.
MVP Architecture
flowchart TD
A[Telegram Web App / Web UI] --> B[FastAPI Backend]
B --> C[Stable Audio Open 2.0]
B --> D[Whisper v3 for lyrics (optional)]
B --> E[Lyrics-to-Mood Parser]
C --> F[Audio Cache + Embedding DB]
E --> G[User Feedback Loop]
G --> H[Reinforcement Fine-tuning (on 500+ votes)]
B --> I[Rate Limiter: 3 req/min per user]
I --> A
Key decisions: open model (Stable Audio Open), not proprietary; caching to reduce response time; Telegram Web App for rapid deployment (no separate frontend needed).
Typical mistakes when launching
- Reevaluating AI Music Quality Users expected “human-like” results but got noise in 20% of tracks. Solution: added a “demo tag” and warning: “This is an experiment. The track may not match the description.”
- Timeout too long. 12 seconds is critical for UX. Reduced to 8 seconds by removing unnecessary post-processing (e.g., spectrogram generation).
- Lack of quality control. The first 100 tracks were tagged “by ear”—without metadata. We added automatic emotion tagging (using DistilBERT) and BPM estimation.
What to check before launching a generative MVP
| Criterion | Why it’s important | How to check |
|---|---|---|
| Generation time < 10 sec | Attention loss after 8 seconds | Test with 20 users and a timer |
| Clear demo limitation | Lowers expectations, increases loyalty | Text review in UI and README |
| Feedback mechanism | No ratings—no data for improvement | 👍/👎 buttons + comment |
| Caching and Fallback | Avoids 500 errors on model failure | Model error simulation: should display fallback track |
MVP Economics: What We Saved
Launch in 3 weeks, budget — 120,000 ₽ (internal resources). Main expense categories:
- GPU credits (Hugging Face + Yandex Cloud): ~45,000 RUB/month (but only 2 weeks of active testing → ~7,500 RUB)
- Development (2 engineers × 3 weeks): ~100,000 ₽
- Testing (5 users × 2 sessions): ~12,500 ₽
Total: ~120,000 ₽. Without internal resources: ~350,000 ₽ (external frontend + DevOps + QA).
Important: We do not monetize. The product is a “lab” to understand how AI music affects customer engagement in products (e.g., CodeVibers).
Pseudocode: How Generation Works
function generateTrack(prompt: string, style: Style): Track {
// 1. Parse and enhance prompt
const enrichedPrompt = moodParser.enhance(prompt, style)
// 2. Generate audio (Stable Audio Open)
const audioBytes = stableAudio.generate({
prompt: enrichedPrompt,
duration: 30, // sec
style: style.id
})
// 3. Post-processing
const bpm = estimateBPM(audioBytes)
const tags = tagger.extract(audioBytes)
// 4. Caching
cache.set(`track:${hash(prompt)}`, {
audio: audioBytes,
bpm,
tags,
createdAt: now()
})
return {
id: uuid(),
audioUrl: s3.upload(audioBytes),
bpm,
tags,
isDemo: true
}
}
Key feature: isDemo: true — a flag displayed in the UI that affects logic (e.g., prohibits commercial use).