Inspiration

Sitting across from someone who is about to wire away their life savings because a stranger online told them to is a strange kind of helplessness. That was the reality we ran into when looking at how credit unions like Sound Credit Union handle wire fraud. Right now, a teller reads off a standard checklist. If the member says the right words, the wire goes through. In our synthetic data review, every single victim of romance and investment scams clicked right past the on-screen warnings. Digital pop-ups do not work against someone who has been groomed for months.

What actually works is human conversation. When contact centers reached out directly, they managed to get through in the majority of cases because people respond to people. That realization is what got us started on Wire Assist. We wanted to build something that helps the teller ask better questions instead of leaving them to guess or rely on a rigid script.

What it does

Wire Assist acts as a real-time AI copilot for credit union tellers during live wire transfer calls. It doesn't make the decision for the teller or block transactions automatically. Instead, it listens to the conversation, tracks behavioral risk signals, and guides the teller through a two-tier intervention framework.

Before the call starts, it reviews member history to surface up to three key risk flags like first-time wires or rising payment velocity. During the call, it calculates a live scam confidence score, surfaces hidden context like unverified third-party instructions, and suggests precise probing questions using a clean history navigator.

How we built it

Building Wire Assist 2.0 meant creating a full-stack system that could keep up with a live conversation without getting in the way. On the frontend, we used React, TypeScript, and Vite with Tailwind to build a single-screen dashboard following an industrial design aesthetic with pitch-black surfaces and monospaced text. On the backend, Python and FastAPI handle the real-time audio streams and data processing. We hooked up the Google Gemini Flash API to listen to the call transcript, calculate risk scores, and surface flags on the fly. We also used Pandas to process our transaction datasets and Pydantic to make sure the AI responses stayed structured and reliable.

Challenges we ran into

We ran into plenty of hurdles along the way. Keeping latency low enough for a live phone call was tough, as we had to manage asynchronous audio chunks and WebSocket states smoothly in FastAPI without choking the backend. Designing the interface was another challenge because early drafts felt too cluttered with unnecessary badges and audit notices that would only distract a teller under pressure. We had to strip it down to the essentials, anchoring the layout around a clear risk score and a simple history navigator.

Accomplishments that we're proud of

We are most proud of designing an AI tool that respects the human element of banking rather than trying to replace it. Getting the 3-column industrial UI to fit cleanly on a single screen without any vertical scrolling was a major win for usability. We also managed to build a functional architecture that translates messy real-time audio into structured, actionable insights for credit union tellers under pressure.

What we learned

Building this taught us a lot about designing AI for high-stakes environments. The goal is never to automate human judgment away or replace the person in the seat. Instead, it is about lowering cognitive load so the human can focus on what they do best: connecting with another person.

What's next for Wire Assist

Next up, we want to integrate deep calendar and local branch data feeds to spot even more subtle social engineering tactics. We are also looking forward to deploying a live pilot with Sound Credit Union to test our two-tier false-positive framework in a real branch environment and refine the AI prompts based on actual teller feedback.

Share this project:

Updates

Submission history