Hacking our Fuel Oil Bill: How I Automated Saving Money on Our Company’s Heating Bill
Earlier this year, oil prices dropped to the lowest levels since 1999, offering unique money-saving opportunities.
This is bad news for those in the oil and gas industry, but for the rest of us this was a welcome sight with low prices at the gas pump. And if you live in a cold climate you know that oil prices dictate how much you’ll pay to heat your home or office in the winter. Saving money on heating oil when you need to keep refilling the oil tank can be a challenge.
Reenhanced’s headquarters is located about an hour north of Philadelphia, Pennsylvania and is heated using an oil burning boiler. In our area there are a number of different heating oil providers and for the past few years we’ve found we can save significantly if we order our fuel oil on a “Will Call” basis. This process involves calling around to several providers to find the best price whenever we need oil and that means we have accounts with about half a dozen companies.
Seeing opportunity in the low oil price I wanted to save money by locking in the low rate while it was available. Yesterday, I started the regular Will Call process for a bulk purchase even though we don’t need fuel oil at this time.
I found that many (but not all) of the companies I called hold their pricing until later in the year, that is if they even allow a bulk purchase. After a few phone calls I was able to find a company with a price I liked and was able to pre-purchase enough fuel oil to last Reenhanced until fall of next year. Calling around to multiple places wasn’t difficult, but the only reason we’re able to take advantage of this low price is because I was smart enough to identify the dip in the market and connect it to the fact that we will be buying heating oil regardless of the price.
What if I could be instantly aware of a better price without having to remember to check?
The Oil industry moves slowly. Most companies utilize the most basic internal technology, fewer still have a CRM. Of the places I called, almost none of them posted prices on their website or offered a way to order online.
In order to automate our oil price discovery I identified that I will need the following:
- Knowledge of which companies allow pre-purchase. (Only way to find this is to call and ask.)
- Specifics on how the fuel oil pre-purchase is held. (i.e. Do we need to use the fuel oil we buy within a specific timeframe?)
- A way to know if prices are better or worse than the purchased oil we already have on hold.
The discovery of each company’s policies must be done manually. But, the good news is that once we know that a company offers a pre-purchase option it’s likely it will continue to offer a prepay program in the future. We’re one step closer to saving money on our heating oil with this step checked off the list.
The specifics of how delivery must be taken are important only so that I know how we will need to order our delivery calls. In a case where I buy fuel credits from one company, if I find another company with a cheaper price, can I buy and fulfill the cheaper fuel and still keep our existing purchase on hold? In these cases, the slow adoption of technology can let us slip through the cracks while the oil company holds our oil for potentially years.
But it’s this last part, knowing when prices are better or worse, that is ripe for automation. For this I already know that most of the companies don’t publish prices, especially for pre-purchase prices on their website. But that’s okay because I’m not looking for perfect data here. I only need some indication or “canary in the coal mine” that it might be time to call around again. If I can find just one company that publishes prices I can use that as our indicator that it might be worth making the round of phone calls again.
Thankfully, a competitive market means some companies do publish their prices in order to attract buyers. I can use this single data source as our indicator and when it triggers ‘ll manually call every company.
The company I found has not always had the best price in our Will Call history but occasionally they do. If the published price ever goes below our “Price to Beat” then I know it’s time to do price discovery on all of the local companies again.
Automation for Savings
So let’s build an automation that will automatically run every other day to extract the current published cash price. And, if it’s less than our “Price to Beat” I’ll have it kick off a series of other actions, starting with just email for now.
In order to extract the cash price from the oil company website, I built a UI Flow using the Selenium IDE. UI Flows are designed to do a part of the workflow and will pass data back for use in other steps within your flow. The UI Flow for this is relatively simple and exports just the cash price back for use in other steps in my flow.
At the scheduled time, Power Automate will reach out to the machine running the UI Flows app, run the automation and return the results for use in the rest of the flow. I happen to have a spare machine that will run this, so I’m just using that. For a workload with more requirements, you’ll probably want to setup a virtual machine that will always be on and host it in the cloud so you can run your flows from there. Email me and I can help you with any of this.
Once I have the prices extracted, I compare it to the price for the account already on file which I saved as a variable. The sole purpose here is saving money so I don’t care if the price goes up. If the price ever drops below my threshold, the flow will send me an email so I know it’s time to call all of the local companies again.
How can this be improved to save you more cash?
If oil market volatility continues, it would be trivial to expand this flow so that even the phone calls are automated. Since using UI Flows requires a CDS subscription, I could easily to build a CDS backend that tracks all of the local providers and their current pricing information. Then, I could build a simple web form or simple Excel spreadsheet that our virtual assistants would use to fill in the pricing information for each company.
As for the phone call automation, while I’m not aware of any connectors within Power Automate that do this, there are a number of options available that let you use an API to power human tasks. Something fully automated like this would be simple to integrate leaving me only to pick up the phone and place an order whenever the price gets better. I could repeat this process so that I hold enough fuel on credit to be able to pick the best prices over any number of upcoming years, saving potentially thousands for Reenhanced.
Technology today truly is amazing. It took me longer to write this post than it did to put all of the technology behind it together. If you’ve got other ways of saving money by using tools like this or if you need help automating, fill out our contact form or email me at firstname.lastname@example.org.