The Five-Layer Dossier

How do the five layers correlate into one signal?

The five layers correlate because one call resolves them against the same domain at the same moment, so a signal in one layer can qualify a signal in another. A vector store in the AI layer means more when the infra layer shows a model-provider hostname and the firmographic layer names the vertical. Bassethound fuses all five into one icp_signal (hot, warm, cold), not five reports you stitch yourself.

Best move: resolve all five layers against the same domain in one request, then read them against each other instead of one at a time.

Why it works: correlation is a property of shared context. Five layers gathered in the same pass point at the same company at the same moment, so a signal in one layer can confirm or discount a signal in another.

Key takeaways

  • Correlation needs shared context. Five layers fetched in one call reference the same domain at the same moment, so they can qualify each other.
  • The summary fuses the layers into primary_stack, an ai_readiness score and verdict, a security_grade, and an icp_signal of hot, warm, or cold.
  • A signal is stronger in combination. A vector store (AI layer) plus a model-provider hostname (infra layer) plus a matched vertical (firmographics) reads hotter than any one alone.
  • Five separate MCP calls return five disconnected reports. The joining work (dedupe, reconcile, weight) lands on the agent, and the timing never lines up.
  • Bassethound returns the correlated dossier in a single call, so the fusion is done before the agent sees it.

What does “correlated” mean here?

Correlation is not five reports in one envelope. It is five layers resolved against a single domain in a single pass, then read against each other. The tech stack, infrastructure, firmographics, AI-readiness, and security layers all describe the same host at the same instant. That shared frame is what you join on. When the infra layer resolves an IP, ASN, and TLS certificate, the SANs on that cert can name subdomains the tech layer then fingerprints. When the AI layer finds a model-provider hostname in a network call, the infra layer already knows which ASN served it. Each layer is evidence. Correlation is the cross-reference that turns evidence into a read. A single-layer tool gives you a fact. A correlated dossier gives you a fact checked against four others.

How do the layers reinforce each other?

Take a concrete chain. The AI layer detects a Pinecone client and an Anthropic SDK. On its own that is “this site loads AI libraries.” Now add infrastructure: the TLS cert issuer and the email provider say this is a real operating company, not a parked domain. Fold in firmographics: the vertical is B2B SaaS, the description mentions support automation. Add the tech stack: a modern framework, a payments provider, live analytics. Fold in security: an A-grade header set and valid HSTS. Each layer raises or lowers confidence in the others. A vector store on a parked domain with no MX records is noise. The same client on a funded SaaS company with a payments stack and live AI infrastructure is a buying signal. The layers multiply rather than add: weak evidence in isolation reads as strong evidence when four other layers agree, and a contradiction (AI libraries, no real infra) tells you to discount the lead.

Why can’t five separate MCP servers reproduce this?

You could call BuiltWith for tech, Censys or IPinfo for infra, Apollo for firmographics, and bolt an AI check on top. You would get five payloads. The correlation is still missing, and now it is your problem. You have to reconcile five schemas, dedupe overlapping fields, and weigh signals that arrived at five different moments against five different crawl states. The timing never lines up: the tech snapshot might be a week stale, the infra lookup live, the firmographic record from last quarter. Cross-layer joins that depend on shared context (a SAN from the cert matching a subdomain in the tech layer) are impossible when each vendor crawled independently. Fan-out gives you breadth. It does not give you correlation, because correlation is a property of a single pass over a single target. The agent pays the integration tax on every call and still gets a weaker read. Fusion has to happen at the source. That single pass is the only place all five layers see the same target at the same moment, so it is the only place the join holds.

How does correlation become the icp_signal?

The top-level summary is where fusion lands. It reduces five layers to four fields: primary_stack (what they run), ai_readiness with a score out of six and a verdict of shipping, experimenting, or none, a security_grade from A to F, and an icp_signal of hot, warm, or cold. The icp_signal is the correlated read, not a single-layer readout. Hot means the layers agree that this is a real company shipping real AI on a stack worth engaging. Warm means partial agreement: AI experimentation without depth, or strong infra with no AI signal. Cold means the layers agree there is nothing here, or they contradict each other. The score itself counts distinct AI signal groups hit (model providers, SDKs, orchestration, vector stores, observability, widgets and files), capped at one. But the verdict and the icp_signal fold in the other four layers, so a high AI score on a dead domain does not read as hot. The summary is the answer an agent asked for. The layers are the evidence behind it.

Where does correlation break down?

Be honest about the seams. A static crawl plus optional JS render sees what the front end loads and calls. It cannot see a component that runs entirely server-side, behind a proxy, or inside an API you never hit. If a company routes every model call through its own backend, the AI layer may show nothing even though the AI is there. Correlation cannot invent evidence a layer failed to gather. It can only cross-reference what each layer found. So a “none” verdict means “no signal reached us,” not “no AI exists.” The dossier reports these gaps rather than papering over them: how_detected and confidence travel with every detection, and the summary reports absence as absence. The payoff is coverage. One layer often fills a gap another left open: no AI library detected, but a known LLM-provider hostname in a network call still surfaces in the infra layer. Correlation widens the net. It does not close every hole, and it tells you which holes it left open.

Bassethound perspective

Fan-out is the reflex answer, and it is wrong. The market assumption is that domain intelligence is a lookup problem: point enough single-purpose APIs at a domain and concatenate the results. BuiltWith owns tech, Censys owns infra, Apollo owns firmographics, and an agent glues them together. That model ships breadth and calls it done. It misses the one thing an agent wants: a read. Correlation is a property of one pass over one target. You cannot reconstruct it downstream from five payloads crawled at five different times against five different schemas. The join has to happen where the evidence is gathered. Move it downstream and it breaks. That is the bet: fusion at the source, not fan-out at the edge. A vector store means one thing on a parked domain and another on a funded SaaS company, and only a tool that saw both layers in the same breath can tell you which. Bassethound returns the correlated dossier, icp_signal included, in a single keyless call. The agent gets the answer, not the assembly kit.

Sources

Frequently asked questions

Do you have to call all five layers separately?

No. One sniff_domain call resolves all five against the same domain in a single pass, which is what makes the correlation possible. Separate calls would return separate reports with no shared frame to join on.

What is the icp_signal based on?

It fuses all five layers, not just the AI score. Hot means the layers agree this is a real company shipping real AI on a stack worth engaging, warm is partial agreement, cold means agreement on nothing or a contradiction.

Can two weak signals add up to a strong one?

Yes, that is the point of correlation. A vector store alone is thin. A vector store plus a model-provider hostname plus a matched vertical and live infrastructure reads as a buying signal none of them produce alone.

Does correlation ever mislead you?

Only indirectly. Correlation can only cross-reference what each layer gathered. A fully server-side or proxied component may leave no trace, so a 'none' verdict means 'no signal reached us,' not 'no AI exists.' The dossier reports the gaps.

Why can't my agent just correlate the results itself?

It can try, but the layers arrive from different tools at different crawl times against different schemas, so the joins that depend on shared context break. The join is strongest at the source, in one pass.

Sniff a domain.

Run sniff_domain on any site and read its five-layer dossier in one call.

Sniff a domain