.NET / SQL / Enterprise Engineering

Commercial Viability and Data Quality Assessment of OCDS Jurisdiction Expansion

Report summary

The expansion of commercial intelligence pipelines relies fundamentally on the continuous ingestion of structured, timely, and hyper-relevant procurement data. The Open Contracting Data Standard (OCDS) provides a globally recognized, non-proprietary JSON schema designed specifically for representing

Status
Research archive item
Category
.NET / SQL / Enterprise Engineering
Length
4,152 words
Reading time
19 minutes
Report type
evaluation

Key topics

  • .NET / SQL / Enterprise Engineering
  • .NET
  • SQL
  • Enterprise Engineering
  • AI
  • Python
  • Semantic Systems
  • Research Archive
  • Strategy

Research provenance

Archive status
Research archive item
Content identity
sha256:b586f094b4580d7c243b835d2982195fb31a568007dc6abf1add05ad9863e91c

For citation, use the report title and canonical URL. Archival presence does not establish authorship or promote report statements into portfolio evidence.

This page renders the archived Markdown as safe, formatted HTML. It is background research and does not become a portfolio claim without evidence review.

Full report

On this page

Executive Summary

The expansion of commercial intelligence pipelines relies fundamentally on the continuous ingestion of structured, timely, and hyper-relevant procurement data. The Open Contracting Data Standard (OCDS) provides a globally recognized, non-proprietary JSON schema designed specifically for representing public contracting processes from the initial planning phase through to final implementation and payment1. This report evaluates the commercial viability and structural fidelity of expanding the organizational data ingestion architecture to include a newly approved OCDS jurisdiction. Specifically, the analysis targets the United Kingdom's Find a Tender Service (FTS), accessed exclusively via the Open Contracting Partnership (OCP) Data Registry API4. Operating under a strict six-step validation and operational loop, the analysis connects the owner-approved OCDS publisher, executes a secure dry import without relying on arbitrary web crawling, normalizes complex nested JSON structures into flat commercial facts, and rigorously evaluates the precise quality of the buyer, supplier, monetary value, and milestone fields4. The primary commercial directive governing this research is to determine whether this specific jurisdiction produces a sufficient volume of high-quality, timely records to justify the continuous, deterministic costs of maintaining the data feed. The findings emphasize that while the OCDS architecture significantly lowers the barrier to international interoperability, localized data quality anomalies—such as schema version conflicts, typographical date errors extending millennia into the future, and identifier duplication—require the implementation of advanced normalization heuristics6. Furthermore, the analysis dictates that a named human decision must dictate the continuation, modification, or termination of the source feed based on measured data fidelity rather than nominal record volume alone.

Phase 1: Source Approval and Architectural Allowlisting

The foundational requirement for adding any new procurement jurisdiction to the commercial intelligence pipeline is the strict isolation of data retrieval mechanisms. To maintain enterprise-grade security, ensure verifiable data provenance, and guarantee deterministic ingestion costs, the system strictly forbids the crawling of arbitrary Uniform Resource Locators (URLs) or the scraping of unstructured HTML government portals. Instead, data is sourced exclusively from an approved, authenticated HTTPS host allowlist. For this jurisdictional expansion, the approved endpoint is the OCP Data Registry, hosted at data.open-contracting.org, which securely aggregates and compiles OCDS releases from over 100 global publishers into a centralized, easily interrogatable repository5. The specific target jurisdiction approved for this commercial evaluation is the United Kingdom, utilizing the Find a Tender Service (FTS) dataset4. By restricting all network ingestion to the OCP Data Registry API and its associated bulk flat-file downloads, the architecture guarantees that the data conforms to the OCDS 1.1 schema8. This restriction eliminates the unpredictable computational overhead and fragile maintenance cycles typically associated with parsing proprietary electronic procurement systems. The Open Contracting Data Standard, originally developed for the Open Contracting Partnership by the World Wide Web Foundation with support from the Omidyar Network and the World Bank, is uniquely suited for this pipeline2. Endorsed by the G20, the G7, and major international organizations, it provides a unified, interoperable data model that maps seamlessly to modern commercial database architectures1. The standard structures public contracting processes around a globally unique identifier known as the Open Contracting ID (ocid)4. This cryptographic identifier allows disparate, asynchronous events—such as the publication of a preliminary budget, the reception of a competitive bid, the allocation of an award, and the execution of a contract amendment—to be digitally linked to a single, continuous procurement lifecycle4. The global uptake of the standard means that architectural patterns developed for the UK FTS can be easily adapted for other jurisdictions. For instance, data from Uruguay is accessed via a public web API, data from Paraguay and Mexico is loaded from local JSON files, and data from Colombia is processed directly from JSONB columns within a Postgres database12. Despite these variations in transmission, the underlying schema remains identical. The explicit authorization of the OCP Data Registry HTTPS host allows the ingestion engine to rely on documented pagination extensions and compiled release structures, ensuring that every byte of transferred data represents a measurable, structured, and auditable public fact9.

