Upload a sales call recording in any language. Saleval transcribes audio with speaker diarization, and scores the call across 5 sales-quality criteria using AI.
YouTube URL support is available in the dev environment only.
Built with Express, React + Vite, Sarvam AI (transcription), and OpenRouter (DeepSeek).
Access is by invite only. Contact me to get access.
Recording → Sarvam saaras:v3 transcription + diarization → DeepSeek rating → results
- Upload an audio file (MP3, WAV, M4A)
- Sarvam transcribes audio with diarization — supports Hindi, English, and more
- DeepSeek (via OpenRouter) rates the call on 5 criteria
- Results show overall score, per-criteria breakdown, strengths, improvements, and the full transcript
cp .env.example .env
# Edit .env — set SARVAM_API_KEY and OPENROUTER_API_KEY
npm install
npm run devFrontend at http://localhost:5173, backend at http://localhost:4000.
# Render build command
npm install && npm run build
# Render start command
npm startSet env vars (SARVAM_API_KEY, OPENROUTER_API_KEY, etc.) in the Render dashboard — no .env file needed. The backend serves both the API and the built frontend on a single port.
- Node.js 18+
- npm 9+
- ~500 MB disk for Puppeteer Chromium (tests only)
- Backend: Express, multer, ffmpeg-static, sarvamai, OpenRouter API, cookie-parser
- Frontend: React 18, Vite 8
- DB: File-based JSON (
backend/src/data/db.json) - Tests: Puppeteer
├── backend/ Express API server
│ └── src/
│ ├── server.js
│ ├── routes/ evaluate, history
│ └── services/ youtube, sarvam, openrouter, db
├── frontend/ React + Vite SPA
│ └── src/
│ ├── App.jsx
│ └── components/ EvaluateForm, ResultsView, HistoryList, TimingsPanel
└── tests/ Puppeteer E2E
MIT

