Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 47 additions & 0 deletions .agents/skills/crc-assess-agricultural-climate-risk/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
---
name: crc-assess-agricultural-climate-risk
description: Assess bounded USDA crop-cover or global FTW field evidence against CRC canonical flood or drought hazards. Use for agricultural sourcing, crop exposure, field screening, and open climate-risk baselines; not for yield prediction, ownership, or a synthetic farm-risk score.
---

# CRC agricultural climate risk

Produce an auditable agricultural evidence layer and a separate per-hazard
evaluation. Never infer ownership, yield, production, or a combined risk score.

## Intake and source choice

Reuse a supplied geography, year, crops, hazard, and decision context. If the
target or decision is absent, ask: “Which sourcing area or agricultural region
should I assess, and what decision should the screen inform?” Resolve and show
a narrow WGS84 AOI.

- In CONUS, default to USDA CDL 30 m and the latest complete requested year.
Use 10 m only for 2024–2025 when the added detail matters.
- Elsewhere, use FTW field boundaries for the requested ISO country and retain
continuous confidence. State that crop type is unavailable.
- Default flood to EFAS in Europe and GloFAS elsewhere. Add EDO SMI only when
drought is relevant and covered.

## Workflow

1. Read [the agricultural playbook](../../../ai-playbooks/agricultural-climate-risk.md).
2. Materialize each applicable hazard into its own canonical Parquet and read
its embedded source, unit, semantics, pathway, horizon, tail, support, and
H3 resolution.
3. Run `pipelines/agricultural_climate_pipeline.py` with a bounded AOI. Let the
hazard metadata choose H3 resolution. The notebook twin is
`notebooks/agricultural_climate_risk.ipynb`.
4. Preserve USDA year/class and sampled crop share, or FTW year/confidence/area.
Preserve match status and missingness in each hazard evaluation.
5. Keep hazards with incompatible units, horizons, or semantics separate.
Flag return-period extrapolation and low-confidence or missing agricultural
coverage.

## Deliverable

Return the agricultural-units Parquet, one canonical evaluation Parquet per
hazard, map and summary Parquets, a PMTiles presentation artifact, and a
manifest with versions, filters, hashes, row counts, metadata, and warnings.
Show a map plus a per-crop or confidence-stratified exposure summary. Label
USDA crop share as sampled pixels—not acreage—and FTW polygons as
remote-sensing field units—not parcels or proof of ownership.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
interface:
display_name: "CRC Agricultural Climate Risk"
short_description: "Screen crop and field layers against hazards"
default_prompt: "Use $crc-assess-agricultural-climate-risk for my sourcing region."

