How TenderSpace works
TenderSpace maps the capabilities revealed by South African government procurement, and uses them to show small businesses the contracts they are best positioned to win next. It is a procurement analogue of the Harvard Atlas of Economic Complexity.
How to read the map
- Each node is a tender category. Bigger nodes are categories where more firms have proven themselves.
- Two nodes are linked when the firms that win one also tend to win the other, a sign the work draws on similar capabilities.
- Colour groups categories into broad sectors (construction, ICT, professional services, …).
- Select the categories you already win, and the map ranks your adjacent possible: the nearby categories that firms like yours expanded into.
- The Colour → Complexity toggle shades categories by sophistication: those won by few but highly diversified firms score higher.
- The opportunity frontier below the map plots every category connected to your selection: feasibility (the share of its connections you already cover) against estimated market size, with dot size showing open tenders right now. Top right means large markets close to what you already do. Categories without usable value data are not plotted, and the count of omissions is stated.
The method
A firm's history of won tenders is a signal of what it can actually deliver. If many firms that win category A also win category B, then A and B likely rely on overlapping capabilities, so a firm strong in A has a head start in B. TenderSpace measures this directly from award records, with no editorial judgement.
For the technically curious, the three steps (after Hidalgo & Hausmann):
- Specialisation (RCA): a firm “has” a category if it is more concentrated there than the field average.
- Proximity: two categories' closeness is the chance that a firm specialised in one is also specialised in the other.
- Density: a category's score for you is the share of its connections you already cover. A high score means a realistic next move.
The recommendation for your selection is computed live in your browser, so your choices never leave your device unless you sign in to save them.
The explore views
The Explore page shows the composition of procurement itself, and is computed differently from the map:
- Every award counts. The treemap, trend and concentration views aggregate all awards with a named supplier, with no specialisation thresholds, so they include small categories the capability map leaves out. Counts here will not match node sizes on the map, which measure specialised firms.
- Rand figures are robust estimates. The source value field is incomplete and noisy, so we never sum raw values. Estimates use the median of values within a plausible window (R1,000 to R5bn) times the award count, and each figure states how much of the data had a usable value.
- Time and place. Awards are bucketed by their release quarter; the latest quarter is always still filling in. Provinces come from the tender's own province field. Buyer views cover buying entities with at least 5 awards and show all-time award counts.
- Concentration (HHI). For each category and year we compute the Herfindahl-Hirschman index of award counts across suppliers: 1.00 means one firm won everything that year. No firm is named. Thin categories concentrate naturally, so rows with few awards are hidden by default. High concentration is a market-structure observation, not an accusation.
Buyer profiles and Pulse
The buyer profiles and Pulse views describe the demand side. How each number is made:
- Coverage first. Municipalities and SOEs are not obliged to publish to the eTenders portal, so a buyer's numbers describe its published awards, and momentum can reflect publishing practice as much as activity. Every page states the buyer's value coverage.
- Basket and RCA. A category is “distinctive” when its share of the buyer's awards exceeds its share nationally (the same Balassa index the map uses, with buyers in place of firms). Peer buyers are the nearest procurement mixes by cosine similarity on those RCA vectors; the peer gap list is descriptive, not advice.
- Values, methods, windows. Typical award values are bounded medians with sample sizes, only published at 5 or more usable values. Method mix uses the portal's method-details field (RFQ, open tender, RFP, limited). The advertised window is the median days between a tender's opening and closing dates.
- Concentration is anonymous. Supplier HHI, top-supplier share and firm counts are computed in the pipeline; no supplier name ships in any buyer profile.
- Geography. The feed carries no buyer geography, so sphere and province are read from the buyer's name, with a hand-checked table covering all municipal buyers. Each page states whether its geography was hand-checked or inferred.
- Capital spend context. Municipal profiles show audited capital expenditure from National Treasury's Municipal Money API, matched by official demarcation code. It is context for scale only: large capex beside few published awards usually means procurement happens outside the eTenders portal.
- Momentum. Pulse compares the last four full quarters with the four before (and the last full quarter with its predecessor). The newest quarter is excluded while it fills in, and thin markets (under 8 awards a year) are not scored. “Firms have won here” counts winning firms, a footprint proxy: the feed does not say where firms are based.
- Several buyers, same need. Lists category-province cells where at least two buying entities awarded within the last two full quarters. Buyers named there are organs of state, which are public entities.
Integrity metrics, and what a flag does not mean
The integrity and transparency pages publish statistical patterns, aggregate-first. No supplier is named anywhere on them. Every metric, precisely:
- Capability coherence. For each firm with two or more categories on the capability map, the proximity-weighted average across its pairs of won categories, weighting each pair by the product of award counts. Low coherence plus material activity (5+ awards across 3+ categories, below the 10th percentile) is counted as “flagged for review”. It does NOT mean wrongdoing: agile firms, holding companies and classification noise all score low. Only the count is published.
- Concentration and dependency. Supplier HHI and the largest supplier's share per buyer, computed from award counts. For buyers with 20 or more published awards the largest winners are named: descriptive naming that restates the public award record, with a right of reply. No analytic flag is ever attached to a name.
- Year-end timing. The share of a buyer's awards released in January to March, the last quarter of the government financial year, against the national share. Spending pressure at year-end is normal; the question a high share raises is about planning, not honesty.
- Short advertised windows. The share of awarded tenders advertised for under 7 days. Some purchases are legitimately urgent; a persistent pattern narrows who can realistically bid.
- Price vs category norm. Usable award values compared with their category's bounded median; the published share counts ratios of 5x or more. Scope and project size explain most large ratios.
- Transparency components. Value coverage, description richness (50+ characters), method stated, computable tender windows, and publishing regularity (active quarters over the buyer's span). The completeness score is their plain mean, and tables sort by volume, not score.
- Volume floors apply throughout (20+ awards for timing and window shares, 10+ usable values for price shares); cells below the floor show a dot rather than a misleading number.
The data
- Source: the South African National Treasury eTender Publication Portal (OCDS API), published under the PDDL public-domain licence.
- Window: awards from 2021 to 2025, the period with consistent published coverage.
- Scale: ~12,900 award records across ~8,100 firms (after merging name variants), reduced to 72 capability categories and 82 connections.
- The dataset is rebuilt periodically as new awards are published.
- The live-opportunities feed additionally includes the City of Cape Town's public RFQ list (sub-threshold quotations that never reach the national portal), fetched once daily and always labelled with its source. The capability map itself remains built from the national feed only.
- Everything aggregate or public-record is downloadable as cleaned CSV on the open data page, under the same PDDL public-domain licence as the source feed.
Honest limitations
- Categories, not fine codes. The default view uses the portal's own tender categories. A finer UNSPSC family view is available via the Detail toggle, but it is auto-classified from tender text, so treat those labels as approximate.
- Built from repeat winners. The links come from firms that have won in several categories, so the map reflects how established suppliers diversified. That is the right guide for a newcomer, but it is a pattern, not a promise.
- Contract values are estimates. The award-value field in the source data is incomplete and unreliable, so award counts are the primary measure everywhere. Where rand figures appear they are robust medians over plausibly-bounded values with the coverage stated, never raw sums.
- Coverage. Only procurement published to the OCDS portal is included; it is not the entirety of South African public spend.
- TenderSpace is a decision aid, not financial, legal, or bid advice.
Privacy
The public map is anonymous and aggregate by construction. No supplier is ever named; the “buyers” shown are organs of state, which are public entities, not people. If you sign in, only your saved capability selection is stored, readable by you alone. This keeps the tool aligned with POPIA.