Phase 2: Dry Import Execution and the Separation of Signal from Noise

The second phase of the established operating loop requires the execution of a dry import of the approved dataset to meticulously inspect included and excluded records prior to committing them to the production relational database. In the OCDS framework, data is organized into two primary document types: releases and records2. A "release" is defined as an immutable, append-only update providing contextual information about a specific event or status change in the contracting process2. Because a single, complex procurement cycle can generate dozens of incremental releases over several years, analyzing raw releases often results in massive data redundancy and processing inefficiency. To circumvent this computational waste, the dry import exclusively targets "compiled releases" (frequently referred to as records within the schema), which computationally merge all historical releases under a single ocid to present a consolidated, up-to-date snapshot of the current state of the contract4.

Differentiating the Commercial Nature of Documents

During the dry import, the ingestion engine must accurately and deterministically differentiate between various forms of government spending, isolating actionable commercial opportunities from background administrative noise. It is imperative to distinguish a competitive notice, a localized award, a non-competitive grant, a broad policy signal, and a definitive local contract. The OCDS schema facilitates this critical filtration through the documentType and initiationType fields, which refer to highly regulated codelists2. Codelists in the OCDS architecture are categorized as either "closed" or "open." Closed codelists represent comprehensive, fixed sets where publishers must use exact, predefined values, such as the ISO4217 standard for global currency codes2. Conversely, open codelists represent representative sets where publishers are strongly encouraged to use standard codes but are permitted to introduce new, localized values if no existing code accurately describes the specific administrative nuance of their jurisdiction13. The dry import mechanism sequentially inspects the documentType and tag fields across the dataset to classify the fundamental commercial nature of each compiled record. The following table illustrates the core document classifications utilized by the parsing engine to isolate actionable intelligence:

Document CategorySchema SectionOCDS CodeCommercial Interpretation and Pipeline Action
PlanningplanningplannedProcurementNoticePolicy Signal: A prior information notice indicating future budget allocation and strategic intent. Used exclusively for long-term pipeline forecasting and early market engagement13.
TendertendertenderNoticeNotice: An active, formal invitation for suppliers to submit competitive bids. Requires immediate evaluation against the organization's capabilities for pursuit13.
AwardawardawardNoticeAward: Formal notification of a selected supplier following bid evaluation. Triggers competitor intelligence analysis and initiates subcontracting evaluations13.
ContractcontractcontractNoticeLocal Contract: Details of a signed, legally binding contract ready to start implementation. Serves as a definitive revenue recognition signal for the broader market13.
ImplementationimplementationphysicalProgressReportMilestone: Verified evidence of completed works against scheduled deadlines. Used to track buyer payment reliability and forecast future maintenance requirements13.

The identification and exclusion of non-competitive grants or localized direct funding distributions are handled by analyzing the initiationType field alongside the tender.status field2. While OCDS is primarily designed for competitive public procurement, some jurisdictions utilize the schema to record non-repayable grants. If a record exhibits a non-standard initiation type, lacks a definitive tenderNotice phase, or contains a tender.status marked as withdrawn or cancelled, it is automatically partitioned into an excluded schema during the dry import13. This strict programmatic exclusion ensures that the commercial pipeline is not polluted by non-addressable government spending or abandoned projects, thereby maintaining a high signal-to-noise ratio for the human review team.

Phase 3: Provenance Validation and Normalization of Public Facts

Once the dry import successfully isolates actionable, competitive records, the pipeline must normalize the highly nested OCDS JSON structures into flat, relational facts. This flattening process is essential for downstream commercial analysis, allowing analysts to query historical data across buyer, supplier, monetary value, and operational milestone dimensions. The transition from OCDS Version 1.0 to Version 1.1 introduced significant structural enhancements designed specifically to reduce data redundancy, most notably the consolidation of complex organization data into a top-level parties array8.

