← Jacob Prudent · Case study · April to October 2026

Six months as the working lead of a startup's commerce team

Since April 2026 I have been team lead for the commerce product at a US telehealth startup. I led a six-person offshore engineering team, wrote most of the specifications they built from, and shipped and supported a large share of the code myself. This page sets out what the record shows.

The record, 14 April to 22 October 2026

451pull requests merged, of 622 opened, across 12 repositories
270+pull requests reviewed for the team
790+tickets written, including 59 epics (Jira count as of 14 October)
6engineers led, in an offshore team
180+support escalations resolved

Figures come from GitHub and Jira. Many changes ship as two pull requests, one for each environment, so there are fewer distinct changes than the pull request count suggests.

The job

The company is a startup, so the role covered three kinds of work at once.

Lead

I turned product requirement documents into epics and tickets the team could build from, ran estimation and sprint planning, and reviewed and merged the team's code.

Build

I shipped my own features and fixes across the platform API, the patient storefront and the clinic admin app.

Own production

I ran deploys, on-call and production data repairs, and found the root cause when something broke.

Selected work

Each item is marked Built where I wrote the code, Led where the team built it from my specification and review, and Investigated where I found the cause and directed the fix.

LedApr–Jun 2026

Building an in-house commerce platform

Context
The storefront ran on WooCommerce behind the scenes, and subscription renewals depended on its webhooks. The company wanted it gone without breaking live clinics.
What I did
I specified the epic: a BullMQ renewal engine with its own scheduler, worker, failure alerts and daily recovery sweep, plus a way to migrate each clinic. One engineer on my team built most of it. I wrote the first client's subscription migration script and a migration playbook with import templates and a no-write dry run.
Result
29 of 30 tickets delivered, and the first client migrated with it.
Node.js · BullMQ · Redis · MongoDB · Stripe
LedSep–Oct 2026

One-page checkout

Context
Checkout ran over several steps, and clinics wanted to configure their own patient journeys.
What I did
I split the work into 38 tickets for the team, reviewed the pull requests and ran the release. Review caught four release blockers, one of them a security issue. I built the journey configuration options myself.
Result
Live in production since October 2026.
Next.js 15 · React 19 · TypeScript · Node.js
BuiltAug–Oct 2026

Billing correction tool

Context
Correcting an invoice in a closed billing period meant reissuing it by hand. In one month about 20 invoices across 16 clients were handled this way.
What I did
I built a reprice-and-reissue tool for closed periods on Stripe Billing over five review rounds, and reconciled platform invoices against Stripe's records.
Result
Shipped. Corrections no longer need a manual reissue.
Stripe Billing · Node.js · React
InvestigatedJun–Oct 2026

Subscription renewals and payment reliability

Context
Some subscription renewals were failing without raising an error, and a race condition could create duplicate payment customers.
What I did
I traced the renewal fault in the worker, designed the fix the team built, and oversaw the repair of affected subscriptions in production. For the race I added distributed locks around customer and payment creation.
Result
Both fixed in production.
BullMQ · Redis · MongoDB · Stripe
LedJun–Oct 2026

Operator work queue for clinic staff

Context
Clinic staff worked orders, patient messages and support tickets in separate places, and the queue slowed down for the largest clinics.
What I did
I specified the queue and its messaging, and bridged support tickets into Jira Service Management. For the queue's performance work I rescoped a planned event-maintained read-model to server-side filtering and pagination in the database. I built the message-template overrides, and diagnosed a fault that hid conversations for a clinic with more than 2,000 open threads; the first fix is live and a follow-up is in review.
Result
Queue and ticket bridge live.
React 18 · Redux Toolkit · Node.js · MongoDB · Jira Service Management API
LedAug–Oct 2026

Payment-processor evaluation

Context
The CEO wanted more payment options and was weighing a move to a different processor for better rates.
What I did
I completed Apple Pay and Google Pay on the existing processor, including finding why Google Pay wasn't appearing. I then wrote the technical assessment of the two candidates: what each lacked (merchant model, 3-D Secure, card updater) and what a move would cost in integration work. I split the chosen option into seven stories for the team.
Result
Wallets live. The assessment confirmed the CEO's preferred option was workable and set out what it would take; that integration is in progress.
Stripe · Payment APIs · Next.js
BuiltJul–Oct 2026

Identity-verification integration

Context
Some prescriptions need a verified ID. Each check costs money, and returning patients were being checked again.
What I did
I designed when a check is billed and added a 365-day reuse window for patients who had already passed. I ran the launch checks when a client went live.
Result
97% of the client's first 680 attempts verified.
Third-party identity API · Webhooks · Node.js
InvestigatedJul–Oct 2026

Analytics reconciliation

Context
A client questioned the numbers in their conversion funnel.
What I did
I reconciled our funnel against the client's own data, removed events that should never have been recorded, and restored 4,870 missing events.
Result
Our figures matched the client's to within 0.5%.
MongoDB aggregation · UTM attribution
InvestigatedJun–Oct 2026

Webhook and API documentation audit

Context
Partners build against the platform's webhooks and API docs, and the docs had drifted from the system.
What I did
I traced all 53 webhook events through the code, recorded where the docs and the behaviour disagreed, and rewrote the docs. I also started a public changelog.
Result
Corrections merged and a changelog added.
REST API · Webhooks · ReadMe
BuiltSep–Oct 2026

Security fixes and dependency upgrades

Context
As part of the company’s SOC 2 Type II audit, a penetration test produced findings to fix, and several services were on outdated runtimes.
What I did
I wrote the fixes for the penetration-test findings across eleven repositories, now in review, and run the dependency-security programme, including a Node.js 24 upgrade across six of them. I facilitated the company's incident-response tabletop exercise.
Result
In progress.
Node.js 24 · Dependabot

How I work with AI

About 98% of my commits in this period were written with Claude Code. I use it as the implementation layer. Deciding what gets built, checking it and answering for what ships stays with me.

How I run production data changes

  1. Back upCopy every record the change will touch.
  2. Dry runRun the script without writing and count what it would change.
  3. Guarded writeWrite only records that still match the expected state.
  4. VerifyRe-read the data and compare it with the dry run.
  5. Keep a revertLeave a tested script that restores the backup.

Stack in daily use

Backend

Node.js, Express, NestJS, MongoDB, Mongoose, Redis, BullMQ

Frontend

React, Next.js, TypeScript, Vite, Tailwind CSS, Redux Toolkit

Payments and integrations

Stripe, Authorize.Net, Apple Pay, Google Pay, SendGrid, Twilio, webhooks

Delivery

Jenkins, Docker, Kubernetes (EKS), Helm, AWS, Jest, Vitest

Tools

Claude Code, CodeRabbit, GitHub, Jira