# Blaine, WA — Data Source Reconnaissance

## Purpose
Catalog all publicly available data sources for the City of Blaine, WA, assess parsing difficulty, and document strategies for automated ingestion. This is the first city in a planned cross-city comparison project.

## Key Identifiers
- **FIPS Place Code:** 5306505 (state 53, place 06505)
- **Whatcom County FIPS:** 53073
- **Population:** ~6,100 (2024 ACS)
- **City website platform:** CivicPlus (common across small WA cities — patterns may transfer)

---

## Tier 1: Structured / API-Accessible

### Census / ACS Data
- **Census API:** `api.census.gov/data/2023/acs/acs5?get=...&for=place:06505&in=state:53`
- ACS 5-year available at place level (1-year requires 65k+ pop, so not available for Blaine)
- Key tables: B01003 (population), B19013 (median income), B25077 (median home value), B25001 (housing units), DP02-DP05 (profiles)
- **Census Reporter** (`censusreporter.org/profiles/16000US5306505-blaine-wa/`) — excellent pre-formatted summary with comparison context. Parses cleanly to markdown.
- **Data USA** (`datausa.io/profile/geo/blaine-wa/`) — richer visualizations, employment by industry, commute data. Parses well.
- **Data Commons** (`datacommons.org/place/geoId/5306505`) — Google's aggregator. Has its own API.
- **Parsing verdict:** ✅ Clean. Census API returns JSON. Census Reporter and Data USA parse well via web_fetch.

### Washington State Auditor — Financial Intelligence Tool (FIT)
- **URL:** `portal.sao.wa.gov/FIT/`
- Has a "Data Extracts" page that should offer downloadable financial data
- **Problem:** The FIT tool is a JavaScript SPA — web_fetch returns empty. Need to either find direct download links or use the underlying API.
- Audit reports (PDF) are available per city at `portal.sao.wa.gov/ReportSearch`
- Financial statements cover revenues, expenditures, fund balances, debt — standardized via BARS manual
- **Key advantage:** Same format across ALL WA cities/counties. This is the backbone for financial comparison.
- **Parsing verdict:** ⚠️ FIT web app won't scrape directly. Audit report PDFs are available but need PDF parsing. Look for CSV/Excel export options or underlying REST API.

### Whatcom County GIS / Parcel Data
- **Tax Parcel Viewer:** ArcGIS web app (`arcgis.com/apps/webappviewer/...`)
- **Data downloads:** Whatcom County offers free shapefiles for Planning & Development data
- Includes parcels, zoning, critical areas, shoreline jurisdiction
- Assessor data (property values, land use codes) available by contacting department
- **Parsing verdict:** ⚠️ Shapefiles downloadable but need GIS libraries (GeoPandas, Fiona). ArcGIS viewer is JavaScript — can't scrape directly, but may have REST endpoints.

---

## Tier 2: Semi-Structured / Scrapable

### City of Blaine Website (ci.blaine.wa.us)

#### Council Agendas
- **URL pattern:** `ci.blaine.wa.us/calendar.aspx?EID={event_id}`
- Calendar has list of all boards/commissions: City Council, Planning Commission, Public Works Advisory, Arts Commission, Tourism Advisory, Civil Service, etc.
- **Parsing verdict:** ✅ Excellent! Full agenda text renders in HTML. Clean markdown extraction. Includes consent agenda items with dollar amounts, action items, department reports.
- **Example data found (March 23, 2026 meeting):** Bills of $222K, police department resolution, street sweeping contract, downtown streetscape elements, pavement condition assessment study session, emergency storm water tank usage.

#### Council Minutes
- Available in Document Center as PDFs
- **URL pattern:** `ci.blaine.wa.us/DocumentCenter/View/{doc_id}/...`
- Minutes back to at least 2019 found
- **Parsing verdict:** ⚠️ PDF format. Text-based PDFs (not scanned images), so extractable. But formatting varies.

