Inspiration
Altur's brief pointed at something most teams would walk right past: their voice agent deliberately interrupts, falls silent, and talks over the caller — and humans recover from that instantly and messily, while machines recover consistently. That consistency is the signal. Almost every team building for this challenge would train an acoustic classifier on the raw waveform. We bet on something different: the conversation itself.
What it does
Concorde is a trust layer for banking phone channels. It receives a recorded call between a customer and Altur's voice agent, and decides whether the caller is a real person or a synthetic voice — returning a calibrated confidence score through a single POST /detect endpoint.
Instead of analyzing how a voice sounds, Concorde analyzes how a conversation behaves: response latency and its consistency, overlap and interruption patterns, recovery delay after being talked over, turn morphology, and silence-break timing. 22 behavioral features, extracted from both audio channels, feed a LightGBM model exported to ONNX and served by a Rust backend.
How we built it
- Rust + Axum for the inference service — memory safety and predictable latency mattered more than iteration speed once six coding agents were writing code in parallel across independent branches.
- LightGBM over 22 tabular features, not a deep audio model — with ~300 labeled calls and a hidden judging set featuring speakers and voice engines never seen in training, a low-dimensional behavioral model generalizes far better than something that could memorize a specific TTS engine's fingerprint.
- Our own VAD, validated against provided ground-truth turns — the dataset ships pre-computed speech segments, but the real
/detectendpoint only receives raw audio, so we had to close that training/serving gap ourselves. - A local, fully offline semantic layer — audio-probe detection (DTW over log-mel spectrograms) plus local Whisper transcription, with zero data ever leaving our server. We deliberately avoided sending any call audio to third-party APIs, because a product pitched as a trust layer for banking data shouldn't itself leak that data externally.
- Cauce, a git-based multi-agent task orchestrator we built ourselves to coordinate three humans and multiple parallel coding agents (Claude Code, Cursor) without stepping on each other's work — non-overlapping file scopes, isolated git worktrees per task, and a test-merge gate before anything reaches
main.
Challenges we ran into
Our biggest lesson of the day: verify with real evidence, never trust that something works because it says it does. Across a ~30-hour build, we found and fixed, each time with hard evidence rather than assumption:
- An inverted column in our ONNX export that silently flipped every prediction — passing all tests while being systematically wrong.
- A semantic fusion weight whose sign contradicted our own hypothesis; we ran a bootstrap stability check and, since the result wasn't robust across resampling, we shipped with it disabled rather than gambling on a number that looked good but might be noise.
- A production binary that was several commits behind
main, silently missing an entire feature (event feed) — caught only by comparing file hashes end-to-end, not by trusting a green checkmark. - An infinite-loop bug in our event feed that would have frozen the server mid-evaluation, caught by a staging checkpoint before it ever reached the judging endpoint.
Accomplishments that we're proud of
- Balanced accuracy 0.864, AUC 0.944 on the validation split, calibrated (Brier score 0.103), measured against Altur's actual judging client — not our own assumptions about the API contract.
- A fully local, privacy-preserving semantic signal that never sends banking call audio to a third party.
- An honest, fully labeled executive dashboard — every number tagged
MEASURED,DERIVED,ESTIMATE, orSTATED, so nothing is presented with more certainty than we actually have.
What we learned
That the discipline of auditing your own agents' work matters more than how fast they can write code. Every serious bug we shipped was caught by demanding real evidence — a real curl, a real hash comparison, a real bootstrap — not by trusting a summary that said "done."
What's next for Concorde
Acoustic signal as a third vote, Tiger Data event persistence for long-horizon observability, and a red-team pipeline that keeps generating adversarial synthetic voices from engines we've never trained against.
TABLE 50
Built With
- .tech
- altur
- axum
- caddy
- elevenlabs
- postgresql
- python
- react
- rust
- tiger-data
- typescript
- vultr
Log in or sign up for Devpost to join the conversation.