๐Ÿงช Superstar Sale ยท Instagram Affiliate โ€” Pair Test Plan

Live pair-programming QA for the Instagram affiliate business: bridge pages, campaign-kit integrity, IG account & first publish, the offer/store rail with tracking slots, and compliance probes. Two testers โ€” the agent (SSS Dev) and Mike โ€” execute the same steps with different accounts, devices, and data, compare results in the #instagram-affiliate thread, and file GitHub issues for every mismatch.

Protocol Environments & data A ยท Bridge pages B ยท Kit & content C ยท IG account & publish D ยท Offer rail & slots E ยท Compliance probes Results & issue log

How this session works

  1. Agent executes a step (browser / curl / repo checks), posts screenshots to the #instagram-affiliate thread, and states pass/fail.
  2. Mike repeats the same step with his own accounts, phone, and data, posting his screenshots to the thread.
  3. Compare. Same result โ†’ tick the log row. Different result โ†’ both re-run once, then file an issue.
  4. File a GitHub issue for every wanted change (conventions below) and link it in the log row.
  5. Move to the next step. Flows are ordered so data feeds forward: A proves the public pages, B proves the content machine behind them, C puts the account + first reel live, D wires the money rail into the page's empty slots, E probes the compliance walls around all of it.

Issue conventions

Evidence conventions

Environments & test data

