I built CouncilAds after hearing a podcast that referenced a Harvard study on artificial audiences. The guest had built a tool that ran social posts past a council of AI personas before they went out into the world. I liked the council idea immediately — but my world isn't social posts. It's Google Ads, where I've spent years managing accounts and where a weak ad doesn't just underperform, it spends your money while it does. So I built my own version of the council, for ads.
I went with 12 personas instead of 13. Partly personal preference, partly because I'm a Christian and the number reminds me of the 12 disciples. Once I built it, I used it the way I'd use any new tool in an ad account: write, test, refine. I asked Claude to write an ad, ran it past the council for scoring, and worked the copy until the scores told me it was ready. The ad was good. Good enough that I realized the tool could do more than review ads someone else wrote. It could help generate them too.
That's when I added a second piece: instead of testing one ad, the tool generates two competing ads so you always have a control. This part comes from years of managing Google Ads accounts for long term clients. Testing one ad against nothing tells you very little. Testing two ads against each other tells you a lot.
The early version worked, but something felt off. The feedback from the council was accurate but shallow. It read more like a checklist than real judgment. I went back to the research behind the original idea and found the part I had missed: sympathy maps, a method for modeling how a real person thinks, feels, and reacts, not just what they click.
Some of it was blunt. Some of it stung a little. All of it was useful.
I rebuilt all 12 personas around sympathy maps. The difference was immediate. The feedback stopped sounding like a generic AI critique and started sounding like notes from twelve people who actually thought about the ad the way a real buyer would.
Once the council could judge an ad this well, I realized the job wasn't finished at the ad. A great ad sending traffic to a weak landing page is still a wasted click. So I added a way to screenshot a website's hero section and run it past the same council. I tried it on my own homepage first. The feedback was rough enough that I rewrote the entire page.
That became the final piece. CouncilAds doesn't just pick a winning ad anymore. It takes the winning ad and checks it against the landing page it's sending people to, so the message in the ad and the message on the page actually match. If they don't, you'll know exactly where the disconnect is and what to fix.