Skip to content
Design Hacker HQ
Esc
navigateopen⌘Jpreview
On this page

X-ray Manual Run + IP Filing SOP

How to run the DH X-ray by hand, and how DH keeps its IP inventory clean.

Two standing procedures, bundled because both are “run this exactly, every time” doctrine. One runs prospects through the agentic-internet X-ray. One keeps Background IP from turning into archaeology.

Part 1: The X-ray manual run

v1 · 45-60 minutes · ~$1-2 per prospect

The repeatable procedure for running a full agentic-internet X-ray on any prospect by hand, before the automated worker (X1-X15) exists. Every manual run doubles as the spec the executors build from. First proven run: Valley Home Construction, 2026-07-12.

Inputs (5 minutes)

Business URL, vertical + pack, city/market, average job value (ask the owner or use a cited vertical default), 10 target questions from the vertical’s question pack, monthly site traffic if available.

The eight modules, run in order

M1 · Lab performance

Google PageSpeed, mobile Performance score, LCP, CLS, total weight. Use a keyed PSI API — the keyless one 429s after a handful of calls. Screenshot the scored page as evidence.

M2 · Real-user data (CrUX)

Check the “real users” section in PSI. No field data is itself a finding: say the site is below Google’s real-user measurement threshold.

M3 · Machine-readability

Fetch and record /robots.txt, /llms.txt, /sitemap.xml, and the homepage source for application/ld+json. Zero JSON-LD is the most common, most fixable finding.

M4 · The agent view

Two-screens artifact: a normal screenshot next to a machine-extracted text view of the same page. Record what survives extraction — often the phone number, address, and form do not.

M5 · The errand test

Try to complete the money action as an agent would: find the contact/quote form, check for a real <form> with named inputs, reachable in 2 clicks. Verdict: COMPLETED or STUCK AT STEP N.

M6 · Presence, reviews, competitors

Apify compass/crawler-google-places, run once for the prospect (use county-level location, city can polygon-miss) and once for the market category. Cross-check the GBP website field against the audited domain.

M7 · The citation check

Apify apify/google-search-scraper with AI Overview / ChatGPT / Gemini / Perplexity add-ons, run async: true (2-5 min, sync times out). Record who each engine names per question, save the transcript verbatim.

M8 · Consistency

Diff name, address, phone, domain across the site, GBP, and the directories that surfaced in M7.

Scoring: 0-100, four pillars

FOUND (35) · READ (25) · FAST (20) · ACT (20). Bands: 0-40 Foundation, 41-70 Momentum, 71-100 Leverage. Full per-line weights live in the source doc.

The ROI chain

Shape: Finding → Evidence → Benchmark (with year) → Their number → Dollar range. Three lenses: replacement cost (market lead price), the one-job anchor (breakeven is one job), and the AI-shift stat set. Every stat carries its year, every dollar figure is a range with visible inputs, no revenue predictions past the measured research ceiling.

Report assembly

Score + band → the four moments (empty chair, two screens, stopwatch, errand test, each with its evidence) → findings ranked by money → competitor contrast → creative edge → one prescribed next step → the three-tier fix-path panel. Close checklist: every claim has an artifact, every stat has a year, every dollar is a range, one CTA only.

Scars logged so far: keyless PSI 429s, Maps city-polygon misses, AI-engine scrapes must run async, giant templated navs drown contact info (that’s the finding, not a tooling failure), GBP website field can point at a non-canonical domain.

Part 2: Cold outreach — where this connects

The X-ray is the diagnostic. The Cold Outreach Pack SOP is the send engine for prospects it surfaces: Smartlead + Mailforge-class inboxes, consented-only SMS, human-approved first 50 sends per client, D1 bbe-ledger as the single write door. See that page’s own card for the full find → scrape → load → send → track → optimize loop.

Part 3: IP Filing SOP

Current · Phase 4 of the IP Organization project

Five rules that keep the workspace clean so a full reorg never has to happen again.