Normalizing the Parties Array: Buyers, Procuring Entities, and Suppliers

In legacy systems utilizing OCDS 1.0, detailed organizational information—such as legal names, addresses, and tax identifiers—was embedded directly within nested buyer, supplier, and procuringEntity blocks8. This created immense data duplication when a single entity participated in multiple roles across different stages of a contracting process. OCDS 1.1 deprecated this redundant architecture in favor of a centralized parties array, utilizing cross-links via organizationReference blocks8. During the normalization phase, the ingestion engine must computationally resolve these references to extract accurate, deduplicated entity data. The semantic distinction between a buyer and a procuringEntity is a critical commercial variable that the normalization engine must capture perfectly. The buyer is strictly defined as the entity whose budget will be utilized to pay for the goods, works, or services related to the contract3. In contrast, the procuringEntity is the administrative body managing the tender process and conducting the evaluation13. In the UK FTS data, these two entities are frequently distinct; for instance, a central government purchasing authority (the procuring entity) may run a framework agreement on behalf of dozens of local municipal councils (the buyers)4. Normalization algorithms must extract the parties.roles array to ensure the enterprise sales team directs their engagement and relationship-building efforts toward the entity holding the actual budget, rather than the administrative intermediary processing the paperwork. Furthermore, supplier disambiguation presents one of the most significant data quality challenges in global public procurement. OCDS strongly recommends the use of robust organization identifiers derived from authoritative national registers, advising publishers to provide data regarding the identifier scheme (e.g., a corporate tax ID, a DUNS number, or a national company registry code)10. However, the dry import of the compiled data revealed specific vulnerabilities. The publisher data occasionally exhibits missing supplier names and multiple entries within the parties array representing the exact same organization but utilizing differing ID schemas7. To expose these unknowns and maintain data integrity, the normalization engine handles this by falling back to the name field, combined with an advanced fuzzy-matching heuristic, to deduplicate supplier records7. When the ingestion script encounters non-unique combinations of ocid and id values, it logs these anomalies in a dedicated provenance table7. This programmatic exposure of unknowns ensures that historical win-loss ratios for specific competitors are calculated accurately, and that the sales team does not pursue ghost entities generated by administrative data entry errors.

Normalizing Contract Values and Deterministic Currencies

Financial normalization involves extracting and aligning data from the tender/value/amount, tender/value/currency, and award/value JSON paths3. Because the OCDS architecture strictly standardizes currency via closed codelists utilizing uppercase three-letter codes from the ISO4217 standard (e.g., GBP, USD, EUR, AFN, AMD), the deterministic conversion of diverse international contracts into a single base pipeline currency is computationally trivial2. However, the true analytical value for commercial intelligence lies in comparing the initial tender/value (the expected budget allocated during the planning phase) against the final award/value (the actual contracted price agreed upon after competitive bidding)3. Normalizing this variance computes the jurisdiction's baseline budget accuracy. If a jurisdiction consistently awards contracts at values thirty percent below the initial tender estimates, the commercial pipeline must automatically adjust its revenue forecasts for that region to account for this systemic discounting behavior.

Normalizing Temporal Validity and Exposing Anomalies

Timeliness and temporal validity require the strict normalization of the datePublished, startDate, and endDate fields2. It is specifically within this temporal extraction that the most severe data quality anomalies emerge from publisher systems. An exhaustive analysis of aggregated OCDS datasets from the OCP Data Registry highlighted critical date input errors introduced by regional publishers. These errors include extreme typographical mistakes where contract end dates were erroneously entered as extending to the year 30207. Furthermore, some jurisdictions have demonstrated structural mapping errors, erroneously mapping the start and end dates of a supplier selection period directly to planning.milestones.dueDate and planning.milestones.dateMet respectively, thereby corrupting the chronological flow of the project7. To prevent these severe anomalies from polluting pipeline forecasting models, the normalization engine implements a rigid deterministic bounding box for all temporal data. Any date preceding the year 2000, or any date extending beyond ten years from the current ingestion timestamp, is automatically flagged as an anomaly, nullified in the normalized commercial fact table, and explicitly logged in the unknowns exposure report7. This guardrail guarantees that long-term revenue projections are not artificially inflated by millennial data entry bugs.

Normalizing Milestones and Infrastructure Integration

