尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Independent decision engine for California electricity customers: reproduces real utility bills within $2 from your own Green Button interval data, then answers rate-switch and NEM 3.0 solar/battery questions with stated uncertainty.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Independent home-energy decision engine for California IOU customers. You bring your
own Green Button interval data; the engine answers, in numbers you can check against
your actual bills, which rate schedule is cheapest and whether solar/battery pays back
under NEM 3.0. See CLAUDE.md for the design invariants and
ROADMAP.md for milestones.
▶ Try it with your own data → — drop in
your PG&E or SDG&E Green Button export and see when you actually use electricity. The real
Python parsers run in your browser via WebAssembly, so the file never leaves your computer.查看完整 README ↗Reproduces a household's real California utility bills from its own meter data, then re-bills that usage under every plan it could be on to find the cheapest one.
Try it with your own data · Methodology
The site's worked example: the case-study household's plan ranking, as the browser tool shows it.
| Browser (site) | Command line | |
|---|---|---|
| Read a PG&E or SDG&E Green Button file and show when the household uses power | Yes, for any file. The real Python parsers run in the page via WebAssembly, so the file never leaves your computer. | Yes |
| Rank every eligible rate plan in dollars (rate optimizer) | Only for households the tariff data describes: PG&E, baseline territory T, all-electric, with 3CE or PG&E as the generation supplier. Everyone else gets the load analysis and the specific reason no dollar figure is shown. The "worked example" button shows a precomputed ranking. | Yes, scripts/rate_optimizer.py |
| Solar and battery payback under NEM 3.0 | No | Yes, scripts/nem3_report.py. Runs end to end, but on an illustrative synthetic load until a real solar household's data is available. |
| Line-by-line comparison against real bills | No | Yes, scripts/reconcile_report.py. Needs the household's own data in data/. |
Every dollar figure downstream is only as good as the bill engine's ability to reproduce real utility bills from real interval data. Target: ±$2/month vs. the actual bill. This table is regenerated from the golden-bill regression suite.
| Utility | Schedule | Bill period | Actual $ | Modeled $ | Δ $ | Within ±$2 |
|---|---|---|---|---|---|---|
| PG&E | E-TOU-C + 3CE | 2025-08-02 → 2025-08-25 | 70.57 | 70.73 | +0.16 | ✅ |
| PG&E | E-TOU-C + 3CE | 2025-08-26 → 2025-09-24 | 107.52 | 107.74 | +0.22 | ✅ |
| PG&E | E-TOU-C + 3CE | 2025-09-25 → 2025-10-26 | 49.11 | 49.32 | +0.21 | ✅ |
| PG&E | E-TOU-C + 3CE | 2025-10-27 → 2025-11-24 | 82.08 | 82.10 | +0.02 | ✅ |
| PG&E | E-TOU-C + 3CE | 2025-11-25 → 2025-12-26 | 73.77 | 73.87 | +0.10 | ✅ |
| PG&E | E-TOU-C + 3CE | 2025-12-27 → 2026-01-27 | 156.88 | 157.09 | +0.21 | ✅ |
| PG&E | E-TOU-C + 3CE | 2026-01-28 → 2026-02-26 | 168.75 | 168.93 | +0.18 | ✅ |
| PG&E | E-TOU-C + 3CE | 2026-02-27 → 2026-03-29 | 93.86 | 93.97 | +0.11 | ✅ |
| PG&E | E-TOU-C + 3CE | 2026-03-30 → 2026-04-27 | 90.05 | 90.12 | +0.07 | ✅ |
| PG&E | E-TOU-C + 3CE | 2026-04-28 → 2026-05-27 | 112.20 | 112.32 | +0.12 | ✅ |
No feature that produces a dollar figure ships until the row(s) above are green.
Read the methodology and case study: how the engine computes a bill, what the residual above is made of, one household worked end to end, and a full list of what is still assumed or unverified. The same writeup as a standalone page, with the residual chart, is docs/methodology.html, served at camerongordonn.github.io/energy-advisor/methodology.html.
Milestones are defined in ROADMAP.md; a milestone counts as done only when its definition of done is demonstrated, not merely implemented. Design rules are in CLAUDE.md.
| Milestone | State |
|---|---|
| M0: PG&E bill reconciliation | Done. All 11 real statements reproduced within ±$2 (worst +$0.22), from the household's own hourly interval data. The table above is the artifact. |
| M1: SDG&E engine + CCA overlay | Engine built, blocked on data. SDG&E TOU-DR1 / TOU-DR2 / EV-TOU-5 delivery specs, the TOU-DR1 bundled generation layer, climate-zone baseline allowances and the non-bypassable charges all ship, and re-sum to SDG&E's own published total rates on every cell. Done means reproducing real SDG&E statements, and none are available yet. |
| M2: Rate optimizer | Done on the PG&E household. One command ranks every eligible schedule with the community supplier on or off, and reports the annual difference, a component-level explanation, a sensitivity note and an assumption audit. |
| M3: NEM 3.0 solar + battery | Engine complete, blocked on data. Per-vintage export-rate tables with the nine-year lock-in, Net Billing Tariff settlement, the non-bypassable import floor, PVWatts production, greedy and LP battery dispatch, payback, and Monte Carlo ranges. Done needs one real household with solar export data; a synthetic load is not a substitute. |
| M4: Public methodology + case study | Done. docs/METHODOLOGY.md and the live page. The case study is my own household, so it carries my name rather than being anonymized. |
| M5: First external users | Not started. |
One more finding generic calculators miss: on Schedule EV-TOU-5 roughly 45% of the super-off-peak delivery charge is non-bypassable (against about 6.5% in other windows), because the schedule discounts distribution but not the non-bypassable charges.
conda env create -f environment.yml # first time
conda activate energy-advisor
pytest # the test suite
ruff check . && ruff format --check . # lint / format
The suite has 1,831 tests. With the household's data present all 1,831 pass (2026-10-23). On a
clean clone, and in CI, the 37 golden-bill tests skip because the
interval data is never committed, and the other 1,794 pass. CI also checks that the browser
bundle matches src/ and renders the tool.
Reports (each needs PYTHONPATH=src, since only pytest picks up src/ automatically):
PYTHONPATH=src python scripts/reconcile_report.py # line-item bill comparison
PYTHONPATH=src python scripts/rate_optimizer.py # rate ranking, sensitivity, assumption audit
PYTHONPATH=src python scripts/nem3_report.py # solar + battery under the Net Billing Tariff
Package layout lives under src/ (greenbutton, tariffs, nem3, scenarios,
uncertainty, report). Real Green Button exports and bills live in data/ and
tests/golden_bills/raw/, both git-ignored, so nothing personally identifiable is ever
committed. The session logs and agent notes from building it are kept in a private
repository; code comments that cite dev/ or .claude/ refer to those.
Copyright © 2026 Cameron Gordon. Licensed under the GNU Affero General Public License v3.0.
AGPL rather than MIT deliberately: the tariff engine is the substance of this project, and the AGPL's network clause means anyone who runs a modified version as a hosted service has to publish their source. Reading, learning from, running and contributing to it are all unrestricted.
Tariff rates, Avoided Cost Calculator tables and utility tariff sheets referenced here are public regulatory filings and are not covered by this license. Each is cited in the spec file that uses it. Nothing here is financial advice; it is analysis of published tariffs against a household's own metered data.
| PG&E | E-TOU-C + 3CE | 2026-05-28 → 2026-06-25 | 79.47 | 79.62 | +0.15 | ✅ |