Inspiration
Prosidy is the rhythm, stress, and intonation of speech or poetry. Often called the "melody of language," it includes the pitch, volume, and pacing that add feeling and meaning beyond the exact words used. This is exactly the analysis we do to our customers' cold calls.
Cold calls are notoriously difficult to make: I mean, how could it ever be easy having to listen, think, respond, and notice when the other side is losing interest?
Most sales tools only analyze a call after it ends, but by then, the conversation has already went off the rails. To change that fact, Prosidy gives you a real-time sales copilot and a per-second trace of the predicted response of an average listener across your call. We redefine sales tools by helping analyze your performance in these calls, and move you towards the right growth.
What it does
Prosidy is a real-time call copilot. During a live call, the browser captures microphone and camera input, and audio chunks are sent to the backend for speaker-labelled transcription. Each completed turn is passed through a deterministic conversation-state engine that tracks momentum, talk ratio, objections, derailments, buying signals, and timing.
The copilot then uses the recent transcript window and current call state to rank possible conversation plays. When appropriate, it streams a concise suggested response back to the interface, along with the rationale and guardrails behind that suggestion.
For recorded calls, Prosidy runs the same analysis pipeline after upload. It generates:
- Speaker-separated transcripts
- Per-second predicted focus and response signals
- Interactive heatmaps and timeline traces
- Brain-inspired visualizations using TRIBE model output
- A deterministic call scorecard
- An AI-generated debrief with weaknesses, actions, and follow-up recommendations
Prospect research is handled through Browserbase Search and Fetch, which retrieves public professional information and returns source-backed context. Prospects are assigned a persistent callee_id, allowing calls, research, and history to be associated with the same person across sessions.
Call records, transcripts, scores, and prospect records are indexed in Elasticsearch. Authentication and sessions are handled separately through MongoDB or local durable storage, with the authenticated user ID used as the caller_id and ownership key for Elastic queries.
How we built it
- Next.js, React, and TypeScript for the web application
- Python and FastAPI for the backend
- OpenAI models for transcription, coaching, summarization, and post-call debriefs
- Elasticsearch for call history, transcripts, profiles, and prospect records
- MongoDB/local durable storage for authentication and user sessions
- Browserbase Search and Fetch for public prospect research
- TRIBE signal processing for exploratory predicted-response visualizations
- HTML video/audio APIs for live recording and playback
- CSS and SVG visualizations for timelines, heatmaps, signal traces, and call insights
Authentication and call data are intentionally separated: MongoDB handles identity and sessions, while Elasticsearch stores the searchable call corpus. The authenticated user ID connects the two systems.
Snowflake Cortex generates the post-call action brief on claude-sonnet-4-5, quoting the transcript verbatim. Tiger Data (TimescaleDB) stores per-second call signals in a hypertable with a continuous aggregate. Baseten refines the follow-up email draft. Google Gemini and ElevenLabs drive the practice-call prospect and its voice. Auth0 and MongoDB Atlas handle sign-in and sessions. Sentry watches the API. The backend runs on a Vultr Cloud Compute instance, and the whole thing is live at prosidy.ca, a GoDaddy domain.
Challenges we ran into
One major challenge was balancing usefulness with honesty. A signal that looks precise can easily be misunderstood as a measurement of a person's actual emotional state. We had to design the interface to clearly distinguish model predictions from observed facts and include context wherever the data could be overinterpreted.
Latency was another challenge. A live copilot cannot wait several seconds before responding to every turn. We had to keep transcription, state analysis, retrieval, and suggestion generation lightweight enough to fit into the rhythm of a real conversation.
We also had to handle incomplete calls. Audio can be noisy, speech can be missed, a call can end unexpectedly, and a prospect's identity may not be known until they introduce themselves. The system therefore supports an optional prospect selector before the call, transcript-based fallback research, and graceful degraded states.
Finally, we had to make dense analytical data feel understandable. Brain-inspired visualizations, signal curves, transcript heatmaps, and coaching recommendations can quickly become overwhelming, so we focused on progressive disclosure: show the important signal first, then let the user open explanations when they want more detail.
Accomplishments that we're proud of
We're proud to have built a full-stack application that connects live capture, transcription, coaching, prospect research, persistent call history, and post-call analysis into one workflow.
We're especially proud of:
- A working real-time call copilot rather than only a post-call dashboard
- A persistent rep profile built from multiple calls
- Prospect history that can be reused across future conversations
- Interactive visualizations that connect call moments to transcript lines
- Honest labeling around exploratory model predictions
- A responsive interface that keeps the core call experience focused
What we learned
- Real-time AI products need a very different latency strategy from batch analysis tools.
- Model outputs need clear framing so users do not mistake predictions for measurements.
- Persistent identity is a product problem as much as a database problem.
- Searchable call history becomes much more useful when it is attached to both the rep and the prospect.
- Visualizations should reveal complexity progressively instead of displaying every explanation at once.
- Good coaching is often about timing and brevity, not generating the longest or most impressive response.
Try it live: https://prosidy.ca
Demo account (shared, for judging): User: Lucas Pass: hackthenorth
Built With
- auth0
- baseten
- browserbase
- claude
- codex
- elasticsearch
- elevenlabs
- fastapi
- godaddy
- google-gemini
- mongodb
- next.js
- openai
- python
- react
- sentry
- snowflake
- timescaledb
- typescript
- vercel
- vultr




Log in or sign up for Devpost to join the conversation.