17 JUL 2026 · PROVIDERS
The credits ran out, and the product went dark.
Every AI task ran on one provider’s API. When the account ran out of credit, drawing review, extraction, transcription and the assistants all stopped at once. About 21 call sites moved to open-weight models through one router in a day, which is why production runs mostly on them today. The same week we found the embeddings provider had been out of quota for two weeks, silently.
One router, one billing account, and a model chosen per task.
AUG 2026 · ADOPTION
Built as a forms app, used as an AI pipeline.
By August, 93% of records were filed by machines and four had a human author. A full RFI module had produced zero RFIs. AI extraction created work faster than anyone could triage it: one meeting produced 46 action items, 41% of 899 were later cancelled, 214 of them in a single day, and 73% of suggested next steps were rejected.
The interface was rebuilt around triage, chasing, a typed records library and a project timeline.
AUG 2026 · CHASING
An AI label decided who got chased.
Chase emails went out only for certain AI-assigned task types. A contractor 17 days overdue on as-built drawings was never chased, because the model had reasonably called that task “admin.” Widening the rule in a dry run showed the opposite problem: one contractor would have received eight identical overdue emails in the same minute.
Who owns the work decides who is chased, and each contractor gets one digest per sweep.
JUL–SEP 2026 · ARCHITECTURE
The agent framework we built and threw away.
In July we built a separate Python agent harness with 56 tests. The agent’s first real job, chasing contractors, shipped in August as plain Rails without any of it. A September review retired the harness, and found its design notes cited figures such as a “71% median gain” that traced back to no source.
The agent loop moved into the main app, and its duties were cut from nine to three.