1. Every new project gets a folder + a PROJECT-IP.md on day one

States what DH Background IP enters (point at IP-LEDGER rows, don’t re-describe), what the project creates (Foreground IP), who the partners/clients are, and what’s shared with whom. Two minutes, saves a multi-hour reconstruction later.

2. Before any file or repo access goes external, log it first

One line in the project’s PROJECT-IP.md, one line in the master IP-LEDGER.md. Both, every time, before the share happens, not after.

3. Truth docs live in _TRUTH/

Dated, stamped CURRENT / RULED / LOCKED. Only docs another session should navigate BY belong there. Superseded docs get a banner and move to _ARCHIVE/, dated by year-month. Never just disappear.

4. Version before editing, with one carve-out

Copy the existing doc to a new version before editing. Carve-out: pure path/citation updates with zero substantive change skip the version copy, but still get logged (a PATH-CHANGES.md entry or an in-doc note). Anything touching an idea, number, or decision gets versioned first.

5. Quarterly sweep

Re-run a light Phase 1 audit: grep the root for new loose files, check _TRUTH/ for staleness, confirm prior archive candidates got filed, refresh IP-LEDGER.md. Always grep from scratch — never trust a prior session’s summary of what’s already clean.

Standing rules that don’t change: delete nothing (archive is the strongest action), never guess ownership on anything partner-adjacent (flag and ask), no em dashes / no “not X, Y” framing in anything written.

Part 4: What’s actually in the IP ledger

Reviewed 2026-07-02, blessed by Andrew line by line against the truth docs and the filesystem. The Background IP exhibit every future partner or investor conversation points to instead of re-deriving what DH owns.

The five core engine layers (all DH-owned, Engine core):

Asset Lives at Status
The Brand Brain (DH-Brand-Record, 15 layers) DH-Brand-Record/ Current
Your Identity (Brand Pack Schema) brand-pack-editor-v3/, share.designhacker.com/brand-packs/ Current, v1.3
The Theme (tokens, blocks, site.json) share.designhacker.com/system/, Site-Control-Layer/ Current, frozen
The Platform (dh-site-engine) dh-site-engine/ repo Current
The Follow-Up / Sales Engine (BBE core) Brand-Builder-Engine/, D1 bbe-ledger Current, live dry-run

Plus Brand With AI, a standalone revenue product on top of the Identity layer (brandwithai.com, live public beta).

Supporting assets worth knowing by name: loader.js + the 36-dial contract, the semantic-modes/surface-mode CSS engine (queued for promotion), the Block Registry, ke-mcp, the full Cowork skills library, and so bexy — a parked vertical pack (beauty-rebook), no operator identified yet.

Related but distinct product line: Brand Builder Bot / Command Center, licensed to Brand Builder Club members via the product itself.

Names and domains DH owns: designhacker.com, brandbuilderengine.com, brandwithai.com, brandbuilderpros.com, designhackertoolbox.com, brandidentitykit.com. Product marks in active use: Brand Builder Engine, Brand With AI, Brand Builder Bot, so bexy — none with confirmed trademark registration, logged as names in commercial use only.

Explicitly NOT DH’s: bex+Co.® (long form: bex+Co. Shared Workspace Salon™) is the client’s mark, included in the ledger only to draw the boundary.

Client deliverables with real citable terms: bex+Co. (30+ salons, live) and Valley Home Construction ($15k build + $2,500/mo, staging). Engine underneath stays DH’s regardless of how many client instances run on it — a paper-status check confirming existing client agreements didn’t quietly assign that away is flagged as still pending.

The Rene section: the Theme contract, BLOG-STACK-CURRENT.md, and template-1-v2 flow DH → Rene as documentation and a design target (both stay DH’s). The Strapi + Next.js implementation and cdn-mcp flow the other way and are cleanly Rene’s. “22Social” is a retired 2012 code name for the blogging project, not a separate venture — settled directly by Andrew, no open ownership question left.

Was this page helpful?