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 prospectThe 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
M2 · Real-user data (CrUX)
M3 · Machine-readability
/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
M5 · The errand test
<form> with named inputs, reachable in 2 clicks. Verdict: COMPLETED or STUCK AT STEP N.M6 · Presence, reviews, competitors
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/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
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 projectFive 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.