#### Budget Documents
- Budget PDFs linked from `ci.blaine.wa.us/530/Budgets`
- Available: 2023, 2024, 2025, 2026 adopted budgets
- 2026 budget: $44.3M total, $10M general fund
- **Key detail:** Budget ordinances (e.g., Ordinance 25-3039) are at `DocumentCenter/View/{id}`
- **Parsing verdict:** ⚠️ PDF. Large documents. Need targeted extraction of fund summaries, revenue/expense tables.

#### Document Library
- Separate system at `cobdoc.cityofblaine.com:49388/WebLink8/Browse.aspx`
- Also accessible at port 9399 for public documents
- Contains agendas, minutes, public comment, planning documents
- **Parsing verdict:** ⚠️ Hyland OnBase WebLink system — would need to spider the document tree.

#### Municipal Code
- Hosted on eCode360 (`ecode360.com/BL4358`)
- Previously on CodePublishing (`codepublishing.com/WA/Blaine/`)
- **Parsing verdict:** ⚠️ eCode360 returned 403 on fetch. May need browser-like headers or API access. CodePublishing URLs redirect.

#### Comprehensive Plan & Policy
- "Blaine 2036" comprehensive plan
- Housing Action Plan
- Shoreline Master Program
- Wharf District Master Plan
- Semiahmoo Resort Master Plan
- Currently doing comprehensive zoning code overhaul (RFP issued Feb 2026)
- **Parsing verdict:** ⚠️ Mix of PDFs and web pages. High-value documents for understanding city direction.

---

## Tier 3: Unstructured / Narrative-Rich

### The Northern Light Newspaper
- **URL:** `thenorthernlight.com`
- Weekly newspaper serving Blaine, Birch Bay, Semiahmoo since 1995
- Published by Point Roberts Press, now under new ownership (pivotal moment article March 2026)
- **Article index:** `thenorthernlight.com/news/?page_size=20&category_id=192`
- **9,616 articles** in archive!
- **URL pattern:** `thenorthernlight.com/stories/{slug},{article_id}`
- Sections: News, Sports, Letters to Editor, Police Reports, Obituaries, Legals
- **Parsing verdict:** ✅ Excellent! Articles parse cleanly to markdown with full text, byline, date. The news index paginates. Article IDs are sequential integers, making systematic crawling straightforward.

#### Current Issues Found (from headlines/articles):
1. **Electric fund reserves depleting** — 82% drawdown from $3.2M to $637K (BPA rate pressure)
2. **Downtown zoning Wild West** — 1-year moratorium lifting building height restrictions
3. **Plover ferry** — sunk cost debate, future uncertain beyond 2026
4. **Westman Marine harbor cleanup** — Dept of Ecology environmental remediation
5. **Fire levy lid lift** — North Whatcom Fire & Rescue proposal
6. **Senior Center governance** — $300K investment decision, board elections contested
7. **Library upgrades** — WCLS prioritizing Blaine Public Library
8. **Port of Bellingham contracts** — two contracts just under $100K threshold (avoiding formal bidding)
9. **Blaine Police Department** — council passed resolution of support
10. **Birch Bay ZIP code** — resident pushing to separate from Blaine mailing address
11. **Comprehensive zoning code rewrite** — RFP issued, code described as internally inconsistent and decades overdue

### Letters to the Editor
- `thenorthernlight.com/letters-to-the-editor/`
- Public sentiment goldmine
- **Parsing verdict:** ✅ Same clean article format

### Police Reports
- `thenorthernlight.com/police-reports/`
- Weekly police blotter
- **Parsing verdict:** ✅ Standard article format

### Legal Notices
- `thenorthernlight.com/legals/`
- Public hearings, ordinances, land use actions
- **Parsing verdict:** ✅ Standard article format

---

## Tier 4: State/Regional Context

### Washington State Open Data Portal
- `data.wa.gov` — building permits, transportation, environmental data
- Socrata-based, has API
- **Parsing verdict:** ✅ API-accessible

### State Auditor Audit Reports
- Available since 2005 as PDFs
- Searchable by government name, type, keyword, date range
- Include findings of problems — comparing findings across cities would be valuable
- **Parsing verdict:** ⚠️ PDF. But structured enough to extract findings sections.