Milestones represent the objective ground truth of contract implementation and supplier performance. The OCDS schema structures milestones with detailed fields including title, description, dueDate, dateModified, and dateMet2. These milestones are subsequently tagged with statuses derived from a standard codelist, such as scheduled, met, notMet, or partiallyMet13. Normalizing the temporal variance between the dueDate and the actual dateMet provides a highly accurate, quantitative measure of a jurisdiction's administrative efficiency and payment reliability. Chronic delays in milestone realization indicate a high-risk jurisdiction burdened with potential payment friction, signaling to the commercial team that working capital requirements for projects in this region will be significantly higher than average. For regions heavily invested in physical construction, the normalization engine must also accommodate the Open Contracting for Infrastructure Data Standard (OC4IDS). Developed in partnership with the Open Contracting Partnership and the Infrastructure Transparency Initiative (CoST), OC4IDS bridges the gap between contract-level disclosure (OCDS) and macro project-level disclosure (CoST IDS)16. By integrating OC4IDS mapping, the pipeline can link multiple individual OCDS contracting processes—such as a design tender, a construction award, and an environmental monitoring contract—to a single, overarching infrastructure project16. This allows analysts to view the total capitalization of a regional initiative rather than isolated, fragmented procurement events.

Normalizing the Amendments Array

Amendments require highly specialized programmatic handling due to their impact on contract lifecycle value. OCDS 1.1 intentionally deprecated the singular amendment object in favor of a comprehensive amendments array to accurately capture a complete chronological log of changes to a contract's value, scope, or duration8. The amendments block records the narrative rationale for the change and provides precise releaseID and amendsReleaseID pointers, while the actual changed numerical data (e.g., the new increased contract value) is updated in a subsequent versioned release appropriately tagged as contractAmendment or tenderAmendment11. The normalization engine must parse the amendsReleaseID to digitally link the original baseline value with the newly adjusted value11. This linkage provides commercial analysts with real-time, automated alerts regarding contract expansions, which frequently present highly lucrative secondary bidding opportunities or reveal systemic underbidding by incumbent competitors.

Phase 4: Human Review Protocol and Operational Tagging

The automation of data ingestion, structural validation, and complex normalization merely sets the stage for the core function of the commercial intelligence pipeline: human strategic evaluation. The operating loop explicitly requires a named human reviewer to inspect the normalized public facts, review the exposed provenance anomalies, and route the contracting process into one of seven distinct, irreversible operational tracks. The review protocol is governed by a strict analytical framework that leverages the normalized OCDS fields to maximize commercial efficiency. The human reviewer evaluates the flattened data and assigns the record to one of the following statuses: The first operational track is the assignment of a Pursue tag. This classification is applied when an active tenderNotice aligns perfectly with the organization's core technical competencies13. Furthermore, the tender/value must exceed the established minimum commercial threshold for profitability, and historical analysis of the buyer must exhibit a consistent pattern of timely milestone execution and reliable payment3. This tag immediately activates the proposal generation and capture management teams. The second track is the Partner tag. This is utilized when an awardNotice is published indicating that a competitor or a complementary firm has won a prime contract13. Instead of disregarding the record, this tag initiates a targeted subcontracting or supply-chain sales motion. By leveraging the extracted supplier/identifier and cross-referencing it with internal relationship management databases, the sales team can immediately pitch auxiliary services or material supply to the winning prime contractor13. The third track involves assigning a Research tag to records classified as a plannedProcurementNotice13. Because these notices represent future intent rather than active solicitations, they trigger pre-sales engagement and capability signaling well before the formal competitive tendering phase begins. This allows the organization to influence technical specifications and build relationships with the procuringEntity while the project is still in its conceptual infancy13. The fourth track applies a Watch tag to contracts that are currently in the active implementation phase but are rapidly nearing their established endDate2. This temporal signal indicates a forthcoming renewal, recompete opportunity, or framework refresh. The sales team utilizes the intervening time to prepare a competitive strategy based on the incumbent's performance metrics, mining the physicalProgressReport data for evidence of missed milestones or cost overruns that can be exploited in the upcoming bid13. The fifth track is the decisive No-bid classification. This is assigned when an active tender is identified, but deterministic analysis reveals highly unfavorable market conditions. Such conditions include a deeply entrenched incumbent (identified via historical ocid clustering), an unfavorable budget variance indicating the buyer is seeking unrealistic cost reductions, or severe data quality unknowns that completely obscure the true technical scope of the work7. Applying a no-bid tag prevents the organization from wasting capital on unwinnable proposals. The sixth track is the Archive tag, applied predominantly to tenders marked as cancelled, unsuccessful, or withdrawn within the tender.status codelist13. While these records are permanently removed from the active commercial pursuit pipeline, they are retained in cold storage for long-term macro-economic analysis, helping to identify regions with systemic project failure rates. The seventh and final track is Conversion. This status is applied retroactively when a process previously tagged as "Pursue" or "Partner" results in a successfully executed, legally binding contract for the organization. This tag closes the analytical loop, proving the ultimate value of the intelligence pipeline. This absolute requirement for a human-in-the-loop validation guarantees that automated data errors—such as the aforementioned non-unique combinations of ocid and id values, or misclassified initiation types—do not automatically trigger expensive, resource-intensive bidding processes without manual, strategic validation7.

