← Questions
Design a personal finance aggregator like Mint
0
I was asked this
No reports yet. Sign in to say where you were asked it.
Design a personal finance app like Mint. Users link their bank, credit card and loan accounts; the system pulls balances and transactions at least daily, normalizes and categorizes them, and shows budgets, spending trends, recurring bills and alerts. Credentials and financial data must be kept safe.
Requirements
- Functional: link accounts through a data aggregator or direct bank connections (OAuth where available); fetch balances and transactions on a schedule and on demand; deduplicate and normalize them; categorize automatically, with user corrections; budgets per category; detect recurring bills; alerts (low balance, large purchase, budget exceeded, bill due); multi-currency.
- Non-functional: millions of users and accounts; third-party APIs that are slow, rate-limited and sometimes down; no duplicate or missing transactions; strong security and privacy (encryption, minimal access to credentials).
Clarifying questions
- How many users and linked accounts, and how fresh must data be?
- Use an aggregator, connect to banks directly, or both?
- Is the app read-only, or can it move money?
- Which regions and currencies?
- What alerts, and through which channels?
What a strong answer covers
- Ingestion: per-institution connectors behind one interface, scheduled pulls spread over the day, webhooks where the provider supports them, rate limits and backoff per institution, and graceful handling of expired logins that need the user to re-link.
- Normalization and deduplication: a canonical transaction model (account, amount in minor units with currency, posted and pending dates, merchant, provider id); pending-to-posted matching; idempotent upserts keyed by provider ids or a fingerprint.
- Categorization: merchant rules, a model trained on corrected labels, and user overrides that win and feed back.
- Budgets and trends computed from aggregates per user, month and category, updated incrementally; recurring bills detected from periodic patterns.
- Alerts as consumers of new-transaction and balance events, with per-user preferences and deduplication.
- Security: OAuth tokens rather than stored passwords where possible, secrets in a vault with envelope encryption, field-level encryption of sensitive data, least-privilege services, audit logs, and keeping card data out of scope.
- Storage sharded by user; handling an aggregator outage without showing users wrong balances.
Follow-ups
- A bank changes its transaction ids, and every transaction arrives again. How do you avoid duplicates?
- A user disputes a category for a merchant: apply it to their past and future transactions only.
- Add net-worth tracking with investments priced daily.
- The aggregator you depend on raises prices 5x. How do you reduce dependence?
Sign in to see the worked answer
The full answer, chapter by chapter, with what interviewers expect at each level. Free with an account: one full answer per company.
What the labs asked this week
A weekly email of what OpenAI, Anthropic and the other top AI labs asked engineers, round by round.
Sign in to see the worked answer
The full answer, chapter by chapter, with what interviewers expect at each level. Free with an account: one full answer per company.
Draw your answer hereBoxes, arrows and notes, saved for you to come back to.Sign in to start drawing
