Busabase
Busabase is an open-source (MIT) database and workspace for AI agents — data, docs, skills, and apps in one place. Run it locally, self-host it inside your network, or use Busabase Cloud, and turn age
Website and analysis code for AMEND, the Archive of Massachusetts Environmental Data
DataGnuplot · PythonGitHub @nesandersOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗The Archive of Mass ENvironmental Data (AMEND) is a project to assemble and analyze data related to environmental regulation, focused on water policy in Massachusetts.
The website for the project is openamend.org.
This git repository contains code for data acquisition (see get_data/), analysis (see analysis/), and the jekyll site (see docs/).
Data is refreshed automatically every Monday at 6am UTC via two GitHub Actions workflows:
NECIR_CSO_map.py) is excluded from CI and must be run locally.If a workflow fails, a GitHub Issue is opened with a link to the failed run.
To run a full update locally:
bash update_all.sh
This script will not update ECOS budget records or the SSA wage table, which require manual data entry.
Some data sources have extended documentation covering design decisions, format quirks, and cost considerations:
Large files (SQLite database, full drinking water CSV, permit PDFs) are stored on Google Cloud Storage.
The site is hosted via GitHub Pages from the docs/ directory.
To run locally (use --host localhost so sidebar links resolve correctly in the browser):
conda env create -f amend_jekyll_env.yml
conda activate amend_jekyll
cd docs
bundle exec jekyll serve --host localhost --port 4000 --baseurl ""
For faster rebuilds while editing, add the --incremental flag to rebuild only the files that have changed:
bundle exec jekyll serve --host localhost --port 4000 --baseurl "" --incremental
Three dependency files serve different purposes:
| File | Purpose |
|---|---|
requirements-ci.txt | Pinned deps for GitHub Actions CI. Install with pip install -r requirements-ci.txt. Excludes PySTAN. Used by update-data.yml and update-charts.yml. |
amend_python_env.yml | Full conda environment for local development. Includes PySTAN, geopandas, and all optional deps. Recreate with conda env create -f amend_python_env.yml. |
pip install -r requirements-ci.txt
conda env create -f amend_python_env.yml
conda activate amend_python
The AI Analysis page lets users ask natural-language questions about the AMEND database. An AI model generates SQL, executes it client-side via sql.js, and renders interactive charts with Plotly — no data leaves your browser.
The AI Analysis page lets users ask natural-language questions about the database. The LLM generates SQL, executes it client-side via sql.js, and renders results with Plotly.
The LLM is given a rich schema description — docs/assets/db_semantic_context.txt — instead of bare CREATE TABLE statements. This file includes:
The semantic context must be regenerated whenever data sources change (new tables, renamed columns, schema changes). It is regenerated automatically by assemble_db.py on each weekly data update. To regenerate manually:
cd get_data
conda run -n amend_python python generate_semantic_context.py
When adding or changing a data source:
TABLE_DESCRIPTIONS and COLUMN_NOTES in get_data/generate_semantic_context.pygenerate_semantic_context.py to regenerate docs/assets/db_semantic_context.txtTo create an automated screen-capture demo of the Ask AMEND AI feature:
# First time: create the Playwright environment
conda env create -f environment-playwright.yml
# Record a demo with Groq (free API key)
GROQ_API_KEY=sk_... conda run -n amend_playwright python record_ai_demo.py
# Or with OpenAI
OPENAI_API_KEY=sk_... conda run -n amend_playwright python record_ai_demo.py
# Or with Google Gemini
GOOGLE_API_KEY=... conda run -n amend_playwright python record_ai_demo.py
# Specify starter question (0-8)
GROQ_API_KEY=sk_... conda run -n amend_playwright python record_ai_demo.py --question 2
# Custom output path
GROQ_API_KEY=sk_... conda run -n amend_playwright python record_ai_demo.py --output my-demo.webm
Prerequisites:
cd docs && bundle exec jekyll serve --host localhost --port 4000 --baseurl ""The script records a ~30–45 second demo showing a user asking a natural-language question, the generated SQL, and an interactive chart rendering. The API key is only held in memory during the session and is not persisted to disk. Output is saved as WebM video.
The Ask AI page stores API keys in browser localStorage (plain text, client-side). This is not cryptographically secured but keeps keys off your servers. On shared machines, any JavaScript on the page or browser extensions could access the key.
Recommendations:
F12), run localStorage.clear(), then refreshAll major providers (Groq, OpenAI, Google Gemini) allow creating limited-scope API keys.
get_ECOS_data.py)