The Meta ads audit that doesn't touch your account.
Every other Meta tool wants write access and an AI deciding your campaigns. We refuse both — but we ship an MCP server, because AI belongs in your workflow, not your account. 200+ checks across 24 rule families, flat $29 a month, posted on the page.
Illustrative · what the engine's ledger will read once real audits run
Three refusals, one welcome
Three things we won't do. One we will.
The Meta ads category is racing in one direction — write access, AI deciding your campaigns, percentage-of-spend pricing. We're walking the other way. None of this is roadmap — these are the things you can hold us to.
- Irefusal
No write access. Ever.
Read-only Meta access, by architecture — we request ads_read only, never write. You surface findings; you apply fixes in Meta yourself. No one-click 'optimize' button can drop a Black Friday weekend while you sleep.
- ads_readrequested
- ads_managementnever
- business_managementnever
- IIrefusal
No AI deciding what's broken.
What's a finding, and what dollar it's worth, is decided by 24 deterministic Python rules. Same input, same answer, every time. AI doesn't get a vote on the math. The math is the math.
# the decision layer def audit(account): return deterministic_rules(account) # no llm.complete() # no agent.act() - IIIrefusal
No spend-tiered pricing.
Flat $29 a month, posted on the page. Every other tool either hides the price, scales it with spend, or gates it behind a sales call. We're aligned with your CFO — not your budget growth.
- IVwelcome
AI in your workflow.
Our MCP server runs inside Claude Desktop, Cursor, ChatGPT. The verdict comes from our Python engine; your AI client explains it, prioritizes it, drafts your remediation. AI's good at explaining — it just doesn't get to decide what's broken.
# in Claude Desktop You: audit my CSV Claude: → run_audit_from_csv() # verdict from our Python engine # explained by your AI client
0+
statistical checks per audit
across 24 rule families
0
LLMs in the decision layer
deterministic Python only
$0
flat, every month
posted on the page, not gated
R/O
Meta access, by architecture
we cannot write to your campaigns
Try it on your number
How much is your account leaking?
Across the audits we've simulated, accounts between $1k and $200k a month in spend leak 8–14% of budget on average — across 4–7 fixable issues, with the math beside each one. Punch in your monthly spend below and see what your other tooling actually charges.
Your monthly Meta ads spend
~14% of spend · across 4–7 fixable issues · $50,400/yr if you let it run
Run a free audit on your accountMonthly tool cost at this spend
Honest Growth
Flat · posted at /pricing · forever
$29
/mo
Triple Whale
GMV-tiered · ~4× ad spend assumed
$179 /mo
triplewhale.com/pricing ↗Starter · published
Motion
Flat under $50k spend, custom above
$250 /mo
motionapp.com/pricing ↗Starter · ≤ $50k spend · published
Birch (Revealbot)
Ad-spend tiered with overages
$99 /mo
bir.ch/pricing ↗Pro · published
Madgicx
Hidden — "see price inside the app"
Pricing not published — must sign up first
Northbeam
Data-volume tiered · $1.5M/yr threshold
$1,500 /mo
northbeam.io/pricing ↗Starter minimum · published
Savings · on tooling
$2,652/year vs the median paid alternative on this row — before counting what we help you recover.
Competitor prices pulled from each tool's public pricing page on 2026-05-23 (links above). Triple Whale tiers approximate GMV at 4× monthly ad spend (typical DTC blended ROAS). Pricing pages change — if any number above goes stale, the source link is the ground truth. See how we compute the leak →
Public quotes · 2025–2026
You're not the only one tired of this.
We're not making up a problem. Working DTC operators have been saying it out loud for two years. These are real public quotes, with sources. We built a tool that respects what they've been asking for.
We have opted out of every single AI feature we possibly can.
We're tired.
You know Meta is broken when agency people are finally talking about it. They never want to admit performance is off.
We don't pay these operators, we don't know them, and we don't have permission to use their words as endorsement. We're citing public quotes about a public conversation — sources linked above so you can read each one in full.
The difference, in two cards
Why determinism matters.
Same Meta account, audited twice. One engine gives you the same answer every time. The other can't — by definition. The gap matters more than the marketing implies.
Honest Growth
Deterministic engine
Same input → same answer. By design.
- Frequency-saturation rule fires when
- recent frequency ≥ 5 AND CTR drop > 20% week-over-week
- What runs
- Python. 24 rule families × 200+ checks against your specific entities, Wilson 95% CIs, Benjamini-Hochberg correction.
- Same data, different days
- Identical output. Identical dollar. Identical confidence.
- Reproducible
- Auditable
- Falsifiable
Typical 2026 Meta tool
LLM-based recommendation
Same input → different answer. By definition.
- How it answers
- A language model writes a recommendation each call.
- What you can inspect
- The output text. Not the rule. Not the threshold. Not the math.
- Same data, different days
- Different phrasing, different suggestions, model updates change everything.
- Not reproducible
- Not auditable
- Not falsifiable
This is not a swipe. LLM-based tools are good for the things LLMs are good at. Auditing money isn't one of them. If two operators ask the same question of your ad account and get two different answers, you can't hold either answer to account.
What the other tools do · vs · what we do
Two screenshots, same Saturday night.
Two operators with the same account, two different tools. One wakes up Sunday morning to find their Black Friday weekend was paused. The other wakes up to a ranked list of things to check.
“Good morning! I noticed unusually high CPMs overnight, so I paused 3 underperforming ad sets and increased budget on your top creative. Have a great weekend!”
- Actions taken
- 3 pauses · 1 budget edit
- Reason given
- “unusually high CPMs”
- Math shown
- — none —
- Reproducible
- no
What actually happened
One of the “paused” ad sets was your Black Friday teaser campaign. The CPM spike was your audience checking the site. You lose Saturday's pipeline. You find out Monday.
A composite of stories from real DTC operators · 2025–2026
We ran every statistical check against your account. Here are the 3 things worth your time on Monday — ranked by recoverable dollars, with the math.
rule.frequency_saturation
Cold · LAL 1% US · creative #4
● 92% CI
$1,840
rule.creative_concentration
Ad · Founder POV v3 doing 84% of conversions
● 90% CI
$1,300
rule.sibling_cannibalization
BAU Prospecting × BAU Retargeting overlap 38%
● 90% CI
$1,140
What actually happened
Your Black Friday teaser is still running. The CPM spike is your audience. We surfaced it, with the math. You decide.
─── The thesis ───
Twenty-four rules you can read
beats two hundred and forty you can't.
Every Meta ads tool claims "hundreds of checks." Most of those are box-ticking — they pad the audit so it looks thorough. We chose to ship 24 rules and document every one of them, with the math and the threshold and the cases where it fires wrong. You can read the source. You can disagree. You can send a PR. That's not possible with the others.
What you get back
Your account, in one screen.
One verdict. A dollar number. Ranked findings — each one tied to the exact rule that fired and the exact math behind it. No LLM-summary in the middle.
Audit · Lulu Lemonade · 2026-05-23
64 days · 47,302 rows · 14 campaigns · checksum a7f3…91d
Estimated monthly leak
14% of $30,120 spend
Leak distribution · last 60 days
Top findings · ranked by recoverable dollars
6 fired · 9 passed
- 1
Meta is over-serving one ad — and it's not your best one
rule.f1
90% confidence
$1,840/mo - 2
Two of your campaigns are competing for the same people
rule.f2
90% confidence
$1,140/mo - 3
One ad is doing 84% of the heavy lifting
rule.f3
90% confidence
$1,300/mo
Try it on your own data
Run a free audit on your own account.
Export your report from Meta Ads Manager, upload it, and see your verdict. Sign up after to save it to a dashboard, watch the leak shrink month over month, and get a weekly “what changed” email. We never see your account.
Ready when you are.
The audit page has the uploader, a step-by-step export guide, and the privacy details in one place. Exporting your CSV from Meta Ads Manager is quickest on a desktop.
Run your free audit →Want to see one first? See a sample audit — the actual output, no upload, no sign-up. The detection engine is open source, so you can read every rule yourself.
Step 01 · Input
A CSV. Nothing else.
No OAuth. No password. No keys. You export the same file Meta already gives you, drop it on the page, and it's parsed in memory — never written to disk, never persisted, never logged.
Step 02 · Math
200+ statistical checks.
24 rule families expand against every entity in your account — campaigns, ad sets, ads. Wilson 95% confidence intervals on every rate. Benjamini-Hochberg correction holds the false-discovery rate at 5%. All deterministic Python.
Step 03 · Verdict
One number. Ranked findings. The math.
Findings ranked by recoverable dollars — not by severity, not alphabetical, not by what an LLM decided to talk about first. The rule that fired, the row it fired on, the confidence percentage, the fix you can apply yourself in Meta.
honest-growth · upload
Upload · in memory
CSV
meta-ads-export.csv
47,302 rows · 64 days · 1.2 MB
Campaigns: 14
Ad sets: 48
Ads: 312
Days: 64
The engine, in motion
24 rule families. 200+ checks. One screen.
Deterministic Python, not an LLM. The 24 families below expand at runtime into 200+ individual statistical checks against your specific ad sets, ads, audiences and placements. Same input, same answer, every time. Every rule's math is public.
0
Passed
0
Findings
0/ 24
Running
- Ad sets spending without convertingQueued
- Campaign at daily cap while sibling underspendsQueued
- Single creative driving most conversionsQueued
- Frequency saturation with declining CTRQueued
- Ad set stuck in Meta's learning phaseQueued
- Ad sets bidding against each otherQueued
- Upper-funnel campaign in a purchase-driven accountQueued
- Audience Network consuming spend at poor unit economicsQueued
- Prospecting ad set without a purchaser exclusionQueued
- One placement dominates spend with worse unit economicsQueued
- Attribution window too narrow for this accountQueued
- Too few standard events firing for Meta to optimizeQueued
- Top ad got more impressions than it earnedQueued
- 1% lookalike at scale — broader audience worth testingQueued
- Conversions API missing or weak for PurchaseQueued
- Ad sets spending too much for too few conversions to optimizeQueued
- Spend fragmented across too many small ad setsQueued
- Active prospecting running on too few creative conceptsQueued
- Advantage+ Shopping without an existing-customer budget capQueued
- Bid cap set higher than the account's actual target CPAQueued
- Retargeting spend share is too highQueued
- Conversions API Event Match Quality below the optimization floorQueued
- Browser pixel and CAPI events are double-countingQueued
- Reported conversions dominated by 1-day-view attributionQueued
All 24 rules
- Ad sets spending without converting
- Campaign at daily cap while sibling underspends
- Single creative driving most conversions
- Frequency saturation with declining CTR
- Ad set stuck in Meta's learning phase
- Ad sets bidding against each other
- Upper-funnel campaign in a purchase-driven account
- Audience Network consuming spend at poor unit economics
- Prospecting ad set without a purchaser exclusion
- One placement dominates spend with worse unit economics
- Attribution window too narrow for this account
- Too few standard events firing for Meta to optimize
- Top ad got more impressions than it earned
- 1% lookalike at scale — broader audience worth testing
- Conversions API missing or weak for Purchase
- Ad sets spending too much for too few conversions to optimize
- Spend fragmented across too many small ad sets
- Active prospecting running on too few creative concepts
- Advantage+ Shopping without an existing-customer budget cap
- Bid cap set higher than the account's actual target CPA
- Retargeting spend share is too high
- Conversions API Event Match Quality below the optimization floor
- Browser pixel and CAPI events are double-counting
- Reported conversions dominated by 1-day-view attribution
Open engine
All 24 rules are public on GitHub.
Read-only
Never writes to your account.
Flat-rate
$29/mo. No take-rate. Ever.
Math shown
Every finding traces to a row.
Built for one customer
The founder running their own Meta ads.
$1K–$30K a month.
You don't need a $3,000 agency audit. You don't need a Triple Whale dashboard. You need a second pair of eyes on the same account every month — the math, the dollar amounts, the rule that fired and why. We built this for you specifically.
// Also works for
In-house marketing managers
Growing brands $30K–$150K spend · multiple decision-makers
Performance agencies
Managing 10+ client accounts · monthly health-check workflow
but the homepage isn't written for them — the audit still works.
The anti-roadmap · signed and dated
Beyond the three refusals, five more commitments.
The three refusals are about the product. These five are about how we run the business — dated, signed, and turned into a public receipt. If any one ever breaks, this page becomes the proof.
We will never gate anything behind a sales call.
Sample audit, methodology, pricing, source code — all on the public site. If we ever build an Enterprise tier, the price will be posted on this page like everything else.
Nachiket Pai
founder · signed 2026-05-23
Receipt
NEVER-01-sales
The git history of this page is on GitHub. If we ever break a commitment, the diff is the apology.
Built in the open · solo founder · public engine
One engineer. One opinion.
Every commit in public.
No board pushing for write-access. No PM with a roadmap full of “AI Agent v2.” The engine is the work of one person, the methodology is on GitHub, the changelog is dated, and every rule is signed off by name. If a finding seems wrong, you can email the founder directly.
- # reasons it stays small
- · no enterprise contracts to chase
- · no investor demanding write-access for ARR
- · no roadmap-driven feature bloat
- · every commit is dated and signed
Nachiket Pai
founder · sole maintainer
0
commits
solo
maintainer
0
rule families
52 weeks · commit activity
Latest commit · 2026-05-23
feat(web): V4-v2 — sunlit paper palette, spotlight, verdict chrome v2 +536 −201
3da699c · main · Nachiket Pai
Weekly · only when something changed
Get a “what changed” email.
Only when something actually did.
We re-audit on your CSV cadence and send you the diff — only when a finding fires, resolves, or moves materially. No padding. No “just checking in.” One click to unsubscribe.
No card. No commitment. One click to unsubscribe.
From: Honest Growth <diff@growth>
Your weekly audit — 2 things changed
- frequency_saturation · resolved · −$1,840/mo
- capi_health · new finding · match rate fell to 47%
Verdict: $2,440/mo recoverable, down from $4,280
Honest Growth vs the rest
How we compare to Madgicx, Triple Whale, and Motion.
Three good tools. Different jobs. Here's where each one wins.
Honest Growth
- Pricing
- Flat $29/mo · posted, not gated
- Account access
- Read-only by architecture — we cannot write
- What it does
- 200+ deterministic checks. No AI in the decision layer.
- Where it wins
- An honest second opinion. Same input, same answer.
Madgicx
- Pricing
- Tiered, scales with ad spend
- Account access
- Writes to your account
- What it does
- Agentic AI that optimizes campaigns for you
- Where it wins
- Hands-off, always-on automation
Triple Whale
- Pricing
- Tiered, scales with revenue
- Account access
- Connects for analytics
- What it does
- Full ecommerce analytics suite
- Where it wins
- Full-funnel ecommerce reporting
Motion
- Pricing
- Per-seat subscription
- Account access
- Connects for reporting
- What it does
- Creative analytics and reporting
- Where it wins
- Understanding which creative performs
Flat-rate, forever
Pricing.
No credits, no usage meter, no percentage of your ad spend.
Free
$0forever
- One audit per month
- The full ranked verdict, top 3 findings
- Every confidence number, every methodology link
- MCP server — three free tools
Audit
$29per month
- 20 audits per month
- Every finding, not just the top three
- The math behind every number
- 90-day exportable history
- PDF export · Slack delivery
Both plans are flat-rate — the price never moves with your ad spend. The full pricing page has every detail, plus a dated timeline of what's coming next.
Frequently asked
Before you try it.
If your question isn't here, the methodology page probably has it. The engine is on GitHub.
Do you need access to my Meta account?
No. The current path is CSV upload — you export the file from Meta Ads Manager and drop it on us. We never see your account. When OAuth ships with the Watchtower (target Q1 2027), we'll ask for ads_read only — never write scope.
Is my CSV data stored anywhere?
No. The CSV is parsed in memory, the audit runs, and we return the result. Nothing is persisted. No database write, no log of contents, no retention. You can verify this in the source code — the route is at apps/api/app/routes/csv_audits.py.
How long does an audit take?
The audit itself runs in seconds — every statistical check and detection rule runs synchronously, with no background queue, even with months of daily data. The one wait is a cold start: the service spins down when it's idle, so the first audit after a quiet spell can take up to a minute to wake up. After that, it's near-instant.
Why should I trust the findings?
Every detection rule is published on our /methodology page with the exact math, threshold values, and false-positive cases documented. Every finding has a confidence percentage. Below 90% comes with a 'what would change our mind' note. If you disagree with how a rule fires, you can read the code and tell us.
How is this different from Madgicx or Triple Whale?
Three things. Madgicx writes to your account; we have read-only access by architecture. Madgicx and Triple Whale are both racing toward AI agents that act on your campaigns (Madgicx's agentic AI, Triple Whale's Moby) — our detection engine is deterministic Python with no LLM in the decision layer (we do use AI to explain findings, and ship an MCP server for Claude Desktop, but never to decide what's broken). Their pricing scales with your ad spend or revenue; ours is flat $29/mo for Audit today, $79/mo for Full Stack when the Watchtower ships (target Q1 2027), posted on the page. See /compare for the full side-by-side.
What does the MCP server actually do?
It's how Honest Growth runs inside your AI client. Install once and you get three free tools: run_audit_from_csv (a full audit on a CSV you paste in), list_detections (the rule catalog), and get_methodology (rule documentation). When the Watchtower ships, subscribers get six more tools through the same server — run_audit_on_connected_account, get_live_findings, get_account_timeline, compare_to_last_audit, get_finding_history, and acknowledge_finding — which read from their live account. The free tools work forever, with or without a subscription.
Will this work for an agency managing multiple accounts?
Yes for ad-hoc audits today — you can upload one CSV per client. The full Agency tier (10+ connected accounts, white-label PDF, shareable links, team seats) lands when OAuth activates alongside the Watchtower (target Q1 2027). White-label PDFs and shareable links are configured per agency today — talk to us if you need them sooner.
What if a finding is wrong?
We explicitly document where each rule can be wrong on its methodology page (the 'What would change our mind' section). If you spot a false positive in production, email us. The detection thresholds update with real-account data — that's how the engine gets sharper over time.
One last thing
Read the audit before you pay for one.
Free first audit. No card, no signup. The math is public, the rules are public, the code is public.