Cariboo Mining Intelligence

Claim Lapse Reporting — Product Changes — 2026-04-10

Current State

The renewal_checker.py and daily alerts currently handle:

Zero FN intelligence is built in.

The claims.db has lat/lon coordinates for every claim. The FN dataset at /data/workspace/mining-intel/fn-relationships/ has FN territories, relationship histories, and risk scores. These are not connected.


What Changes — FN Intelligence Layer Added

### 1. FN Territory Lookup (new)

When generating a claim alert, cross-reference claim lat/lon against FN territory boundaries from fn_organizations.json.

Output: "Your claim 1061575 sits in [Tsilhqot'in] territory."

### 2. FN Risk Score (new)

Each FN org in fn_organizations.json has a risk_profile. Pull it and display:

### 3. Which FNs Will Be Consulted (new)

List the specific FNs whose territory overlaps the claim. From fn_organizations.json territorial data.

### 4. Historical Stance Summary (new)

One-line summary of FN's track record with mining in their territory:

### 5. Pre-Application Checklist (new)

Based on FN risk level, add a checklist section to the alert:

LOW RISK FNs:

MEDIUM RISK FNs:

HIGH RISK FNs:

UNKNOWN FNs:

### 6. MCCF Status Warning (new)

Add to all alerts: "As of March 26, 2025, all claim applications require FN consultation under the MCCF. Your application will not be instantly registered. See below for FN risk assessment for your claim area."

### 7. Gitxaala Warning (new, time-limited)

For claims in HIGH RISK FN territories: "Note: The Dec 5, 2025 Gitxaala court ruling found BC's FN consultation requirements may be stronger than the current MCCF. BC is appealing to the Supreme Court of Canada. Claims in your FN territory carry elevated legal uncertainty."


Claims.db Enrichment

Need to enrich claims.db with FN data at query time:

```

SELECT c.*,

fn_orgs.name as fn_name,

fn_orgs.risk_level,

fn_orgs.agreement_type,

fn_orgs.consultation_stance

FROM claims c

JOIN fn_territories ft ON ST_Contains(ft.geometry, ST_Point(c.lon, c.lat))

JOIN fn_orgs ON ft.fn_id = fn_orgs.id

```

Or: pre-compute a GeoJSON layer of FN territories and do point-in-polygon in Python.


Email Template Changes

### Current 90/60/30/7 day alert structure:

### New 90/60/30/7 day alert structure:


Implementation Plan

### Phase 1 — Quick Win (1-2 hours)

1. Load fn_organizations.json and fn_mining_matrix.csv at startup in renewal_checker.py

2. Add claim_lat/claim_lon to claims.db query

3. Add FN territory lookup by approximate lat/lon matching (FN regions are large)

4. Add FN risk fields to alert email template

5. Deploy and test

### Phase 2 — Proper Geospatial (half day)

1. Get FN territory GeoJSON from BC Data Catalogue or NRCan

2. Do proper point-in-polygon matching

3. Handle claims that overlap multiple FN territories

4. Add "all FNs that will be consulted" list

### Phase 3 — Full Intelligence (1-2 days)

1. Cross-reference with EAO EPIC — is there an active FN consultation on this area?

2. Pull NRCan IMA agreements for the specific FN + area

3. Generate pre-application readiness score

4. Add accommodation measures risk assessment


Risk: What NOT to Do