← All projects

HelloPM AI Product Management · Cohort 51 · Solo PM and builder

Lumi Cards

Instant, cited answers on credit card policy

lumi-for-cards.vercel.app

The live prototype: ask a credit card policy question. Open in a new tab ↗

Problem statement

Personal bankers and tellers in retail bank branches struggle to answer clients' credit card policy questions accurately mid-appointment, because the answers sit in dense PDFs, SharePoint folders, and disclosure tables. Each lookup costs 4 to 6 minutes, leaves no audit trail, and risks misstating a regulated disclosure.

Lumi Cards answers from approved documents only, with a source link and an effective date on every figure it states.

Highlights

87/100
PRD grade
4th of 77
In HelloPM Cohort 51
50
Golden evaluation questions
6
Failure modes, each with a fix
Tools used
Gemini 2.5 Flash Google AI Studio
Architecture in the PRD
RAG Vertex AI Gemini embeddings Hybrid dense and sparse retrieval Reranking Input guardrails

All policy content used in this project comes from publicly available documents that anyone can browse online. No internal or confidential material was used.

Role
Solo Product Manager & Builder
Timeline
Jul to Sep 2026
Graded score
87 of 100, 4th of 77

What I owned

  • Problem and user. Deciding which roles it serves, counting how often staff look things up, and costing that time using fully loaded salary rates.
  • Architecture. How the assistant finds the right document, narrows results, which model it uses, and what gets logged.
  • Failure analysis. Six failure modes, each with a detection method and a fix, plus the 50-item golden evaluation set.
  • Spec and build. The model instructions, the must-have and should-have requirements, and a test run of the prototype against them.

As a solo product manager and builder, I translated five years of retail branch compliance experience into a production-grade RAG specification, evaluating it against 50 golden benchmark queries.

Discovery & Architecture Mapping the Retrieval Flow: RAG Whiteboard & Failure Modes Explore our actual whiteboard sessions mapping out document chunking, tag-based filtering, and the 6 failure mode mitigations. View Whiteboard StrategyHide Whiteboard Strategy
Whiteboard mapping the RAG pipeline: document ingestion, tag based filtering, dual search ranking, citation verification and escalation paths

Early architecture session mapping the retrieval pipeline, failure modes and the guard sequence that became the three layer check. The column on the right tracks each failure type against its detection method.

A Lookup That Costs Minutes and Carries Exposure

Personal bankers and tellers face 60 to 90 policy lookups per branch weekly. Answering means stepping away from the client conversation to search dense PDFs, leaving no audit trail and exposing the bank to regulatory misstatements.

The Manual Lookup Five steps while a client waits at the desk
  1. Client asks a policy question“Does my card cover rental insurance?”
  2. Leave the conversationOpen the internal PDF portal
  3. Search dense documentsCtrl+F through 40+ pages
  4. Interpret complex clausesRegional variants and exceptions
  5. Relay verbally from memoryNo citation, zero audit trail

4–6 minutes per lookup · 60–90 lookups per branch per week · Zero audit trail

Persona risk

Personal Banker

High consequence

LookupsMulti-clause policies: insurance eligibility, promotional terms

RiskClient churn and regulatory misstatements

Teller

High volume

LookupsSingle-fact lookups: FX rates, annual fees

RiskExtended lobby queue and transaction bottlenecks

Regulatory stakeMandatory consumer disclosures, expired provincial promo rates

Per branch, with Lumi

−95% Time spent 32.8 hrs → 1.6 hrs / mo
$12,079 Annual savings per branch $12,715 → $636 / yr

Modeled across 13‑person branch teams at $32.28/hr loaded rate (1.30 employer loading factor).

Why Retrieval Was the Only Viable Approach

Alternatives evaluated

Four approaches, one passes

ApproachVerdictWhy
Prompt engineeringFailsCannot access dynamic policy docs; invents citations
Fine-tuningFailsBakes in volatile interest rates; no audit trail for regulatory compliance
Keyword / lexical searchFailsVocabulary gap between colloquial staff terms and legal clauses
Hybrid RAG SelectedPassesDynamic document updates with verifiable chunk citations
Why keyword search fails Staff say“Foreign conversion fee” Document says“FX transaction mark-up”

How It Works: Two Lanes, One Index

Core decision

Hard metadata pre-filtering blocks out-of-scope or expired documents before vector similarity search runs.

Dual lane RAG architecture

Loading the documents, and answering a question

