govbot enables distributed data anaylsis of government updates via a friendly terminal interface. Git repos function as datasets, including the legislation of all 47 states/jurisdictions.
sh -c "$(curl -fsSL https://raw.githubusercontent.com/chihacknight/govbot/main/actions/govbot/scripts/install-nightly.sh)"govbotRunning govbot with no config file launches an interactive setup wizard that:
- Asks what data sources you want (all 47 states or specific ones)
- Guides you through creating tags for topics you care about
- Creates
govbot.yml,.gitignore, and a GitHub Actions workflow
govbotWith a govbot.yml in your directory, running govbot executes the full pipeline:
- Clones/updates legislation repositories
- Tags bills based on your tag definitions
- Generates RSS feeds in the
docs/directory
govbot clone all # download all state legislation datasets
govbot clone il ca ny # download specific states
govbot logs # stream legislative activity as JSON Lines
govbot logs | govbot tag # process and tag data
govbot build # generate RSS feeds
govbot load # load bill metadata into DuckDB
govbot delete all # remove all downloaded data
govbot update # update govbot to latest version
govbot --help # see all commands and options- Nearly all state governments
- Federal
WIP: Ideally, these scripts should be accessible via the following ways.
- CLI / Unix pipe friendliness where possible. CLI is the most portable of solutions.
- GitHub Actionable if possible
This repo is a monorepo, with actions being self contained. actions as a name is because it's what Github expects.
- Be a runnable as basic scripts in python, bash, rust, or typescript which can run as shell scripts with args.
- Have an
action.ymlfile to run as a runner, most likely in GitHub Actions. - Have a
schemasfolder that uses JSON schema to define types.- This allow other actions to import your schema for validation.
- Have
__snapshots__that contain real file/folder outputs. This serves two purposes: (1) they show expected results and (2) they can be directly used as inputs for downstream snapshot tests.- Each action manages its own snapshot rendering through a render_snapshots.sh script.
- Validation occurs via .github/validate-snapshots.yml for each specific module.
