Products

Four surfaces.
One decision layer.

VoxShield is not a single app. It is a detection core with a decision layer around it, exposed through the surface that fits where the call actually happens. Each card below carries its real build status.

VoxShield Mobile

Capture. Analyse. Protect. Built

An Android app that checks two things about the voice on the other end: whether it matches what is known about that contact, and whether it shows signs of being AI-generated. Both models run inside the APK.

Everything in the APK

RawNet2 for synthetic-voice detection and ECAPA-TDNN for speaker verification, both exported to ONNX and run through ONNX Runtime Mobile. No server, no Python process, no network round trip. Installing the app is the whole setup.

Live risk, not a verdict at the end

Audio is chunked, silence is rejected, a speaker gate decides whether the chunk is worth scoring, and the risk score is smoothed across chunks before it reaches the on-screen alert.

Nothing leaves the phone

No audio or detection data leaves the device, which is verifiable with an airplane-mode test. The manifest still declares INTERNET — a leftover of an earlier local-loopback design that nothing uses, and removing it is a listed cleanup task.

Live-call capture is device dependent, and we say so. The detection architecture runs end to end, but capturing far-end audio during a live call is an Android audio-policy question, not an app feature. On the one device tested so far (Samsung SM-A166P, Android 16, measured 2026-09-07) the OS silences the app's microphone for the duration of a call. Until a second, non-Samsung device is tested, post-call recording analysis and test-file mode are the supported paths.

VoxShield Console

Detect. Decide. Respond. Built

The analysis console: one laptop, one process, one GPU worker, zero outbound sockets at runtime. It is where the decision layer actually lives.

What it does today

Implemented

17 endpoints — 14 REST and 3 WebSocket — returning one identical JSON object. A call traces itself from the media stream, a reconnect continues the same call rather than forking it, and every decision lands in a hash-chained audit log you can verify from the Settings view.

Views

Implemented

Dashboard, alerts, analytics, reports, settings, system and the Assistant. Call cards render all five verdict states, signal bars are ordered by fusion weight, and the profile selector changes the prescribed action end to end.

Built the same way as this site

No framework

Plain HTML, CSS and vanilla JavaScript — ten JS files, no build step, no CDN, and after the webfont was removed, nothing loaded over the network at all.

Enterprise layer

Partly built

Sign-in, roles, sessions and tenant scoping are built. Admin management, mobile ingest, incidents, step-up verification and the mitigation engine are specified and not yet built.

Status table

VoxShield SDK

Integrate voice security anywhere Planned

The intended path for banks, telecom operators and contact centres that want the check inside their own call flow. It does not exist yet.

# Illustrative only — this package and endpoint do not exist.
# The shape follows the contract the Console already serves.

POST /v1/calls/analyze
  audio_stream : chunked call audio, 16 kHz mono int16
  profile      : "high_value_transfer"

# Response — the same object the Console returns today
{
  "contract_version": "1.0",
  "verdict":     "LOW_CONFIDENCE",
  "risk":        null,
  "risk_range":  [ 12, 57 ],
  "is_fake":     null,
  "reason_code": "NO_VALIDATED_SIGNAL",
  "action":      "hold_and_callback"
}

What is already decided

The wire contract. Every endpoint in the Console returns one identical JSON object with a contract_version, and the SDK would wrap exactly that — which is why the verdict semantics above are real even though the package is not.

What is not decided

Language, packaging, transport, deployment model and pricing. There is no key, no sandbox, no sign-up and no timeline being promised here.

The honest rule

Not claimed

No integration with a bank, a carrier or a contact-centre platform has ever run. Anything shown at a demo is a local mock, labelled as one.

VoxShield Assistant

Understand risk. Investigate faster. Built

An offline assistant inside the Console that answers from the project's own documents — or refuses. It never generates prose, because a compliance assistant that invents an answer is a liability.

Retrieval, not generation

28 tests

Pure-Python BM25 over heading-chunked documentation, built at startup, with no new dependency and no model download. It returns a verbatim passage with a citation — file, heading and line numbers — so the answer is checkable.

Its own LOW_CONFIDENCE

Implemented

Below the confidence floor it returns NO_GROUNDED_ANSWER with the nearest topics instead of a plausible paragraph. The help system refuses to guess, exactly like the detector — the same principle applied twice.

Fraud operator

“Why does this call say NO_VALIDATED_SIGNAL, and what do I do?”

Compliance officer

“Where is audio stored? Is a voiceprint personal data? What does erasure actually do?”

Evaluator

“What does is_fake: null mean, and why did this call get no score?”

Conversation history is not built yet. Persistent chats and grounding over live Console data (calls, risk events, incidents) are specified as the next step, and the rule for it is already written: read only rows the caller's role may see, never across tenants, and never invent a security event.

Ecosystem

One thesis, four surfaces

Detection that reports what it knows, and says so when it does not.