Beta

Demand Gen Readiness Audit

Audits a HubSpot portal for demand-gen readiness, read-only, before any paid spend is added. Takes the counts and denominators from a portal check and scores nine areas (funnel, scoring and ICP, routing and speed, source tracking, conversion capture, campaigns, data, reporting, programs) as Gap, Partial, or In place with the evidence beside each rating. Orders five moves with a done-when for each, holds paid spend until the foundation moves are live, flags an outbound-capacity decision, shows win rate by source with the unsourced caveat, and compares against a prior audit. Thresholds are shown as agreed or proposed, and anything it cannot measure is reported as not measured, never guessed.

HubSpot

The problem

Teams add paid spend to a funnel that cannot route a demo request, cannot say where a contact came from, and has no shared definition of a qualified lead. The spend then looks like it failed. The foundation has to be checked first, in an order that says what to fix before spending.

How it works

  1. 01Queries a HubSpot portal read-only for funnel and lifecycle, routing and speed to lead, source tracking, conversion capture, ICP and data quality, pipeline win rate by source, saved reports, and programs, keeping every count beside its denominator
  2. 02Scores nine areas as Gap, Partial, or In place using stated thresholds, with the evidence next to every rating
  3. 03Orders five moves, each with a done-when, and holds paid spend until the foundation moves are live
  4. 04Flags an outbound-capacity decision when the SDR team is empty or outbound deals have fallen, and compares against a prior audit when one exists

Tested against known answers

Demand Gen Readiness Audit

A synthetic portal with known answers, scored by the tool on seeded counts and denominators rather than a live portal, plus an earlier audit of the same portal for comparison. The scoring half was tested on every threshold boundary, on a fully ready portal, on an empty input, and on malformed counts.

9/9

Areas rated as the seeded answer key says

36/36

Threshold edge cases placed correctly

9/9

Empty input reported as not measured

96/96

Checks passed

  • →Correctly scored a seeded portal as four Gap and five Partial: no MQL in 40,000 contacts, no score property with 300 of 9,000 companies tiered, half of 120 recent demo requests unowned, and 22,000 of 40,000 contacts Offline or blank.
  • →Correctly placed values exactly on each boundary: 25% unowned is Partial and 25.1% is Gap, 5% is Partial, 50% Offline is Partial and 50.1% is Gap, and 20% is Partial, using integer arithmetic so a rounding error cannot move a rating.
  • →Correctly held paid spend while any of the first four moves was open and released it when only the reporting move remained, and flagged an outbound-capacity decision from an empty SDR team and from a 30% fall in outbound deals while leaving a 29% fall alone.
  • →Correctly withheld a win rate for a source with seven closed deals, attached the unsourced closed-lost caveat, and reported a worsening in source tracking and an improvement in campaign structure against the earlier audit, with each KPI delta marked as better or worse.
  • →Correctly refused to guess: an empty input returned not measured for all nine areas with no moves claimed, and a count larger than its denominator was reported as an input error instead of scored.

On the seeded portal, paid spend was held behind four open foundation moves, each tied to its own count and denominator. The query half, which collects the numbers from a live portal, is not part of this test.

See the full test run →

Questions about Demand Gen Readiness Audit

Does it change anything in our portal?

No. It only reads. Every number comes from your own portal using your own credentials, and nothing is written back unless you ask for it separately.

What if it cannot read part of the portal?

It lists what it could not read and words the affected findings as no evidence of something, never as proof that something does not exist.

Are the thresholds fixed?

Some come from the audit method and some are proposed defaults where the method was silent. The report labels each one, and once you agree them they can be frozen so later audits are measured the same way.

Why does it say demo-request ownership may be overstated?

Demo requests are matched by conversion event name, which can include spam, duplicates, and existing customers, and automation that assigns owners is often not readable. The caveat is attached to every routing finding.

Runs against your CRM using your own credentials, through your own AI instance. We don't copy, store, or retain your data.