Skip to main content
Different tenderers submitted bids with the same price.

Methodology

A contracting process is flagged if different tenderers submitted bids with the same price (amount and currency). These tenderers are also flagged.
Example: The Ministry of Defense opens bids early and leaks the lowest price to BribeCorp. BribeCorp submits a bid matching the lowest price. The Ministry of Defense awards the contract to BribeCorp.
Why is this a red flag?A corrupt buyer can award the contract to the pre-determined bidder by leaking competitors’ prices. The pre-determined bidder can then submit a matching bid to appear competitive while ensuring they win (or tie for the lowest price).Identical prices may also indicate bid coordination between supposedly independent tenderers in a collusion scheme.

Output

The indicator’s value is always 1.0 for both the contracting process and flagged tenderers. If the --map command-line flag is set, the Maps key contains:
  • ocid_tenderer_r028: The flagged tenderers for each flagged OCID

Configuration

This indicator is not configurable through the settings file.
See also: no_price_comparison_procurement_methods and price_comparison_procurement_methods in global configuration for excluding certain procurement types from price-based indicators.

Exclusions

A contracting process is excluded if:
  • Prices are predetermined by the buyer (e.g., rate card contracts, framework agreements with fixed prices)
The indicator correctly handles the case where a single tenderer submits multiple bids with the same price - this is allowed and not flagged.

Example Output

Input (OCDS JSONL with matching prices):
{"ocid": "ocds-213czf-1", "bids": {"details": [{"tenderers": [{"id": "D"}], "value": {"amount": 100000, "currency": "USD"}}, {"tenderers": [{"id": "V"}], "value": {"amount": 100000, "currency": "USD"}}]}}
Command:
ocdscardinal indicators --settings settings.ini --no-meta data.jsonl
Output:
{"OCID":{"ocds-213czf-1":{"R028":1.0}},"Tenderer":{"D":{"R028":1.0},"V":{"R028":1.0}}}

Implementation Details

From src/indicators/r028.rs:28-71: The indicator:
  1. Checks if the procurement method allows price comparison
  2. For each bid, extracts the price (amount + currency) and tenderer IDs
  3. Maintains a hash map of prices to sets of tenderer IDs
  4. When a duplicate price is found:
    • Verifies it’s from different tenderers (not the same tenderer re-bidding)
    • Flags the contracting process
    • Flags all tenderers involved (both the original and duplicate)
  5. Handles currency correctly - bids are only considered identical if both amount AND currency match
Important edge cases:
  • If tenderer A submits two bids at $100k, this is NOT flagged
  • If tenderer A and B both bid $100k, this IS flagged
  • If A bids 100kUSDandBbids100k USD and B bids 100k EUR, this is NOT flagged (different currencies)
Data requirements: This indicator requires the bids.details array to be populated with tenderer information and bid values. Many OCDS publishers don’t include detailed bid information, which limits the applicability of this indicator.