Honest Growth

Methodology · every rule, every threshold, in public

How we decide what's a finding.

24 deterministic rule families. Each one expands at runtime into ~10–25 individual statistical checks against your specific ad sets, ads, audiences and placements — typically 200+ checks on a mid-size account. Every rule, every threshold, and every false-positive correction is documented on this page. A CSV runs the families a CSV has the data to feed; connecting your Meta account runs all of them.

More on why we have 24 rules and not 150 — read the essay.

Math, shown

Every finding traces to a specific row of your data.

Click any number on your audit to see the calculation behind it. The rule that fired, the entities it applied to, the raw evidence values, the confidence threshold. No black box. If we can't show the math, we don't fire.

We document the math for every detection on this page — read it before you pay us a dollar.

What we look at, that most tools miss

  • Per-ad CR vs siblings, not vs account average. Catches winners that are only winning because Meta over-served them.
  • Audience overlap matrix across every custom audience pair. For an account with 12 audiences, that's 66 pairwise checks.
  • Per-placement CPA inside every ad set. Most dashboards aggregate placement performance at the campaign level, which hides where the actual waste is.
  • Browser pixel vs Conversions API parity check per event. Cross-references your purchase data on both channels — most tools only see one.
  • 14-day rolling windows, not lifetime aggregates. Lifetime CTR averages hide week-over-week saturation. We compute the deltas.
  • Confidence intervals on every finding. We don't just say "you have a problem" — we say how sure we are, and where the rule could be wrong.

Detection logic is deterministic Python code, not an LLM. The same account snapshot always produces the same findings. See why this matters →

The surfacing layer

23 patterns we'll flag for you.

Each rule below is what actually decides whether something becomes a finding on your audit. Read them before you pay us a dollar. When a rule changes, the change is dated in the changelog at the bottom of this page.

Versioning + changelog

Determinism without versioning isn't determinism.

A “deterministic engine” that silently changes its thresholds isn't deterministic — it just hides where it moved the line. So when a rule's logic changes, the version bumps and the diff lands here, dated, with the rule key, the previous value, and the new one. Your audit also records the version it ran against, so a finding three months ago is reproducible against the rule that fired it.

  1. v1.2Six new rule families· May 22, 2026

    Added six new detection families targeting the gaps senior media buyers flagged in the 2026 Pilothouse / Common Thread Collective / Sam Tomlinson audit frameworks: creative_volume_floor, asc_existing_customer_cap_missing, cost_cap_vs_aov_mismatch, prospecting_retargeting_imbalance, capi_event_match_quality_low, pixel_capi_deduplication_broken, and attribution_one_day_view_overdependent. All six are deterministic or strict-α (0.001) so the /why-15 false-positive math still scales at 24 rules (~0.80 expected false positives per audit). Most require a Meta read-only connection to fire — they silently withhold on CSV-derived snapshots until OAuth populates the new fields. Engine is now 24 rule families.

  2. v1.1Two new rule families· May 22, 2026

    Added optimization_event_volume_low (ad sets spending $350+ in the last 7 days with fewer than 25 purchases — below Meta's optimization noise floor) and spend_fragmentation (accounts with 8+ active ad sets where the top 3 hold less than 50% of spend). Both deterministic, CSV-runnable, sourced to Pilothouse, Common Thread Collective, and Sam Tomlinson's 2026 frameworks. Brought the engine to 17 rule families (extended again to 23 in v1.2 above).

  3. v1.0Initial release· May 2026

    Fifteen detection rules shipped. Nine run on a CSV upload today; six require Meta read-only access and unlock the day OAuth ships. Every rule's logic and thresholds are documented on its detail page above. Confidence math, false-positive cases, and the “what would change our mind” note are published per rule.

Future changes — a threshold lowered, a rule retired, a new rule added — will land as new entries here with the date, the rule key, the before/after value, and a one-line reason. If a rule fires on your audit, the report records the version it ran against. Spot a rule you think should be sharper? Email Nachiket.

Now you've read the method

See it run, then see what it costs.

Run a full audit free, once a month, forever. When you want every finding, the pricing page has both plans — flat-rate, no surprises — and a dated timeline of what's coming next.