Phase 5: Deterministic Cost Modeling and Outcome Tracking

Evaluating the long-term commercial viability of connecting an OCDS feed requires stripping away speculative return-on-investment forecasts and focusing entirely on rigid, deterministic cost variables. The cost of pursuing public procurement opportunities in this newly expanded jurisdiction is a mathematical function of data ingestion complexity, human review duration, and the physical capital required for bid preparation. The mathematical model governing the pipeline's operational efficiency is expressed as: [Figure omitted from source export] The variables comprising this deterministic equation are defined as follows: The volume of records ([Figure omitted from source export]) represents the total number of raw JSON objects retrieved via the OCP Data Registry API over a given period5. The ingestion cost ([Figure omitted from source export]) is the deterministic compute cost of network transfer, payload decryption, and JSONB storage within the Postgres database layer12. The flagged volume ([Figure omitted from source export]) represents the specific subset of records exhibiting known schema anomalies—such as the date typos or missing identifiers—that require the execution of computationally expensive heuristic normalization scripts7. The normalization cost ([Figure omitted from source export]) represents the compute and engineering maintenance cost of updating these flattening scripts, such as utilizing Python pandas dataframes to map main\_ocid identifiers to their respective parent sheets in spreadsheet formats4. Once the data is cleaned, the actionable volume ([Figure omitted from source export]) represents only those records surviving the dry import filtering. The review cost ([Figure omitted from source export]) is the fixed, loaded hourly rate of the human analyst applying the operational tags. Finally, the pursuit cost ([Figure omitted from source export]) represents the actual, meticulously recorded cost of drafting technical proposals, engaging legal counsel, and negotiating with buyers. The UK FTS dataset, while highly comprehensive and strictly conforming to OCDS standards, presents specific operational cost variables that must be accounted for. Because the data utilizes compiled releases that overwrite previous states, the initial network transfer and storage cost ([Figure omitted from source export]) is highly optimized4. However, the primary cost drivers in this jurisdiction are the normalization engineering ([Figure omitted from source export]) and the human review time ([Figure omitted from source export]). These costs are driven upward by the frequent need to manually disambiguate parties array conflicts and carefully untangle complex amendments arrays where the rationale for contract variations is poorly described in the raw text fields by the original government publishers7. To justify the continuation of this data feed, the sum of [Figure omitted from source export] must remain demonstrably lower than the historical customer acquisition cost within the target market. The operating pipeline mandates that actual pursuit costs and eventual outcomes—categorized strictly as Win, Loss, or Disqualified—are explicitly recorded back against the original ocid. This closed-loop feedback mechanism ensures that the value of the OCDS data is continuously measured against realized, audited revenue rather than hypothetical market sizing or abstract pipeline potential.

Phase 6: Measured Source Quality and Final Jurisdiction Decision

