Why it matters
Unexpected utility catch-up bills can be financially stressful. According to consumer group Which?, the UK Energy Ombudsman received 3,218 back-billing disputes in 2024 (about 3% of all complaints). While advice articles and template letters exist online (such as from Citizens Advice and Which?), calculating exact day-by-day pro-rata split amounts by hand across regulatory lookback cut-off dates can be difficult when someone receives a large bill.
Who it's for
BillRight is made for everyday consumers, tenants, and small business owners who receive historical energy catch-up bills and want a clear, code-calculated check against regulatory rules in the UK, Australia, California, and Texas.
Core Principle: "Money math is done by code, not by AI"
LLMs can make mistakes with dates and numbers. In utility billing disputes, inaccurate figures cause confusion. BillRight uses a simple separation:
- Code does the math: Calendar day counting and daily pro-rata apportionments are calculated by deterministic JavaScript code. AI does not do the arithmetic.
- AI reads the documents: Google Gemini Vision reads statement dates and amounts, with a visible "Read by AI, please verify" badge so the user can inspect and edit every field.
- Official References: Relevant rules (such as Ofgem SLC 21BA, NERR Rule 30, and PG&E Rule 17.1) are referenced alongside sources retrieved via Tavily. For Texas retail electric providers, limits under §25.480(e) must be verified with the PUCT.
What it does
- Document Reading: Reads dates and line items from bills or meter photos, allowing full manual editing.
- Rule Check: Checks periods against regional limits (UK 12 months, Australia 9 months, California 3 months, Texas 6 months).
- Timeline: Displays an SVG timeline showing permitted and disputable periods and the barrier cut-off date.
- Apportionment Table: Itemizes days and pro-rata amounts calculated by code.
- Draft Dispute Packet: Produces a draft dispute letter and a draft PDF packet for the user to review before contacting their supplier.
- Suggested Next Steps: Outlines a suggested timeline (sending notice, waiting 14 days for a reply, and contacting an independent ombudsman after 8 weeks).
How it was built
I built BillRight as an electrical engineering student using the Devpost Learn Skill Pack (1-start to 6-ship):
- Backend: Node.js, Express.
- Frontend: HTML5, vanilla CSS with light/dark theme toggle, SVG timeline.
- AI & Tools: Google Gemini Vision for document reading, deterministic code for math, Tavily for source retrieval, and PDFKit for draft PDF generation.
- Planning Docs:
scope.md,prd.md,spec.md, andchecklist.mdare in the/devpostfolder of the repo.
Challenges
Handling date arithmetic, leap years, and regional exceptions like Victoria (which has its own code and is blocked with a clear notice). Another challenge was managing Gemini free-tier rate limits during testing, so I added fallback models and built-in letter templates.
What I learned
The Devpost Skill Pack taught me the importance of planning before writing code. Most importantly, I learned how to separate responsibilities: using AI for unstructured text and vision, and relying on pure code for math.
Future Work
- Dual fuel splitting (gas vs electric).
- Supplier API inboxes.
- Multi-language dispute notices.
- Ombudsman case tracking.
Built With
- css3
- devpostskills
- express.js
- googlegemini
- html5
- javascript
- node.js
- pdfkit
Log in or sign up for Devpost to join the conversation.