In Progress β€” CiB Week 2026

DWK PFMS
Project Deliverables

Personal Finance Management System β€” pre-interview documentation and prototype artefacts for the CiB exhibition.

38
Requirements
45
Interview Questions
10
Vulnerabilities
3
User Roles

Interview Questions

15 structured questions per role, designed to elicit functional requirements, pain points, and priorities.

πŸ‘€ Role 1: Standard Customer

Understanding Current Behaviour
  1. How do you currently track your daily spending across different accounts or payment methods?
  2. When you open your banking app, what information do you look for first?
  3. How often do you review your transactions, and what frustrates you about the process?
Pain Points & Needs
  1. Can you describe a time when you were surprised by how much you'd spent in a particular area?
  2. What would help you feel more in control of your finances day-to-day?
  3. Have you ever tried to set a budget for yourself? What made it easy or difficult to stick to?
Feature Exploration
  1. If the app could automatically sort your spending into categories, how useful would that be?
  2. Would you want alerts when you're approaching a spending limit? How would you prefer to receive them?
  3. How important is it to you to see trends over time β€” comparing this month to last month?
Adviser Interaction & Security
  1. If you needed financial advice, how would you expect to access that through the app?
  2. What would make you comfortable sharing your financial data with an adviser?
  3. What security features would you expect (biometrics, 2FA, PIN)?
  4. How do you feel about the bank using spending data for personalised insights?
Priorities
  1. If you could only have three features in a personal finance tool, what would they be?
  2. Is there anything about your current banking experience you'd want us to avoid?

πŸ’Ό Role 2: Financial Adviser

Current Workflow
  1. Can you walk us through a typical day β€” how do you currently prepare for a client meeting?
  2. How do you currently receive and process client financial data?
  3. What tools or systems do you currently use to analyse spending patterns?
Pain Points & Features
  1. What is the most time-consuming part of your current workflow?
  2. How do you currently categorise a client's transactions β€” manual or automated?
  3. When assigned a client from an unfamiliar industry, what challenges does that create?
  4. If client transactions were automatically categorised, how would that change your workflow?
  5. What information would you need in a client dashboard to quickly assess their financial health?
  6. How useful would automated report generation be?
Compliance & Priorities
  1. How do you handle consultation requests from clients? What's the typical turnaround?
  2. Would an in-app notes system for recording client interactions be useful?
  3. What FCA compliance considerations do you need to keep in mind?
  4. How important is it that the system logs your actions and access to client data?
  5. Are there specific data protection requirements that affect how you handle client information?
  6. If this system could solve one major problem in your daily work, what would it be?

πŸ‘₯ Role 3: Team Manager

Current Workflow & Pain Points
  1. How many advisers do you currently manage, and how do you monitor their performance?
  2. How are clients currently assigned to financial advisers in your team?
  3. What data sources do you currently use to make management decisions?
  4. What happens when there's a mismatch between adviser expertise and client industry?
  5. How do you currently identify when an adviser is overloaded or underperforming?
  6. What information do you wish you had that you currently don't?
Features & Reporting
  1. If you had a real-time dashboard, what KPIs would you want to see?
  2. How useful would automatic industry-based matching be?
  3. Would customer segmentation tools help your strategic planning?
  4. What does your reporting process look like for leadership meetings?
  5. How would you use visual analytics compared to raw data tables?
  6. If the system flagged at-risk clients proactively, how would you want to be notified?
Security & Priorities
  1. What level of access should you have to individual vs aggregated data?
  2. Should the system maintain an audit trail of reassignments?
  3. What single improvement would have the biggest impact on team effectiveness?

System Requirements Document

38 requirements across 4 sections with unique IDs, MoSCoW priority, and source traceability. Draft v1.0 β€” will be refined after interviews.

βš™οΈ General System Requirements

IDRequirementTypePrioritySource
GS-001Secure login authentication with email and passwordNon-FunctionalMUSTScenario
GS-002Two-factor authentication for all user rolesNon-FunctionalMUSTScenario
GS-003Role-based access control (Customer, Adviser, Manager)Non-FunctionalMUSTScenario
GS-004Consistent interface structure and navigation across modulesNon-FunctionalMUSTScenario
GS-005Unified export function for reports (CSV/PDF)FunctionalMUSTScenario
GS-006Global search and filtering across modulesFunctionalSHOULDScenario
GS-007Onboarding guidance for first-time usersFunctionalCOULDScenario
GS-008Customisable dashboards and frequently used viewsFunctionalCOULDScenario
GS-009Dark mode support for all viewsNon-FunctionalSHOULDDesign
GS-010Responsive β€” mobile-first for customers, desktop for staffNon-FunctionalMUSTDesign
GS-011Encrypt all data in transit (TLS 1.3) and at restNon-FunctionalMUSTStandard
GS-012UK GDPR compliance for personal data handlingNon-FunctionalMUSTStandard
GS-013Session timeout after 15 minutes inactivityNon-FunctionalSHOULDStandard
GS-014Audit log of sensitive actionsNon-FunctionalMUSTStandard