### Ballotpedia
- Election data, council members, ballot measures
- Limited for cities under 100K population
- **Parsing verdict:** ✅ Web-scrapable

### Whatcom Council of Governments (WCOG)
- Regional transportation planning
- Environmental justice mapping (GIS)
- Blaine is a member jurisdiction
- **Parsing verdict:** ⚠️ Mix of GIS apps and PDFs

---

## Recommended Ingestion Strategy for Claude Code

### Phase 1: Grab the easy structured stuff
1. **Census API** — Write a Python script to pull ACS 5-year data for Blaine (and later other cities) using place FIPS codes. Store as JSON/SQLite.
2. **Census Reporter** — Fetch the profile page, parse key metrics into structured records.
3. **Data USA** — Same approach.

### Phase 2: Crawl The Northern Light
1. Paginate through `thenorthernlight.com/news/?page_size=20&category_id=192&page={n}`
2. For each article: fetch full text, extract title, date, author, body
3. Store raw articles in SQLite
4. Use Claude to generate per-article summaries: topic tags, entities mentioned, sentiment, key decisions/issues
5. This is the highest-value unstructured source — 9,600+ articles spanning decades

### Phase 3: Council agendas & minutes
1. Spider the CivicPlus calendar for all council meeting events
2. Fetch each agenda page (renders well as HTML)
3. Download minute PDFs from Document Center
4. Extract: meeting date, agenda items, votes, dollar amounts, contracts awarded, staff reports

### Phase 4: Budget & financial documents
1. Download budget PDFs from Document Center links
2. Extract fund summaries, revenue sources, expenditure categories
3. Cross-reference with State Auditor FIT data if CSV export is available

### Phase 5: GIS & property data
1. Download Whatcom County shapefiles
2. Filter to Blaine city boundary
3. Count parcels by land use, zoning district
4. Calculate developed vs. vacant land

---

## Data Model Sketch (v0.1)

```
cities
  id, name, state, fips_place, fips_county, population, area_sq_mi

city_demographics  
  city_id, year, source, metric_name, metric_value
  -- (population, median_age, median_income, housing_units, etc.)

city_finances
  city_id, year, fund_name, revenue, expenditure, ending_balance

council_meetings
  city_id, date, meeting_type, agenda_url, minutes_url

agenda_items
  meeting_id, item_number, item_type, title, description, dollar_amount, vote_result

news_articles
  city_id, source, date, title, author, url, body_text

article_extracts
  article_id, topics[], entities[], sentiment, key_decisions[], summary

issues
  city_id, issue_name, category, first_mentioned, last_mentioned, status, summary

infrastructure_assets
  city_id, asset_type, description, condition, age, replacement_cost
```

### The "notable" field
Per the fishing expedition philosophy: every extraction should include a freetext `notable` field for things that seem interesting but don't fit categories. After processing many records, review what's accumulating in `notable` to discover new schema columns.

---

## Key Findings from This Recon

1. **The Northern Light is the crown jewel.** 9,600+ articles, clean parsing, sequential IDs, rich narrative content about what the city is actually doing and fighting about. This is where groundware-relevant signal lives.

2. **CivicPlus is everywhere.** Blaine's website platform is used by hundreds of small cities. The URL patterns, calendar structure, and Document Center patterns should transfer to other cities with minimal adaptation.

3. **The State Auditor FIT data is the financial Rosetta Stone** — same format across all WA local governments. If we can crack the data export, cross-city financial comparison is automatic.

4. **Census data is the easy baseline.** FIPS place code 5306505. ACS 5-year API works at place level. Multiple aggregator sites (Census Reporter, Data USA, Data Commons) pre-digest it.

5. **The city is at an interesting inflection point.** Electric reserves nearly depleted, downtown zoning in flux, comprehensive code rewrite underway, new police leadership, infrastructure assessment just starting. A city in transition — exactly the kind of moment where patterns become visible.