1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ repository discovery; see README.md's "Platform discovery" section.
| crc-screen-mortgage-flood | [.agents/skills/crc-screen-mortgage-flood/SKILL.md](.agents/skills/crc-screen-mortgage-flood/SKILL.md) |
| crc-model-flood-insurance-loss | [.agents/skills/crc-model-flood-insurance-loss/SKILL.md](.agents/skills/crc-model-flood-insurance-loss/SKILL.md) |
| crc-assess-asset-portfolio-risk | [.agents/skills/crc-assess-asset-portfolio-risk/SKILL.md](.agents/skills/crc-assess-asset-portfolio-risk/SKILL.md) |
| crc-assess-agricultural-climate-risk | [.agents/skills/crc-assess-agricultural-climate-risk/SKILL.md](.agents/skills/crc-assess-agricultural-climate-risk/SKILL.md) |
| velo-underwrite-property-climate | [.agents/skills/velo-underwrite-property-climate/SKILL.md](.agents/skills/velo-underwrite-property-climate/SKILL.md) |
| velo-triage-portfolio-insurability | [.agents/skills/velo-triage-portfolio-insurability/SKILL.md](.agents/skills/velo-triage-portfolio-insurability/SKILL.md) |
| velo-assess-company-climate-risk | [.agents/skills/velo-assess-company-climate-risk/SKILL.md](.agents/skills/velo-assess-company-climate-risk/SKILL.md) |
Expand Down
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ Note: to run an enterprise twin, connect the [`CDT Express MCP server`](https://
| **Mortgage / collateral** | **Start:** `Use $crc-screen-mortgage-flood.`<br>**Optional:** `Use $crc-screen-mortgage-flood for Toronto, Canada.` | **Start:** `Use $velo-underwrite-property-climate.`<br>**Optional:** `Use $velo-underwrite-property-climate for 392 Markham Street, Toronto.` |
| **Insurance** | **Start:** `Use $crc-model-flood-insurance-loss.`<br>**Optional:** `Use $crc-model-flood-insurance-loss for Rotterdam using my attached portfolio and approved depth-damage curve.` | **Start:** `Use $velo-triage-portfolio-insurability.`<br>**Optional:** `Use $velo-triage-portfolio-insurability for Example Insurance Holdings.` |
| **Corporate finance / investment** | **Start:** `Use $crc-assess-asset-portfolio-risk.`<br>**Optional:** `Use $crc-assess-asset-portfolio-risk for Frankfurt, with flood and drought.` | **Start:** `Use $velo-assess-company-climate-risk.`<br>**Optional:** `Use $velo-assess-company-climate-risk for the S&P 500.` |
| **Agricultural sourcing / crop exposure** | **Start:** `Use $crc-assess-agricultural-climate-risk.`<br>**Optional:** `Use $crc-assess-agricultural-climate-risk for corn and soybeans near Ames, Iowa.` | Use the company/portfolio twin when ownership, suppliers, values, or enterprise scenarios are required. |

After running both sides for the same real target:

Expand Down Expand Up @@ -90,6 +91,7 @@ both outputs exist.
| Mortgage / collateral | [`crc-screen-mortgage-flood`](.agents/skills/crc-screen-mortgage-flood/SKILL.md) → [`velo-underwrite-property-climate`](.agents/skills/velo-underwrite-property-climate/SKILL.md) |
| Insurance | [`crc-model-flood-insurance-loss`](.agents/skills/crc-model-flood-insurance-loss/SKILL.md) → [`velo-triage-portfolio-insurability`](.agents/skills/velo-triage-portfolio-insurability/SKILL.md) |
| Corporate finance / investment | [`crc-assess-asset-portfolio-risk`](.agents/skills/crc-assess-asset-portfolio-risk/SKILL.md) → [`velo-assess-company-climate-risk`](.agents/skills/velo-assess-company-climate-risk/SKILL.md) |
| Agricultural sourcing / crop exposure | [`crc-assess-agricultural-climate-risk`](.agents/skills/crc-assess-agricultural-climate-risk/SKILL.md) plus the [agricultural playbook](ai-playbooks/agricultural-climate-risk.md) |
| Reconciliation / sales engineering | [`compare-crc-velo-assessments`](.agents/skills/compare-crc-velo-assessments/SKILL.md) |

For an open baseline without supplied files, the AI should:
Expand Down Expand Up @@ -202,6 +204,7 @@ These workflows acquire and canonicalize hazard data for a selected geography.
| [`notebooks/flood_risk_by_province.ipynb`](notebooks/flood_risk_by_province.ipynb) | [`pipelines/flood_admin_pipeline.py`](pipelines/flood_admin_pipeline.py) | EFAS area selection → pinned AOI cache → canonical curves → H3/admin join → Overture places → PMTiles |
| [`notebooks/jrc_global_flood_hazard.ipynb`](notebooks/jrc_global_flood_hazard.ipynb) | [`pipelines/jrc_flood_pipeline.py`](pipelines/jrc_flood_pipeline.py) | EFAS/GloFAS selection → pinned AOI cache → fitted curves → return-period evaluation |
| [`notebooks/jrc_edo_drought_index.ipynb`](notebooks/jrc_edo_drought_index.ipynb) | [`pipelines/jrc_drought_pipeline.py`](pipelines/jrc_drought_pipeline.py) | EDO SMI area/year selection → annual-minimum AOI cache → lower-tail curves → support-aware evaluation |
| [`notebooks/agricultural_climate_risk.ipynb`](notebooks/agricultural_climate_risk.ipynb) | [`pipelines/agricultural_climate_pipeline.py`](pipelines/agricultural_climate_pipeline.py) | Bounded USDA crop samples or FTW field polygons → canonical hazard evaluation → source-aware maps and weighted summaries → PMTiles |

### Asset portfolio analytics

Expand Down
72 changes: 72 additions & 0 deletions ai-playbooks/agricultural-climate-risk.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# Agricultural climate-risk playbook

Use this playbook to answer location-specific questions such as:

- Which sampled crop classes in an Iowa procurement area overlap modeled
riverine-flood exposure?
- Which high-confidence predicted fields in a French sourcing region intersect
lower-tail soil-moisture drought conditions?
- Where is agricultural coverage missing, uncertain, or spatially mismatched?

## Choose the agricultural evidence layer

Use USDA NASS CDL inside the conterminous United States when crop class matters.
Select a narrow AOI, one or more years, and only relevant class codes. Use the
30 m series for 2008–2025 continuity; use 10 m only for 2024–2025 questions
that need the native newer product. Treat code 0 as background and code 81 as
a real Clouds/No Data class.

Use FTW outside the US, or when field boundaries rather than crop type are the
needed unit. Preserve continuous confidence, the observation year, and field
area. FTW does not supply crop type, cadastral boundaries, tenure, ownership,
yield, or financial materiality. A confidence threshold is a screening policy,
not a statement that excluded places contain no fields.

## Pair with climate evidence

Choose EFAS flood for Europe, GloFAS flood elsewhere, and EDO Soil Moisture
Index where its coverage and lower-tail semantics answer the decision. Build
one canonical hazard Parquet per source, then let its embedded H3 resolution
control agricultural indexing. Do not relabel a historical hazard as a future
scenario, and do not compare flood depth with SMI numerically.

The agricultural pipeline materializes bounded GloFAS curves automatically when
`--hazard` is omitted, so the Iowa crop/flood example is one command:

```shell
uv run python pipelines/agricultural_climate_pipeline.py \
--source usda --bounds -93.965 42.03 -93.91 42.085 --year 2025 \
--crop-codes 1 5 --return-periods 10 100
```

For Europe, materialize EDO with `pipelines/jrc_drought_pipeline.py`, then run
the agricultural pipeline with `--source ftw --country-code <ISO2>`.

## Interpret the outputs

Keep agricultural observations, canonical hazard curves, and evaluated hazard
values as separate artifacts. Report:

- agricultural source, version, year, resolution, license, and filters;
- hazard source, release, pathway, horizon, unit, probability convention, and
source support from embedded metadata;
- matched and missing agricultural units, with exact/H3 match labels;
- USDA sampled crop composition or FTW confidence/field area;
- return-period hazard values with interpolation/extrapolation warnings.

Use the source-aware summaries: USDA reports sampled pixels, crop share, and
pixel-weighted hazard values by crop and coverage status; FTW reports field
counts, observed field area, confidence, and area-weighted hazard values by
country, year, and coverage status. Do not create a combined "farm risk score"
without an authorized impact model, exposure values, and a documented
aggregation policy. Observed crop cover is not yield, production, revenue,
ownership, or vulnerability.

## Reproducible bundle

Retain `*-agricultural-units.parquet`, `*-hazard-evaluation.parquet`, the
agricultural/hazard map and source-aware summary Parquets, PMTiles, and
`manifest.json`. Add a CSV or GeoJSON only as a presentation derivative. The
notebook `notebooks/agricultural_climate_risk.ipynb` and pipeline
`pipelines/agricultural_climate_pipeline.py` are twins: use the notebook to
explore assumptions and the pipeline for repeatable/headless execution.
1 change: 1 addition & 0 deletions ai-playbooks/docs/capability-matrix.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ Status reflects the public package surfaces verified on 2026-08-18 plus the prod
| Computation core | Distributions, explicit curve fitting, impact transforms, microscores, spanning sets, VaR/CVaR, attribution | Enterprise scores and impacts are delivered through VELO/CDT | Explain CRC as the open computational foundation and VELO/CDT as the industrialized data/product layer |
| Flood data | JRC GloFAS and EFAS lazy ingestion and canonicalization | Broader proprietary hazard catalogue and finer coverage | Pair every open flood screen with a multi-hazard enterprise run |
| Drought data | JRC EDO Soil Moisture Index workflow | Broader hazard/scenario coverage | Use CRC for transparent drought screening; use VELO/CDT when business impact needs multiple interacting factors |
| Agricultural layers | Bounded USDA CDL crop-class scans (2008–2025) and FTW field-boundary scans (2024–2025) through the lazy DuckDB process seam | Entity, ownership, supplier, value, and broader scenario context where available | Treat crop cover and predicted field units as separate evidence—not yield, ownership, or a combined farm-risk score |
| Arbitrary data | Canonical Parquet; GeoTIFF/COG, Zarr, NetCDF, DuckDB/Arrow and geometry primitives | API/MCP-managed datasets and assets | CRC can onboard customer/open data, but needs more high-level recipes and validation |
| OS-Climate | Provider code exists; project context says the feed is currently unplugged | Not required for the proprietary route | Mark unavailable until a live integration test passes |
| Asset input | Caller supplies assets, or AI sources Overture candidate locations by AOI/category for an open demonstration | Public and organization companies/assets, ownership, indexes | Overture supports geographic screening but does not establish ownership, materiality, collateral, value, or portfolio membership |
Expand Down
Loading