Inspiration

Scam calls rely on manipulation tactics victims often can't name in the moment -- urgency, authority impersonation, fear. We wanted to build a tool that makes those tactics visible and explainable, after the fact, so people can recognize them next time.

What it does

Vexa is a scam-call forensics console. Paste a suspicious call transcript, or upload a recording, and Vexa identifies the manipulation tactic used in each segment, gives an overall risk score, and suggests a practical counter-response.

How we built it

Built with Next.js (App Router) and TypeScript, styled with Tailwind CSS and Framer Motion. AI analysis runs through a server-only Gemini route with Zod validation, timeout/retry handling, and a local rule-based fallback for reliability. Client-side audio cadence extraction uses Meyda, so raw audio never leaves the browser. Charts via Recharts, icons via lucide-react.

Challenges we ran into

Getting reliable, structured output from the AI model (rather than free text) required careful prompt design and schema validation with Zod, plus a fallback path for when the API times out or is unavailable — important for a live demo.

Accomplishments

A working end-to-end pipeline: audio or transcript in, tactic detection + risk scoring + evidence timeline out, with dark/light theme support and keyboard-accessible controls.

What we learned

How to design AI-assisted tools that stay transparent about their limits -- Vexa organizes evidence and suggests context, but it doesn't make legal or financial decisions for the user.

What's next

Expanding the tactic library, adding real-time transcription support, and testing with real call center training data.

AI usage disclosure

Claude and Gemini were used during development to help write and debug code. Gemini (via @google/genai) is the core analysis engine at runtime, with a local fallback for reliability. AI output organizes evidence — it does not make legal or financial decisions; findings should be reviewed before acting.

Built With

Share this project:

Updates

Submission history