Offline

Write ad campaigns with no account, no API key and no network

AdPlaybook can download a language model and run it on your Mac. Nothing about your product is sent anywhere, there is no per-use cost, and it keeps working on a train.

How it works

Pick a model on the first screen and it downloads once, into your own Application Support folder. After that the app generates campaigns using your Mac's GPU. The cloud providers and Outlier stay exactly where they were — this is one more option, not a replacement, and the app will not quietly switch between them.

Which model your Mac can run

Unified memory decides it. The app reads how much this machine has and says which models fit, including the ones that do not and why.

ModelDownloadMemory needed
Qwen2.5 1.5B0.82 GB8 GB
Llama 3.2 3B1.7 GB8 GB
Qwen3 4B2.12 GB8 GB
Qwen2.5 7B4.0 GB12 GB
Llama 3.1 8B4.22 GB12 GB
Qwen3 30B (MoE)16.02 GB36 GB

min_ram_gb is a HEURISTIC and not a measurement: twice the weights plus 4GB, floored at 8. The weights stay resident, the KV cache grows with the prompt, and this app sends long platform specs. Deliberately generous — a model that swaps is not slow, it is unusable, and it presents as a hang rather than an error.

Download sizes read from the Hugging Face API on 2026-08-14, not estimated.

Which of these actually finishes the job

We ran four of them against a real product description on the same machine, two attempts each. Counts, not percentages:

An earlier version of this page said the 1.5B never finished a campaign, and that was our bug rather than the model. Our JSON extraction cut the answer short and the missing tail looked like missing fields. Three of these four only started working once that was fixed. We are leaving the correction visible because a page that quietly improves its own numbers is not worth reading.

The 3B is the odd one out and it stayed broken after the fix, so on this evidence that is the model. The 8B and 30B have not been run against the campaign schema at all, and we would rather say so than let you assume they sit on a line between the ones we tested.

If you have an API key or Outlier running, use those — a bigger model writes better copy. The built-in models are the floor, and the floor is real.

What it will not do