WEBSITE SEO PLAN - PROJECT HANDOFF (Alti)
Paste this whole message as the FIRST message of a new chat. It tells that chat what
this project is, where the truth lives, and how to report back so Patrick can see it.
WHO YOU ARE WORKING FOR
Patrick Harter runs The Home Insulators (spray foam and fiberglass insulation, plus a
roofing/siding arm called Stallion Ridge) in the New York / Connecticut / New Jersey area.
Alti is working with him on this project. Patrick is not technical - explain in plain
English, one step at a time, and never assume he will read code.
THE PROJECT: the website SEO plan for The Home Insulators.
WHERE THE TRUTH LIVES - READ THESE BEFORE YOU SUGGEST ANYTHING
1. Alti's board: https://thehomeinsulators.net/alti - fetch it fresh with a
cache-busting query (?fresh= plus a random number). The box named
'SEO CAMPAIGN - INSULATION - PAID ADS' is the live status of this work.
2. The same project also sits on Patrick's board and on Aymen's board - all three
carry the SAME box id (seo-campaign-paid-ads), which is what makes them one
project on the map at https://thehomeinsulators.net/project-map?board=shared
3. On Patrick's machine: C:\Users\theho\Documents\RESIDENTIAL MARKETING PLAN
- the full plan: brand, website, blog, Meta ads, Google ads, Google listing,
reviews, budget and a calendar with owners. Also Documents\SEO AGENCY TEARDOWN
- the teardown of a ,450/month agency quote plus a 28-question call script.
WHAT IS ALREADY DECIDED - DO NOT REOPEN THESE
- Residential runs under The Home Insulators. It is NOT a new brand.
- We never create a 42nd Google listing. All 41 existing listings hang off ONE
Google account that already carries 2 suspensions - treat that account as fragile.
- The /month 'Local SEO' line in the agency quote is one-listing maintenance
worth about 4 hours a month. Patrick already owns the CRM, the website, the 39
review links and the tooling to do it for roughly /month.
TWO LEGAL GATES BLOCK EVERY PAID AD - KNOW THEM BEFORE PROPOSING SPEND
- The Westchester home improvement license application was REJECTED (not notarized,
missing disability and workers' comp certificates, plus a note on the back of the
letter). It has been sitting since Aug 11, 2026.
- EPA Lead-Safe firm certification is required by federal rule before the company may
even OFFER insulation work in homes built before 1978.
Everything else gets BUILT now and PUBLISHES the day the license number lands.
HOW YOU REPORT BACK (this is the part that matters)
Alti's board is the shared window between him and Patrick. After anything moves:
1. FETCH the board fresh, keep only the markup from the title tag down.
2. EDIT ONLY the SEO CAMPAIGN box - never another box, never the page furniture.
Rewrite 'Where it's at' in plain English, and list every open question under
'Waiting on you' as its own line item.
3. BOLD the one fact that matters in the status, and start each waiting item with a
short bolded phrase. The project map builds its picture from those bolded bits.
4. Recount the two stat tiles, keep the page PURE ASCII (HTML entities in markup,
CSS escapes in style, JS escapes in script), and count your div tags - a card is
8 open and 8 close, and the whole page must balance or the board collapses.
5. PUBLISH with the DIGEST method exactly as written in the board's own HTML comment,
and SEND TWO FILES: index.html AND _headers. A digest deploy is a full manifest -
sending index.html alone deletes _headers and blinds the project map.
6. Patrick answers from the board itself. Answers arrive as ANSWERED stamps in the
box - read them and act on them.
THE ONE RULE ABOUT OTHER PEOPLE'S WORK
Do not edit Patrick's board, Aymen's board or John's board. If this project needs
something from them, write it as a waiting item on Alti's board and say so in chat.
FILES AND CODE
Anything you build belongs in the shared PRIVATE repo, which already exists:
github.com/thehomeinsulators/residential-marketing-seo - Alti (rrukiqi101-bit) has
push access. Nothing important lives only in a chat window.
Nothing here yet — hit + Add handoff below, or tell any chat “add a handoff to Mission Control”.
1
Fronts on the board
6
Answers waiting on you
The boxes
Added only by your say-so
SEO CAMPAIGN - INSULATION - PAID ADS
Blocked on you
🔍 Find this chat
Where it’s at
The full residential marketing plan is done — brand, website, blog, Meta ads, Google ads, Google listing, reviews, budget and a calendar with owners — in Documents\RESIDENTIAL MARKETING PLAN. Decided: residential runs under The Home Insulators (not a new brand), and we never create a 42nd Google listing. But two legal gates stop every paid ad, and one has been sitting since 8/11: your Westchester license application was REJECTED (not notarized, missing disability + workers’ comp certs, and a note on the back of the letter nobody has read). Second gate nobody had flagged: EPA Lead-Safe firm certification, which federal rule requires before you may even OFFER insulation work in pre-1978 homes. Everything else gets built now and publishes the day the license number lands.
Waiting on you
Re-file the Westchester license this week. Read the reverse-side note on the rejection letter, get the DB-120.1 disability cert and the workers’ comp cert, sign it at a notary. About two hours. Until this lands, no residential ad, landing page or booking page can legally run — and an unlicensed contractor cannot sue for payment at all.
Does The Home Insulators.com, Inc. carry its own workers’ comp? One call to your agent. It is one of the two reasons the application came back.
Start EPA Lead-Safe firm certification (~$300) and name your certified renovator. Your launch thesis is pre-1978 Westchester homes; offering that work uncertified is its own violation.
Approve the review engine — two-touch SMS, no incentives, no gating. You finish ~19 homes a week, you already have review links for 39 of 41 listings, ClickSend is already connected, and nothing is asking anyone. Free, and the highest-return item at any price.
Approve the one-week photo shoot + a phone thermal camera (~$225). Zero usable insulation imagery exists anywhere, and that blocks Meta ads entirely.
What is Alty’s compensation as sales manager? Not answerable from your files, and every profit number in the plan moves about 12% on it.
Updated Aug 21, 1:35 AMChat: SEO CAMPAIGN - INSULATION - PAID ADS · Documents\RESIDENTIAL MARKETING PLAN
GITHUB HANDOFF - make this project collaborative on GitHub.
This project should live in a PRIVATE GitHub repo so chats on BOTH
computers (Patrick's and Alti's) can work on it at the same time
without overwriting each other.
1. If this project has no repo yet: create a PRIVATE repo with the
gh CLI on this machine, named after the project (short, kebab
case). Put the working files in it - code, scripts, documents,
and a STATUS.md describing exactly where the project stands.
NEVER commit credentials, tokens, API keys, or customer lists -
those stay in local files outside the repo, always.
2. Invite the other side as a collaborator with push access. On
Patrick's machine the owner account is thehomeinsulators; invite
Alti's GitHub username (ask him for it - it is not on file yet).
On Alti's machine, invite thehomeinsulators. The command is:
gh api repos/OWNER/REPO/collaborators/USERNAME -X PUT
-f permission=push
3. WORKING RULES, every session, both machines, no exceptions:
- git pull BEFORE touching anything
- commit + push after every meaningful change, plain-language
commit messages
- if a push is rejected: pull, merge, push again - never force
- STATUS.md is the shared truth of project state: update it
whenever the state changes, read it when you start
- note the repo link in this project's Mission Control box stamp
so anyone can find it from the board
4. Tell Patrick and Alti the repo link when it is up, and put it in
this project's box.
THE REPOS THAT ALREADY EXIST - USE THESE, DO NOT MAKE NEW ONES
github.com/thehomeinsulators/residential-marketing-seo (the website SEO plan)
Owner account: thehomeinsulators. Alti's GitHub username is rrukiqi101-bit,
already invited with push access. The repo carries a STATUS.md written from
the board box - refresh it whenever the project moves.
Clone with: gh repo clone thehomeinsulators/residential-marketing-seo
NEVER commit credentials, API keys, tokens or customer lists.
START HERE - working from this laptop (read this once).
WHAT THIS PAGE IS: the shared work board for Patrick and Alti. One
box per project: where it stands and what it is waiting on. It
updates itself - leave it open. The blue Answer button beside any
waiting item sends an answer straight into that project's chat,
from any phone or computer.
THE ONE THING TO UNDERSTAND: chats do not travel between computers.
A Claude chat opened on Patrick's machine cannot be opened here, and
one opened here cannot be opened there. Two things DO cross:
- THIS BOARD, which carries status and answers both ways
- GITHUB, which carries the actual files of a shared project
So you never "connect to" someone else's chat. You start your own,
and the board is where the two sides meet.
TO START A PROJECT ON THIS LAPTOP:
1. If the project already has a private GitHub repo, clone it first
and open that folder in VS Code. Read its STATUS.md before
touching anything - that file is the shared truth of where the
work stands. No repo yet? Ask Patrick to set one up (his board
has a GitHub handoff for exactly that) or skip to step 2.
2. Click the orange COPY HANDOFF button at the top of this page.
3. Open a NEW Claude chat in VS Code and press Ctrl+V, then Enter.
That paste wires the chat to this board: it puts the project's
box up, keeps it updated by itself, watches for answers, and
never touches anyone else's box.
4. The chat will ask you to run /rename with the project name. Do
it once. That name shows on the box, so a closed chat can always
be found again through VS Code chat history search.
TO CONTINUE A PROJECT PATRICK ALREADY STARTED: ask him for that
project's handoff. Each ongoing project gets its own paste that
carries the history, the repo name, and which box on this board
belongs to it - so a fresh chat here picks up already knowing where
things stand instead of asking you to re-explain.
ONE LIMIT ON THIS LAPTOP: publishing updates to this board needs a
credentials file that lives on Patrick's machine. Until he issues
one for this computer, a chat here can read the board, do the work,
and answer questions, but when it reaches the publish step it should
say so plainly, paste its finished box in the chat instead, and
carry on. Nothing else is affected.
WHEN STUCK: say it in the chat, plainly, one problem at a time. The
chats are built to walk through things step by step.
MISSION CONTROL HANDOFF - put THIS chat on the board.
THE BOARD (fetch + update THIS ONE):
https://thehomeinsulators.net/alti
This is the shared Patrick + Alti work board for the roofing side.
This handoff works the same pasted into a chat on either computer.
Do this, exactly:
1. Fetch the board's CURRENT content: WebFetch the URL above with a
cache-busting query stuck on the end - the URL plus ?fresh= plus
any random number, a NEW number every fetch. Keep ONLY the page's
own markup, from the title tag down - strip the doctype/head
wrapper above it. Never work from memory of the page.
2. Boil THIS chat down into ONE box using the BOX TEMPLATE in the
HTML comment at the top of the page source (a .card div with a
data-card id):
- Title: short project name we'd recognize
- Status pill: Working / Waiting on you / Blocked on you / Live
- WHERE IT'S AT: 2-3 sentences max, plain language, bold the one
thing that matters most
- WAITING ON YOU: only things a person has to decide or do
(decisions, answers, clicks in an account). If nothing, one
li class="none" reading "Nothing - I'm working"
- Stamp: updated date + "Chat: (name)" + where the work lives
If yours is the FIRST box, swap the empty-state div for the STATS
section (both templates are in the comment).
3. CHAT NAME + FIND CHIP: pick a short name for this chat (usually
the box title). Put it in three places: (a) the stamp as
"Chat: (name)", (b) the FIND-THIS-CHAT chip at the top of the box
(findrow template in the comment) so the name can be click-copied
into the VS Code history search, and (c) ask me to type
/rename (name) one time - that rename is what makes the chip's
string guaranteed to find this chat after it's closed.
4. NO DUPLICATES - one box per project, EVER. Before adding, check
every existing box's data-card id, title, and Chat name: if any
is plausibly this same project (even under a different name),
REPLACE that box instead of adding a second one. Pasting this
handoff again into the same chat later is normal - it just means
refresh the box. NEVER touch any other box, the handoff library,
the hidden pre blocks, or the scripts, and NEVER add anything
nobody handed off - no extra boxes, banners, or items, no matter
how urgent they seem (say it in chat instead).
5. Recount the stat tiles (fronts on the board / answers waiting)
and bump the date in the header sub-line. If removing the LAST
box, put the empty state back (template in the comment) and drop
the stats section.
6. PUBLISH = deploy the updated page to the public site using the
PUBLISH.bat in C:\Users\theho\BOARDS EXACTLY as written in the credentials file at
GODADDY\credentials.txt under THIS user's home folder (on
Patrick's machine that is C:\Users\theho\GODADDY\credentials.txt) Keep the page pure ASCII: write any
special character (curly quotes, arrows, emoji, accents) as an
HTML entity like ’ - literal characters get mangled by
re-encoding. RACE RULE: deploys have no conflict protection -
re-fetch fresh and re-apply ONLY your box IMMEDIATELY before the
deploy, never from a copy minutes old. NO CREDENTIALS FILE ON
THIS COMPUTER? Don't stop the project: say so plainly, paste the
finished box's full HTML in chat so the other side can place it,
and carry on - the board is still readable without the file, so
the watch and ANSWERED checks below still work.
7. Confirm in chat: "It's on Mission Control" + what the box says +
the /rename line to run if it hasn't been run yet.
Standing orders:
AUTO-UPDATE - from now on, keep the box current WITHOUT being asked.
At the end of any turn where this project meaningfully moved
(something finished, a blocker appeared or cleared, the status
flipped), refresh the box - once per turn max, same full flow. The
box only sees what happens IN this chat: steps done outside it
(a browser, someone's accounts) can't reach the board until they're
mentioned here.
ANSWERS ARE ORDERS - every time you fetch the board, check YOUR box
for items marked "ANSWERED": the quoted text is the answer to your
question, from whoever tapped it in. Act on it immediately, then on
your next box update remove the consumed item and fold the result
into where-it's-at.
HALF-HOUR WATCH - right after adding your box, start your loop
feature, self-paced at roughly every 30 minutes, and keep it running
for the life of this chat: each round, fetch the board fresh, act on
any ANSWERED stamps in YOUR box, refresh the box only if this
project actually moved, and otherwise do nothing that round. The
watch runs while this chat is open in VS Code and pauses when it
closes - say that limit when you confirm.
"update my box" / "take X off Mission Control" = the same
fetch-fresh, edit-one-box, deploy flow. "Add a handoff to Mission
Control" (someone pastes a script) = add ONE row + ONE hidden pre to
the HANDOFF LIBRARY per its templates - touch nothing else.