ThingValue
Live bridge pages (read-only surface)affiliate/home-security and affiliate/boring-digital-products โ€” verified HTTP 200 2026-10-13. Pages serves repo docs/X at /X (no docs/ prefix; checking the repo path shape 404s and looks like a failed deploy).
Page-edit stagingLocal server + branch: cd ~/Repos/superstarsale/docs && python -m http.server, edits on an agent/โ€ฆ branch โ†’ PR โ†’ merge. No page edit goes straight to main โ€” the PR is the staging for anything public.
Instagram (no staging exists)The account is brand-new with zero followers, so the first posts and comments are the test. All test comments come from a designated second (throwaway) account, never from real prospects' posts.
Money railsHome Security: DOPPCALL pay-per-call application (Mike submits โ€” payee/tax). Boring Digital Products: Payhip store (Mike creates โ€” Payhip free-forever, 5%/sale, pricing verified 2026-09-30 vs Gumroad's 10%+50ยข).
Private products repo~/Repos/superstarsale-products โ€” the 5 paid files + free pack. Paid deliverables must never appear in the public repo or on Pages (E4 checks).
Repomicrospaces/superstarsale โ€” kits in docs/research/, pages in docs/affiliate/, slots as AFFILIATE_SLOT_n / STORE_SLOT_n comment + href="#โ€ฆSLOT_n" pairs (greppable on purpose).

Test data markers

The IG account and the store/network accounts are real business assets, not throwaways. Nothing in this plan requires deleting them at session end โ€” cleanup targets test comments, test listings, and any unfilled slot advertised in a live bio.

Flow A ยท Bridge pages โ€” the public surface (no account)

Persona: an Instagram viewer who tapped the bio link. Read-only on the live Pages URLs. Produces: nothing โ€” this is the baseline everything else is compared against. Both pages, both testers.

A1BothOpen https://microspaces.github.io/superstarsale/affiliate/home-security/ fresh (hard reload), desktop.
Expected: HTTP 200, mobile-first layout renders, free Home Security Checklist is the on-page value, FTC affiliate disclosure present, "not professional advice" box present, and no clickable outbound offer link (offer buttons are on-page #AFFILIATE_SLOT_n anchors until Flow D fills them).
A2BothSame for https://microspaces.github.io/superstarsale/affiliate/boring-digital-products/.
Expected: 200, renders, free starter checklist pack on-page, disclosure present, store buttons are #STORE_SLOT_n anchors (no live store links until D2). Content is digital-products-only โ€” no home-security content bleeding in (cross-check with E3).
A3AgentServe integrity check: curl -s both live URLs; compare grep -c "AFFILIATE_SLOT\|STORE_SLOT" on the served HTML vs the source files in the repo; confirm the disclosure text is in the served HTML, not just the source. MikeSpot-check one number your agent reports (view-source in your browser, Ctrl+F the slot marker).
Expected: served count equals source count for each page; every slot has both the <!-- โ€ฆSLOT_n --> comment and its href="#โ€ฆSLOT_n" anchor. A count mismatch means Pages is serving stale content โ€” stop and reconcile before C/D depend on these pages.
A4MikeOpen both pages on your phone (the way an IG viewer actually arrives โ€” from the bio link). Scroll the whole page.
Expected: no horizontal scroll, text readable without zooming, checklist CTA visible without endless scrolling, buttons tappable. This is the device the whole rail is built for.

Flow B ยท Campaign kit & content integrity (the content machine)

Persona: QA on the factory that produces the reels. Feed data: none. Produces: confidence that everything Flow C publishes comes from a verified kit. Repo-level โ€” no writes.

B1BothOpen both kits (docs/research/home-security-campaign-kit_2026-09-29.md, docs/research/boring-digital-products-campaign-kit_2026-09-30.md).
Expected: each kit has all sections: buyer identity, 8 content buckets with numbered hooks, 10 fully scripted reels (Hook โ†’ Value โ†’ Tease โ†’ CTA), DM flow, compliance guardrails, 30-day calendar, Mike steps, metrics. Verified offer terms (payout/GEO/cap/fees) with source URLs at the top.
B2AgentTrigger-word consistency: grep each kit + its bridge page + the 10 scripted reels for the trigger word. Home Security must be SAFE everywhere; BDP must be CHECKLIST everywhere; count occurrences and look for the other campaign's word.
Expected: exactly one trigger word per campaign, identical on page, kit, and every scripted reel CTA. Zero cross-campaign leakage. A viewer commenting the wrong word should be handled by the DM flow's fallback โ€” note what the kit says that is.
B3AgentCompliance pre-pass over the first week's hooks: flag any income claim ("make $X/day"), any guaranteed-prevention claim (home security must say "deters / reduces risk"), and every statistic used โ€” check it has a source or is struck before the reel posts.
Expected: zero income claims; prevention language is "deters/reduces"; every surviving stat has a named source recorded in the kit. Anything failing here is fixed in the kit BEFORE C3 posts it โ€” this step gates publishing.
B4AgentSlot inventory: list every AFFILIATE_SLOT_n / STORE_SLOT_n in both pages with its on-page label, and map each to the step that fills it in Flow D.
Expected: a complete map (page โ†’ slot โ†’ filler step โ†’ source of the URL). No orphan slots, no duplicated numbers. This map is what D2 executes.

Flow C ยท IG account & first publish (Mike-led; agent verifies from outside)

Persona: the business going live. Feed data: kits from Flow B. Produces: a real account, bio, and the first scripted reel โ€” the assets Flows D and E probe. These are Mike-only actions; the agent cannot create accounts.

C1MikeCreate the IG account(s) per the kits' page identity (Home Security: "HomeSecurityDaily"-style handle; BDP: "Boring Business Club"-style). Also create the throwaway test account that will do trigger-word comments. AgentRecord the handles in the thread; verify each profile resolves logged-out (incognito) โ€” public, not private.
Expected: accounts live and public; handles match the kit identity; business account type selected so insights exist later. Private-by-default is a fail โ€” the rail needs public content.
C2MikeSet the bio exactly per the kit (identity line + free-checklist line) and the link = the campaign's bridge page. AgentLogged-out check: open the profile, follow the bio link, confirm it lands on the right bridge page (A1/A2 URLs โ€” the bridge, never a direct offer or store link).
Expected: bio link โ†’ bridge page on both campaigns. A direct offer/store link in bio is a guardrail violation (E1) โ€” fix before any reel posts.
C3MikePost scripted reel #1 for one campaign (your pick which goes first), caption straight from the kit script. AgentLogged-out: confirm the reel is public, caption matches the script (no improvised claims โ€” B3 already gated the language), and the profile still shows the bridge bio link.
Expected: reel public and caption-faithful; CTA in the caption is the trigger word. Note the first-impression metrics (views in first hour) as the baseline row for the kit's metrics section.
C4BothTrigger-word test: from the throwaway account, comment the trigger word (SAFE or CHECKLIST) on the C3 reel. Agent watches logged-out; Mike watches from the business account.
Expected-failure pinned: ManyChat is not connected yet, so no automated DM arrives โ€” record exactly what happens (nothing? manual DM attempted?). This is the documented-baseline step; the wanted behavior (auto-DM with checklist + bridge link) becomes the issue that D5 closes after ManyChat is connected.

Flow D ยท Offer rail, slots & tracking (the money leg)

Persona: a viewer who bit โ€” the click must reach the offer/store and be counted. Feed data: B4's slot map, C's live account. Produces: filled slots, a tracked click, and (after ManyChat) the closed DM loop.

D1MikeRail signups: submit the DOPPCALL publisher application for Home Security using the kit's traffic description ("organic Instagram reels โ†’ bridge page โ†’ click-to-call"); create the Payhip store for BDP and upload the 5 files + free pack from ~/Repos/superstarsale-products at the kit's price points ($7โ€“12). AgentRecord application/store status in the thread; sanity-check the uploaded product pages' prices and names vs the kit.
Expected: network application submitted (approval may take days โ€” record the wait), store live with all 6 deliverables correctly priced. Payee/tax steps are Mike-only by design; the agent never touches them.
D2BothFill the slots per B4's map: Mike sends the tracking URL(s) / Payhip product URLs; the agent replaces each href="#โ€ฆSLOT_n" placeholder on a branch โ†’ PR โ†’ merge; verify Pages picked it up (A3's count check flips: zero remaining placeholder anchors on filled slots, disclosure intact).
Expected: every filled slot keeps its <!-- โ€ฆSLOT_n --> marker comment (traceability) but now carries the real link; unfilled slots (network still pending) stay as anchors. Live page matches the branch exactly after merge.
D3BothClick-through: from the live bridge page, click a filled slot โ€” agent on desktop, Mike on his phone.
Expected: lands on the offer page (Home Security) or the Payhip product page (BDP); nothing intermediate 404s. Within the rail's reporting lag, the network dashboard / Payhip shows the click โ€” record how long the lag actually is (Payhip is near-instant; call networks can batch).
D4AgentUnfilled-slot probe: click every still-anchored #โ€ฆSLOT_n placeholder on both live pages.
Expected: anchor jump on-page, no external navigation, no 404, no console error. An unfilled slot must fail closed โ€” it must never send a viewer to a dead or wrong destination.
D5BothClose the DM loop: Mike connects ManyChat to the business account(s) (Mike-only), then repeat C4's trigger-word comment from the throwaway account.
Expected: automated DM arrives on the throwaway account within the kit's promised window, containing the free checklist and the bridge page link โ€” no direct offer/store link in the DM either (bridge-only holds in DMs). This closes the issue filed at C4.

Flow E ยท Compliance & isolation probes (agent-led)

Persona: the platform reviewer / an adversarial audit. Mike observes and re-runs the UI-only ones. These steps are expected to pass silently โ€” any hit is a content or repo fix before more reels post.

E1AgentBridge-only rule on the live IG: inspect the bio and every caption on both accounts โ€” zero direct affiliate/store links anywhere; every road leads to the bridge page. MikeRe-check from the phone app (the agent sees the logged-out web view; app embeds and stickers can differ).
Expected: no offer/store URL in any bio, caption, comment reply, or story link. Everything routes through the bridge page where the FTC disclosure lives.
E2AgentPublished-content sweep: every posted caption + the bridge pages โ€” no income claims, no guaranteed-prevention claims, every stat sourced (B3's gate held in practice).
Expected: clean. One hit means a reel ships with an unvetted claim โ€” pull or edit the caption the same day and file the process miss.
E3AgentCross-campaign isolation: home-security page/account contains no digital-products content; BDP page/account contains no home-security content; no page links to the other campaign.
Expected: one niche per page/account, zero crossover โ€” the one-offer rule from the kits holds in both directions.
E4AgentPaid-file leak check: search the public superstarsale repo and the live Pages site for the paid deliverable filenames from ~/Repos/superstarsale-products (and for pairtest- strays).
Expected: zero hits โ€” paid files exist only in the private repo; the public site carries the free checklist only. Any hit is a same-session takedown.
E5BothSession cleanliness: the only IG interactions this session are from the throwaway account; the DM inbox shows no real prospects touched; the store shows no test purchases.
Expected: zero real-customer contact, zero test orders to refund. Any PairTest marker on a live surface is listed for cleanup in the checklist below.

Results & issue log

Fill in during the session. "Match" = agent and Mike saw the same behavior. Every โš /โœ– row needs an issue link.

StepAgentMikeMatchIssueNotes
A1home-security page, read-only
A2BDP page, read-only
A3served vs source slot counts
A4phone = the real device
B1kit section completeness
B2SAFE / CHECKLIST consistency
B3claims gate โ€” blocks C3
B4slot map โ†’ feeds D2
C1Mike-only; agent verifies public
C2bio link = bridge, never direct
C3first reel, caption-faithful
C4expected-fail: no ManyChat yet
D1DOPPCALL app + Payhip store
D2slot fill via PR, markers kept
D3tracked click + dashboard lag
D4unfilled slots fail closed
D5ManyChat closes the C4 issue
E1bridge-only on live IG
E2claims/stat sweep
E3one niche per page/account
E4no paid-file leak
E5no real prospects touched

Suggested rounds

Session cleanup