Engineering notes on AI, SaaS platforms and building software that ships.
Written from what we run in production across our own products and our clients'. For the long-form pieces, see Insights.
The Enrollment Model Everyone Gets Wrong First in Ed-Tech
Enrollment isn't a signup — it's a time-bound state machine with money, seats, and holds attached, and generic SaaS models break on it fast.
How to Pick Between Offshore, Nearshore, and a Senior Team
Hourly rate is the wrong lens for this decision — here's the arithmetic and the failure modes that actually separate these three options.
Offline-First Architecture for Software That Can't Assume a Signal
Connectivity is a feature you have to design for, not a default you can assume, and the difference shows up in your data model, not your loading spinner.
Evaluating an AI Feature With No Labelled Dataset and No Time
A decision rule for scoring AI output when there's no ground truth and the launch date won't move.
Reconciliation, Ledgers, and Why a Float Isn't Money
In fintech software, a balance field is a guess and a float is money you're holding for someone else, not revenue.
Fixed Price or Time and Materials: Which Protects You More
The pricing model on your contract decides who eats the cost of every surprise, so pick it based on how well you actually know the scope.
How to Prove Your Data Migration Actually Worked, Not Just Ran
A migration script that exits cleanly hasn't proven anything. A reconciliation report is what tells you the data on the other side is correct.
Keeping AI Spend Predictable With Wallets and Per-Tenant Budgets
AI features fail commercially long before they fail technically, usually because nobody metered the spend by tenant.
What Changes in Your Software Once PHI Enters the Database
Adding a patient_id column doesn't make software HIPAA compliant; the access model, audit trail, and retention rules all have to change too.
What to Require in a Development Contract Before You Sign
The clauses that decide whether you own your product or rent it from the studio that built it.
Migrating a Production Database Without a Maintenance Window
How we move schemas and whole tenant databases in production using expand-and-contract, dual writes and a reconciliation report that gates every cutover.
The Logistics Domain Rules Generic Software Always Breaks
Freight moves in splits, merges and exceptions. Generic order software models a straight line, and that mismatch is where the data model starts lying to you.