πŸ‘€ Customer Requirements

IDRequirementPriority
CR-001Dashboard showing total balance, monthly income, and spendingMUST
CR-002Transactions auto-categorised by typeMUST
CR-003Spending breakdown by category (donut chart)MUST
CR-004Month-over-month spending trends (area chart)MUST
CR-005Set monthly budget limits per categoryMUST
CR-006Visual alerts at 80% and 100% of budgetMUST
CR-007Search/filter transactions by date, category, merchantSHOULD
CR-008Export transaction history as CSVMUST
CR-009Financial health score based on habitsSHOULD
CR-010Savings goals with progress visualisationSHOULD
CR-011One-click adviser consultation requestSHOULD
CR-012Personalised spending insights and tipsCOULD
CR-013Push notifications for alertsCOULD

πŸ’Ό Adviser Requirements

IDRequirementPriority
FA-001Portfolio view of assigned clients with key metricsMUST
FA-002Client detail with pre-categorised transactionsMUST
FA-003Client spending breakdown chartsMUST
FA-004Client income vs spending trendsMUST
FA-005One-click professional report generationMUST
FA-006Add/view notes on client recordsSHOULD
FA-007View/accept consultation requestsSHOULD
FA-008FCA compliance information panelSHOULD
FA-009Client industry tags for contextCOULD
FA-010RLS β€” only access assigned client dataMUST

πŸ‘₯ Manager Requirements

IDRequirementPriority
TM-001Team dashboard with KPIsMUST
TM-002Per-adviser performance metricsMUST
TM-003View/manage client-adviser assignmentsMUST
TM-004Reassign clients with reason trackingMUST
TM-005Customer segmentation (industry, income)SHOULD
TM-006Visual analytics dashboardsSHOULD
TM-007Export team reports (CSV)SHOULD
TM-008Industry-expertise auto-matchingCOULD
TM-009Workload balance indicatorsCOULD
TM-010RLS β€” only access own team's dataMUST

Personas & User Stories

3 detailed personas representing each user role, plus 26 user stories with acceptance criteria.

SM

Sarah Mitchell

Software Developer, 28 β€’ Technology β€’ Β£55k/year

Goals

  • Understand where money goes each month
  • Stop overspending on food delivery
  • Save for a house deposit within 2 years
  • Get professional ISA investment advice

Frustrations

  • Only sees merchant names β€” no category breakdown
  • No way to set spending limits or get alerts
  • Contacting an adviser requires multi-step website navigation
  • No trend comparison month-over-month
"I earn decent money but I have no idea where it all goes. I just want a clear picture and a way to stay on track."
JW

James Wilson

Senior Financial Adviser, 35 β€’ 8 years at DWK β€’ 12 active clients

Goals

  • Less time on data entry, more time advising
  • Quickly understand new client's financial situation
  • Generate reports without hours of Excel work
  • Stay compliant with FCA regulations

Frustrations

  • Must manually input paper/electronic statements
  • No auto-categorisation of transactions
  • Report preparation takes 3-4 hours per client
  • Sometimes assigned unfamiliar industries
"I became an adviser to help people, not to spend half my day copying numbers into spreadsheets."
ET

Emma Thompson

Team Manager, 42 β€’ 15 years at DWK β€’ Oversees 8 advisers, ~60 clients

Goals

  • Monitor team with real data, not verbal updates
  • Proactively reassign before complaints
  • Present data-driven insights at leadership meetings
  • Balance workload across team fairly

Frustrations

  • Client-adviser matching is random
  • Only discovers mismatches after complaints
  • Data scattered across CRM, email, Excel
  • Cannot generate segment analysis without manual work
"I'm making decisions based on gut feeling because I don't have the dashboards to show me what's actually happening."

Cybersecurity Analysis

Threat actors, asset identification, vulnerability mapping, risk assessment, and a complete malicious campaign narrative.

🎭 Threat Actors

IDActorMotivationCapability
TA-01External CybercriminalsFinancial gainHigh
TA-02Disgruntled InsiderRevenge, financial gainMedium
TA-03Hacktivist GroupsReputational damageMedium
TA-04Nation-State ActorsEspionageVery High
TA-05Script KiddiesNotorietyLow
TA-06Social EngineersCredential theftMedium

⚠️ Risk Assessment

RiskThreatVulnerabilityImpactLevel
R-01Phishing + weak passwordsV-07, V-01CriticalCritical
R-02Broken access controlV-03, V-06CriticalHigh
R-03Insider data exfiltrationV-09, V-05HighHigh
R-04Social engineeringV-07HighHigh
R-05DDoSV-08MediumMedium
R-06SQL injectionV-02CriticalMedium
R-07XSS session theftV-04HighHigh

