37 open questions awaiting leadership, 142 locked decisions across 24 reports — every entry linking back to its report.
Gold-plated roster — whether to also pull Florida's base licensee file (captures brand-new licensees who have not logged CE) on top of the CE-derived 9,557, or treat the CE seed as sufficient.
Business-vs-individual — the ruling on collapsing 9,557 individual licensees to businesses at the GBP merge (qualifiers and employees vs owners), and the suppression rule for non-owner rows.
Georgia scope — buy both the restricted (Class II) and unrestricted (Class I) Conditioned Air rosters, or Class I only.
The Black Seal card — the founder's words (two to four lines) and the controlled URL it carries; Google page-one cleanup gates any curiosity CTA.
Validation path — Reply.io's built-in validator (likely free) vs MillionVerifier ($37) for the ~374 addresses; whichever runs first unlocks the ramp.
Next spine batch — which metro feeds the next 300–500 rows (Houston, San Antonio, DFW, Austin), and the tiering ruling on the untiered rollup-scale rows.
Copy approval — Chris's voice pass on the runbook, §11 sign-off, and the five send blockers (postal address, benchmark asset link, booking link, T2 stat, escalation channel).
Flag rulings — Facebook cold-opener scope, Custom Audience upload, franchise exclusion, full-list detection pass, LinkedIn invite form.
Access + domain — Zero Trust lock on the training site and the training.myanchorworks.com confirmation (the page is public until then).
Identity hygiene — who are the Alexander/Shine mailbox identities, rename to real senders, rotate credentials; general access audit across Cloudflare, Workspace, and Reply.
Meta Business Manager consolidation. Choose one canonical portfolio, move the ad account (act=99369130) and the AnchorWorks Facebook Page under it, then create the Pixel there. This blocks all retargeting audience capture.
Google Ads account. Create now (forces billing) for YouTube/Google audiences, or defer and ship Meta + GA4 first. Current call: defer — add the Google tag later with no rework.
LAS scoring fields. The dashboard contract expects las_stage / las_category / las_tier; GoHighLevel currently holds LAS as tags and scores. Decide whether to add the three fields.
Watermark. Simplify the CC Cathedral Seal into a clean corner-mark icon (Chris generating in ChatGPT) — the full seal is too intricate at watermark scale.
Link-in-bio. Commit to a single Local Authority Score link now, or stand up a Beacons/Linktree hub for multiple offers.
Instagram link. Swap Skool → funnel (mobile-app only — Chris).
Website language. Schedule the SEO + schema audit (separate agent) to purge remaining "McKinsey" / "revenue infrastructure."
Set deal values in the CRM. Pipeline dollars will stay at $0 on the board until closers attach a value to each opportunity in GoHighLevel. A process decision, not a code one.
Guarantee terms. Confirm "We don't win until your Revenue Engine does" is a real offer with a defined baseline and conditions, or reword it — it appears in page copy and metadata.
Publish the framework as a static content page. The sixteen questions and the revenue-engine logic live inside JavaScript — invisible to Google and AI. Surfacing them as real content is the one move that unlocks organic traffic and AI citation.
Stand up a brand corpus. A YouTube video on the LAS framework plus genuine Reddit presence — the strongest lever for getting AnchorWorks named by ChatGPT and Perplexity. Off-page, no code.
Add proof to the page. A founder credential, named client results, and testimonials — the trust signals a cold HVAC owner needs before handing over a phone number.
Roll the pass forward. Whether to run the same SEO treatment across the remaining AnchorWorks pages and sites now, or as each ships.
Customer journey mapping (with Chris). The acquisition → delivery handoff, and which delivery stages to track. The one decision that unblocks everything downstream.
Dimensions. How team / offer / source get filled — derived in code from mappings, or read from GoHighLevel custom fields.
Narrative sign-off. Chris + ChatGPT's final copy to lift this brief from DRAFT to canonical.
Prior-agency actuals. Which real history replaces the seeded assumptions — churn, close rate, CAC, show rate.
Narrative sign-off. Chris + ChatGPT's final copy to lift this brief from DRAFT to canonical.
Publish cadence. What rhythm for the 10 unrecorded videos — one a week? — and in what order (lead with Leads, or the 47-min masterclass first)?
SEO hooks & search queries. The Hook / Packaging and Core Search Query fields are empty — do we script a target search query + packaged hook per video before filming?
Keep or demote the Notion War Board. Reconcile it weekly against the briefs, or demote it to a working scratchpad and let the Executive Brief Cloud + the Miro current-state view stand as canon.
Owner of weekly reconciliation. Who is accountable for snapping the tracker back to the record each week so it never drifts this far again.
Launch scope for Webinar + Careers. Finish both, or exclude them (noindex + out of sitemap) and ship later.
Production cutover timing. When to repoint www from Webflow to the Cloudflare Worker — irreversible, and needs the owner's explicit go.
Exit horizon and target enterprise value — sets the trajectory the financial projection must hit.
Offer-ladder specifics — the down-sell-to-partnership credit ($7k vs $8k), the $30K monthly fee, and expected ascension rates.
Reconcile the dashboard mock-up's "4-Pillar Revenue System · Retention" naming with canon — the "4 Engines: Traffic · Conversion · Sales · Nurture."
Switch on the self-refreshing feed. Two owner-level steps on the database — store the CRM key and enable the scheduler — take the pull from manual to automatic. The exact commands are waiting in the repository.
“Stop-doing: Brain harvesting, wiki filing, dashboard polish, funnel #5, website commits, hiring conversations.”
Confirm Stripe as the next feed. Cash is the truest number a business has, and it is still seeded. Wiring Stripe is the highest-value source left to connect.
“Stop-doing: Brain harvesting, wiki filing, dashboard polish, funnel #5, website commits, hiring conversations.”
Review and merge the pull request (#4). Both of today's builds sit on one branch, deployed to a live preview, awaiting your merge to land on the mainline.
“Stop-doing: Brain harvesting, wiki filing, dashboard polish, funnel #5, website commits, hiring conversations.”
Confirm the home for a few remaining notes (team-training material: Operations, Training, or Projects).
“Stop-doing: Brain harvesting, wiki filing, dashboard polish, funnel #5, website commits, hiring conversations.”
Approve which draft thinking becomes official canon.
“Stop-doing: Brain harvesting, wiki filing, dashboard polish, funnel #5, website commits, hiring conversations.”
Decide the final home for one duplicated sales asset.
“Stop-doing: Brain harvesting, wiki filing, dashboard polish, funnel #5, website commits, hiring conversations.”
War Room invite video. Supply a real media ID for the /webinar hero, or exclude /webinar from launch until the asset exists.
“Stop-doing: Brain harvesting, wiki filing, dashboard polish, funnel #5, website commits, hiring conversations.”
Production cutover. Merge to main, add the production route, and repoint www from Webflow to the Worker — on your explicit go — with analytics in place before any paid traffic.
“Stop-doing: Brain harvesting, wiki filing, dashboard polish, funnel #5, website commits, hiring conversations.”
Verify the benchmark statistics. Which figures (Google CPL, PE consolidation, the $156,600 gap) can be sourced for public use — unlocking Google Ceiling for canon?
“Stop-doing: Brain harvesting, wiki filing, dashboard polish, funnel #5, website commits, hiring conversations.”
Certified Partner naming + offer. Ratify the name family (Certified Partner / Certified Partner Model™ / Certified Authority Partner) and reconcile with the offer doc under revision.
“Stop-doing: Brain harvesting, wiki filing, dashboard polish, funnel #5, website commits, hiring conversations.”
Two source-of-truth cleanups. The sales letter (Departments vs Copywriting Workbench) and the benchmark report (Closet vs Funnels) each sit in two places — pick one, reference the other.
“Stop-doing: Brain harvesting, wiki filing, dashboard polish, funnel #5, website commits, hiring conversations.”
Cadence. When to move from a manual snapshot to scheduled or real-time ingestion (pg_cron or webhooks).
“Rebuild the pull as a scheduled service on the locked database stack, so it runs on its own every half hour.”
First live source — Stripe or GoHighLevel? The one decision that unblocks ingestion. Stripe is the locked cash truth; GHL is already flowing leads. (Teed up for Chris.)
“First live source is GoHighLevel — the acquisition system of record — chosen over Stripe for the first slice.”
Deploy target. The permanent URL that replaces localhost, so the whole team reads the same board.
“Deploy target locked. The cockpit lives on Cloudflare Pages against cloud Supabase, on a permanent URL — localhost retired.”
Content → funnel CTA. Which offer each video points to — Authority Score, the Market Report, or the Strategy Session — so the engine actually routes demand.
“Made the personal channel a teach-first authority surface — one soft CTA to the free Local Authority Score, no hard sell (per the Founder's Brain doctrine).”
Sequencing of the Sales layer. When to build the Sales Engine and the AE revenue pipeline — the last major unbuilt part of the machine.
“Stop-doing: Brain harvesting, wiki filing, dashboard polish, funnel #5, website commits, hiring conversations.”
Homepage topbar proof & scarcity. Home still shows "4.9 from 200+ HVAC owners" and "Only 3 Q3 install slots left" (removed from every funnel page). Prove it or remove it — recommend remove unless documented.
“Strip every unsupported proof, manufactured-scarcity, and income claim from the webinar funnel and the homepage topbar — no ratings, "trusted by," "limited spots," or "$100K/month."”
Harvest Chris_Campbell_Profile.md into Black Ledger OS → 01 Chris Campbell (preservation check first).
“Stop-doing: Brain harvesting, wiki filing, dashboard polish, funnel #5, website commits, hiring conversations.”
Dissolve legacy Active Projects folders into proper project repos; archive desktop screenshots.
“Stop-doing: Brain harvesting, wiki filing, dashboard polish, funnel #5, website commits, hiring conversations.”
Commit the Website legal / compliance copy (your call).
“Stop-doing: Brain harvesting, wiki filing, dashboard polish, funnel #5, website commits, hiring conversations.”
Public license boards are the seed layer. Every state pull starts with the free public record — owner name, license, address — before a single paid enrichment credit is spent.
The seed carries no contact data. Emails and phones are enrichment outputs, never expected in the license file; a seed row is name plus license plus address and nothing more.
Seed lands in the operator's own Clay staging — never the shared master or the Market Room directly. Rows reach the master only through append-with-dedupe, stamped with operator, state, and source.
The Market Room reflects the enriched master only. Raw, unverified seed never enters the room — it shows verified companies, not shells.
Fire the slow states first. Roster requests that take days (Georgia, North Carolina) go out before the same-day pulls (Florida, South Carolina), so the long poles cook in parallel.
Dedupe twice — by license number, then by owner name and ZIP. Individual licensees collapse to businesses downstream at the Google Business Profile merge.
The founder sends as himself. One identity across email, LinkedIn, and Facebook beats alias inboxes; placeholder sender names get relabeled to Chris — display names carry zero warming, so nothing is lost.
Send windows locked: 6–9am recipient-local primary, 5–7pm secondary, midday banned. Owners check phones before trucks roll and after the last job; the runbook A/B now tests morning vs evening.
Verify-before-send is a hard gate. Day one's ~19% bounce on unverified addresses was the predicted price of impatience — paid once, at sixteen-unit scale, never again.
Whales are held out of practice sends. First impressions are spent only with the polished play — practice happens on the lower tiers.
The Black Seal runs two-tier: wax-sealed letters to every whale (~$3–4.50 a unit); premium boxes earned by engagement only; the video book reserved as touch three.
Les is Mail Ops. Remote-command, US-hands: the founder designs from Medellín; letters assemble and mail from a US counter behind a golden-sample photo gate.
Mobiles stay reply-gated — triage calls only, never cold SMS; enrichment-revealed personal inboxes never receive a cold first touch.
The report is delivered on reply — link or PDF, no opt-in gate for an asset a prospect already asked for.
Texas first — dominate one state before touching the next; the TDLR bulk license file makes TX the cheapest owner-name spine in America.
Territories locked: Chris — Sun Belt West (TX·CA·AZ) · Ethan — Southeast+NY (FL·GA·NC·SC·NY) · Les — Mid-Atlantic/Midwest (VA·PA·OH·IL·MI). A territory means build, QA, and every reply from those rows.
Copy voice division locked: AI delivers skeletons, angles, merge logic, and compliance rails; Chris writes every customer-facing word. AI copy is never final.
SMS consent gate hardened: a text goes only to a number the owner handed over, or after a written yes to a specific number — a positive email reply alone is not consent.
Repo governance: the outbound-machine repo holds playbooks and logs only; lead data and credentials never enter git, enforced by gitignore.
Facebook Page DMs tentatively approved as the second-channel fallback ("HVAC guys live on Facebook") — manual, founder profiles only; cold-opener scope expansion still awaits an explicit ruling.
Franchise and national rows stay on the master list, tagged and deprioritized — tags are angles, never filters (locked doctrine held under pressure).
Full-list detection passes (ServiceTitan, ad presence) stay call-gated at reactive tier — credit discipline beats curiosity until a flag ruling says otherwise.
Google Tag Manager is the single tag router — every pixel and tag fires through it, nothing hard-coded, so nothing double-counts.
All tracking and ad/analytics accounts are created under the company login (chris@myanchorworks.com) — never a freelancer or personal account.
Tracking is Chris's lane; the dashboard is Ethan's. One written integration contract names who owns every field, so neither re-does the other's work.
Attribution is captured once, at the source, and never overwritten — original source is the truth, not "where they were last seen."
Cash is Stripe's source of truth; GoHighLevel holds the sales outcome and deal value; the dashboard reconciles the two.
Ten attribution fields were created in GoHighLevel, keyed exactly to the dashboard's integration contract — reused where clean, never duplicated.
gclid was renamed gclid_capture (GoHighLevel reserves the name) and re-mapped in the contract so the sync still lines up.
Google Ads is deferred (it forces billing at signup); ship Meta + GA4 first and add Google/YouTube later with no rework.
The Meta Pixel is paused until the scattered Meta Business Manager portfolios are consolidated into one canonical portfolio.
Retired "McKinsey for HVAC" everywhere; standardized on the canon — "Revenue Engines for the Trades" and the POV "Most HVAC companies don't have a marketing problem. They have a Revenue Engine problem."
Rebuilt the existing OG Don Christo music channel into the Chris Campbell authority channel — keeping the account's age, history, and subscribers rather than starting from zero.
Titled episode one with the proven "$80M / 42-minute" curiosity hook, while keeping the description doctrine-first (Revenue Engine POV + timestamped chapters).
Made the personal channel a teach-first authority surface — one soft CTA to the free Local Authority Score, no hard sell (per the Founder's Brain doctrine).
Set the cross-platform link strategy: a single funnel link (Local Authority Score) on Instagram/Facebook; multiple funnel links on LinkedIn and YouTube.
Requested a DistroKid takedown of the legacy "$$$ (Dollar Signs)" release — the only way to remove distributor-delivered music from an Official Artist Channel.
Backed up the 4K master to two locations (external ArmorATD + Google Drive), per the standing backup policy.
For the next 90 days, everything serves the count of live conversations with qualified HVAC owners — and nothing gets built that a signed client didn't force us to build.
Spend inventory, don't build it: 30 shorts banked, 2 VSLs live. Scheduling is a 2-hour task, not a 10-hour creative block.
Stop-doing: Brain harvesting, wiki filing, dashboard polish, funnel #5, website commits, hiring conversations.
Team owns all building and delivery questions — nothing interrupts the morning block.
Sales throttles to delivery: close 2 → pause → install to first client sale → reopen.
$0 cold ad spend. Retargeting only after ~500 pixel visitors, capped at $50/day.
reply.io stays holstered until manual sends prove the message (≥5% reply).
First $30k collected goes to reimbursement + runway, not hires or tools.
Booked sessions ≥12/wk for 2 straight weeks → constraint is the calendar → activate setter + closer.
2 clients signed → constraint is delivery → sales pause; install #1 writes the SOPs.
Replies <3% after 300 sends → constraint is the message → iterate copy, don't buy volume.
Both installs at first client sale ≤45 days → constraint returns to lead flow → full ramp + retargeting.
The 5-man sales team Closers × 0 leads = 0. Commission chatter burns focus; salaries burn runway.
Cold ads at any budget History says cold ads pull broke buyers. The bank says the lesson can't be afforded twice.
Funnel #5 · website polish Four funnels already sit at 0% utilisation.
Brain / wiki harvests Documenting zero throughput produces documented zero.
Full reply.io blast, week 1 An untested message would burn 3 months of domain warming in days.
Webinar machinery A free live hour in the Facebook group is fine. Building production around it is not.
Niche expansion planning HVAC only in 2026 — the founder's own words.
100-client math Fantasy column until n ≥ 2 installs and one client has paid a performance fee.
Gate 1 · Aug 5 Proof of demand Pass: 2 clients closed. Book travel; reserve a private dinner — ≤$3k, paid from collected fees, never from runway. Fail → Pantheon = tickets and handshakes. Keep selling.
Gate 2 · Sep 19 Proof of delivery Pass: both clients at first tracked sale. Greenlight Revenue Engine Live buildout (Sep 22 – Oct 24). Budget cap: 25% of cumulative upfront collections. Case-study assets are client-forced work — freeze-compliant. Fail → no production spend. The category launches at the next gathering, with proof.
Gate 3 · Oct 5 Scale by actuals Pass: the re-mapped pipeline table sets the final scale — warm invitees × case studies × cash. Fail → dinner-scale guerrilla presence. Zero shame; zero production spend.
Show the pipeline by stage, not by total. A count answers "how busy"; a funnel answers "where is everything stuck." The decision the cockpit exists to serve lives in the stages.
Name the stages from the source of truth. Stage labels are read live from GoHighLevel's own pipelines, so the board always speaks the same language your closers do — rename a stage in the CRM and the funnel follows.
Keep real data unmistakably real. The live GHL feed stays in its own isolated table, walled off from the seeded demo, so no real deal ever gets averaged against a placeholder.
Automate on the locked stack — no new machinery. The scheduled refresh was built as a database function on the exact architecture already chosen for every source, not a bolted-on side system.
A zero is a reading, not a bug. Every live deal shows $0 of value because no dollar figure is set on it in the CRM. The board reports that truthfully rather than inventing a number.
Hand the two privileged steps to Chris. Turning on the schedule needs owner-level database access. Rather than force it, the build stops at the boundary and hands over an exact, two-command runbook.
We keep one shared company brain — a living wiki — as the single place we save what we know.
Two minds, one system: the Company Brain (how the business runs) and the Founder's Brain (the ideas and voice behind it).
Doctrine is the source of truth — the official version everyone builds from.
We file by what a thing is, not by the date — so you always know where to look.
Nothing important is deleted; superseded work is archived, never lost.
The workspace is laid out like a building — rooms, benches, shelves — so orientation is instant.
The brain holds the thinking; finished, deployed work keeps one home instead of scattered copies.
Embed the existing Strategy Session VSL (Wistia 6yg2jyiii0) on the webinar confirmation page and the Market Report thank-you page, and route both CTAs directly to /strategy-session/book/ — so no visitor watches the same VSL twice.
Strip every unsupported proof, manufactured-scarcity, and income claim from the webinar funnel and the homepage topbar — no ratings, "trusted by," "limited spots," or "$100K/month."
Keep the /webinar hero as a dedicated War Room invite-video slot — a polished placeholder, explicitly not the Strategy Session VSL — until a real media ID exists.
Align webinar copy to the canon — "Revenue Engine" (retiring "Revenue Infrastructure"), "Reserve My Seat," and a topbar naming the four stages: Demand · Booking · Sales · Follow-Up.
Make Careers launch-safe (a real mailto, no placeholder roles) and convert the webinar's invalid Event schema to WebPage rather than invent a fake event date.
Two skills become standard. A design engine (UI/UX Pro Max) and an SEO suite (Claude SEO) were installed globally — every AnchorWorks and DreamState website is now built and audited through them.
Technical only — never the message. The mandate was explicit: fix the plumbing, never the copy, offer, quiz, or design. The page a visitor reads is byte-for-byte the same words.
Ship through Git; a human merges. The fix went out as a reviewable pull request; the production deploy was a deliberate human click — the same discipline used on the cockpit.
Pull the images out of the code. 2.2MB of images were embedded as text inside the HTML; extracting them to real files was the single biggest speed lever.
Defer the off-page play. The biggest AI-visibility lever — a YouTube and Reddit brand presence — and a static content page were named and parked, not rushed.
Locked the building filing model — Brain = knowledge · Workshop = execution · Studio = founder/media · Closet = finished assets · Home Base = personal. Rooms hold benches/stations; stations hold shelves.
Black Ledger is only a holding company. The knowledge system is The Brain — and there are two: the AnchorWorks Brain (now, 99% of the mission) and the Chris Campbell Brain (later).
Locked the Revenue Engine hierarchy — the whole machine = the Revenue Engine; the four core public growth engines = Traffic · Conversion · Sales · Nurture. Traffic Engine is canonical; “Demand Engine” is an alias only.
Added the Delivery Engine as an advanced operational layer — not a fifth growth engine: “AnchorWorks builds the Revenue Engine. ServiceTitan helps run the Delivery Engine.”
Locked the canonical Big Domino — “Most HVAC companies don’t have a marketing problem. They have a Revenue Engine problem.”
Established a standing rule: every benchmark figure stays Evidence-backed claim — verify before public use. Promoting doctrine to canon does not certify the statistics.
Created two first-class Studio stations — Distribution and Editing — each with a local CLAUDE.md operating manual.
Kept “We Work With Operators, Not Dabblers” consolidated inside Operator Fit; left two duplicate-cleanup items open as flags (no files deleted).
First live source is GoHighLevel — the acquisition system of record — chosen over Stripe for the first slice.
Deploy target locked. The cockpit lives on Cloudflare Pages against cloud Supabase, on a permanent URL — localhost retired.
Blueprint before code. B.L.A.S.T. — a design doc and task plan were written and approved before a line of ingestion was built.
Read-only, isolated, honest. Real data lands in a staging table so the approved demo stays pristine; nothing is ever written back to GoHighLevel; the strip shows only what is truly live and labels the rest sample.
Defer the deep model. Dimensions (team / offer / source) and the delivery track wait on the customer-journey mapping still owed with Chris.
Realign the framing, not the gauges. Titles and eyebrows carry the doctrine; metric names stay precise — an instrument should read like an instrument.
Purge tool-name leaks from every user surface. No screen sounds technical — never say Supabase, LLM→SQL, or MCP to a person reading the dashboard.
Adopt the Ownership eyebrow as house style — {doctrine noun} · {function} · Live — so the spine reads off the headers on every tab.
Name the AI panel in-voice — "Ask the Ledger," not "AI Assistant" — and keep it an honest, labelled preview.
Close the secret leak first. A .env.production with live keys was untracked but not ignored; harden .gitignore before any commit.
Merge to main with Chris's sign-off and retire the superseded branch — one canonical source of truth.
Established the content taxonomy — pillars mapped to the customer journey: HVAC Leads → HVAC Sales → HVAC Scaling, plus Masterclass, Facebook Ads, Uncensored, Strategy, and Content.
Locked catalog conventions — YTL## for the numbered YouTube library; VSL## for funnel Video Sales Letters.
Gave VSLs their own category — distinct from organic YouTube content (they live on funnel pages, not the channel).
Ruled that statuses must reflect real production state — nothing sits in "Filming" until it is actually shot.
Published dates go on shipped assets only — no aspirational dates cluttering the board.
Re-tagged every video to the pillar its title actually serves (sales videos → Sales, ad tutorials → Facebook Ads, scaling videos → Scaling).
Named and separated the three surfaces: Miro = design intent, Notion War Board = execution tracker, Executive Brief Cloud = accurate record.
Adopted the Source of Truth Divergence doctrine — when the tracker and the record disagree, believe the record; a tracker only earns trust if it is reconciled.
Reconciled the Website Launch system from a stale 32% to ~90%, marking 21 git-verified tasks complete.
Resolved the KPI Intelligence System contradiction ("Done" at 0%) — set to 100% with a note that it was delivered via the Supabase KPI Command Center build (Briefs 004–007), off its own board.
Deliberately left 10 tasks open rather than over-claim — 8 unverified copy items and 2 genuinely-unfinished assets.
Added a simplified, color-coded "Current State — You Are Here" table to the Miro board; left the hand-built blueprint untouched and fully reversible.
Confirmed all five email / nurture sequences are live (Indoctrination · Reminder · Countdown · Warm 4-Pillars · No-Show Recovery).
Captured the reconciliation and doctrine in Black Ledger OS / Obsidian (the War Board concept note + a session record).
Reframed the whole site around Revenue Engine as the category; retired "agency," "Anchor Revenue System™," "Authority Machine™," and the old "Leads · Sales · Scale" model.
Locked the canonical naming hierarchy: Revenue Engine (machine) · Local Authority System™ (method) · Authority Score™ (diagnostic) · four Engines (Traffic / Conversion / Sales / Nurture).
Made the funnel credibility-safe — removed unsupported stats, the "4.9 from 200+" rating, "top 10%" framing, and hard revenue claims from every funnel page.
Standardized the primary funnel CTA to "Book My Strategy Session" → /strategy-session/book/; retired "Map My HVAC Growth Plan" and "HVAC Growth Strategy Session."
Replaced homepage fabricated testimonials with Use Cases, unverified stat counters with Structure-Proof counters, and reworked the guarantee to "We don't win until your Revenue Engine does."
Rewrote the About page around the founder asset-test story — "A business is not an asset if you can't leave it."
Added an operator team section (8 people) to About, built entirely from the existing design system.
Converted the 8 team portraits to WebP and removed the unused source copies.
Kept every page's design, layout, CSS, structure, routing, and SEO mechanics unchanged — words and assets only.
Built an internal, noindex QA link hub at /_qa/links/, not linked from the site.
Stood up the KPI Command Center as its own private repository — anchorworkshq/KPI-Command-Center.
Locked the stack: Supabase (central database) + AI-generated dashboard built with Claude Code + MCP (live data) + GitHub.
Adopted the reconciled-ledger model — the database is the ledger of record, never a hand-edited source of truth.
Established system-of-record per field — GoHighLevel owns pipeline; Stripe owns cash; the ledger owns totals.
Adopted one metric, many altitudes for ROAS/CAC; MER is the CEO's one number.
Adopted the two-axes rule — capture data day-one and universal; build dashboards in sequence.
Defined the 7-department model + roll-up hierarchy + the two-meeting operating system.
Locked Ownership unit economics — CAC $1,000 · LTV ~$135K · LTGP:CAC ~71:1 · client-financed acquisition achieved.
Confirmed the offer ladder — $500 workshop → $4,800 / $7,800 → $15K / $30K partnership + 10%.
Set the dashboard design language — the MINIMIN aesthetic recolored to brand; gold is earned.
Established the operating model — founder owns all accounts and keys; Ethan supervises the build agent.
Retired Google Sheets as the production store; ruled out submodules — brand assets are vendored.
The design phase is complete. Going forward, future work builds on this foundation — no new repositories, filing systems, or structural redesigns without an explicit instruction.
Claude no longer writes marketing. Every copy slot stays a placeholder until approved by Chris + ChatGPT — and approved copy is pasted verbatim, never rewritten.
Confirmed variables: ICP $100K+/mo, 3+ trucks; Authority Score = 16 questions; HVAC-only; canonical naming Local Authority System™ + 4 Engines.
Nothing in the ledger matches that. Adjust the search.