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
Keyword
SA vol/mo
CPC (USD)
Top bid (ZAR)
Competition
affordability assessment
140
$1.82
R9–R38
Medium
credit vetting
110
$0.26
—
Low
income verification
40
—
—
Low
micro lending software
30
$6.41
R24–R100
Medium
bank statement verification
20
—
—
Low
bank statement extraction
10
—
—
Medium
bank statement analysis
10
—
—
Low
bank statement analysis software
10
—
—
High
bank statement analyser
10
$18.21
—
High
reg 23a
10
—
—
Low
bank statement fraud detection
10
$7.63
—
Medium
credit decisioning software
10
—
—
Unspec.
national credit act affordability assessment
10
—
—
Low
Ad group 1 — Tier 2 · zero-volume coverage (exact match, costs nothing, catches emerging demand)
Keyword
SA vol/mo
Why keep it
bank statement affordability
0
Core positioning phrase, may grow
automated affordability assessment
0
Exact product description
affordability assessment software
0
Buyer phrasing
nca affordability calculation
0
Regulatory intent
reg 23a affordability
0
Regulatory intent
bank statement scoring
0
Legacy category term
affordability assessment api
0
Developer intent
Ad group 2 — Competitor conquest · exact match (ads carry no competitor names)
Keyword
SA vol/mo
CPC (USD)
Competition
Note
finch technologies
170
$0.20
Low
Gathr's parent, distinctive
sprinthive
140
—
Low
Distinctive brand
akiba digital
110
—
Low
Distinctive brand
gathr
50
$1.36
Low
Watch: a US events brand shares the name
softidoc
40
$3.45
Low
Distinctive brand
spike data
10
—
Low
—
spikedata / obse bank statement / evalfin
0
—
—
Keep 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)
Keyword
SA vol/mo
Angle
loan management system
140
Adjacent — high competition, $10 CPC, hold for later
income verification software
10
Decision-pack component
nca compliance
10
Compliance-officer intent
loan underwriting software
10
Underwriting = the assessment step
bank statements as proof of income
10
Blog / 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)
Campaign
Daily cap
Weekly (5 days)
Monthly (~22 weekdays)
Search (GP + W.Cape)
R200
R1,000
R4,400
Display conquest
R100
R500
R2,200
Combined ceiling
R300
R1,500
R6,600
Expected cost per click (from verified auction data, capped at R15 max CPC)
Where
Typical CPC
Basis
"affordability assessment" (head term)
R9–R33
Only term with real competition; R15 cap trims the top
Competitor conquest terms
R4–R12
Low competition, cheap navigational inventory
Long-tail direct intent
R2–R8
Near-empty auction
Display (per click)
R1–R3
GDN is priced on impressions, clicks are incidental
Modelled week 1 — likely actual, not the ceiling
Campaign
Reachable searches
Est. clicks
Blended CPC
Est. weekly spend
Search
60–110
10–35
R4–R10
R60–R320
Display conquest
impressions
5–25
R1–R3
R50–R200
Total week 1
—
15–60
—
R110–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
300 × 250 · Medium rectangle
336 × 280 · Large rectangle
160 × 600 · Skyscraper
728 × 90 · Leaderboard
320 × 50 · Mobile
Concept B — Conquest
"Extraction isn't enough" · CTA: See the Full Pack
300 × 250 · Medium rectangle
336 × 280 · Large rectangle
160 × 600 · Skyscraper
728 × 90 · Leaderboard
320 × 50 · Mobile
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)
Method
What it does
Reach
Custom URL segment
Google 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 placements
We 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)
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
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.
This review page uses Google Analytics to measure how it is used. Analytics cookies stay off until you accept. Cookie policy.