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.
### 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."
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.
### Current 90/60/30/7 day alert structure:
### New 90/60/30/7 day alert structure:
### 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