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 correction is published in the Corrections Register — append-only, dated, and (where one exists) tied to the authoritative source that prompted it.
The tier says a record clears the intelligence-grade bar. It does not mean every such record carries the same amount. The figure below counts populated fields in the deposit dossier across five blocks — reserve/resource, economics, government take, ownership, safeguards. It is a measure of dossier completeness, not of everything the platform holds on an asset: economics for all six also sit in the bankability layer, which carries comparable field counts across the set. What the spread shows is how much of the picture is assembled in one place.
| Asset | Populated fields |
|---|---|
| kabanga-ni | 64 |
| ngualla-ree | 30 |
| kamoa-kakula | 9 |
| manono-lithium-district | 9 |
| balama-graphite | 8 |
| colluli-potash | 7 |
Stated because the label would otherwise imply parity it does not have: a reader who evaluates the fullest dossier and then tests the thinnest is entitled to know how far they differ. Deepening the thin records is ahead of adding new coverage.
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: an issuer NPV re-discounted to a common 8% for comparison (method on /bankability/). Afrimintel publishes no Derived score, rating or ranking of a province, country or asset. 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. Ask Afrimintel carries the same discipline: its system prompt, held server-side, forbids any fact from the model's own memory and requires it to say a fact is Absent, and name where it would live, when the records supplied do not carry it. Every figure in an answer is then traced back to those records before the reader sees it.
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.
Absent declares that no figure is carried. Since 17 August 2026 every Absent cell also declares why, through an absence_basis field with four permitted values: not-disclosed (checked against a named primary source), not-yet-verified (the default; no check on record; asserts nothing), not-applicable, and withheld. Only not-disclosed and not-applicable assert anything about the public record. Cross-asset gap statistics may be computed only over those two; a statistic that pools not-yet-verified cells describes Afrimintel’s verification coverage, never operator disclosure, and must be labelled as coverage. Enforced by contract-suite check-49. The governing text is the quality_contract block of the manifest, whose changelog entry for that date reads:
absence_basis discriminator added (check-49). Every Absent cell now declares why it is absent: not-disclosed (checked against a named primary source), not-yet-verified (default; no check on record, asserts nothing), not-applicable, or withheld. Resolves the conflation of disclosure gaps with verification backlog. All 1,472 existing Absent cells default to not-yet-verified; promotion to not-disclosed is one cell, one source, one date. Aggregate gap statistics may not pool not-yet-verified cells.
Between v1.0.61 and August 2026 the substrate carried two transitional tags, Pending and Inferred-propagated, which this Standard documented as working states rather than a fourth and fifth state. They are retired. The manifest's quality_contract declares no working tags, and the contract suite fails any feed that carries one.
Their job is now done inside the three states. A figure not yet verified is Absent with absence_basis: not-yet-verified, which asserts nothing about the public record. A figure carried from an earlier cycle without a re-walk is either re-verified and Sourced, or it is Absent with that basis. The verification queue and its target dates stay public in sources-verification-log.json; each transition is recorded on the audit log.
For records classified as INTELLIGENCE-GRADE (currently 6 deposit dossiers in the platform's database, with a published verification queue of candidates), 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, geochemist (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. Version identifier ruled 7 September 2026: the Standard is v1.1 on every surface and in the manifest quality_contract; the changelog reference to "v1.2" on 8 July 2026 was drift and is superseded by this line. Last amendment: 17 August 2026 (absence_basis discriminator on every Absent cell, enforced by check-49; see the manifest quality_contract changelog). Earlier: 2 May 2026 (v1.0.18 schema fields added, pre-deploy gate checks expanded). Companion documents: Methodology · Bankability Record · Audit Log · Privacy Policy · Terms of Service.