AI Systems · AdGuard · Internal build · public demo

AdGuard put four platform rulebooks where a distributed team could reach them

I rewrote Meta, Google, LinkedIn and Bing ad policy as schema, so the tool audits ad copy automatically. Built for regional specialists working half a day ahead of me, in a category the platforms treat as high risk.

4 platform rulebooksI rewrote the prose as schema
Built for review in placeso a check does not wait on a timezone
Half a day apart

A distributed team, a high-risk category, and half a day of time difference

I was running marketing specialists across Vietnam, Thailand, India and the wider region. Some were early in their careers, and nobody arrives already knowing platform advertising policy: it runs long and differs per platform, and it keeps shifting.

Financial services is a high-risk category, so the platforms read our ads harder than most. A phrasing that passes for a SaaS product gets an account flagged for a cross-border payments brand. A mistake cost us a disapproval mid-flight and a live campaign going dark.

The time difference made the obvious fix impossible. Reviewing every draft myself meant every specialist waited most of a day to learn that a headline was three characters too long.

01 · Build A specialist drafts the ad

In Vietnam, Thailand, India or elsewhere in the region, working a full day inside the platform's ad manager.

their morning
02 · Sleep The review waits for me

Half a day of time difference between the person who wrote the ad and the person allowed to approve it.

+half a day
03 · Reply I read it and send notes

Their day is over by then, so the fix lands the following morning at the earliest.

+1 day
04 · Reject The platform disagrees anyway

A headline three characters too long, or a claim its policy reads as a guarantee. The loop restarts with nobody having learned the rule.

most of a day lost
2 days The realistic round trip on a change that took two minutes to make. The specialists knew their craft. The rulebook lived in my head, half a day ahead, and I was asleep for most of their working day.
Rulebook as schema

Turn four rulebooks into schema, so the review happens where the work happens

Meta, Google, LinkedIn and Bing each publish their advertising policy as long prose. I rewrote it as schema, so the tool checks copy against every rule automatically: creative specifications act as hard limits, and policy guidelines carry a severity.

That single change moves the feedback from me to the tool. A specialist in Hanoi audits a draft and sees which rule it trips in seconds.

Company rules sit alongside the platform rulebooks as toggles, each one on or off, some pointing at the brand or legal page that defines them. When policy changes, I flip a switch instead of sending a message asking everyone to remember something new.

The team was already using three other options, each of them short of what a specialist needed. Submitting and waiting for platform review gives the only authoritative verdict, and it arrives after the campaign is live, after budget has moved, and after the account has taken the quality hit. The four published rulebooks hold the real rules, and they revise on four different schedules. A chatbot with the policy pasted in answers at any hour, and the same ad came back with different verdicts on different days.

The rulebooks were right and unusable. Making them machine-readable turned four documents into one consistent answer a specialist could get at midnight.

Where the team worked

A specialist in Hanoi can read the rule that failed them, at midnight

Single audit

One ad, one verdict: headline, body, landing page and image checked against the selected platform rulebooks with each risk explained.

Bulk upload

A whole campaign at once, which is how the work arrives before a launch.

Policy center

You can browse every platform rule, so a specialist reads the rule behind a verdict.

Company policy

Our own overlays as toggles: brand voice, competitor mentions, disclaimers, discount limits, inclusive imagery.

The Policy Center matters more than it looks. A tool that only returns a score teaches nobody anything, and the gap I was managing was knowledge. Showing the rule beside the finding is meant to make the team need the tool less.

adguard-adcopy-checker.vercel.app
AdGuard single audit screen with Meta and Google selected and the ad creative fields empty
AdGuard policy center showing Meta creative specifications and detailed policy guidelines
AdGuard company policy screen with nine brand and legal rules as individual toggles
Why it was worth building

A rejection costs more than the ad it stopped

Three separate costs sit behind every disapproval, and only the first one is visible on the day it happens.

01 The account remembers

Each rejection counts against account quality. A run of them narrows delivery on everything else you are running, and a bad enough run ends the account.

02 The launch slips

Waiting on legal or platform review pushes the launch date, and the creative team spends the gap in a revision loop instead of on the next test.

03 The rules keep moving

Meta, Google, LinkedIn and Bing each maintain their own policy and each revises it on its own schedule. Tracking four moving rulebooks by hand is work nobody finishes.

After

I solved a management problem with tooling instead of meetings

It is a small product, and I would describe it that way in an interview. It removed me from the middle of a loop I was slowing down, and gave a distributed team one place to check their own work before it reached spend.

That is the pattern I keep finding worth building for: a specific operational failure where the team cannot easily ask for help, and a rulebook that only lived in someone's head.

A worked example from the demo

A specialist half a day ahead needs the violation type as much as the score

01 The submission

"Switch to SmartYield and earn 8% APY immediately. Risk-free returns guaranteed for all new accounts." goes in once and is checked against every selected platform at the same time, with the firm's own brand and legal overlays applied on top.

02 The rule it trips

It comes back with the violation named: misleading guarantee.

03 The score

The same submission carries a safety score of 12 out of 100.

04 What to change

Naming the type tells a specialist which rule in the Policy Center to read and what to change, without a call.

Not claimed

This page claims no adoption count after launch, no new round-trip time and no change in the rejection rate. The tool is a pre-flight check that runs before the spend, and a clear verdict from it carries no promise that a platform will agree. The public demo runs the same code as the internal build, with the nine company rules swapped for sample ones.

Two authorities, two tools

The platform rulebook, next to the regulator's

Two different authorities can reject the same sentence. FinGuard reads the regulator: FINRA, SEC, MiCA and the local equivalents. AdGuard reads the platform: what Meta, Google, LinkedIn and Bing will accept into an auction.

Both started as checks that ran after the copy existed. CreativeOS is where they were folded into the generation step instead, so the constraints apply while the draft is being written. AdRadar looks outward on three of those platforms, collecting one competitor's ads from the public transparency libraries.

What it runs on

The rulebook runs before the model does

The character counts, aspect ratios and banned-term checks are plain code that runs before any model call, which is why the same ad gets the same verdict twice. Only the judgment calls reach a model, and all three run because their agreement is the test: two agreeing is a verdict, three splitting is a flag for a human. I never counted how often they split.

Application

React logoReactSingle audit, bulk upload, policy center and company policy. TypeScript logoTypeScriptThe policy schema is typed, so a malformed rule cannot ship. Vite logoViteBuild tooling. Tailwind logoTailwindThe design layer.

Rules

Platform policy schemaEach platform's rules sit in records that carry creative specs, severity and violation type. Company policy togglesNine brand and legal rules. One person owns each and can switch it off.

Models

DeepSeek logoDeepSeekThe bulk pass. Cheap enough to run across a whole campaign upload rather than one ad at a time. Gemini logoGeminiReads the copy against the rules the deterministic pass could not settle, and names the violation type. OpenAI logoGPT-4oThe tie-break. Where the other two disagree on a judgment call, the third read decides whether it escalates to a human.

Delivery

Vercel FunctionsOne call audits one submission.

Want this kind of guardrail in your ad workflow?

I turned four platform rulebooks into schema, so a specialist can check an ad at their own hour, before any money moves.