CLEAR: Climate Policy Retrieval and Summarization Using LLMs
(WWW Companion '25)

Geographic Analysis: Climate vulnerability mapping

Policy Analysis: Document retrieval workflow

Email Feedback: Policy gap notifications

Figure: Climate Policy Navigator: Mapping Australia's Environmental Policy Data
CLEAR is a system that bridges the information gap between rural communities and local governments on climate policies through:
- Query analysis using fine-tuned Llama-3.2-3B
- Policy retrieval from authoritative government documents
- Multi-modal summarization with geospatial visualizations
- Automated feedback generation for policy gaps
Query Interpretation
We fine-tuned a Llama-3.2-3B on 330 manually annotated queries, each mapped to $L, I, T$.
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
from clear.prompt import generate_query_prompt
device = "cuda" if torch.cuda.is_available() else "cpu"
tokenizer = AutoTokenizer.from_pretrained(
"oscarwu/Llama-3.2-3B-CLEAR",
use_auth_token=token)
model = AutoModelForCausalLM.from_pretrained(
"oscarwu/Llama-3.2-3B-CLEAR",
use_auth_token=token)
model.to(device)
query = "In Oakford, WA, in the Serpentine-Jarrahdale LGA, water scarcity and extreme heat are major challenges. What programs are in place to promote water efficiency and manage climate impacts in our region?"
test_prompt = generate_query_prompt(query)
inputs = tokenizer(
test_prompt,
padding=True,
truncation=True,
max_length=1024,
return_tensors="pt"
).to(device)
outputs = model.generate(**inputs, max_new_tokens = 128, use_cache = True)
test_result = tokenizer.batch_decode(outputs)Dataset
The action delivery module processed decomposed resident queries ($L,I,T$) to generate reports utilized two source data: $S$ (ABS census, Wikipedia) and $D$ for policy documents.
- The $S$ for local government can be found db_lga.csv, and suburb data in db_suburb.csv.
For each validated LGA, we searched its official website to identify climate policy PDFs $D$. To download them, run:
uv run prepare_policy.py
# or
python prepare_policy.pyCollected Data Summary:
- LGAs (362 entries)
- Suburbs (11,276 entries)
- Policy Documents (710 entries)
Suburb Schema
| Key | Value |
|---|---|
| _id | SAL51174 |
| Area Code: 2016 | SSC51164 |
| Census URL 2016 | Census 2016 |
| Census URL 2021 | Census 2021 |
| sal_id | SAL51174 |
| Suburb | Oakford |
| Postcode | 6121 |
| State | WA |
| State Name | Western Australia |
| Type | Rural locality |
| LGA | Serpentine-Jarrahdale |
| Statistic Area | Greater Perth |
| Elevation | 22 |
| Area (sqkm) | 46.91 |
| Latitude | -32.20852 |
| Longitude | 115.92797 |
| Timezone | Australia/Perth |
| Government Level | State suburbs |
LGA Schema
| Key | Value |
|---|---|
| _id | LGA57700 |
| lga_id | LGA57700 |
| LGA | Serpentine-Jarrahdale |
| Government Level | lga |
| LGA Type | mixed |
| Government URL | Website |
| Government Email | info@sjshire.wa.gov.au |
| State Name | Western Australia |
| Census URL 2021 | Census 2021 |
| State | WA |
| Number of Policies | 3 |
Report Generation
- Generates comprehensive reports for community and policy analysis
- Provides interactive map visualizations
- Automatically generates feedback emails to LGAs
uv run main.py \
--device cuda \
--query "In Oakford, WA..." \
--gpt_model gpt-4