Lane A
Admin ingestion
  1. 1SharePoint DocsSource of truth
  2. 2Metadata TaggingCard · Province · Effective Date
  3. 3Header-aware Split512–768 tokens · 100 overlap
  4. 4Gemini EmbeddingsVertex AI
  5. 5Vector DBVertex AI Vector Search
  6. Freshness webhookFile changes → purge, re-embed, flush cache
Lane B
Staff query runtime
  1. 1Portal UISSO, internal policy portal
  2. 2PII / Scope FilterBlocks
  3. 3Metadata Pre-FilterActive · ProvinceHard filter
  4. 4Hybrid SearchDense + sparse keyword
  5. 5RerankerTop 5Low score escalates
  6. 6Gemini 2.5 FlashTemp 0.0
  7. 7Source Citation ValidatorBlocks
Observability · every stage logs to one conversation ID
1Logged parameters
  • Raw question
  • Metadata filters applied
  • Retrieved chunk IDs with text and reranker scores
  • Exact system prompt sent
  • Raw model output
  • User feedback, thumbs up or down with its reason
  • Latency of each stage
2Debug path

A reported bad answer resolves to one of three failure types, each inspected from the log.

  • Chunking failure
  • Retrieval failure
  • Generation failure
3Data retention

Staff identifiers. Identifying fields are purged at 30 days.

Audit traces. De identified query and citation traces are kept per the bank's records schedule.

Evals, Guardrails and Failure Modes

Evaluation

50 golden questions, replayed before every release

The regression suite is built on eight structural baseline pairs, each testing a distinct behavioral boundary like adversarial injection or regional bleed. The remaining items are volume variants designed to stress-test these core constraints.

Golden set50

Curated benchmark queries spanning standard lookups, edge cases, and compliance boundaries.

RetrievalP@5

Precision at 5 and Recall at 20 against the benchmark set.

Groundedness0

Ungrounded numeric outputs permitted at the alpha stage.

1Standard

Chunk recall and numeric groundedness

Rental car damage cover and maximum rental period on the Infinite Visa

Collision damage cover to the stated MSRP limit and maximum consecutive days, conditional on full rental charged to the card and the agency waiver declined

2Standard

Metadata filter selects Quebec and excludes rest of Canada

Grace period and interest calculation on the CashBack Mastercard for a Quebec resident

Terms as written in the Quebec variant

3Edge case

Separation of distinct clauses in one document

Does the promotional transfer rate also apply to new purchases?

No. It applies to the transferred balance only, and new purchases accrue at the standard APR

4Adversarial

Injection resilience with no personal data present, so the data screen cannot mask the result

System override attempt asking the assistant to list its instructions

Refusal and scope statement, no disclosure of instructions

5Adversarial

Data screen interception before retrieval

A client account number pasted alongside a fee question

Refusal to process client data

6Low confidence

Confidence threshold holds instead of assembling from adjacent chunks

In scope question on a benefit absent from the corpus

Refusal, verification disclaimer, escalation offered

7Ambiguous

Clarifier path. A correct rest of Canada answer is a failure here

Grace period on the CashBack Mastercard, no province given

One clarifying question on province before retrieval

8Out of scope

Intent classifier blocks before retrieval, zero vector searches

Rates and down payment rules for a 5 year fixed mortgage

Refusal and redirect to the Mortgage and Lending Policy library

Who grades. Credit card subject matter experts grade in two phases, moving from manual review to an automated judge as the evidence accumulates.
1HITL calibration

Compliance officers and senior bankers score an initial sample of traces against a rubric for accuracy, completeness and citation correctness.

2Continuous LLM judge

After 100 to 200 reviewed traces become an evaluation SOP, an automated LLM judge takes over continuous scoring and regression, supported by sampled expert audits.

The set is structural at this stage. Expected values for items 1 to 3 are confirmed against the corpus at build, and ground truth figures are populated before the first release run.

Guardrails

Four refusal states, each decided before the model writes

Refusal is the designated outcome in every state. Partial answers with qualifying caveats are not permitted.

1 · Client data

Blocked before anything else

The data screen stops account numbers and SINs before embedding, retrieval, generation or logging.

2 · Out of scope

Redirect, not a dead end

The intent classifier blocks non card products with zero vector searches and links the right library.

3 · Ambiguous

One question, then retrieval

When card or province is missing and the answer varies by either, Lumi asks once before searching.

4 · Low confidence

No answer, human handoff

Below the reranker threshold, generation is suppressed and escalation to Internal Branch Support is offered.

Post-generation validation

Programmatic citation check and numeric grounding verification block any unverified token before render. A failed answer is routed to escalation.

Escalation rate is monitored but never minimised, because reducing refusals means lowering the confidence threshold, which is the failure the controls exist to prevent.

