I've been doing modeling work for a Bay Area school district, thru a friend's consultancy. The school district has a portfolio of PV systems. Like most PV-system owners... they're in the dark on how the systems are performing vs. anticipated — both with PV production and electric-bill offset. I'm replicating actual historical electric bills, to establish a ground-truth baseline. ...Then calculating what the bills would be without PV. On top of that, I'll project how much more they'd save with fixed / replaced inverters. Etc.
The model is replicating most bills within 0.1%. If a $3K bill is off by more than a few dollars and I'm lacking restraint... I'm a dog with a bone figuring it out. At this point, many of the discrepancies come down to quirks in PG&E / CCA billing (e.g. PG&E prorates across rate-plan versions within a billing period but the CCA just uses the day-1 rate-plan version (a CCA rep told me that the latter was at the direction of PG&E)).
In this school district's PG&E account, the different electric-bill pages for the different meters for a year of service are strewn across ~25 ~110-page PDF files. A particular page for a particular meter for a particular billing period could be anywhere within those PDFs. Up until the last few months, the PDFs don't include a searchable text layer.
It seems that the PG&E billing system is a rat's nest. Maybe this is inevitable for a large incumbent utility.
My model is set up to accomodate however many TOU windows, seasons, and rate-plan versions per billing period (without modification). Excel's dynamic-array / spilled-formula feature makes this possible. The model eats 70,000+ interval-data quantities and calculates 99.9%-accurate bills for 12 billing periods in under 10 seconds (on an 8-year-old budget laptop) (nerd flex right here). Formulas are multi-line and readable, with variable names (thanks to the LET function). Because it's in Excel, the calculations / structure is very visual and navigable... it's easy to hone in on discrepancies.
(~10 years ago, I went deep into Genability's unbundled rate-plan APIs. Their structure was legit and that was an insightful experience. (Genability was acquired by Arcadia)).
This is all without code... just spreadsheet. Excel is a deeply awesome and powerful calculation engine. At some point, I can put the files on a Microsoft server and input / output programatically (Microsoft Graph).
I'm stoked (and relieved) to finally be earning income thru my homegrown Excel framework ("cave"). I look forward to finishing a major VBA-code refactor and reconnecting that to the spreadsheet side. ...So I can move faster and enjoy the work more. But that needs to wait. (This blog post was written in / published thru an earlier cave version (before I started the refactor).)
BTW: Excel is an island of rad. ...In a sea of bloated Microsoft software / UX garbage. ...Where Microsoft the company relentlessly tries to dominate my entire computer experience with their shitty new products. Someday... I'd LOVE to port cave out of Excel, into its own spreadsheet application on Linux. (I added this paragraph after, once again, spending 20 minutes trying to get past a hanging MS Azure sign-in page...finally, somehow, stumbling into my Azure account.)
BTW 2: Claude for Excel is amazing. It's my pair programmer in Excel. (Claude Code is amazing too, for work outside Excel.)
This isn't a feeble early pitch to the PV industry to subscribe to upcoming Mike software. I think the vast majority of PV-install companies are happy in the "within-20%-is-fine" camp.
Emotional drive for me behind this project is around helping PV-system owners better understand their situation and their options. ...Whether or not that exposes that they've been sold a bill of goods by a fly-by-night PV-install company (and the lessor behind it) and its "CLOSE THE DEAL OR DIE" outside sales rep who will jump into crypto the second that the TPO ITC is gone.
...It makes sense to focus first on non-residential... that's where manual diligence work is justified (automation is a work in progress).
The immediate priority right now is to not let my consultancy-friend down and to start earning sorely-needed big-boy income.
"I fight for me." — Ivan Drago.
I really appreciate that you read this blog post.
COPY-PASTE FOOTER STUFF:
Join (or leave) my once-a-month email-newsletter list here.
This blog and AI: I use AI all the time, to understand things better. But these blog posts are 100% written by Mike (for better or worse).