If you've ever tried to bid on a South African government tender, you know the drill: CIDB gradings, B-BBEE scorecards, CSD registration numbers, SBD/MBD forms, and a closing date that's always "in business days, excluding public holidays, from the Gazette." None of that is hard conceptually — it's just tedious, and tedious is exactly the kind of problem developers like to automate away.
I went looking for tooling around this and ended up on Tenders SA's toolkit page. It's aimed at suppliers, not developers, but a few of the tools map cleanly onto problems I'd normally reach for a script to solve — so here's a rundown from that angle, plus a quick reimplementation of the one I found most useful.
The toolkit, split the way I'd split it
Tenders SA groups 14 tools into three buckets: Plan & Draft, Compliance & Eligibility, and Market Intelligence. If you think of tender bidding as a pipeline, that maps almost 1:1 to scheduling, validation, and analytics — which is a comfortable mental model if you build software for a living.
Scheduling: Tender Preparation Planner & Deadline Calculator (free)
Both do working-day math against South African public holidays — one wraps it in a phase-planning UI with briefing-session reminders, the other is a bare deadline calculator. If your business closing date says "bid valid for 90 days" or "closes 20 working days from gazette," this is just date arithmetic with a holiday-exclusion list, and it's the kind of thing you don't want to get wrong by counting on your fingers.
Here's the core logic in about 15 lines, if you'd rather not leave your terminal:
// Business-day deadline calc, SA public holidays for 2026
const holidays = new Set([
'2026-01-01','2026-03-21','2026-04-03','2026-04-06',
'2026-04-27','2026-05-01','2026-06-16','2026-08-09',
'2026-09-24','2026-12-16','2026-12-25','2026-12-26'
]);
function addBusinessDays(start, days) {
let d = new Date(start);
let added = 0;
while (added < days) {
d.setDate(d.getDate() + 1);
const iso = d.toISOString().slice(0, 10);
const isWeekend = d.getDay() === 0 || d.getDay() === 6;
if (!isWeekend && !holidays.has(iso)) added++;
}
return d;
}
console.log(addBusinessDays('2026-07-04', 20).toDateString());
Fine for a one-off check. The platform's version adds briefing-session tracking on top, which is the part I wouldn't bother rebuilding — missing a compulsory briefing session is an instant disqualification on a lot of municipal tenders, and that's state you actually want a UI reminding you about, not a cron job you forget to check.
Validation: the compliance calculators
This is the bucket I'd genuinely reach for an API over rolling my own, because the inputs (CIDB grading formulas, the B-BBEE Amended Generic Scorecard, JV consolidation rules) are legislated, not just business logic — they change when regulations change, and hard-coding them is a maintenance trap.
- B-BBEE Points Calculator — scores you against the Amended Generic Scorecard rather than trusting a self-reported affidavit level
- CIDB Grade Calculator — derives your actual contractor grading from financial capacity + completed-works history
- JV Calculator Suite — the one I found most interesting technically, since it has to solve consolidated B-BBEE levels and flag fronting risk across multiple entities, which is a genuinely non-trivial aggregation problem once you have more than two JV partners with different scorecards
- Compliance Checklist Generator — outputs the specific returnable-document list per tender value/industry, which in practice varies more than you'd expect (some municipalities want a director's personal municipal rates certificate; some want a KYC questionnaire instead of a tender document entirely)
None of these are things I'd want to be the source of truth for in my own bid — get it wrong and you're not shipping a bug, you're getting disqualified from a contract.
Analytics: the Pro-tier stuff
Tender Value Estimator, Market Heatmap, Company Intelligence, and Tender Forensic Analysis sit behind the paid tier (starts at R499/month). These read more like an internal BI dashboard than a public tool — historical award data, HHI-style concentration metrics, bid-split and conflict-of-interest detection. If you're the kind of person who'd normally pull this data yourself and build a quick dashboard, this saves you the scraping.
The Restricted Suppliers Register is the one exception I'd call out as worth checking even if you never plan to bid on anything — it's a live sync against the OCPO restricted supplier list, and it's a fast way to sanity-check a potential subcontractor or JV partner by name before you sign anything.
Where I'd actually use this stack
If I were building an internal tool for a company that bids on SA government tenders regularly, my instinct would be:
- Roll my own for the date math (see above) — it's simple enough that a dependency isn't worth it
- Use the compliance calculators as the source of truth for anything regulation-derived (CIDB, B-BBEE, JV scoring) — don't reimplement legislated scoring logic in-house
- Treat Restricted Suppliers lookups as a pre-flight check in any procurement workflow, the same way you'd run a sanctions-list check before onboarding a vendor
- Only pay for the market intelligence tier once you're bidding often enough that pricing benchmarks change your actual numbers — otherwise it's data you'd rarely act on
The bigger pattern
What struck me building the mental model above is that this is really a compliance-automation problem wearing a procurement costume. Swap "CIDB grading" for "SOC 2 evidence" and "B-BBEE scorecard" for "vendor risk tier," and it's the same shape of problem enterprise procurement and vendor-onboarding tooling solves everywhere else — deadline tracking, eligibility scoring against a regulated rubric, and a restricted-party screen. If you've built any of that before, none of this will feel unfamiliar; it's just a South Africa–specific instance of a genre of tooling that exists in every regulated market.
Disclosure: I don't work for Tenders SA — this is just a rundown of a toolkit I found useful while looking into SA government procurement tooling. Feature availability and pricing are controlled by the platform and may have changed since writing.
Top comments (0)