Lexi - Multi-Tenant AI Office Manager for Contractors by Joshua BrownLexi - Multi-Tenant AI Office Manager for Contractors by Joshua Brown

Lexi - Multi-Tenant AI Office Manager for Contractors

Joshua Brown

Joshua Brown

What it is
Lexi is a multi-tenant AI office manager and marketing agent for trade contractors. She runs the content pipeline end to end, from draft to script to render to format to approval to publish, out to Facebook, Instagram, YouTube and LinkedIn, on a cadence the contractor sets, with the contractor approving before anything goes live. Each contractor is a tenant with their own voice, their own brand, and their own calendar.
The attribution spine
The interesting part is not the posting. It is that a customer accepting a quote on the field app's public page lands as real dollars in Lexi's funnel, across two separate applications and two separate databases. Tracked links, campaign objects, funnel events, joined by a shared event spine. A contractor can ask which post paid for itself and get an answer instead of an opinion. Most marketing tools stop at impressions.
Three things that only show up in production
The video model lies about length. The speech-to-video model returns a fixed frame count no matter how long the audio is, five seconds by default and seven and a half at the ceiling. So every generated video was the first sentence of the script and nothing else, and it looked perfectly fine in the preview. Fixed by splitting the narration at sentence boundaries, rendering each piece separately and stitching them, with the voice model pinned to a fixed seed so the result is one voice instead of several takes.
Checking that a credential exists is not checking that it works. The publisher preflight used to confirm the environment variables were set. They were set. Meanwhile the Meta app behind Facebook and Instagram had been deleted and a YouTube OAuth client secret had gone invalid. Publishing was dead and every check was green. The preflight now calls each platform's who-am-I endpoint and reports the actual account name it is authenticated as.
A delete that could not delete. Content posts were referenced by campaign links and attribution events with no cascade, so any post that had ever earned a tracked click, which was nearly all of them, refused to delete and returned a reference error. The fix nulls the pointers and keeps the attribution history, because the funnel record is worth more than the post.
The self-test
The health surface reads real product state, meaning content outcomes, attribution coverage, live publisher credentials and the voice reference clip, rather than pinging the database and calling it up. It alerts when the verdict gets worse, not on every run, so it does not train you to ignore it. It is the thing that caught all three of the problems above.
Cost discipline
Render cost per finished video was measured against the actual vendor billing dashboard rather than estimated from a price page. Once the real number was known, posting cadence got tuned to the budget instead of the budget getting a surprise. AI features are cheap to demo and expensive to run, and the difference is whether anybody measured.
Stack
Node.js, PostgreSQL, Redis, Claude, n8n, multi-tenant SaaS architecture, Meta and YouTube publishing APIs, AI video and text-to-speech models, Railway.
What this means if you are hiring
Anybody can wire an AI content generator to a social API and demo it. Keeping it running for real tenants, with real credentials that expire, real costs that add up, and real money traced back to the post that earned it, is a different job. That is the job I do, and I do it on my own product first, which means you are not the one paying for the lessons.
Like this project

Posted Sep 24, 2026

A multi-tenant AI office manager for trade contractors. Draft, script, render, approve, publish, then tie the revenue back to the post that earned it.