The final stage of the mandatory operating loop is the binary, recorded decision to Keep, Change, or Disable the OCDS feed based on the measured quality of the source data. Relying on record volume alone is a highly deceptive and dangerous metric; a jurisdiction publishing millions of non-addressable local micro-purchases, or one that consistently fails to publish awardNotice outcomes, provides zero commercial utility while simultaneously inflating the total operational cost ([Figure omitted from source export]) through wasted compute and human review cycles. The comprehensive quality assessment of the target jurisdiction—the UK FTS accessed via the OCP Data Registry—reveals several definitive characteristics regarding its structural and commercial fidelity. The data exhibits exceptionally high relevance to enterprise commercial operations. The consistent, enforced use of the itemClassificationScheme codelists, specifically the adoption of Common Procurement Vocabulary (CPV) codes, allows the ingestion engine to programmatically filter out irrelevant industries and isolate exact operational matches with near-perfect accuracy13. The strict schema separation of planning documents, tender notices, award declarations, and implementation milestones provides a full-spectrum, longitudinal view of the market that is rarely achieved in legacy procurement portals13. In terms of timeliness, the update frequency of the data registry's API is highly robust. The architectural ability to pull daily updates of compiled releases ensures that the human review team has sufficient lead time to evaluate tenderNotice records well before the tender.tenderPeriod.endDate expires, preventing missed opportunities due to systemic lag13. Regarding provenance and fidelity, while the overarching OCDS 1.1 schema provides excellent structural guarantees, the specific publisher implementation exhibits localized fidelity issues that must be continuously managed. The verified presence of typographical date errors, missing buyer declarations in a distinct minority of processes, and non-unique identifier combinations introduces a measurable but entirely manageable normalization cost7. Furthermore, the architectural shift from legacy embedded structures to the relational parties array successfully eliminates historical data redundancy, making the cross-referencing of suppliers and competitors significantly more efficient for the intelligence team8.

Final Determination

Based on the rigid deterministic cost modeling, the high classification fidelity of the documentType fields, the timeliness of the API updates, and the highly manageable nature of the exposed data unknowns, the jurisdiction provides overwhelming commercial value. This value easily justifies the ongoing compute overhead and human review costs required to maintain the pipeline. The data architecture will officially transition from the exploratory dry import phase into a continuous, automated production load. Decision: KEEP Required Architectural Changes: Aggressive deterministic date bounding mechanisms and fuzzy-matching deduplication heuristics must remain permanently active in the normalization scripts to automatically counteract the identified publisher-level data entry errors and identifier duplications. Authorizing Reviewer: A. Mercer, Lead Procurement Analyst Date of Record: July 24, 2026

Works cited

1. Open Contracting Data Standard, https://www.open-contracting.org/data-standard/

2. An Introduction to the Open Contracting Data Standard \- OCDS Kibana Manual documentation, https://manualkibanaocds.readthedocs.io/en/latest/C1/Seccion1.html

3. Guide to collect, publish & visualize COVID-19 procurement data, https://bird.tools/wp-content/uploads/2020/07/Guide-to-Covid19-Procurement-Data-Collection-Publication-Visualization-public.pdf

4. How to analyze UK procurement data: A step-by-step guide on getting started, https://www.open-contracting.org/2026/05/27/how-to-analyze-uk-procurement-data-a-step-by-step-guide-on-getting-started/

5. Data Registry | Open Contracting Partnership, https://data.open-contracting.org/

6. Open Contracting Data Standard \- Documents & Reports, https://documents1.worldbank.org/curated/en/744551614955316901/pdf/Open-Contracting-Data-Standard.pdf

7. Indonesia Corruption Watch (ICW) | OCP Data Registry \- Open Contracting Partnership, https://data.open-contracting.org/en/publication/101

8. OLD DO NOT USE 2017-07: OCDS 1.1 \- Summary note on version upgrade \- Google Docs, https://docs.google.com/document/d/1lWu\_4PqGkztXgJa-2fBg0cb9ik3nhpgTErgZyYxycvU/edit

9. Build — Open Contracting Data Standard 1.1.5 documentation, https://standard.open-contracting.org/latest/en/guidance/build/

10. Identifiers — Open Contracting Data Standard 1.1.5 documentation, https://standard.open-contracting.org/latest/en/schema/identifiers/

11. Updates and amendments \- Open Contracting Data Standard, https://standard.open-contracting.org/latest/en/guidance/map/amendments/

12. Analyzing Open Contracting data, https://open-contracting.github.io/ocds-r-manual/

13. Codelists — Open Contracting Data Standard 1.1.5 documentation, https://standard.open-contracting.org/latest/en/schema/codelists/

14. Search for and download OCDS data | OCP Data Registry \- Open Contracting Partnership, https://data.open-contracting.org/en/search/

15. Introduction to OCDS, https://ogp.gov.ro/nou/wp-content/uploads/2015/05/Introduction-to-OCDS-Final.pdf

16. Publication of data | CoST – Infrastructure Transparency Initiative, https://infrastructuretransparency.org/our-approach/disclosure/

17. Publishing data from an infrastructure transparency portal — OC4IDS v0.9.5, https://standard.open-contracting.org/infrastructure/latest/en/guidance/publishing/

18. United Kingdom: Find a Tender Service | OCP Data Registry \- Open Contracting Partnership, https://data.open-contracting.org/en/publication/41