Date: 2026-04-08
Feature: Auto-generate renewal paperwork and email to customer
BC sends zero notice before claim forfeiture. From the BC MMINISTRY's own page:
> *"Failure to maintain a claim results in automatic forfeiture at the end (midnight) of the expiry date; there is no notice to the claim holder prior to forfeiture."*
This means:
One missed expiry on a good claim can cost $10,000+ in lost ground value.
### Mineral Claims
| Anniversary Year | Work (per ha) | Cash-in-Lieu (per ha) |
|---|---|---|
| Years 1-2 | $5/ha | $10/ha |
| Years 3-4 | $10/ha | $20/ha |
| Years 5-6 | $15/ha | $30/ha |
| Years 7+ | $20/ha | $40/ha |
### Placer Claims
| Type | Cost per ha |
|---|---|
| Work | $20/ha |
| Cash-in-lieu | $40/ha |
Note: Minimum claim size = ~16.5 ha (1 cell). Most mineral claims = 16.5-500 ha.
For each expiring claim, we generate an email package containing:
### 1. Renewal Summary Email
Subject: [ACTION REQUIRED] 3 claims expiring in 60 days — renewal packages ready
Body:
### 2. MTO Registration Prep Sheet (PDF attachment or inline HTML)
For each claim:
```
TENURE ID: [from DB]
CLAIM NAME: [from DB]
HECTARES: [from DB]
EXPIRY DATE: [from DB]
ANNIVERSARY YEAR: [calculated]
RENEWAL OPTION: [work or CIL — recommend based on their history]
WORK OPTION COST: $[calculated]
CASH-IN-LIEU COST: $[calculated]
RECOMMENDED: [work or CIL with reasoning]
MTO STEPS:
1. Log into MTO: https://mtonline.gov.bc.ca
2. Navigate to: Mineral Claim > Maintenance > Register Work [or CIL]
3. Enter tenure ID: [X]
4. Select anniversary year
5. Enter work type and description [or payment amount]
6. Attach work report [for work option]
7. Submit before: [expiry date]
```
### 3. Work Report Template (for work option)
If they did actual work (geological mapping, sampling, etc.), we pre-fill:
| Days Before Expiry | Action |
|---|---|
| 90 days | First email: "Claims expiring in 90 days. Review your options." |
| 60 days | Second email: Full renewal package with paperwork |
| 30 days | Third email: URGENT — "30 days to renew. Click here to review paperwork." |
| 7 days | Final SMS/Discord: "URGENT — [Claim Name] expires in 7 days. Submit now." |
| Expired | Email: "Your claim has expired. Here are your options." |
### CAN Do
claims.db (tenure ID, area, expiry date, owner)### CANNOT Do (legal limitation)
### CAN Do as Premium Add-On ($50/claim)
### Database Changes
```sql
ALTER TABLE customers ADD COLUMN auto_renewal_enabled BOOLEAN DEFAULT FALSE;
ALTER TABLE customers ADD COLUMN preferred_renewal_method TEXT DEFAULT 'work'; -- 'work' or 'cil'
ALTER TABLE customers ADD COLUMN renewal_email TEXT; -- override email if different from account email
ALTER TABLE customers ADD COLUMN last_renewal_reminder TEXT; -- ISO date
```
### New Tables
```sql
CREATE TABLE renewal_alerts (
id INTEGER PRIMARY KEY,
tenure_id TEXT,
customer_token TEXT,
expiry_date TEXT,
hectares REAL,
claim_type TEXT, -- 'mineral' or 'placer'
anniversary_year INTEGER,
work_cost REAL,
cil_cost REAL,
alert_90_sent INTEGER DEFAULT 0,
alert_60_sent INTEGER DEFAULT 0,
alert_30_sent INTEGER DEFAULT 0,
alert_7_sent INTEGER DEFAULT 0,
renewed INTEGER DEFAULT 0,
renewed_date TEXT
);
```
### New Script: renewal_checker.py
Runs daily:
1. Query claims.db for claims with expiry within 90 days
2. Match to customers who have registered those claims in their watchlist
3. Generate renewal alerts
4. Send emails on schedule (90/60/30/7 days)
5. Log sent alerts to renewal_alerts table
### Email Template
Use Python stdlib smtplib or a transactional email service. For simplicity:
### Cron Job
Add: renewal_checker.py runs daily at 9:00 AM local time
Staker ($30/mo) includes:
Staker+ ($50/mo — NEW):
For cash-in-lieu renewal (simpler):
1. Tenure ID
2. Payment amount (we calculate)
3. Payment method: credit card or PAC credits
For work renewal (cheaper but more work):
1. Tenure ID
2. Work type (geological, geophysical, drilling, etc.)
3. Work description
4. Work cost breakdown
5. Work report (PDF, following BC MMINISTRY guidelines)
6. Exploration permit number (if applicable)
Our paperwork package pre-fills items 1-4 for both options. Customer needs to attach their work report.
The most valuable automation for work renewals: generate the work report template.
If a customer did geological mapping, sampling, or surveying, we can:
1. Ask them to input what work they did (simple form on their dashboard)
2. Auto-generate a BC MMINISTRY-compliant work report template
3. They fill in the technical details
4. They attach to MTO submission
This saves a prospector hours of form work.
At $30/mo, if we prevent one missed expiry on a single claim, we've paid for years of subscription.
1. Add auto_renewal_enabled column to customers.json
2. Build renewal_checker.py script
3. Build email template library
4. Test with Chris's own claims first
5. Add to customer onboarding flow
6. Cron: daily at 9 AM
7. Track: open rates, renewal completion rates