Building in Public

DevLog

Building in Public with Claude Code

Daily dispatches from the build floor. Real projects, real problems, real solutions — all built with AI-assisted development.

deedstackemailpaymentssaas

Itemized Payment Receipts on Both Portal and Manual Routes

How I built itemized payment receipts for both card and manual payment routes, including the rounding fix that made them add up.

November 14, 20264 min read
deedstackpaymentsrefundsmigrations

Extra-principal payments and principal-only payments in DeedStack

How extra-principal and principal-only payments work in DeedStack, including allocation order and refund behavior.

November 13, 20263 min read
epsteinscanbeacondeployprivacy

Deploying a visitor beacon with salted IP hashing to production

How I deployed a visitor beacon to production with salted IP hashing and verified it through live traffic without leaking query strings.

November 12, 20263 min read
epsteinscanvalidationclassifierinfrastructure

When Your Validation Dataset Is Your Implementation

A visitor classifier failed validation when the acceptance gates were defined against the very implementation being tested.

November 11, 20263 min read
deedstackpaymentsinfrastructurerefundsbilling

Fixing Square payment captures, idempotency, and refunds

Fixed non-transactional Square captures, time-based idempotency keys that double-charged tenants, and revenue queries that excluded refunds instead of netting them.

November 10, 20266 min read
epsteinscaninfrastructureautomation

Analytics dashboard cut from 67s to 1.36s with daily rollups

How I cut an admin analytics dashboard from 67 seconds to 1.36 seconds using daily rollup tables and a backfill script.

November 9, 20263 min read
deedstacksecuritypaymentsinfrastructure

Fixing payment reconciliation and loan term validation

How I fixed payment reconciliation, loan term validation, and a multi-tenant leak that the audit missed.

November 8, 20264 min read
deedstackpaymentssecurityinfrastructure

Fixing Square payment idempotency and transactional capture

How I wrapped Square payment captures in real transactions and replaced time-based idempotency keys with deterministic hashes.

November 7, 20264 min read
epsteinscanbotscloudflareinfrastructureperformance

Residential-Proxy Fleet Contaminated the Browser Census

A residential-proxy fleet ran real browsers and contaminated the page-load census, hiding that real traffic was 0.13% of the total.

November 6, 20264 min read
healthwindows

OpenProcess succeeds on a terminated process until the handle closes

OpenProcess keeps succeeding on a terminated process until the handle closes, so GetExitCodeProcess is the check that matters.

November 5, 20261 min read