Inspiration
As a university student, I have to think carefully about almost every expense. When I see an electricity bill, I think about how many meals, working hours, or other necessities that money represents.
The problem is that electricity bills tell us how much we owe, but they do not clearly explain why the bill is high, what we can realistically do about it, or whether an energy-saving upgrade is actually worth the cost. Most energy-saving advice is also too general. It may tell people to replace appliances or buy more efficient devices, but it rarely considers whether a student, renter, or lower-income household can afford those recommendations.
I wanted to create something that I would genuinely use myself. Instead of only showing: Your electricity bill is $178.43.
WattWise explains: This bill represents approximately 12.7 hours of your working life.
It then creates an energy-saving plan based on the amount of money the user can realistically afford to spend.
This project is also personally meaningful to me because my dream is to work at Bloomberg. I admire how Bloomberg combines technology, finance, and data to help people make better decisions.
Because of that, the Bloomberg challenge was a must-join competition for me. I saw it as an opportunity to challenge myself, build something related to financial decision-making, and take a small step closer to the career opportunity I dream about.
What it does
WattWise transforms a photo of an electricity bill into a personalized financial and energy-saving plan.
The user:
- Uploads or photographs an electricity bill.
- Enters their hourly wage.
- Selects the amount they can afford to spend.
- Answers a few basic questions about their household.
- Receives an affordable energy-saving plan.
Gemini reads the bill and extracts information such as the electricity usage, monthly cost, and billing period.
WattWise then converts the monthly bill into hours of work:
$$ \text{Labor Hours} = \frac{\text{Monthly Electricity Cost}} {\text{Hourly Wage}} $$
For example, if the electricity bill is $178.43 and the user earns $14 per hour:
$$ \frac{178.43}{14} \approx 12.7 \text{ hours} $$
This means the user worked approximately 12.7 hours just to pay for electricity that month.
WattWise then evaluates different energy-saving actions and selects a combination that stays within the user’s budget.
For the sample household, WattWise produces the following plan:
- Monthly bill: $178.43
- Available budget: $60
- Selected upgrades: $55
- Estimated monthly savings: $26.82
- Working time recovered: approximately 1.9 hours per month
- Break-even point: approximately three months
- Estimated annual CO₂ reduction: approximately 1,720 pounds
The payback period is calculated using:
$$ \text{Payback Period} = \frac{\text{Upfront Cost}} {\text{Monthly Savings}} $$
The application also generates a seven-day action plan, displays a 12-month break-even curve, and updates the recommendation whenever the user changes their budget.
Even if the user has a budget of $0, WattWise still recommends free actions that can begin saving money immediately.
How we built it
I built WattWise using:
- Next.js
- React
- TypeScript
- Gemini 2.5 Flash
- Structured JSON validation
- A deterministic financial calculation engine
- A budget-constrained optimizer
- Automated invariant testing
- Vercel
The system is divided into two main layers.
Gemini bill extraction
Gemini uses multimodal image understanding to analyze the uploaded electricity bill.
It extracts information such as:
- Monthly electricity cost
- Electricity consumption in kWh
- Billing period
- Utility information
- Whether the image appears to contain a readable electricity bill
The extracted result is converted into structured JSON and validated before it is used by the rest of the application.
WattWise also displays the uploaded bill beside the extracted information. This allows the user to compare the original image with the result instead of blindly trusting the AI.
Deterministic financial engine
Gemini does not perform the important financial calculations.
Instead, the code calculates:
- Labor hours
- Monthly savings
- Projected electricity costs
- Upgrade costs
- Payback periods
- The 12-month break-even curve
- Energy reduction
- CO₂ impact
This follows one important rule:
The AI may read and explain the numbers, but it cannot invent them.
Gemini receives only the validated results produced by the calculation engine. It then converts those results into a simple seven-day implementation plan.
Budget-constrained optimizer
WattWise evaluates possible energy-saving actions and selects the strongest combination that fits in the user’s budget.
The optimizer considers:
- Upfront cost
- Estimated monthly savings
- Payback period
- Whether the user rents or owns the home
- Whether the household uses air conditioning
- Whether two actions would double-count the same savings
When the user moves the budget slider, the selected actions, savings, charts, labor hours, and action plan update automatically.
Offline demonstration mode
Hackathon demonstrations can fail because of unstable Wi-Fi, API limits, or model availability.
To make WattWise reliable, I created a fully offline sample-bill mode. The financial engine, optimizer, charts, savings plan, and seven-day plan can still be demonstrated even when Gemini is unavailable.
Challenges we ran into
Making AI-generated results trustworthy
The biggest challenge was deciding how much responsibility to give the AI.
It would have been easier to ask Gemini to read the bill, calculate the savings, and produce the entire recommendation. However, that could result in unsupported or inconsistent financial numbers.
I solved this by separating probabilistic AI tasks from deterministic calculations:
- Gemini handles image understanding and natural-language explanation.
- Code handles mathematics and financial decision-making.
This made WattWise more trustworthy, explainable, and testable.
Understanding different electricity bills
Electricity bills can have very different layouts depending on the utility company or country. Uploaded images may also be:
- Blurry
- Cropped
- Rotated
- Poorly lit
- Unrelated to electricity bills
I added structured validation and a friendly rejection flow so WattWise does not pretend to understand an unreadable image. Users can upload another image or immediately use the sample bill.
Preventing unrealistic savings
Some energy-saving actions affect the same part of a household’s electricity use. Simply adding every estimated saving together could produce an unrealistic result. I had to create rules that prevent overlapping recommendations from double-counting savings. The engine also ensures that the total estimated savings can never exceed the original electricity bill.
Handling rapid budget changes
When users move the budget slider quickly, multiple plan-generation requests may overlap. A slow response from an older request could overwrite a newer result. I added a stale-response guard so only the most recent request can update the displayed plan.
Making the demo reliable
The application depends on Gemini for bill extraction, but a hackathon demonstration should not depend on perfect internet access. Building the offline sample flow required additional work, but it became one of the most valuable parts of the project. Even if the network or API fails, the core experience remains usable.
Accomplishments that we're proud of
I am proud that WattWise can transform one bill photo into a complete decision-making process: Bill photo → validated data → financial analysis → affordable actions → break-even timeline → seven-day plan
I am also proud that WattWise makes electricity costs feel more personal.
Instead of only showing the dollar savings, WattWise can say: You may recover approximately 1.9 hours of work every month.
The application includes an automated test suite with 38 invariant checks across four different household profiles. The tests verify that:
- The plan never exceeds the user’s budget.
- Savings never exceed the original bill.
- Monthly savings match the difference between the original and projected bills.
- Overlapping actions are not double-counted.
- Renter restrictions work correctly.
- Air-conditioning recommendations only appear when relevant.
- Free actions remain available at a $0 budget.
- Payback calculations match the break-even curve.
- The sample bill consistently produces the expected results.
Most importantly, I created a project that I would actually use as a student when deciding whether an energy-saving purchase is worth my limited budget.
What we learned
Building WattWise taught me that creating a useful AI product is not just about adding a chatbot or calling a model API. I learned how to use Gemini for multimodal document understanding and convert its output into validated structured data.
I also learned how to:
- Separate AI tasks from deterministic calculations
- Translate financial costs into understandable units
- Test financial logic using invariants
- Present environmental impact clearly and responsibly
The biggest lesson was that AI becomes more trustworthy when it supports a verifiable system instead of replacing one. I also learned that a focused product solving one real problem can be stronger than a larger project filled with unnecessary features.
What's next for WattWise
The next version of WattWise could include:
- Regional electricity prices
- Country-specific recommendations
- Local carbon-intensity calculations
- Multiple months of bill history
- Automatic detection of unusual energy usage
- Utility rebate and incentive discovery
- PDF electricity-bill support
- Smart-meter integration
- Savings progress tracking
- Comparisons between projected and actual savings
- Notifications when an upgrade reaches its break-even point
My long-term vision is for WattWise to become a personal energy-finance assistant.
It would not only tell people how much electricity they use. It would help them understand where their money is going, evaluate energy-saving choices as investments, and select actions they can realistically afford.
For students and households with limited budgets, the question should not only be:
** How can I use less electricity**
It should be:
** What is the smartest action I can afford today, and when will it pay me back?**
Built With
- artificial-intelligence
- automated-testing
- cleanenergy
- computer-vision
- css3
- data-visualization
- fintech
- gemini-2.5-flash
- gemini-api
- generative-ai
- google-gemini
- html5
- javascript
- json
- machine-learning
- multimodal-ai
- next.js
- node.js
- npm
- optimization-algorithms
- react
- rest-api
- serverless
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.