Épris RichardsonFrontend engineer

Senior frontend engineer working on money-movement product UI — secure data layers, transactional flows, and the states that show up when data is late, missing, or unauthorized.

That's the shape of Fortify Bank, a money-movement app built with Next.js, TypeScript, Plaid, and Dwolla — read the case study for the security pass that shaped it. Open to senior frontend roles.

Selected work01 / 04

Fortify Bank

A cash flow app that actually moves money, not just tracks it.

The strongest technical story

Before building Plaid OAuth or two-factor auth, I ran a focused security audit and found something I hadn't planned to find. A client component was calling a data-fetch function directly instead of going through a server action. Because Appwrite auto-expands relationship fields, that one call was returning the recipient's SSN, date of birth, home address, and both parties' bank credentials, in plaintext, into the sender's browser, on every single transfer.

I stopped and fixed it before writing another feature. The fix moved the entire transfer flow behind a single server action that never lets the client touch a raw bank or user record. I also found the account-ID obfuscation was base64, not encryption, easily reversible by anyone who saw a shareable ID, and replaced it with AES-256-GCM.

I'm including this because it's the most honest thing I can say about the project: the process caught a real, severe bug before it shipped.

What I actually owned02 / 04

data boundary

Moved the transfer flow behind one server action so no raw bank or user record reaches the client, after an audit proved the direct-fetch path was leaking them.

data model

Modeled forecasting on a recurring rule plus per-occurrence exceptions — borrowed from the spreadsheet workflow that already worked — instead of auto-detecting recurrence from raw history.

two data paths

Kept guest-mode dummy data and live Plaid data behind the same component API by branching at the fetch layer, so a transaction list never knows which one it's rendering.

How I check the work03 / 04

Testing

Jest, React Testing Library, and Mock Service Worker at WECO to catch transactional defects before they reached order surfaces.

Validation

Zod schemas at the edge of every money-moving surface in Fortify; Axios flows at WECO refactored with strict validation, cutting transactional data errors 15%.

Performance

Core Web Vitals work across 8 sites at BHC (+12% organic traffic); an SSR migration at WECO that cut page load latency 7%.

Review

Led reviews and mentored 4 designers on HTML/CSS at BHC; on Fortify, decisions live in version-controlled ADRs.

Looking for a senior frontend engineer who reads the audit log?

Open to full-time senior frontend roles on product surfaces where correctness matters — payments, ledgers, data-heavy internal tools.