Inspiration
Financial services teams don't lack data; they lack a clear sense of what to act on first. Fraud alerts, transaction outliers and claims spikes each sit in their own system, and analysts spend their time triaging noise instead of stopping losses. We wanted one place that finds the unusual patterns across banking, fraud and insurance data, then ranks them by real business impact so an executive can see in seconds where the money and the risk are.
What it does
Fin Analysis App (FinServ BID) runs four detection models over a financial services data warehouse in Snowflake:
- Transaction anomalies: flags unusual amounts for each spending category and channel. It found 42,723 outliers in 200K transactions.
- Customer segmentation: groups 50,000 customers into 5 profiles, such as "High Value Low Risk" and "At-Risk Low Credit".
- Fraud risk scoring: combines alert volume, confirmed fraud, alert severity and risk score into one anomaly score for each customer.
- Claims cost drivers: measures how much of the variation in claim cost each factor explains.
Every finding then goes through a BID scoring engine, a 0–100 score that weights anomaly confidence (25%), dollar exposure (25%), customer value (20%), history (15%) and recency (15%). The score sets the action: FLAG, INVESTIGATE or ESCALATE. Out of 47K findings, 149 needed escalation. A five-page dashboard covers an executive overview, fraud, customer segments, claims and a recommendation feed, with plain-English takeaways. One example it surfaced: policy type explains about 47% of claim cost, while the assigned risk rating explains almost none.
How we built it
- Data: the
FINSERV_DWwarehouse in Snowflake: customers, accounts, 200K transactions, fraud alerts, risk assessments, policies and claims. - Models and scoring: written in Snowflake SQL. The models use z-scores and IQR outlier tests, quintile segmentation, a composite isolation-style fraud score, and an ANOVA-style variance breakdown (η²) for claims. Results are written to output tables.
- App: Next.js 14, TypeScript, Tailwind and Recharts. Server-side API routes query Snowflake through
snowflake-sdk. - Explanations: finding summaries and the executive takeaways are generated from templates over the live data.
Challenges we ran into
- Locked-down environment. The hackathon account blocked creating schemas and calling Cortex AI/LLM functions. That ruled out our original plan of a Cortex Agent for narrative generation and a dedicated results schema. We moved the outputs to a schema we could write to and replaced the AI summaries with templates.
- No Python ML runtime. Instead of scikit-learn K-Means and Isolation Forest, we built SQL versions that run directly in the warehouse.
- Tooling mismatches. Node 18 meant pinning Next.js 14, and the Snowflake CLI wasn't available, so we wired the connection by hand.
- Getting the stats right. Our first claims "driver" score ignored group size and couldn't rank dimensions against each other. We replaced it with a variance-explained measure that answers "which factor matters most."
- Making it readable. Translating z-scores and η² into language an executive acts on took several passes.
Accomplishments that we're proud of
- A full pipeline from raw data to ranked, actionable findings, all running inside Snowflake.
- One consistent scoring rubric that lets fraud, transaction and claims findings be compared on the same scale.
- A finding that matters to the business: the current risk rating has almost no relationship to claim severity.
- A dashboard written for executives, with takeaways first and technical detail available on hover.
What we learned
- A simple, explainable method that runs where the data lives often beats a sophisticated model you can't deploy.
- Ranking is the product. Detecting anomalies is easy; deciding which ones deserve someone's attention is the hard part.
- Statistics only help if the audience understands them. "Explains 47% of the difference in claim cost" lands; "η² = 0.47" doesn't.
- Hosted environments have real limits, so check permissions early and design around them.
What's next for Fin Analysis App
- Cortex AI: where permissions allow, add a Cortex Agent for natural-language narratives and Q&A, and Cortex anomaly detection and Top Insights for the models.
- True ML models: move to Snowpark-based K-Means and Isolation Forest, and model claim cost on several factors together so overlapping drivers are separated.
- Close the loop: make the Acknowledge, Assign and Dismiss buttons work, track case outcomes, and feed them back to tune the scoring weights.
- Run continuously: schedule the models with Snowflake Tasks so findings refresh as new data lands, and add alerts for new escalations.
- Deploy: ship it as a Snowflake-hosted app with role-based access for fraud, claims and executive users.
The Inspiration section is written generically because I don't know your team's actual motivation, so replace it with your own story if you have one. The rest matches what's actually in the code and data.
Built With
- coco
- next.js
- snowflake
Log in or sign up for Devpost to join the conversation.