Inspiration

I'm a data engineer. Usually I build the pipelines and someone else decides what the product should be. For this hackathon I wanted to flip that: start with a real person and a real problem, and only then think about the data.

The person I picked was a bank Relationship Manager getting ready for a client meeting. Everything they need is in the data somewhere: balances, insurance policies, claims, fraud alerts, advisor notes. But it's spread across a lot of tables, and RMs aren't analysts. So I asked: what if they just got one page that tells them what's going on with this client and what to talk about?

What it does

The app has two screens:

  • My Book: the RM's list of clients, sorted so the ones who need attention this week come first, with a short reason for each (an open claim, a fraud alert, a policy about to expire).
  • Client Briefing: a one-page summary for each client: a quick snapshot, recent activity, risks, opportunities and suggested talking points. Next to it is a chat box where the RM can ask follow-up questions in plain English, like "What did the adjuster say about the open claim?"

How I built it

Everything runs in Snowflake:

  • SQL views pull 9 source tables together into one row per client. This is the part I'm comfortable with.
  • Cortex AI:
    • AI_COMPLETE reads the free-text advisor notes and pulls out useful signals.
    • Claude writes each briefing in a fixed JSON format, so the app always knows what it's getting.
  • The chat:
    • Cortex Search indexes the claim and adjuster notes.
    • A semantic view handles the number questions.
    • A Cortex Agent decides which one to use for each question.
  • The app itself is built in Streamlit, running inside Snowflake.

Challenges I ran into

  • Thinking like a product person. The hardest part wasn't technical. I had to stop asking "what can I build with this data?" and keep asking "would an RM actually care about this?" That meant leaving out a lot of interesting data.
  • Not much time with the data. I got it at the start of the hackathon, so I had to make decisions quickly.
  • Permissions. The app couldn't read the source data directly, so I made snapshot copies the app could access.
  • AI getting things subtly wrong. At first it described the bank as the client's employer. Renaming one field fixed it, which surprised me.
  • Small UI gremlins. For example, Streamlit turned dollar amounts into math formulas until I escaped the $ signs.

Accomplishments that I am proud of

  • It works end to end: pick a client, read the briefing, ask a question, and get a real answer from their data.
  • Someone non-technical can use it without ever seeing SQL or a dashboard.
  • I built a product, not just a pipeline. That was the personal goal.

What I learned

  • Starting from the user changes everything. It decides what to build, and also what not to build.
  • How the data is labeled matters a lot to how well AI understands it.
  • Asking the AI for a fixed format makes it much easier to build a reliable app on top.
  • Snowflake has most of the pieces needed to go from raw tables to a working AI app in one place.

What's next for Relationship Management Briefing

  • Refresh briefings automatically when something new happens, like a new claim or alert.
  • Support multiple RMs, each seeing only their own clients.
  • Let RMs rate the briefings so they get better over time.

Built With

  • ai-complete
  • claude
  • cortex-agents
  • cortex-ai
  • cortex-analyst
  • cortex-code
  • cortex-search
  • llama
  • pandas
  • python
  • semantic-views
  • snowflake
  • snowflake-cortex
  • snowpark-container-services
  • sql
  • streamlit
  • streamlit-in-snowflake
Share this project:

Updates

Submission history