Full-stack engineer · retail banker · Los Angeles County

The engineer who ships banking tools

Production apps built with Claude Code and the Anthropic API, each with a test suite behind it, by someone who spent two years at a bank branch desk. Eleven projects, all live, all built solo.

Banker CRM, My Day queue for a Branch Manager
Banker CRM: My Day queue, persona switch, New Lead capture, Pipeline, Performance Open the live demo
4 extensions on the Chrome Web Store 5 apps live on Vercel 1 native iOS / iPadOS app 1,100+ automated tests FINRA SIE · Certified Banker

Selected work

Eleven shipped products in four kinds of work

Every card is a shipped product with a test suite behind it. Click the name to open it.

Banking and AI SaaS

Branch problems with an LLM in the loop. Structured outputs with deterministic fallbacks, and a human approves before anything saves.

Banker CRM New Lead: a one-line note parsed into name and phone, ready to capture

Banker CRMdemo.billyye.com

Role-based CRM for a community bank. Claude parses a banker's freeform note into a structured lead, routes it across 29 products, and the banker approves before save. Stage gates live in Postgres triggers, not the UI.

11 rules7 pipelines8 fillable forms
Tablemana mock: on the left a photographed paper menu being read into validated items with prices; on the right the live site's salad section with photos, prices and Add buttons

Tablemanatablemana.vercel.app · source

A restaurant's own website with online ordering and reservations, generated from a photo of its menu. Claude reads every item and price into a validated schema, and the site goes live with prepaid pickup, SMS-confirmed bookings, and a counter tablet that can 86 an item with one tap. Flat pricing, no commissions, and every diner stays on the owner's own list.

64 transitions tested147 Vitest cases2 days
lmsend mock: on the left the day picker and three matched campaigns with subscriber counts per segment; on the right the drafts to review, one already sent, and a two-tap send countdown with a cancel button

lmsendlmsend-pwa.vercel.app

Mobile-first Campaign Monitor automation for my own store's daily sends. Two-tap confirm, already-sent detection, and a retry that checks whether the draft already exists before creating another. HMAC-signed sessions with login throttling.

4 segmented campaigns26 unit tests

PDF and Chrome extensions

Everything processed in the browser, zero network calls, minimal permissions. Four are live on the Chrome Web Store.

PDF Edna: a heading inside a PDF selected and being recolored in place, with the rest of the page untouched

PDF EdnaChrome Web Store

Click a paragraph and retype it. Text reflows in its original box. A hand-written PDF content-stream lexer, parser, interpreter and writer runs in a Web Worker. pdf.js only renders.

130 tests17 releases0 host permissions
PDF Mana: a seven-page document laid out as a grid of page thumbnails with rotate, crop, split and delete controls

PDF ManaChrome Web Store · MIT

Client-side page editor: merge, reorder, split, rotate, crop, interleave double-sided scans. Every operation is a pure undoable transform over a list of page descriptors.

240+ tests29 releases in 8 weeks
Rabbit Hole Map: a browsing session drawn as a constellation of linked pages, thirteen pages and twelve hops

Rabbit Hole MapChrome Web Store

Your browsing trail as a force-directed constellation, with session replay and a pixel-art mech rabbit mini-game. Hand-rolled force sim and Web Audio, zero runtime dependencies.

83 tests8 ADRs9 days
Block Site: the blocked-site page showing youtube.com paused with an 8:42 countdown and a breathing ring

Block SiteChrome Web Store

One click blocks a site for 10, 30, or 60 minutes with no early unblock. One declarativeNetRequest rule and one alarm per domain, keyed by FNV-1a hash.

<1,000 lines60 KB0 data collected

Offline-first PWAs

Event-sourced state, timestamps instead of ticks, sync engines that survive sleep and reloads.

Taskmana in dark mode: Monday's Today list with four of six slots used, one task done, carry-over chevrons on the rest, and Focus and Plan buttons

Taskmanataskmana-nine.vercel.app · PWA + extension, MIT

GTD capture, an Ivy Lee six-task daily queue, Bullet Journal migration. The PWA and the extension have no build step and share one RLS-scoped row through a local-first sync engine with optimistic concurrency.

103 unit tests~90 Playwright runs
Scanmana: AVAH chart card with 1M, 3M and 6M gains, ADR, a tightness score, and pivot, trigger and stop levels drawn on the candles

Scanmanascanmana.vercel.app · single-user, password-gated · source, MIT

End-of-day stock momentum scanner. One grouped API call pulls the whole US market nightly under a free-tier rate limit, then Darvas, Livermore, and Minervini screens rank the deck and web-push it.

54 tests13 releases3 days

Native iOS

Pure Swift, no third-party dependencies, deterministic scheduling with an injected clock.

Anchor on iPhone: the Today screen with a daily practice prompt and the day's reminders

AnchorSwiftUI · iOS / iPadOS

Day station for people with memory loss, plus a caregiver app, in English and Simplified Chinese. Copy tests fail the build if a score or the word "wrong" reaches the station screen.

172 XCTests16 XCUITests5 days

Case studies

What changed after I touched it

Three from the branch, one from the product side. Each headline is the outcome, not the feature.

Mock of the fix: two duplicate customer files with online banking locked, merged into one profile with addresses standardized across person, accounts, portfolio and beneficiaries, and online banking active Banking ops

Duplicate customer files were locking people out of online banking. Found the cause and fixed the profiles.

Duplicate Customer Information Files in FISERV Navigator and Web Director stopped customers from seeing their accounts online. Resolved the duplicates and standardized addresses across persons, accounts, portfolios, and beneficiaries.

Retail bank branch · 2025
Before and after mock: a printed cash worksheet, pen and desk calculator off by 9,900 on the left; one spreadsheet with calculated closing balances, balanced to $0.00, on the right Banking ops

A PDF-and-calculator cash worksheet became a self-calculating sheet, then spread to other branches.

Rebuilt the branch's manual closing worksheet in Excel so entries could not disagree with each other. An Operations Manager at another branch adopted it and passed it to retail support officers at about 20 branches.

Retail bank branch · 2025
Mock of the onboarding guide contents: nine procedures across two weeks, with time to independent down from one or two months to one or two weeks Banking ops

Onboarding a new Financial Representative Officer went from one or two months to one or two weeks.

Wrote and maintained the onboarding documentation through the year, then trained the new officer on it. Also wrote the complete daily procedures for the Bank Operations Manager desk and passed the annual internal audit while covering it.

Retail bank branch · 2025
PDF Edna: a paragraph clicked and retyped inside a PDF, the words reflowing to fit the box Product

Editing text inside a PDF used to mean exporting it somewhere else. Now you click the paragraph and type.

Built a content-stream parser and writer as the single source of truth for text geometry, so edits reflow inside the original box and overflow into measured free space. Seventeen tagged releases in a two-day sprint.

Chrome Web Store · open source

Numbers

Built on tests, not claims

Vitest, Playwright in Chromium and real WebKit, axe WCAG 2.1 AA scans, visual-regression baselines, XCTest. Every figure below is on the resume.

1,100+automated tests across 11 projects
64order-state transitions, every one tested
29releases of PDF Mana in eight weeks
~20branches using the EZTeller enhancements I helped ship
1 of 12selected for the bank's leadership Talent Program
$1.45Mpeak-year revenue running my own ecommerce store

Get in touch

See what a banker who ships can do for your team.

Available immediately. Based in Los Angeles County, open to relocation.