stpierre.ai · internal · September 3, 2026
Akash sells 9–5. You own delivery. This page is everything you need to run the machine: what the business is, where the lines are, the daily rhythm, the numbers, and every link.
The one number: $100,000 cash collected by December 31, 2026. Gross, not net — under the 50/10/10/30 split (ads / tax / opex / profit), $100K collected means ~$30K kept. Every plan and dashboard frames against cash collected, never monthly recurring revenue.
Your job in one line: keep leads flowing to clients, keep every rail and dashboard honest, and never let Akash discover something broken before you report it.
Context
stpierre.ai (the retired long-form company name never appears in copy) generates homeowner appointments for home-services contractors — concrete leveling, concrete flatwork, foundation repair, crawl space, basement waterproofing. The public face is the Alex St. Pierre persona; externally we position as growth consulting for seven-figure home-improvement companies.
Two sides of the machine:
The model is pay-per-appointment: we front the ad spend, the client pays only for booked appointment requests. That means delivery quality — real phone numbers, real project details, fast follow-up — is the whole product.
Context · Jun–Sep 2026
Everything you're inheriting was built since June, across roughly 2,000 logged work sessions. The arc matters more than the details: exit the old agency → design the new model → build the machine → sign the first clients → discover delivery reliability is the real constraint → stop, audit, repair → split the company into sales (Akash) and delivery (you).
| When | What got built | Why |
|---|---|---|
| Early Jun | The business model itself — plans iterated to v5.2, canonical brand docs, the Postgres "brain" as company memory, planning/ops rituals. | Deciding what the new company even was before building anything. |
| Jun 15 | EyeFly exit. The prior ~50-client ad agency was wound down; its delivery toolkit (bots, dashboards, ad playbooks) was kept as St. Pierre's raw material. | One business, owned outcomes, better economics — instead of servicing someone else's book. |
| Late Jun | Financial cleanup + runway tracking; stpierre.ai homepage and $1 application funnel live; 30k-contractor prospect list loaded. | Survival footing plus a working front door before spending on demand. |
| Early Jul | The delivery core: GoHighLevel workflows, the Messenger bot, content/creative engine (hook library, ad scripts, voiceover standard), first ad packs staged. | The product is delivered appointments — the machine that makes them had to exist first. |
| Mid Jul | First live Meta campaigns at real budget; team.stpierre.ai internal docs + first builder onboarding; tracking/attribution closed end to end; Slack ops channels. | Real spend forces real infrastructure: proof, tracking, and documentation. |
| Late Jul | sales.stpierre.ai CRM, Rep OS playbook, call scripts; Dan (Level King) onboarded as the first client. Also the first crisis: lead transfers silently died — emergency stops, the message mirror, and the first watchdogs were born. | First revenue — and the first proof that silent failure, not lead volume, is the enemy. Most guardrails in this handbook date from incidents in this stretch. |
| Early Aug | B2B engine: cold email (Instantly), cold SMS/iMessage rails, DFW foundation-repair campaign, the seven-seat scorecard, command-home dashboard. Offer swept consistent across every surface. | One client isn't a business — outbound had to fill the pipeline while delivery ran. |
| Mid Aug | Hardening sprint (3am-text bug killed, chase fixes, dead jobs revived) + market expansion (IL/IN pages, more markets staged). Then the strategic reset: outbound-first, ruled Aug 17. | Inbound content compounds too slowly for the Dec 31 cash target; cold outreach to contractors closes faster. |
| Late Aug | The great B2C audit: all 20 campaigns paused for a weekend teardown. Found 15 of 17 Facebook pages couldn't receive lead forms, stacked silent failures behind stuck homeowners, false success receipts. Creative board shipped; AlphaLift leads recovered. | Scaling a leaky machine multiplies the leaks. Pausing spend to fix delivery was cheaper than buying more leads to lose. |
| Sep 1–3 | Full end-to-end rails audit → the approved repair SOW (8 root causes, 7 workstreams), ~25 fixes landed; B2C Scoreboard live; SMS overreach mechanically blocked; the 158-lead backlog mapped. And this handbook — the builder hire. | The machine's design is proven; its reliability needs a full-time owner. That's you, so Akash can spend 9–5 filling it with clients. |
The takeaway for you: almost every rule in this handbook is a scar, not a preference. The deploy gate exists because unapproved deploys shipped. The watchdogs exist because rails died silently. The suppression gates exist because automation over-messaged real homeowners. When a guardrail seems paranoid, assume it's load-bearing.
Current state · Sep 3, 2026
You are not inheriting a humming machine — you're inheriting a machine mid-repair, with the diagnosis already done. This is the honest picture from a full audit of every active workstream (Sep 2–3).
Lanes
Three-bucket rule for every status update: Akash's lane (only he can do it), needs his word (you're blocked on a decision), yours (execute and report). Never send one flat "waiting on you" list — "waiting on me" and "needs my approval" are different lists.
Rules
Approval is per-action and per-surface. A yes on one deploy is not a yes on the next.
Process
| When | What | Who |
|---|---|---|
| 06:30 | Morning huddle page auto-rebuilds from the database (job: scorecard-huddle) | Automated |
| 06:45 | Finance room + B2C scoreboard refresh chain runs | Automated |
| ~08:30 | Daily huddle: review the huddle page together (15 min, before Akash's sales block) | Both |
| 09–17 | Akash sells. You deliver. Interrupt him only for a genuine fire (leads not flowing, client-visible breakage). | Split |
| 19:50 | EOD job grades today's commitments, writes tomorrow's plan, pushes summary to Telegram (job: scorecard-eod) | Automated |
| EOD | Your written EOD report in Slack #daily-reports | You |
| Nightly | Watchdogs, fix-it agent, git snapshot, hygiene jobs run overnight | Automated |
The exact huddle time is Akash's call — the page is ready from 6:30, so any slot before his sales block works.
Process
The scorecard is the agenda. There is no separate prep doc. The huddle page at rooms.stpierre.ai/huddle is rebuilt every morning at 6:30 from the database and is designed to be readable cold in 60 seconds.
The Friday version of this is the weekly scorecard at rooms.stpierre.ai/scorecard — this week vs last, with red/amber/green status per metric. Targets live in exactly one place (the scorecard_metrics database table); if a number needs a new target, that row changes — nowhere else.
Process
Two layers — the automated job, and your report.
Every evening eod_report.py runs and:
#daily-reports)Short, honest, same shape every day:
The no-orphan rule: no lead ends the day without a next action, and no conversation ends the day uncaptured. That's the bar the shutdown pass has to clear.
Reference
Two principles above every metric: lead volume is the growth metric (never throttle lead generation to match sales capacity), and inputs are the daily accountability (activities done today, not lagging outcomes, are what get graded daily).
| Metric | Target | Meaning |
|---|---|---|
| Booked appointments / live client / week | ≥ 5 | The delivery floor. 0–4 = diagnose same day; it's credit-back risk. |
| Lead → first response | < 60s | Speed-to-lead. The bot answers instantly; the rails keep it that way. |
| Lead volume per market | Up and to the right | Growth metric. Sales capacity is never a reason to slow it. |
Target cost per lead = 0.525% of the niche's average ticket (that's our 10% fee × 50% margin × 10.5% lead-to-job rate). Live values from the database (query niche_economics, never hardcode):
| Niche | Avg ticket | Target CPL |
|---|---|---|
| CL — Concrete Leveling | $1,500 | $10.00 (Akash override) |
| CF — Concrete Flatwork | $7,500 | $39.38 |
| CS — Crawl Space | $10,000 | $52.50 |
| FR — Foundation Repair | $15,000 | $78.75 |
Weekly targets live in one place only: the scorecard_metrics table, surfaced on the huddle and scorecard pages. If a document and the scorecard disagree, the scorecard wins.
Reference
| Client | Market / Niche | Status | Lead delivery |
|---|---|---|---|
| Level King Pro (Dan) | Hickory Creek, TX · Concrete Leveling | Paused | Text via the CRM rail; Dan wants leads in a group text; portal for updates. Deal: 10% revenue share. |
| AlphaLift Foundation Repair | Dallas–Fort Worth, TX · Foundation Repair | Paused | Job card in DripJobs (their CRM) + client portal; no client-facing texts. |
| Able Concrete | Minneapolis, MN · Concrete Leveling | Paused | Texts route to Akash, forwarded by hand. |
| 17 market tests | TX/OK/CO/MN + 10 states | Parked | Pages exist, leads park in the database — no buyer yet. These become clients the moment Akash closes a buyer in that market. |
Rules that shape delivery: leads are ours or the client's — never both, never a grey zone. Clients mark lead outcomes in the portal (client.stpierre.ai), which is the source of truth for lead status. Dan is always capitalized. Test markets need 1M+ population; service areas list suburbs, not the core city.
Context
You don't sell, but what you deliver must match what was sold.
Reference
| System | Role | Need to know |
|---|---|---|
| Meta Ads | B2C demand. Two ad accounts: concrete leveling + foundation repair. | Launched ad sets are immutable — new creative always ships as a new "pack" (new ad set). Every market needs its page connected and its page-scoped dataset before launch or leads vanish. |
| Messenger bot | Captures the homeowner's phone inside Messenger. | First line of the welcome message is frozen standard. Quick replies only. 24-hour reply window. |
| GoHighLevel (GHL) | CRM + text automation. All St. Pierre clients share one GHL location. | Contact tags follow {market}-{niche}. "Jean" is the B2B bot. Workflow edits go through the internal-API build path, not the browser UI. |
| iMessage rails | Blue-bubble texting. B2B uses the mycrmsim bridge; B2C is on LoopMessage. | Apple caps ~50 iMessages/day per line. Replies are visible in GHL but the send trigger is blind — the watchdogs monitor this rail. |
| DripJobs | AlphaLift's CRM — where their job cards land. | Cards are created at booking (not at capture), via Zapier + email; the appointment API endpoint is broken server-side. Addresses must be plain ASCII. |
| n8n / Zapier | Automation glue (queues, drains, handoffs). | Editing an n8n workflow is not running it — always verify with a real execution log. |
| Typeform / Calendly | Lead forms (B2C + B2B) and the B2B booking calendar. | Booking link: stpierre.ai/demo. Sending a booking link and promising a call cancel each other — do one. |
| Instantly | B2B cold email. | Capped 20–30/day; cold email stays manual — no automated follow-up cadence. |
| Postgres ("the brain") | The single source of truth database: clients, leads, messages, metrics, targets, ledger. | Every dashboard reads from here. When a number looks wrong, check the brain before the dashboard. |
| Cloudflare | Hosts every dashboard, portal, and page (Workers + Pages). | All deploys pass the deploy gate first (see guardrails). |
| Slack | Team comms. | Channels: #client-onboarding · #call-ins · #daily-reports · #notes · #documents. |
Code workflow: you never work in Akash's local workspace. Product repos use normal team Git — one branch per task, small commits, push often (3–8/day is healthy), PR for review, merge after proof.
Reference
| URL | What it is |
|---|---|
| rooms.stpierre.ai/huddle | Today's huddle agenda (rebuilt 6:30am). Passcode-gated — Akash issues the passcode. |
| rooms.stpierre.ai/scorecard | Weekly scorecard — this week vs last, red/amber/green. |
| rooms.stpierre.ai/cockpit | The cockpit — waiting-on items, must-dos, pace. Other rooms: /finance /sales /cx /marketing /delivery /shutdown. |
| stpierre-b2c-scoreboard.pages.dev | The one B2C board: live campaign status (both ad accounts), per-market funnel (spend → leads → qualified → sent → appointments → jobs), creative leaderboard. Refreshes nightly 6:45. |
| data.stpierre.ai | Dashboard home — a live map of every dashboard, one address. |
| URL | What it is |
|---|---|
| client.stpierre.ai | Client portal — each client's private token URL for their leads and outcomes. Lead-status source of truth. |
| pipeline.stpierre.ai | Akash's B2B pipeline portal. |
| sales.stpierre.ai | Sales workspace — speed-to-lead queue, follow-ups, pipeline, calendar (gated). |
| stpierre-command-home.pages.dev | The one project tracker, fed live from the database. Never build a parallel status doc. |
| stpierre-onboarding-board.pages.dev | Client onboarding & retention board — setup step X/15, first lead, first booked job, health. |
| URL | What it is |
|---|---|
| Delivery Operating Manual | The companion to this handbook: how the company actually runs — the weekly loop, bug tracker, daily sweep, departments, decision frameworks, and your 4-week ramp. Read it second, right after this page. |
| team.stpierre.ai/onboarding/ | Builder onboarding hub — vision handoff, start plan, daily rhythm, first-call agenda. |
| team.stpierre.ai/builderpipeline/operating-brief/ | Builder operating brief — mission, reading order, the nine scorecards, review gates. |
| team.stpierre.ai/start/ | New-hire navigation map of all internal docs (SOPs, sales, ads standards, content). |
| …/ghl/rebuild-guide/ | Field-by-field GHL workflow rebuild guide + the companion visual atlas (17 workflows, screenshots). |
| stpierre.ai | The public site — jobs-guarantee hero, application form, /kits/ lead-magnet library. |
Rules
These have each been violated at least once and each violation cost real money or trust. They are not preferences.
Reference
~50 scheduled jobs run on the host Mac. The ones you'll interact with:
| Watchdog | Watches for |
|---|---|
| Unanswered-lead pager | Any lead sitting without a response — the speed-to-lead backstop. |
| mycrmsim watchdog + heartbeat | The iMessage bridge going down (texts silently stop sending). |
| Message-mirror freshness | Conversation data going stale in the database (dashboards lie when this drifts). |
| Nightly fixer + reconciler | Auto-repairs known failure patterns overnight; reconciles lead/message state. |
| Ops escalator | Escalates anything the fixers can't handle. |
| iMessage cap monitor | Approaching Apple's ~50/day per-line send cap. |
Alert doctrine: fix before paging — an alert that reaches Akash should arrive with the fix already in motion. Before auditing an alert, check the alert register first (most "new" alerts are known). Escalate to Akash mid-day only for: leads not flowing, a client seeing breakage, or money at risk. Everything else goes in the EOD report.
Process
#daily-reports.Standing bar from day one: nothing breaks silently, nothing needs asking twice, and every number you report traces to a source. Say "I don't know" over guessing — always.