The thesis
Everything in v3 was built for the load of a handful of marketplace lawyers, and it shows in the configuration, not the code. Two reframes carry the whole audit.
Capacity · Platform-v3 · Draft for review
v3 serves fewer than 10 lawyers today. Woodstock is ~82, onboarding in waves, any time now. This audit maps what breaks, at what lawyer count, and what it costs to be ready. The short answer: the platform is under-configured, not under-built.
We designed against three checkpoints, one primary target. The bars rise with the load each stage puts on the shared platform.
Everything in v3 was built for the load of a handful of marketplace lawyers, and it shows in the configuration, not the code. Two reframes carry the whole audit.
All 31 production services run one task each, with autoscaling policies attached but pinned to a single instance. The saturation-alerting pipeline is built end to end and has zero consumers. The pooler that should protect the database is configured with no ceiling. The fixes are configuration, not a rewrite.
At full Woodstock most systems cope in steady state. What breaks is the act of onboarding: the serialized mailbox backfill, the one-time document import, the matter-creation fan-out, the day-one login storm, all hitting one shared database at once. The mitigation is sequencing and pacing, which is cheap.
Read this as a heat map. Rows are severity, columns are when a finding starts to bite. The critical findings cluster in the two left columns, today and the first wave, and the coloured dot on each says how expensive the fix is. Almost all of the hottest cells are green.
The scariest finding is also the cheapest: one shared db.t4g.small, single-AZ, whose pooler is set to allow 1,600 backend connections against a 225 ceiling. It breaks inside the first wave, before 16 lawyers are fully on. The fix is a config change.
16 logical databases on one burstable instance, connection and memory bound. 8 to 12 times the people exhausts it long before CPU matters. Every fix here is config-only.
~130 fresh mailboxes through a backfill serialized one at a time, and a single-task email service a heavy mailbox can OOM into a 503. Two config changes bring the wave under a day.
The dedicated import lane is unwired, and ~0.27% of documents hit a timeout and are permanently discarded with no error event, during the exact migration Woodstock is trusting us with.
Chat and voice streams are pinned to instance memory, so a deploy or scale-in kills every in-flight generation. The durable-streams fix is written but unmerged.
No saturation alerting exists, yet the delivery pipeline is already built with zero consumers. The highest-leverage item in the whole audit.
Reading the vendor billing pages turned three feared capacity risks into cost footnotes. OpenAI runs at 180M tokens per minute, not a wall even for a full LEAP migration. Anthropic is on a custom tier at 10M input tokens per minute, well above the busiest projection. Inngest bills run and step overage rather than hard-capping it.
The one vendor limit that genuinely binds is Inngest Connect workers. New infrastructure forces the 16 private-networked services onto always-connected workers, and we draw about 19 of a 50-worker cap today. Taking the fleet to two or three tasks each for HA reaches 32 to 48, which tips over 50 once a fleet-wide deploy overlaps. It is a soft, paid limit though, raised at ten dollars a worker or on an enterprise plan, so it does not block scaling. Usefully, it puts a real dollar figure on the consolidation case: every service the guild consolidates removes a paid worker.
The fixed-infra number is small and expected. The real exposure is the variable LLM bill, which grows with chat volume and per-turn context size, a cost-engineering problem rather than an infrastructure one.
Fixed infra is roughly the July right-sizing savings given back, plus the Inngest worker add-on. One-time document import in LLM terms is only $0.4–0.8k.
Each gate is a precondition for the scale it protects. The full trigger-to-action playbook, with metric thresholds, is in the deep-dive.
One hard rule of order: do not turn on request-based scale-out before the database and pool work lands. More tasks on today's pool config multiplies connection demand into a 225-connection instance. Always DB and pool, then memory and HA, then worker-split, then request-scaling.
Jaime's LEAP-to-v3 migration is a different object from the open-case import above. On stated-assumption guidelines it is roughly 10 to 25 thousand matters and half a million to two million documents, four to ten times the open-case import. The real number hinges on the LEAP export count.
The cost stays immaterial, two to eight thousand dollars in LLM terms, and the vendor limits are not a wall. It is a throughput, records-integrity and orchestration problem, and it forces the one genuinely structural infrastructure build the rest of the audit could defer: OpenSearch onto a multi-node HA domain sized to the full corpus. Sequenced properly, with fan-out suppressed on import and a reconciliation harness so no legal record is silently lost, it is a two to nine week controlled operation. Run through the live paths at today's config, it is a multi-month queue with silent loss.
This fills a genuinely empty slot. The backend guild's board has framework 1.0 and a consolidation proposal, but nothing on load testing, autoscaling, database sizing, pooling, SLOs, rate limiting, or firm-ramp readiness. These findings should become guild work, not a parallel track. Framework 1.0 should carry the retention policy and the standard health-check grace default. Consolidation and the worker-split finding are the same question from two angles, and the audit now hands consolidation a hard dollar figure through the Inngest worker cost. The platform does not need to be rebuilt for Woodstock. It needs to be switched on and paced.
The full strategy, demand model, 39-finding ledger and per-area detail live in Notion. v3 Capacity Strategy — Woodstock Ramp →
Ten deep-dive artifacts, each adversarially verified, plus the load model, triggers playbook and LEAP sizing in the lawhive-capacity-audit repo. No headline conclusion was refuted under verification.