Spaces:
Running on CPU Upgrade
Running on CPU Upgrade
| # Discovery Scripts | |
| Scripts for discovering government data sources across U.S. jurisdictions. | |
| For **meeting PDFs**, agendas, and optional contact extraction into `data/cache/scraped_meetings`, use **`comprehensive_discovery_pipeline_jurisdiction.py`** (see its module docstring for `python -m` examples). | |
| ## Comprehensive Discovery Pipeline (legacy master discovery) | |
| **Script:** `scripts/discovery/archive/comprehensive_discovery_pipeline.py` | |
| Automates discovery of data sources for all U.S. cities and counties (22,000+ jurisdictions): | |
| - Government websites | |
| - YouTube channels (with statistics) | |
| - Vimeo channels | |
| - Meeting platforms (Legistar, SuiteOne, Granicus, etc.) | |
| - Agenda portals and document systems | |
| - Social media accounts | |
| - Meeting schedules and archives | |
| **Features:** | |
| - **Wikidata Enrichment** - Automatically fills in missing data (websites, social media) from Wikidata for jurisdictions with incomplete discovery | |
| - **Incremental Mode** - Skips already-discovered jurisdictions to save time and API costs | |
| - **LocalView Integration** - Automatically includes known YouTube channels from LocalView database | |
| ### Usage | |
| **Run for all jurisdictions (incremental mode):** | |
| ```bash | |
| python scripts/discovery/archive/comprehensive_discovery_pipeline.py --all | |
| ``` | |
| **Run for specific state:** | |
| ```bash | |
| python scripts/discovery/archive/comprehensive_discovery_pipeline.py --state AL | |
| ``` | |
| **Run for the 6 in-scope oral health states (AL, GA, IN, MA, WA, WI):** | |
| ```bash | |
| # Automated script runs all 6 states sequentially with incremental mode | |
| bash scripts/discovery/discover_oral_health_states.sh | |
| ``` | |
| Or run individual states manually: | |
| ```bash | |
| python scripts/discovery/archive/comprehensive_discovery_pipeline.py --state AL | |
| python scripts/discovery/archive/comprehensive_discovery_pipeline.py --state GA | |
| python scripts/discovery/archive/comprehensive_discovery_pipeline.py --state IN | |
| python scripts/discovery/archive/comprehensive_discovery_pipeline.py --state MA | |
| python scripts/discovery/archive/comprehensive_discovery_pipeline.py --state WA | |
| python scripts/discovery/archive/comprehensive_discovery_pipeline.py --state WI | |
| ``` | |
| **Run for top N cities by population:** | |
| ```bash | |
| python scripts/discovery/archive/comprehensive_discovery_pipeline.py --top 100 | |
| ``` | |
| **Disable incremental mode (rediscover all):** | |
| ```bash | |
| python scripts/discovery/archive/comprehensive_discovery_pipeline.py --all --no-incremental | |
| ``` | |
| **Change refresh threshold (default 90 days):** | |
| ```bash | |
| python scripts/discovery/archive/comprehensive_discovery_pipeline.py --all --refresh-days 30 | |
| ``` | |
| ### Incremental Mode | |
| By default, the script runs in **incremental mode**: | |
| - Skips jurisdictions already discovered | |
| - Only re-processes jurisdictions with stale data (older than 90 days by default) | |
| - Significantly reduces API costs and processing time | |
| - Use `--no-incremental` to force rediscovery of all jurisdictions | |
| ### Wikidata Enrichment | |
| The pipeline automatically enriches incomplete discoveries using **Wikidata** (free, no API key required): | |
| **What Wikidata Provides:** | |
| - Official government website URLs | |
| - Population data | |
| - Social media accounts (Facebook, Twitter, YouTube channel IDs) | |
| **When It's Used:** | |
| - Automatically applied when primary discovery fails or is incomplete | |
| - Especially helpful for smaller jurisdictions (CDPs, small cities) | |
| - Example: "Alexandria CDP, AL" might have no direct .gov domain, but Wikidata may have its official Facebook page | |
| **Benefits:** | |
| - ✅ Completely free (no API limits) | |
| - ✅ Community-maintained (Wikipedia's structured data) | |
| - ✅ High quality for major cities | |
| - ⚠️ May have gaps for very small jurisdictions | |
| ### Options | |
| - `--state` - Filter to specific state (e.g., AL, CA, TX) | |
| - `--top N` - Limit to top N jurisdictions by population | |
| - `--all` - Process all jurisdictions (warning: 20,000+) | |
| - `--youtube-api-key` - YouTube Data API v3 key for accurate statistics | |
| - `--max-concurrent` - Maximum concurrent requests (default: 10) | |
| - `--no-incremental` - Disable incremental mode (rediscover all) | |
| - `--refresh-days` - Days before discovery is considered stale (default: 90) | |
| ### Output | |
| Discovery results are saved to: | |
| - `data/gold/jurisdictions_details.parquet` - Consolidated jurisdiction details including: | |
| - Website URLs | |
| - YouTube channel counts and data | |
| - Meeting platforms detected | |
| - Social media accounts | |
| - Discovery timestamps | |
| - Completeness scores | |
| - `data/bronze/discovered_sources/discovery_results_*.json` - Detailed JSON output | |
| - `data/bronze/discovered_sources/discovery_summary_*.csv` - Summary CSV reports | |
| ## Other Discovery Tools | |
| ### Discover Oral Health States | |
| **Script:** `discover_oral_health_states.sh` | |
| Convenience script that runs comprehensive discovery for all 6 in-scope oral health states (AL, GA, IN, MA, WA, WI) sequentially with incremental mode enabled. | |
| ```bash | |
| bash scripts/discovery/discover_oral_health_states.sh | |
| ``` | |
| ### URL Discovery Agent | |
| **Script:** `url_discovery_agent.py` | |
| Agent-based URL discovery using web search and scraping. | |
| ### Platform Detector | |
| **Script:** `platform_detector.py` | |
| Detects meeting platforms (Legistar, Granicus, etc.) from URLs. | |
| ### Batch Processor | |
| **Script:** `batch_processor.py` | |
| Batch processing for large-scale jurisdiction discovery operations. | |
| ### External URL Datasets | |
| **Script:** `external_url_datasets.py` | |
| Imports URLs from external curated datasets (City Scrapers, LocalView, etc.). | |
| ### Curated Sources | |
| **Script:** `curated_sources.py` | |
| Manages manually curated high-quality data sources. | |