Inspiration
Being the last of my high school friends to land in Vietnam for our summer trip made me anxious. Not only was I completely helpless without Wi-Fi and the ability to speak the language, I was also alone. Stepping outside the airport, I was greeted by flocks of people, all trying to call me a Grab (Uber in Asia). Hesitantly accepting, I was urged into a car after scanning my debit card for 5 dollars, and miraculously ended up at the hotel.
My happiness soon faded when I realized I had been charged ten times more by the vendor than what was shown on the Grab app and his card reader. I immediately filed a claim request, and yet, with just a generic confirmation, I realized the transaction would soon be final.
Calling Bank of America, I waited for over 3 hours, working through multiple levels of management before finally I could explain my situation.
With the rapid growth of AI, the fraud industry is scaling faster than the teams fighting it. Cloned voices, fake fraud-department calls and texts that read exactly like your bank are now cheap to produce. Situations like these will only be more common, slowing down both investigations for banks and reimbursements for customers.
With Bellhop, the claim is taken by voice the moment the customer calls, checked against their bank records while they are still on the line, and handed to a reviewer as a case that has already been investigated, so the answer comes during the call, not weeks later.
What it does
Bellhop deploys voice agents to process fraud claims for banks and card issuers. Instead of the traditional one-size-fits-all dispute form, Bellhop autonomously collects information with its customer line using a reasoning model that tailors its questions based on what the customer says, collecting only the information needed to decide the next step toward resolution.
While the customer is still on the call, Bellhop checks each response against the account's actual transactions and the rules that apply to the claim. It matches the disputed payment to the bank's records, runs identity and fraud-risk checks, works out which regulations apply (Reg E or Reg Z), and drafts the claim packet.
With this framework, by the end of the call Bellhop routes every claim to an outcome, recommending approval, denial, or escalation to a specialist. This speeds up human review significantly. At the same time Bellhop records each piece of evidence, each step of its reasoning and each decision in a timeline on the case, so a reviewer or auditor can trace exactly how it reached its recommendation if further review is needed.
How we built it
The Tech Stack
Seeing the sponsors of CalHacks 13.0, we realized creating a fraud-targeting technology wasn’t just encouraged by the sponsor tracks, it would be made significantly easier to develop with the help of the financial data sponsors were offering. Instead of having to fabricate data ourselves to emulate having a bank as a partner, we could use Nessie from Capital One to give us a realistic transaction log. Similarly, CRS provided another important aspect of fraud–detection, identity verification.
With our data sources covered, we moved on to how that data would be stored and managed in our backend. Because we already knew we wanted autonomous handling of data and tool usage, Convex made perfect sense to incorporate as it would implement a level of type safety that helps sanitize otherwise unpredictable model outputs.
Lastly, for our choice of agents, we chose Cartesia for our voice agent and used BitDeer models for our internal analysis engine. Cartesia was easy to integrate and customize to use the tools we needed for logging each statement and relevant customer claim to Convex. BitDeer was also easy to set up, and provided flexibility in both model choice and model parameters, which proved helpful later.
Combined, these three sections of our codebase formed the mock bank connection, the database, and the models that link these to our customers.
Development
We used Claude Code to implement our tech stack and features. Live testing, judgement calls, new feature ideas, and implementation order were orchestrated by our two members. As the project matured, we separated our jobs between frontend/site formatting and backend/model functionality to avoid code conflicts, occaisionally swapping to each other’s terminals to give our own insights and critiques. Development of creative assets, like the name and branding Bellhop as well as our voice agent mascot were done by hand.
Challenges we ran into
The primary client-side issue we ran into was a rather large latency between user input and model response. From personal experience, we know extended delays can be frustrating and confusing, so latency was something we desperately wanted to avoid. However, this latency would not be so easily solved because its source was the internal analysis engine, which needed to take in the user input and analyze the facts of the case to determine the best next question to ask.
To minimize the issue, we ended up trying all of BitDeer’s models to compare which ran faster, and then sped it up further by setting it to the lowest reasoning level we could. Possible further solutions included using Cartesia to directly infer reasonable next questions. While this is a promising avenue, we avoided this to constrain what feedback would go to the user, to make sure no unintended legal promises or consequences would be created.
Accomplishments that we're proud of
Keenan’s initial success with the voice agent got both of us pumped temporarily, but after seeing how the frontend turned out in its first iteration, my excitement was dampened. Just a few prompts later, guiding the layout and color choices of the model with handpicked visual examples and it was suddenly looking enterprise-grade. I’m proud of my persistence and, needless to say, of the product we created. - Maximo
From having Maximo teach me how to download Claude Code and open it up in the terminal to specifying my code vision into prompts that turn into working code and feedback, I have experienced what feels like a coding revolution in a short number of hours. This is by far the most I have ever used AI in programming, and I’m proud to say that I’ve stepped out of my comfort zone to build what I otherwise couldn’t have built at CalHacks. - Keenan
What we learned
Do’s
Do ask people representing technologies what the philosophy behind it was, how best to use it, and creative uses for it. Do commit often. Do communicate with your teammates on who’s working on what. Do make the most of the sponsors of the event. Do keep an open mind on what technologies could be used. Do spend time thinking about ideas adjacent to previous ideas.
Don’ts
Don’t stay awake for 43 hours straight. Don’t try to sleep on a cold floor. Don’t type your API key in the wrong place. Don’t be stubborn and fixate on a single idea. Don’t be shy to talk to people.
What’s next for Bellhop
We based our product off of a tech stack available to us, for example synthetic bank data from Capital One’s Nessie API, Cartesia for the voice line, CRS for fraud scoring and Bitdeer for reasoning, so our product is intended for the workflows of claim processing in U.S. consumer bank and card accounts under Regulation E.
In the future, regulation is pointing for other institutions such as brokerages to take on more responsibility in protecting customers from financial exploitation. Financial Industry Regulatory Authority (FINRA) Rule 2165 started letting brokerages hold suspicious withdrawals from customers 65 and older in 2018, expanded in 2022 to place a hold on a securities transaction for up to 55 business days, and a 2026 proposal would extend holds to the new maximum of 145 business days. Since every hold needs a call with the customer, an internal review and a documented reason, this calls for the implementation of similar claims processing software frameworks. FINRA Adopts Amendments to FINRA Rule 2165 +2 With access to investment data such as brokerage transactions and transfer records, we can make our product more universal as a claims line for any institution that moves customers’ money, while keeping the same pipeline.
Also, limitations with real user call data make it difficult to improve both our voice agent in how it asks and listens to customers, and our analysis/reasoning model’s accuracy in collecting information and its decision framework. With real users and access to user data we can improve accuracy across metrics like statement extraction precision, match rate against bank records, questions needed per claim and reviewer override rate, as we test with suite testing against a labelled set of real claims and their outcomes. Model latency is another thing to improve, since a full case review takes 20 to 45 seconds today, so we want to optimize our tech stack for a faster, smaller model on the call with the full investigation running in the background, so the customer never has to wait.
Built With
- bitdeer
- cartesia
- claude
- convex
- crs
- git
- nessie
- typescript
Log in or sign up for Devpost to join the conversation.