Inspiration

Phone scams cost Canadians over $500 million every year, yet most fraud detection tools treat each suspicious call in isolation. We wanted to build something that connects these isolated calls and tracks build a network or similar tactics employed by the suspicious actors.

What it does

Fraus is a real-time scam call detection and network visualization platform. When a call comes in, it checks whether the number belongs to a verified bank registry. If not, it flags it, records a transcript, and captures geolocation data. It then builds a live fraud graph connecting scammers, victims, shared bank accounts, and scam personas. It then displays it on an interactive dashboard with a network grap. Fraud analysts can see not just that a number is suspicious, but take actionable steps to investigate the accounts linked to them which ring it belongs to and how many victims it has reached.

How we built it

We used Railtracks to process the transcript of the call to generate risk flags. MongoDB for the heterogeneous graph (phone numbers, bank accounts, personas, call events), PyVis for interactive network rendering, and Streamlit for the dashboard. We trained a GNN with PyTorch Geometric on synthetic fraud-ring data to score risk at the node level.

Challenges we ran into

We faced a few key challenges during development. Designing a lightweight yet flexible schema that could scale gracefully was essential, especially to handle the complexity of our network data. Additionally, integrating MongoDB with a dynamic, live network graph presented difficulties, as we needed to ensure that updates to the database were efficiently reflected in the graph without compromising performance.

Accomplishments that we're proud of

Pytorch databases are extremely well suited to fraud detection — relationships are the signal, not just attributes. MongoDB aggregation pipelines can replace complex application-level graph traversals. Synthetic data design matters as much as model design, and Streamlit requires careful handling of embedded HTML. A fully working end-to-end pipeline from synthetic call data to visual fraud ring detection in under 48 hours. The network graph genuinely reveals ring structure — clusters of scammers sharing victims and accounts are immediately visible. The graph schema is Neo4j-migration-ready via Cypher export.

What we learned

We gained hands-on experience building a PyTorch GNN to model and identify relationships between data points, which helped us understand complex patterns in the network. Additionally, we leveraged Railtracks to extract key risk phrases commonly used by individuals likely to engage in scams, enhancing our ability to detect suspicious behavior.

What's next for Fraus

Integrate live call metadata APIs, deploy the GNN as a real-time scoring microservice, add alerting when a number joins a known fraud ring, expand the schema with device fingerprints and IP geolocation, and migrate to Neo4j for native graph queries at scale.

Built With

Share this project:

Updates