Context
South Africans looking for work abroad are a market with a scam problem. Fake recruiters take R5,000 for a placement that does not exist, and the people worst affected are the ones with the least room to lose it — nurses, teachers, tradespeople, farm workers.
That shapes everything about the product. The thing being sold is not a job. It is the information you need before you pay anybody anything: which countries are actually open to your field, what documents you need, what it really costs, and which red flags mean walk away.
The problem
Everything a normal SaaS build would reach for is wrong here.
A checkout page asks a nervous buyer, who has just been warned about online job scams, to enter card details on a site they found an hour ago. Accounts mean password resets, email verification, and an account-deletion flow, all for a product somebody uses properly maybe three times. Card payments mean chargeback exposure on a R199 sale, which is not a business, it is a hobby with paperwork.
And the content itself is the hard part. Immigration rules, exam fees and visa route names change constantly, so a guide generated in one pass is wrong within a year and confidently wrong in the meantime — which is exactly the failure mode this audience is already being victimised by.
What I did
The sales loop is a WhatsApp conversation and a PayShap request. Every category tile on the landing page builds a pre-filled WhatsApp link with UTM tracking, so the first contact is a human question, not a payment form. That filters tyre-kickers, lets me answer the questions the scam recruiters hope nobody asks, and puts a person on the other end before any money moves.
Access is a token in a URL. /members/[token] reads the buyer’s category off a Supabase row and serves the matching guide, the CV template, the upload, and the eligibility assessment. No auth, no accounts, none of the flows that come with them. Tokens are stored against the WhatsApp number, so a lost link is a re-issue rather than a support incident.
The guides are the actual product, and they were built the slow way. Each of the six sections comes out of a separate Obsidian research vault of primary sources — the nursing guide alone sits on 224 notes across six vaults — and every section is fact-checked against the source documents before a word of prose is written. They are not model output with a human skim.
On top of that, the guides plus the underlying research corpus are embedded locally with Xenova transformers into Supabase pgvector, so search returns ranked passages from the research rather than a keyword match, and falls back to a category-scoped WhatsApp prompt when nothing clears the threshold.
The result
A product that a scam-wary buyer can complete without ever typing a card number, and a content base that can be defended line by line against the government source it came from.
The honest caveat is the one I keep on the risk list rather than in the marketing: the content is only correct while the immigration rules are, and cost figures and visa-route names drift within a year. That is a review cadence, not a launch task — and it is the reason the research vaults are kept as the source of truth rather than thrown away once a guide ships.


