Skip to content

ZyAzOsK/Voqstra

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Voqstra — Smart Call Analytics & Auto-Follow-Up System

Upload a call recording, transcribe & analyze it with AI, and automatically send a follow-up email based on extracted action items.

Node.js Gemini PostgreSQL Redis BullMQ Docker


What It Does

  1. Upload a call audio file (MP3, WAV, M4A, etc.) via REST API
  2. Queue the job with BullMQ + Redis for async processing
  3. Analyze with Gemini 2.5 Flash (multimodal inference — one call does transcription + AI analysis)
  4. Store transcript, sentiment, summary, and action items in PostgreSQL
  5. Auto-send a follow-up email (via Ethereal test SMTP) if the AI identifies that the call requires a follow-up

Demo Gallery

1. Uploading a Call via API

API Upload

2. Main Dashboard (Digital Art UI)

Main Dashboard

3. AI Insights & Transcript (Side Panel)

Side Panel Top

4. Automated Follow-up Dispatch

Side Panel Bottom Ethereal Email Preview


Architecture

[Audio Upload]
      |
      v
[Express API] --> [PostgreSQL: calls table]
      |
      v
[Redis Queue] --> [BullMQ Worker]
                       |
                       +-- Gemini 2.5 Flash (audio -> transcript + insights)
                       +-- PostgreSQL: call_insights table
                       +-- Nodemailer Ethereal -> messages table

Tech Stack

Component Technology
Backend API Node.js + Express
AI Analysis Google Gemini 2.5 Flash API (free tier)
Database PostgreSQL 16
Job Queue BullMQ + Redis 7
Email Service Nodemailer + Ethereal Email
Logging Winston
Containers Docker Compose

Quick Start

Prerequisites

1. Clone & Install

git clone https://github.com/yourusername/voqstra.git
cd voqstra
npm install

2. Configure Environment

Copy the example environment file:

cp .env.example .env

Open .env and set your Gemini API key:

GEMINI_API_KEY=your_key_here

3. Start Infrastructure

Start PostgreSQL and Redis via Docker Compose:

docker compose up -d

4. Run the Application

You can start the Express API and BullMQ worker together using concurrently:

npm run dev:all

Alternatively, you can run them in separate terminals:

# Terminal 1 - API server (auto-migrates DB on first run)
npm run dev

# Terminal 2 - BullMQ worker
npm run worker

5. Access the Dashboard

Open your browser and navigate to:

http://localhost:3000

API Reference

Upload a call recording

curl -X POST http://localhost:3000/api/calls/upload \
  -F "audio=@sample.wav" \
  -F "customer_name=Jane Smith" \
  -F "customer_email=jane@example.com" \
  -F "customer_phone=+1234567890"

Response:

{
  "message": "Call uploaded successfully. Processing started.",
  "call_id": "uuid-here",
  "job_id": "1",
  "status": "pending",
  "check_status": "/api/calls/uuid-here"
}

Get call status & insights

curl http://localhost:3000/api/calls/{call_id}

List all calls

curl http://localhost:3000/api/calls

Health check

curl http://localhost:3000/api/calls/health

Database Schema

  • calls: id, customer_name, customer_email, customer_phone, audio_filename, status, created_at
  • call_insights: id, call_id, transcript, sentiment, summary, action_items (JSONB), needs_followup, created_at
  • messages: id, call_id, recipient_email, channel, message_body, preview_url, sent_at, status

License

MIT License

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages