● DRAFT — NOT LIVE Prepared 7 Jul 2026

Google Ads campaign review

Everything to sign off before we build the campaign in Google Ads: the keyword plan with verified South African volumes, sample search and display ads as they will appear, and the checklist to get live. Two campaigns, Gauteng and Western Cape, weekday business hours only.

Geography
Gauteng + W. CapePresence only
Schedule
Mon–Fri08:00–16:00 only
Search budget
R200/dayMax clicks, R15 cap
Display budget
R100/dayConquest placements
Conversion
Book a Demo+ free credits
01 — Keyword plan

What people actually search

Volumes verified against DataForSEO and Google Keyword Planner (South Africa, English, both sources agree). The headline finding: the compliance vocabulary has almost no search volume. This is a category-creation market, so the ads capture a small stream of intent while blog and SEO build the demand. Total reachable direct-intent volume is roughly 200–250 searches a month; conquest is larger at ~520.

Ad group 1 — Direct intent · keywords with measured volume
KeywordSA vol/moCPC (USD)Top bid (ZAR)Competition
affordability assessment140$1.82R9–R38Medium
credit vetting110$0.26Low
income verification40Low
micro lending software30$6.41R24–R100Medium
bank statement verification20Low
bank statement extraction10Medium
bank statement analysis10Low
bank statement analysis software10High
bank statement analyser10$18.21High
reg 23a10Low
bank statement fraud detection10$7.63Medium
credit decisioning software10Unspec.
national credit act affordability assessment10Low
Ad group 1 — Tier 2 · zero-volume coverage (exact match, costs nothing, catches emerging demand)
KeywordSA vol/moWhy keep it
bank statement affordability0Core positioning phrase, may grow
automated affordability assessment0Exact product description
affordability assessment software0Buyer phrasing
nca affordability calculation0Regulatory intent
reg 23a affordability0Regulatory intent
bank statement scoring0Legacy category term
affordability assessment api0Developer intent
Ad group 2 — Competitor conquest · exact match (ads carry no competitor names)
KeywordSA vol/moCPC (USD)CompetitionNote
finch technologies170$0.20LowGathr's parent, distinctive
sprinthive140LowDistinctive brand
akiba digital110LowDistinctive brand
gathr50$1.36LowWatch: a US events brand shares the name
softidoc40$3.45LowDistinctive brand
spike data10Low
spikedata / obse bank statement / evalfin0Keep as free coverage
Where the volume actually is: competitor brand names (~520/mo combined, all low competition and cheap) plus the single head term "affordability assessment" (140/mo). Conquest is a bigger stream than direct intent, so ad group 2 carries more weight than the original plan assumed. Everything in the compliance-phrasing tables is essentially free SEO-style coverage, not a traffic engine.
Additional keywords worth adding (from idea expansion, SA volumes)
KeywordSA vol/moAngle
loan management system140Adjacent — high competition, $10 CPC, hold for later
income verification software10Decision-pack component
nca compliance10Compliance-officer intent
loan underwriting software10Underwriting = the assessment step
bank statements as proof of income10Blog / content angle
02 — Estimated cost

What it will cost

Two things make this cheap: the auction is nearly empty (no competitor runs ads on these terms), and the volume is thin. Both mean the daily budgets are ceilings we will rarely hit, not targets we will spend to. The numbers below are estimates from the verified CPC data, not guarantees. Week 1 is really price discovery.

Budget ceilings (the most you can spend)
CampaignDaily capWeekly (5 days)Monthly (~22 weekdays)
Search (GP + W.Cape)R200R1,000R4,400
Display conquestR100R500R2,200
Combined ceilingR300R1,500R6,600
Expected cost per click (from verified auction data, capped at R15 max CPC)
WhereTypical CPCBasis
"affordability assessment" (head term)R9–R33Only term with real competition; R15 cap trims the top
Competitor conquest termsR4–R12Low competition, cheap navigational inventory
Long-tail direct intentR2–R8Near-empty auction
Display (per click)R1–R3GDN is priced on impressions, clicks are incidental
Modelled week 1 — likely actual, not the ceiling
CampaignReachable searchesEst. clicksBlended CPCEst. weekly spend
Search60–11010–35R4–R10R60–R320
Display conquestimpressions5–25R1–R3R50–R200
Total week 115–60R110–R520
Read the spend as a floor, not a shortfall. The Search campaign will very likely spend well under its R1,000 weekly cap, because there simply are not 1,000 rands worth of relevant searches in these two provinces during business hours. That is the market being small, not the campaign failing. The number that matters is not spend, it is whether any of those 15–60 clicks books a demo. Cost per demo is unknowable until we have run: with a first demo, we can start pricing acquisition; until then, treat the whole first R1,000–R2,000 as the price of finding out whether search demand exists at all.
03 — Search ads

Sample search ads

How the responsive search ads will look on a Google results page. Google mixes and matches the approved headlines and descriptions; these show a representative combination for each ad group. All copy is character-validated and matches the current site positioning (30 minutes to 30 seconds, from R10, decision pack).

Ad group 1 — Direct intent
Adaffy.co.za/affordability

Skip the 30-Minute Review | Bank Statement Affordability

Manual affordability review takes 30 minutes per file. Affy does it in 30 seconds. Bank statement in, decision pack out: Reg 23A affordability, tamper checks, debit day.
From R10 Per Statement · Free Credits Included · 5-Layer Tamper Checks · POPIA Compliant

Pinned if CTR is weak: "Skip the 30-Minute Review" (H1), "From R10 Per Assessment" (H2), "Book a 15-Minute Demo" (H3).

Ad group 2 — Competitor conquest
Adaffy.co.za/decision-pack

Extraction Isn't Enough | Get the Full Decision Pack

Already extracting bank statements? Add affordability, tamper checks, and scoring. Most tools stop at extraction. AffyAssess adds Reg 23A affordability and best debit day.
Full Decision Pack · Affordability Included · 5-Layer Tamper Checks · From R10 Per File

No competitor names appear in copy (trademark policy). The keywords bid on them; the ad sells the wedge.

Full headline and description banks (15 headlines + 4 descriptions per ad group, all character-checked) are in docs/gads-campaign-build-2026-07-07.md, section 3–4.
04 — Display ads

Sample display banners

Live animated banners for the opposition display campaign and PMax, shown at native size on a publisher-grey background. Each animates once on load and settles on a static logo and call-to-action frame, within Google's limits. Hit Replay to watch the animation again.

Concept A — Direct intent

"30 minutes by hand, 30 seconds with Affy" · CTA: Book a Demo

Concept B — Conquest

"Extraction isn't enough" · CTA: See the Full Pack
QA status: an independent browser-rendered review passed 6 of 10 banners outright. Before these ship it is fixing: a clipped call-to-action on Concept B 336×280 (the one genuine fault), tighter spacing on B 300×250, a reworked line for the weak B 320×50, and the click-through wrapper (clickTag) every banner needs to pass Google's HTML5 validation. Source files: ad-assets/banners/<concept>/<size>.html. Responsive display ads are also built from the same headlines, descriptions, and logo for auto-sized coverage.
05 — Counter-competitor display

Following the competition's visitors

A separate display campaign, running the Concept B banners above, aimed at people who research the competition. When someone visits a competitor's site or reads about this category, an AffyAssess banner follows them across the Google Display Network. Same geography and hours as the search campaign: Gauteng and Western Cape, weekday business hours, R100/day.

