Every numeric and factual claim Afrimintel publishes lives in exactly one of three categories. We replaced "100% accurate" — which is unattainable — with an operational framework: source it, derive it from sourced inputs, or admit we don't have it. Errors are inevitable. Discipline about errors is what makes a record trustworthy.
Every numeric or factual claim Afrimintel surfaces is in one of three states:
Sourced. Claim derives from a named, citable, primary or institutional document with a date. The source is recorded in the platform's data layer and surfaced to the user. Examples: a deposit's reserve tonnage cited from an NI 43-101 / JORC / S-K 1300 technical report; a country's Fraser Institute IAI score; a transaction value cited from a primary press release or SEC filing.
Derived. Claim is the output of an Afrimintel calculation or composite whose inputs are themselves Sourced or Derived, and whose methodology is published. Output carries explicit confidence range or tier. Examples: the Afrimintel Score for a province (formula and inputs at /methodology/); the country risk composite (30/25/25/20 weighting, published). The simplest Derived class is contained metal — reserve tonnage × grade — which Afrimintel computes rather than quotes, even where a source also states it; the underlying tonnage-and-grade reserve statement remains Sourced, so a producing-asset reserve row carries both pills (tonnage @ grade Sourced; contained Derived).
Absent. Afrimintel does not hold the data and acknowledges the gap directly. Where a user asks for a fact Afrimintel does not hold, the answer is "we do not hold this" — not a guess, not a placeholder, not a training-data approximation. AI surfaces (e.g. ASK Afrimintel) carry the same discipline: the system prompt instructs the model to refuse fabrication and respond [DATABASE ABSENT] when no relevant record exists.
The three-state model governs numeric and factual claims. A separate discipline applies to qualitative editorial framing — comparative readings ("EU policy continuity through 2030 is more predictable than U.S. policy continuity across administrations"), characterisations of trajectory ("the corridor's effective country-risk profile is dominated by the highest-risk segment"), and decision-shape framings ("this is post-settlement re-entry, not pre-FID screening"). These are not Sourced, not Derived in the strict computational sense, and not Absent — they are editorial judgments.
The discipline that governs them:
This discipline is added in v1.0.45 in response to a hostile-audit observation that the three-state model governs numbers but not the qualitative framing on which decision-aid value depends. Both layers are now published.
A hostile contrarian audit in the v1.0.55–v1.0.61 build window identified that the platform's substrate had begun rendering two additional state tags — Pending and Inferred-propagated — that are not part of the three-state model as published above. This section reconciles the published standard with the substrate as it actually ships, rather than leaving the contradiction unstated.
The three-state model (Sourced / Derived / Absent) remains the governing target for every claim. The two working-state tags are explicitly transitional, not a fourth and fifth permanent state:
sources-verification-log.json. A Pending claim is on a path to becoming Sourced (if the primary source confirms it) or Absent (if it does not). Pending is not a resting state — a claim that remains Pending past its target date is a Correction Velocity SLA breach.Both working-state tags exist because the honest alternative — tagging unverified content as Sourced, or removing it entirely mid-verification — is worse. Tagging unverified content Sourced is fabrication. Removing it loses the framework substrate that is genuinely useful. The working-state tags let a reader see exactly which claims are verified, which are scheduled for verification, and which are carried forward pending re-walk. Every Pending and Inferred-propagated tag is, by design, a visible admission of incomplete verification rather than a hidden one.
The discipline commitment: working-state tags are transitional and dated. The verification log carries the target dates. The audit log records each transition from Pending or Inferred-propagated to Sourced, Derived, or Absent. If the platform's substrate is mostly Pending and Inferred-propagated at any point, that is itself a visible signal — surfaced honestly — that primary-source verification work is the binding constraint, not a hidden weakness.
For records classified as INTELLIGENCE-GRADE (currently 18 deposit dossiers in the platform's database), provenance is captured at field level — not just record level. Each Reserve tonnage, Resource grade, operator name, and reporting basis carries its own tier tag and source citation. A user examining Kamoa-Kakula sees not just "Sourced from Ivanhoe NI 43-101" but the specific document, effective date, and per-field provenance.
Schema fields enforcing this discipline (v1.0.18 schema):
res_mt_reserve / grade_reserve / res_type_reserve — Proven + Probable Reserve, separated from Resourceres_mt_resource / grade_resource / res_type_resource — Measured + Indicated + Inferred Resourcereserve_basis / resource_basis — explicit "100% project basis" vs "attributable to [operator]" disclosureoperator_interest — source-qualified ownership detaildispute_status — enum for contested assets (Manono pattern)transparency_flag — enum for opaque or recovery-stage operatorslast_reviewed — explicit date stamp; pre-deploy pipeline blocks any IG record older than 180 daysMaterial errors corrected within seven business days. Non-material corrections (typos, formatting, version stamps) within thirty business days. Every correction is logged at /audit-log/ with: what changed, why, the source of the authoritative correction, version marker incremented, regression check, editorial sign-off.
The Audit Log is published, not internal. A correction that has not been logged is not complete.
Every deploy is gated by an automated pre-deploy pipeline that blocks publication on any of the following findings:
| Check | Severity |
|---|---|
| Permanent exclusions present in deployed surfaces | CRITICAL |
| Hardcoded secrets in deploy bundle | CRITICAL |
| Wildcard CORS in serverless functions | CRITICAL |
| localhost in production CORS allowlists | SIGNIFICANT |
| Counterparty hallucination patterns | CRITICAL |
| Forward-looking partnership claims without confirmed counterparty | SIGNIFICANT |
| Methodology reconciliation lock — every province score reconciles to formula within ±0.05 | CRITICAL |
| Score-prose drift — supporting prose disagrees with score chip | SIGNIFICANT |
| Opportunity Multiplier range consistency across surfaces | SIGNIFICANT |
| Round-number drift between marketing copy and data | SIGNIFICANT |
| AI provenance contract clauses present in shared injection helper | CRITICAL |
| JS syntax integrity across all bundle files | CRITICAL |
| HTML structural balance | SIGNIFICANT |
| AI provenance tier tags surfaced in model responses | SIGNIFICANT |
| IG dossier last_reviewed within 180-day threshold | SIGNIFICANT |
| Reserve / Resource basis disclosure on attributable records | SIGNIFICANT |
| Disputed-asset surface — dispute_status flag on multi-claim records | SIGNIFICANT |
| Shared injection helper present and consumed by both production and audit infrastructure | CRITICAL |
A CRITICAL or SIGNIFICANT finding blocks deploy. The pipeline runs at every build; the script is in the bundle at scripts/audit/pre-deploy-audit.js.
Afrimintel's AI feature (ASK Afrimintel) is governed by a published Provenance Contract embedded in the system prompt before every query. The contract instructs the model to:
Sourced / Derived / Absent) for every numeric or factual claim"Afrimintel's current dataset does not include verified information on [topic]" when no relevant record existsCompliance with the contract is measured by a 20-query test battery (in-database / absent / adversarial / tier-mix categories). A defence-in-depth runtime audit runs after every model response, surfacing inline flags if the response contains counterparty-relationship language, forward-looking partnership claims, or permanent-exclusion terms.
Specific things the Standard does not promise:
last_reviewed field shows the floor of staleness, the 180-day threshold the ceilingThe Standard is signed and operated by a single named editorial responsibility: Nikesh Patel, Honorary Consul of Rwanda in Mauritius (nikesh@afrimintel.com). Distribution of editorial capacity across additional named reviewers is on the build roadmap, sequenced to the point a commercial event requires it. Until then, every record carries one editorial signature, and that signature is accountable.
Changes to the Standard itself are logged at /audit-log/ under "Standard amendment." Material changes (e.g. addition or removal of a state, change to the correction SLA, change to the AI contract clauses) require explicit Audit Log entry with reasoning and effective date. Non-material editorial revisions (typos, formatting, link maintenance) are versioned but do not require a separate entry.
Adopted 25 April 2026. Last amendment: 2 May 2026 (v1.0.18 schema fields added, pre-deploy gate checks expanded). Companion documents: Methodology · Audit Log · Privacy Policy · Terms of Service.