USER STORIES & ACCEPTANCE CRITERIA
Project: FinTech Fraud Detection & Risk Analytics
Each user story follows the standard format: As a [role], I want [capability], so that [business value]. Acceptance criteria define the conditions that must be met for the story to be considered done.
EPIC 1: Fraud Exposure Quantification
US-01: Fraud KPI Overview
|
Field |
Detail |
|
User Story |
As a Risk Analyst, I want to see a single-view KPI summary of total transactions, fraud count, fraud rate %, and total exposure, so that I can communicate fraud impact to leadership in one slide. |
|
Priority |
High |
|
Story Points |
3 |
|
Sprint |
Sprint 1 |
Acceptance Criteria:
- Given the full transaction dataset is loaded, when the KPI query runs, then it returns: total_transactions, fraud_count, fraud_rate_pct, total_fraud_amount, total_transaction_volume in a single row
- Fraud rate % is calculated as fraud_count / total_transactions * 100, rounded to 2 decimal places
- Output renders in under 5 seconds on a 5K row dataset
- Results match Excel Executive Summary tab values within 0.1%
US-02: Merchant Category Risk Ranking
|
Field |
Detail |
|
User Story |
As a Fraud Analyst, I want to rank merchant categories by fraud rate and exposure so that I can prioritize which categories need immediate controls. |
|
Priority |
High |
|
Story Points |
3 |
|
Sprint |
Sprint 1 |
Acceptance Criteria:
- Query returns all distinct merchant_category values with: total_txns, fraud_txns, fraud_rate_pct, avg_txn_amount, fraud_exposure
- Results are ordered by fraud_rate_pct descending
- Each category is assigned a risk tier: HIGH (>40%), MEDIUM (>20%), LOW (<=20%)
- Excel tab "Fraud by Category" shows a color-coded bar chart matching SQL output
US-03: Time-of-Day Fraud Pattern
|
Field |
Detail |
|
User Story |
As a Risk Analyst, I want to identify which hours of the day have the highest fraud rate so that I can define time-based transaction velocity rules. |
|
Priority |
High |
|
Story Points |
2 |
|
Sprint |
Sprint 1 |
Acceptance Criteria:
- Query returns top 10 hours ranked by fraud_rate_pct with total_txns, fraud_txns, avg_amount
- hour_of_day values are integers 0-23 (24-hour format)
- Power BI Page 3 includes a column chart of fraud rate by hour with hour_of_day on X-axis
- Hours with fraud rate > 30% are visually highlighted in the dashboard
EPIC 2: Risk Scoring
US-04: Merchant Risk Scorecard View
|
Field |
Detail |
|
User Story |
As a Product Manager, I want a reusable merchant risk scorecard database view so that Engineering can query it directly when building the fraud rule engine. |
|
Priority |
High |
|
Story Points |
5 |
|
Sprint |
Sprint 2 |
Acceptance Criteria:
- CREATE VIEW v_merchant_risk_scorecard executes without errors in SQLite and PostgreSQL
- View returns: merchant_name, merchant_category, total_transactions, fraud_count, fraud_rate_pct, total_fraud_exposure, risk_tier
- risk_tier logic: HIGH if fraud_rate_pct > 40%, MEDIUM if > 20%, LOW otherwise, no NULLs
- View is queryable with additional WHERE/ORDER BY filters by downstream consumers
- View definition is documented in fraud_analysis.sql with inline comments
US-05: High-Risk Customer Queue
|
Field |
Detail |
|
User Story |
As a Compliance Officer, I want a list of the top 10 customers by fraud exposure so that I can initiate Customer Due Diligence reviews in line with AML obligations. |
|
Priority |
Medium |
|
Story Points |
2 |
|
Sprint |
Sprint 2 |
Acceptance Criteria:
- Query returns exactly top 10 customers with: customer_id, total_txns, fraud_txns, fraud_exposure, avg_txn_amount
- Only customers with at least 1 fraud transaction are included (HAVING SUM(is_fraud) > 0)
- Ordered by fraud_exposure descending
- Output can be exported to CSV for CDD team intake queue
EPIC 3: Reporting & Dashboard
US-06: Monthly Fraud Trend Report
|
Field |
Detail |
|
User Story |
As a Finance Director, I want to see monthly fraud rate and loss trends across the full year so that I can track the impact of any controls implemented during the period. |
|
Priority |
Medium |
|
Story Points |
3 |
|
Sprint |
Sprint 2 |
Acceptance Criteria:
- Query returns all 12 months of 2024 with: month, total_txns, fraud_txns, fraud_rate_pct, monthly_fraud_loss
- No months missing from output (validated against full year date range)
- Excel "Monthly Trend" tab includes a column chart with month on X-axis and fraud rate on Y-axis
- Power BI line chart on Page 1 reflects same monthly trend with date slicer
US-07: Interactive Power BI Dashboard
|
Field |
Detail |
|
User Story |
As a Risk Team Lead, I want an interactive dashboard where I can filter by merchant category, state, and date range so that I can investigate specific fraud patterns without writing SQL. |
|
Priority |
High |
|
Story Points |
8 |
|
Sprint |
Sprint 3 |
Acceptance Criteria:
- Dashboard has 3 pages: Executive Overview, Merchant Risk Scorecard, Time & Amount Analysis
- All slicers (Status, State, Category, Date) cross-filter all visuals on the same page
- KPI cards update dynamically when slicers are applied
- Dashboard is accessible from Power BI Service via shareable URL
- Mobile layout is configured for at least Page 1 (Executive Overview)
DEFINITION OF DONE
- SQL query executes without errors and output matches acceptance criteria
- Excel tab renders with correct data, chart, and formatting
- Power BI visual cross-filters correctly when slicers are applied
- All acceptance criteria checked off by BA (self-review)
- Deliverable committed to GitHub repository in correct folder
- RTM updated to reflect completion status