Two ways we reach competitor-site visitors (both run together)
MethodWhat it doesReach
Custom URL segmentGoogle builds an audience of people who browse sites like the competitor and industry URLs, then shows our banner to them anywhere on the Display Network. This is the workhorse.Broad, follows them across the web
Managed placementsWe hand-pick the competitor domains and industry sites themselves, so our banner shows on that inventory directly.Narrow, only where those sites run Google ads
Whose visitors we target (URLs fed to the custom segment)
GroupSites
Direct competitorsgathr.co.za · finch-technologies.com · sprinthive.com · akibadigital.com · softidoc.co.za · obse.co.za · spikedata.co.za · evalfin.co.za
Industry & regulatoryncr.org.za · casa.co.za · dcasa.co.za · acpas.co.za · mycomax.com · fintechfundi.com · altronfintech.com · moonstone.co.za
Credit bureaustransunion.co.za · experian.co.za · xds.co.za · consumerprofilebureau.com
Settings: Optimized targeting OFF (so Google stays on our list), frequency cap 3 per person per day, and exclusions for mobile apps, games, and parked domains (where display budget usually leaks). Landing page is affy.co.za with a display-conquest tracking tag.
What to expect, honestly: display conquest is a brand-presence and retargeting-seed play, not a lead engine. Click-through rates on the Display Network are low (0.1 to 0.4 percent is normal) and most of its influence goes untracked by last click. Its real value here is warming the small, specific pool of people researching this exact category, and building a remarketing list. Judge it on assisted conversions and any lift in demo requests, not on direct clicks. It is deliberately kept cheap at R100/day. Full spec is in docs/gads-campaign-build-2026-07-07.md, section 6b.
06 — Go live

Launch checklist

The steps between this review and a live campaign. Ticks are saved in your browser. Items marked Brink need you in a Google account; the rest I can build or wire up.

Progress: 0 / 0

Account & billing Brink

  • Create Google Ads account under Brink's MCC
    Billing: Momo Global, brink@momoglobal.co.za
  • Send me the customer ID and conversion tag snippet
    So I can wire the site tags and build the campaign for import

Conversion tracking Brink + Claude

  • Create "Demo Request" conversion action
    Website · Submit lead form · Count once · 30-day click window
  • Add the AW- conversion tag to index.html and thank-you.html
    Placeholder comment already in thank-you.html; tag ID comes from the conversion snippet, not the customer ID
  • Deploy the generate_lead GA4 event (already added locally)
    On feat/design-library; needs merge to main
  • Mark generate_lead as a key event in GA4
    And import it into Ads as a secondary conversion for cross-check
  • Test the demo form end to end
    Submit a real test, confirm thank-you.html loads and the conversion fires

Search Console & SEO Claude

  • Verify affy.co.za in Google Search Console
    Domain property via Cloudflare DNS TXT record
  • Submit the XML sitemap
    Confirm homepage + blog posts are indexed

Site alignment Brink to approve

  • Approve homepage copy alignment (45min→30min, R10, decision pack)
    Done locally on feat/design-library
  • Approve 4 aligned blog posts
    Done locally; publishing is human-gated
  • Decide on the two flagged blog items
    Dead /#score nav link across blog; Post 4 component order (score-first)
  • Merge feat/design-library to main and deploy
    Landing pages must be live before ads point at them

Build the campaigns Claude

  • Build Search campaign (GOOG_SEARCH_AffyAssess_GP-WC_2026-07)
    Gauteng + W.Cape, Mon–Fri 08:00–16:00, R200/day, max clicks R15 cap
  • Load both ad groups, keywords, negatives, RSAs, and assets
    From the build doc, sections 3–6
  • Approve display banners after the QA review
    Apply any P1 fixes the review flags first
  • Build Display conquest campaign + custom URL segment
    Optimized targeting OFF, frequency cap 3/day, competitor + industry URLs

Pre-launch QA Claude + Brink

  • Confirm Search partners OFF and Display expansion OFF on Search
    Keeps Search and Display from overlapping
  • Confirm geo is Presence, not Presence-or-interest
    Avoids diaspora clicks
  • Confirm the schedule shows 08:00–16:00, weekdays only
    Both campaigns
  • Set go-live for a Monday morning
    So week 1 runs a clean 5 days inside the window
Realistic week 1: after the Gauteng+Western Cape and business-hours limits, reachable volume is roughly 60–110 searches, so expect 10–35 clicks, not hundreds. Budget will underspend inside the window; that is expected. One demo request in week 1 is a strong signal. If reach starves learning after 3–4 days, widen levers one at a time: hours first (07:00–18:00), then provinces, then days.