Wprdc
by NeverSight
Query Pittsburgh's Western PA Regional Data Center (WPRDC) — 363+ datasets covering property assessments, air quality, 311 requests, jail census, overdose data, permits, violations, and more. Run SQL queries against live tables without downloading. Use when user asks about Pittsburgh/Allegheny County public data, property lookups, civic data, or regional statistics.
Skill Details
name: wprdc description: Query Pittsburgh's Western PA Regional Data Center (WPRDC) — 363+ datasets covering property assessments, air quality, 311 requests, jail census, overdose data, permits, violations, and more. Run SQL queries against live tables without downloading. Use when user asks about Pittsburgh/Allegheny County public data, property lookups, civic data, or regional statistics. version: 1.1.0 homepage: https://data.wprdc.org metadata: emoji: 📊 tags: - pittsburgh - civic-data - wprdc - ckan - property - public-data - allegheny-county
WPRDC - Pittsburgh Regional Data Center
Query 363+ datasets from the Western PA Regional Data Center. Property assessments, air quality, 311 requests, jail census, overdose data, parking, permits, violations — all queryable via SQL without downloading.
Quick Start
# Search for datasets
<skill>/wprdc.py search "property sales"
<skill>/wprdc.py search "air quality" --org allegheny-county
# Get dataset info
<skill>/wprdc.py info property-assessments
# List resources (tables) in a dataset
<skill>/wprdc.py resources property-assessments
# See field schema
<skill>/wprdc.py fields assessments
# SQL query (the killer feature!)
<skill>/wprdc.py query 'SELECT "PARID", "PROPERTYADDRESS" FROM @assessments WHERE "PROPERTYCITY"='"'"'PITTSBURGH'"'"' LIMIT 5'
# Quick parcel lookup
<skill>/wprdc.py parcel 0028F00194000000
# Download a dataset
<skill>/wprdc.py download property-assessments --format csv
Commands
search <query>
Search for datasets by keyword.
Options:
--org <name>— Filter by organization (e.g.,allegheny-county,city-of-pittsburgh)--group <name>— Filter by topic group (e.g.,health,housing-properties)--limit <n>— Max results (default: 10)--json— Raw JSON output
info <dataset>
Get detailed information about a dataset, including description, resources, and metadata.
resources <dataset>
List all resources (tables/files) in a dataset with their IDs and queryability status.
fields <resource>
Show the field schema for a resource. Use shortcut names or resource IDs.
query <sql>
Execute SQL queries against live data. This is the power feature!
Important: Column names must be double-quoted because PostgreSQL is case-sensitive:
SELECT "PARID", "PROPERTYADDRESS" FROM @assessments WHERE "PROPERTYCITY"='PITTSBURGH' LIMIT 5
Use @shortcut notation for common tables (see Shortcuts below).
Options:
--json— Raw JSON output--table— Format as ASCII table
parcel <pin>
Quick property lookup by parcel ID. Returns address, assessments, building info, and last sale.
<skill>/wprdc.py parcel 0028F00194000000
download <dataset>
Download a resource to a file.
Options:
--resource <id|name>— Specific resource--format <csv|json|geojson>— Preferred format--output <path>— Output filename
orgs
List all organizations publishing data.
groups
List all topic groups (categories).
shortcuts
Show available query shortcuts.
Query Shortcuts
Use @shortcut in SQL queries instead of long resource IDs:
| Shortcut | Dataset |
|---|---|
@assessments |
Property Assessments (584K parcels) |
@sales |
Property Sales |
@311 |
311 Service Requests |
@permits |
PLI Permits |
@violations |
PLI Violations |
@overdoses |
Fatal Accidental Overdoses |
@jail |
Jail Daily Census |
@air-quality |
Air Quality |
@fishfry |
Fish Fry Map |
Example:
<skill>/wprdc.py query 'SELECT * FROM @overdoses WHERE "death_year"=2024 LIMIT 10'
Before Querying, Ask Yourself
-
Scope: Is this City of Pittsburgh only, or all of Allegheny County?
- PLI violations, 311, permits → City of Pittsburgh only (90 neighborhoods)
- Property assessments, overdoses, jail → All of Allegheny County (130 municipalities)
-
Freshness: When was this dataset last updated? Run
info <dataset>first. -
Fields: What columns exist? Run
fields <resource>before writing SQL. -
Size: How many records? Start with
LIMIT 10, expand once you know it works.
NEVER Do
-
NEVER use CAST(), ROUND(), AVG(), or other SQL functions — WPRDC blocks them. You'll get "Access denied: Not authorized to call function". Do aggregation client-side.
-
NEVER query without LIMIT on large tables — Assessments has 584K rows. Queries timeout. Always add
LIMIT. -
NEVER assume county-wide coverage for City datasets — PLI violations, 311, permits are City of Pittsburgh only. Aspinwall, Fox Chapel, Mt. Lebanon = separate municipalities, not in the data.
-
NEVER trust "under maintenance" datasets — County plumbing inspections, housing inspections, food facilities are currently broken. Check
infofirst. -
NEVER forget column quoting — UPPERCASE columns need double quotes (
"PARID"), lowercase don't (case_year). Wrong quoting = cryptic "column does not exist" errors. -
NEVER use wildcards on unindexed text —
LIKE '%something%'on large tables will timeout. Be specific.
Common Errors
| Error | Cause | Fix |
|---|---|---|
409 CONFLICT + "column does not exist" |
Unquoted uppercase column | Add quotes: "PARID" not PARID |
Access denied: Not authorized to call function |
Used CAST/ROUND/AVG | Remove function, process client-side |
| Timeout / no response | Query too large | Add LIMIT, narrow WHERE clause |
| Empty results | Filter mismatch | Check exact string values with a broad query first |
| "resource not found" | Wrong resource ID | Use resources <dataset> to get correct ID |
SQL Tips
-
Quote UPPERCASE column names — PostgreSQL is case-sensitive:
SELECT "PROPERTYADDRESS" FROM @assessments -- ✓ uppercase needs quotes SELECT case_year FROM @overdoses -- ✓ lowercase works without quotes -
GROUP BY works, but not aggregate functions:
SELECT "PROPERTYCITY", COUNT(*) as cnt FROM @assessments GROUP BY "PROPERTYCITY" ORDER BY cnt DESC LIMIT 10 -
Check fields first — Column names vary wildly between datasets
Coverage Map (Critical!)
| Dataset | Coverage | Municipalities |
|---|---|---|
| Property Assessments | All Allegheny County | 130 municipalities |
| Property Sales | All Allegheny County | 130 municipalities |
| Fatal Overdoses | All Allegheny County | By zip code |
| Jail Census | All Allegheny County | County facility |
| 911 Dispatches | Most of county | 111 of 130 municipalities |
| Air Quality | All Allegheny County | Monitor locations |
| PLI Violations | City of Pittsburgh ONLY | 90 neighborhoods |
| PLI Permits | City of Pittsburgh ONLY | 90 neighborhoods |
| 311 Requests | City of Pittsburgh ONLY | 90 neighborhoods |
If someone asks about Fox Chapel, Aspinwall, Mt. Lebanon, etc. → Only county-wide datasets apply. No PLI/311 data for suburbs.
Organizations & Topics
Use orgs and groups commands to explore. Major publishers:
- allegheny-county (143 datasets) — assessments, health, jail
- city-of-pittsburgh (126 datasets) — 311, permits, violations
Example Queries
# Property lookup by parcel ID
<skill>/wprdc.py parcel 0028F00194000000
# Search by address (use SQL)
<skill>/wprdc.py query 'SELECT * FROM @assessments WHERE "PROPERTYHOUSENUM"='"'"'251'"'"' AND "PROPERTYADDRESS" LIKE '"'"'%PASADENA%'"'"''
# Overdose trends by year
<skill>/wprdc.py query 'SELECT case_year, COUNT(*) as deaths FROM @overdoses GROUP BY case_year ORDER BY case_year'
# Filter by neighborhood (City of Pittsburgh only)
<skill>/wprdc.py query 'SELECT "VIOLATION", COUNT(*) FROM @violations WHERE "NEIGHBORHOOD"='"'"'Hazelwood'"'"' GROUP BY "VIOLATION" ORDER BY COUNT(*) DESC LIMIT 10'
# Cross-tab query
<skill>/wprdc.py query 'SELECT combined_od1, race, COUNT(*) FROM @overdoses GROUP BY combined_od1, race ORDER BY COUNT(*) DESC LIMIT 20'
Known Issues (as of Jan 2026)
- 311 Data stopped updating Feb 2025 — new system transition
- County Plumbing Inspections — under maintenance
- County Housing Inspections — under maintenance
- County Food Facilities — under maintenance
Always run info <dataset> to check last update date before relying on data.
Related Skills
Xlsx
Comprehensive spreadsheet creation, editing, and analysis with support for formulas, formatting, data analysis, and visualization. When Claude needs to work with spreadsheets (.xlsx, .xlsm, .csv, .tsv, etc) for: (1) Creating new spreadsheets with formulas and formatting, (2) Reading or analyzing data, (3) Modify existing spreadsheets while preserving formulas, (4) Data analysis and visualization in spreadsheets, or (5) Recalculating formulas
Clickhouse Io
ClickHouse database patterns, query optimization, analytics, and data engineering best practices for high-performance analytical workloads.
Clickhouse Io
ClickHouse database patterns, query optimization, analytics, and data engineering best practices for high-performance analytical workloads.
Analyzing Financial Statements
This skill calculates key financial ratios and metrics from financial statement data for investment analysis
Data Storytelling
Transform data into compelling narratives using visualization, context, and persuasive structure. Use when presenting analytics to stakeholders, creating data reports, or building executive presentations.
Kpi Dashboard Design
Design effective KPI dashboards with metrics selection, visualization best practices, and real-time monitoring patterns. Use when building business dashboards, selecting metrics, or designing data visualization layouts.
Dbt Transformation Patterns
Master dbt (data build tool) for analytics engineering with model organization, testing, documentation, and incremental strategies. Use when building data transformations, creating data models, or implementing analytics engineering best practices.
Sql Optimization Patterns
Master SQL query optimization, indexing strategies, and EXPLAIN analysis to dramatically improve database performance and eliminate slow queries. Use when debugging slow queries, designing database schemas, or optimizing application performance.
Anndata
This skill should be used when working with annotated data matrices in Python, particularly for single-cell genomics analysis, managing experimental measurements with metadata, or handling large-scale biological datasets. Use when tasks involve AnnData objects, h5ad files, single-cell RNA-seq data, or integration with scanpy/scverse tools.
Xlsx
Spreadsheet toolkit (.xlsx/.csv). Create/edit with formulas/formatting, analyze data, visualization, recalculate formulas, for spreadsheet processing and analysis.