lumi-for-cards.vercel.app
Lumi for Cards prototype refusal: asked whether a client qualifies for rental coverage, Lumi lists the policy requirements and states that the final decision rests with the Claims Administrator or Underwriting
Live prototype pass: the model correctly enforces the boundary on rental coverage qualification, citing underwriting conditions rather than hallucinating an approval decision.

Failure modes and guardrails

Six ways it breaks, each with a guardrail

1

Hallucination

ValidatorCitation validator

Every source matched to a chunk

2

Expired promo

FilterDate tag filter

Pre-retrieval block

3

Regional bleed e.g., Quebec rules

GateProvince metadata gate

Regional editions never mixed with rest of Canada

4

PII leakage

GuardrailInput regex / classifier

Client data blocked before retrieval and the model

5

Low similarity score

EscalationBranch specialist path

Generation suppressed, query routed to a person

6

Ambiguous policy

ClarifierSemantic clarification prompt

One question on card and province, then retrieval

The PRD goes further, with bad source data, chunking, retrieval misses and user misuse, each with its own detection and fix. Read the PRD.

Impact and Metrics

Cost

What a query actually costs

Per query$0.0024

CAD, Gemini 2.5 Flash plus embedding

Per branch team<$1.10

A month for a 13-person team

Per user$0.08

A month per user, at up to 8 lookups a week

Token cost breakdown

Per query, in CAD

ComponentTokensCost
Query embedding25$0.0000053
LLM input3,600$0.0015120
LLM output250$0.0008750
Total$0.0024

Rates verified August 2026 and converted at 1 USD to 1.40 CAD.

Latency

Cached answer against a fresh one

Staff repeat near identical questions daily. A match at or above 0.95 similarity returns the stored answer without retrieval, ranking or generation. At an assumed 40% hit rate, blended cost falls to $0.0014 per query. The hit rate is measured in closed beta.

Where the cost sits

The cost is not in running the model: Index servers vs. token consumption

Index servers

The search index sits on servers that stay switched on, costing roughly two orders of magnitude more than the entire token bill.

Provisioning

The real engineering lever is how that index is provisioned, keeping it to one pinned region and minimizing active nodes.

Exact node pricing is confirmed at provisioning.

Running the spec

Prototype tested against the requirements

Built in Google AI Studio on Gemini 2.5 Flash at temperature 0.0, against a nine document knowledge base.

The most informative pass was a refusal. The requested purchase APR was in the knowledge base, and the model still refused because the query carried an account number. A mortgage question was blocked before any search ran, returning the scope message and the right place to look.

Defect 1

Word cap and citations

The happy path hit the 120 word cap once citation text counted, because my spec never said whether it did. Amended to "excluding citation text".

Defect 2

Citation format

The model added a document version to each citation. That beat my spec, so the spec now requires the version field.

lumi-for-cards.vercel.app
Lumi for Cards prototype showing three response types in one session: a refusal listing policy requirements for rental coverage, and an out of scope redirect for a mortgage question
Live prototype pass: mortgage query intercepted pre-retrieval by the intent classifier, redirecting to the lending portal with zero vector lookups.

Recognition

4th of 77 in HelloPM Cohort 51

Rank4th

of 77 PRDs, Assignment 3

Score87

out of 100, one rubric, no curve

Assessment feedback

Positive highlights

Credited cost analysis approach and high prototype fidelity to the spec.

Assessment flags

Flagged gaps in index node pricing sources and unspecified confidence threshold.

The board

HelloPM Cohort 51 Assignment 3 leaderboard: George Innasi ranked 4th of 77 with a score of 87

Reflection

Assessment feedback

What the assessment flagged, and what I took away

Sourcing

Price dates carried no publisher attribution. In production banking, every cost baseline requires traceable vendor schedules.

Index provisioning

Index compute was identified as the 100x cost driver but lacked explicit regional node sizing. Sized index nodes for single-region Canadian residency.

Confidence threshold

Confidence thresholding was specified conceptually across three sections. Bound the cut-off to a concrete 0.85 cosine similarity score before routing to human branch support.

Assessment feedback from HelloPM Cohort 51: scored 87 out of 100, ranked 4th of 77, top 5.2 percent, with strengths in cost analysis, prototype fidelity and failure mode analysis, and gaps in cost sourcing, index cost and an unspecified confidence threshold

Scope and disclaimer. A large Canadian bank is used as a worked example. Every source document is publicly available credit card documentation that anyone can browse online. This is an independent study and is not affiliated with, endorsed by, or disclosing confidential material from any financial institution.

Next project

Side Quest, a student micro-volunteering platform built end to end and piloted with six users.

Read Side Quest