πŸ’€ Malicious Campaign: "FinPhish"

Credential harvesting & account takeover campaign targeting DWK PFMS users.

Phase 1: Reconnaissance

Attacker identifies PFMS via Cloudflare Pages deployment. Enumerates login flow, identifies Supabase backend via network inspection.

Phase 2: Phishing Campaign

Sends targeted emails impersonating DWK ("Verify Your Account"). Cloned login page captures credentials + intercepts 2FA codes via real-time proxy.

Phase 3: Account Takeover

Logs into victim's account. Accesses full transaction history, personal details, exported reports, adviser communications.

Phase 4: Lateral Movement

If adviser account compromised: accesses multiple client portfolios. Exploits IDOR to access other advisers' client reports.

Phase 5: Exfiltration

PII sold on dark web. Financial patterns used for identity theft, targeted fraud, loan applications in victims' names.

πŸ›‘οΈ Mitigation Strategies

RiskMitigation
PhishingStrong passwords (12+ chars), FIDO2 hardware 2FA, phishing-resistant auth
Broken AccessStrict Supabase RLS, server-side validation, never trust client role claims
Insider ThreatComprehensive audit logging, least privilege, anomaly detection
DDoSCloudflare DDoS protection, rate limiting, failover
XSSCSP headers, HttpOnly+Secure+SameSite cookies, output encoding
InjectionParameterised queries (Supabase), input validation, WAF

Design Evidence

Architecture diagrams, ERD, sequence diagrams, and component hierarchy showing system design decisions.

πŸ—οΈ System Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ CLIENT LAYER β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚Customer β”‚ β”‚Adviser β”‚ β”‚Manager β”‚ β”‚ β”‚ β”‚(Mobile) β”‚ β”‚(Desktop)β”‚ β”‚(Desktop)β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ React SPA β”‚ β”‚ β”‚ β”‚ (Vite + TS) β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ HTTPS β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ Cloudflare β”‚ CDN + WAF + DDoS β”‚ β”‚ β”‚ Pages β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ HTTPS β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ Supabase β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚ β”‚ β”‚ β”‚ β”‚ Auth β”‚β”‚ JWT + 2FA β”‚ β”‚ β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”‚ β”‚ β”‚ β”‚ β”‚PostgreSQLβ”‚β”‚ RLS Policies β”‚ β”‚ β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”‚ β”‚ β”‚ β”‚ β”‚ Storage β”‚β”‚ Report PDFs β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ—‚οΈ Component Hierarchy

App β”œβ”€β”€ Login β”‚ β”œβ”€β”€ Role Selector (Customer / Adviser / Manager) β”‚ β”œβ”€β”€ Email + Password Form β”‚ └── 2FA Verification (6-digit code) β”‚ β”œβ”€β”€ Layout β”‚ β”œβ”€β”€ Sidebar (role-aware nav links) β”‚ └── TopNav (search, notifications, dark mode, profile) β”‚ β”œβ”€β”€ Customer Pages β”‚ β”œβ”€β”€ Dashboard (KPI cards, TrendLine, DonutChart, HealthGauge) β”‚ β”œβ”€β”€ Transactions (searchable table, category badges, CSV export) β”‚ β”œβ”€β”€ Budgets (progress bars, alerts at 80%/100%, create form) β”‚ β”œβ”€β”€ Goals (progress cards, deadline tracking, create form) β”‚ └── Insights (bar chart, health score, AI tips, adviser request) β”‚ β”œβ”€β”€ Adviser Pages β”‚ β”œβ”€β”€ Dashboard (client list, pending consultations, metrics) β”‚ β”œβ”€β”€ ClientDetail (trends, categories, transactions, notes) β”‚ └── Reports (generate form, report list, FCA compliance) β”‚ └── Manager Pages β”œβ”€β”€ Dashboard (KPIs, workload chart, industry distribution) β”œβ”€β”€ Assignments (table, match scores, reassignment panel) └── Analytics (satisfaction, growth, comparison, income dist)

πŸ”„ Design Iterations

IterationDecisionRationale
1Code prototype over FigmaInteractive demo with real data flow is more convincing at exhibition
2React + TypeScript + ViteType safety, fast builds, excellent ecosystem for rapid development
3Supabase for backendManaged auth + PostgreSQL + RLS β€” no server to maintain
4Tailwind CSS + shadcn patternsConsistent styling, accessible components, rapid iteration
5Recharts for visualisationReact-native composable charts, easier than D3 for team
6Mobile-first customer, desktop staffMatches real usage β€” customers on phones, advisers on workstations
7Mock data with realistic patternsCredible demo without requiring real bank data or APIs