Skip to main content
Back to Projects
Python · CCS · Decision-Support — Author & Developer · 2026

CO₂ Storage Screening Dashboard

A transparent, engineering-oriented decision-support tool for the preliminary screening of geological CO₂ storage sites. It implements a four-component, fully explainable scoring framework derived from published engineering standards (ISO 27914, IPCC SRCCS, NETL Best Practices).

Python 3.12+PydanticStreamlitFastAPIPlotlyMIT License

Scoring Framework

Each candidate site is scored on three engineering components and then penalised by the quality of the underlying data. Containment is weighted highest because, in CCS, leakage risk dominates project viability.

30%
Storage Capacity

Pore volume, effective thickness, and saturation efficiency aggregated from sparse early-stage data.

30%
Injectivity

Permeability, net-to-gross, and pressure-rate behaviour bounded by published engineering ranges.

40%
Containment Security

Seal integrity, structural setting, and induced-seismicity proxies — weighted highest for risk.

Data-Confidence Penalty

Score is multiplicatively penalised when key inputs are missing or low-quality, so weak data never masquerades as a strong site.

Hard-Stop Criteria

Any of the following disqualifies a candidate regardless of its composite score — the tool never reports a high-scoring site that violates a physical or regulatory threshold.

ParameterThresholdRationale
Depth< 800 mCO₂ supercritical threshold (IPCC SRCCS)
Porosity< 3%Below practical storage threshold
Permeability< 0.5 mDInjection becomes impractical
Fault proximity< 200 mContainment / induced-seismicity risk

Highlights

Four scoring engines

Capacity (30%), Injectivity (30%), Containment (40%), with a multiplicative Data-Confidence penalty.

Hard-stop overrides

Disqualifying thresholds override the composite score regardless of other strengths.

Fully traceable

Every emitted number maps to a YAML config file — no hard-coded engineering values anywhere in the codebase.

Uncertainty quantified

Monte Carlo propagation of input uncertainty plus first-order (tornado) sensitivity analysis on every candidate.

Three interfaces

Streamlit dashboard for exploration, FastAPI REST API for integration, and a Python API for scripting.

Tested & deterministic

Tests for determinism, monotonicity, immutability, and hard-stop correctness — CI with ruff and mypy strict.

Tech Stack

LayerTechnologies
CorePython 3.12+, Pydantic, PyYAML
ScoringFour-component framework (Capacity, Injectivity, Containment, Confidence) with hard-stops
UncertaintyMonte Carlo propagation, first-order tornado sensitivity
InterfacesStreamlit dashboard, FastAPI REST API, Python API
ReportingJSON, Excel, PDF outputs of ranked portfolios
Qualitypytest, ruff, mypy --strict, GitHub Actions CI
LicenseMIT

View source code, documentation, and configs on GitHub

MIT licensed. Scoring weights and thresholds derived from ISO 27914, IPCC SRCCS, and NETL Best Practices — all values externalised in YAML.