I Built a Bot to Try and Get Money Back From My Internet Provider

Andrew Healey on August 22, 2019

In my contract with my ISP, they gave me a range of speeds to expect but also a speed that was the guaranteed minimum. If they aren't able to keep ... [Read Full]
markdown guide

Now we need some AI to read contracts and look for sweet bits of info like this!


Automate all the things! 😊


Absolutely! But actually a contract reading AI would be fantasticly useful and I would pay for that sort of service.

This would be tremendously empowering for marginalized communities that have historically received the short end of the stick when it comes to Ts&Cs. Could potentially be a powerful tool to democratize the legaleese.

I love this angle Phil, really interesting! It's so tempting to go away and build this, if anyone has a crack I'd love to checkout your work. I could imagine you would ask the AI for positive or negative traits within a document. How could this AI become a consumer product, some sort of Phone app. Perhaps it's more of an API like Amazon lex powers poly to make "Alexa".


I'm wonder how is the minimum guaranteed and compensated when your speed test depends on a 3rd party. The only way to 100% now what is your speed is to download/upload files from your ISPs servers and that is also not 100% concrete because the network could be fine but the host not. In other words, even if you found the dips manually or automated, doesn't your ISP have the best "get out of jail" free card in the world?

I'm not trying to undermine your effort I'm just wondering how does your ISP define minimum speed.


Hi Alex, that’s a great question.

I went and scanned the terms and conditions last night and the ISP have their own private speed test for their customers. It takes longer and is presumably logged on their end.

The result of their test matches the graph’s results.

My intentions with this project is for the graph to show me if I have any issues, and at what times, so that I can go and follow up in a more official manner.

I agree that they would not accept this graph as evidence.


This was niggling at me. Thanks for clarifying, and congratulations on a very cool project.


Admirable. If I understand correctly, does your isp publish their speed test results? Which country and ISP if in may ask? Is it a national regulation?


I've thought about doing this with Fios but never followed through. I got the idea from my first IT job where we requested refunds due to outages or low bandwidth supported by a Nagios graph. Did you have any positive results from reporting the slowness to your ISP? Getting a few bucks back off of them would be a good win and worth the setup time if you expanded it to email them with each dip below minimums.


It turns out that there weren't any problems with my bandwidth so I've had no contact.

If the graph showed a pattern, I would perform any official ISP speed-tests at the now-predictable slow parts.

I like that automation idea though. Perhaps a Twitter bot!


I like it!! Twitter is usually a good way to get the fast attention of customer support reps from bigger companies!


Nice! Is it worth being more unpredictable from their perspective? I might vary the interval or even just offset it a bit to come out of phase with itself day after day (every 29 mins instead of 30, let's say), as well as stick a VPN in there to ensure the ISP is not prioritizing speed test traffic. Varying the speed test host might not be a bad idea either if you can find others.


Every 29 minutes is a great idea!

Quite a few interesting ideas here. I know that speedtest-cli accepts --list which displays a list of speedtest.net servers sorted by distance. Presumably, there are further configuration options.

There are a few ways to make this project more real-world and reliable.

Thanks for the insightful comment.


Hey Andrew, great article and great work on the tool, I'll have to get something similar setup soon! Just a couple of questions:

  1. Does this cause any dips in network speed when the test is running? I.e. do you feel the test running when you are browsing or doing other things on the internet, or is the test pretty quick to finish?
  2. Why did you opt for 30 minute intervals?

Either test doesn’t affect browsing, I've been playing games that rely on low latency and haven’t seen any spikes. On very slow connections (~5Mbps? Perhaps the test would be felt).

I felt that any speed issues that lasted shorter than half an hour would be ‘blips’ and I wouldn’t mind missing them. I haven’t put too much thought into the 30 minute timing interval.

Thanks for your questions! 😊


Interesting, do the UK ISPs consider third party data valid for the discount claims? I know ATT, Comcast and TW have a similar scheme in the US, but you have to provide results using the speed test mechanism on their website or built in to the router/gateway.

Either way, very cool project, thanks for sharing :)


I mentioned this in another comment, that the aim of this project is to serve as a kind of ‘bandwidth canary’ so that more official complaint steps can be taken.

I thought about automating the process with just my ISP but wanted to provide a more general tool 😊



Inspiring post, i have Raspberry Pi lying in my home. Going to implement this project. I also live in UK but which ISP provides this discount deal, from my experience i haven't heard about ISP offering discounts if the speed limit isn't consistent. Would love to get some discount since my internet tends to be slow quiet regularly.


My ISP requires you to run their speed test in order to be eligible for the discount. But this project might tell you at which times to run it.

My graph tends to dip in the afternoon until morning.

Let me know if you have any issues with the project! 😁


This is the best thing I've read all day.


I know what I am doing saturday! :]


Very! Right down to the nice engineer who hooked up our line.

Here in the UK, ISPs tend to be quite customer-oriented (in my experience).


Great! I'm writing my own in NodeJS.
I'll post my results here.


Thank you @healycodes, very inspiring! 🚀.

Here is the result, it's enhanced with a telegram bot, and send relevant notifications about changes in data points.
Bandwidth Checker and Logger built with NodeJS


This is so cool! thanks for sharing


Whoa this is interesting, gonna do this sooner or later


Idk if this will help you, but I use this CLI tool written in Go on Linux regularly. It is small and really convenient! github.com/ddo/fast/releases


I’ll check it out! Thanks for sharing it Vincent 👍🏻


Cool!! Nice idea for a side project this weekend. Thanks for sharing...


in my country , they will tell you in aggressive way ,How you can debunk our Service ???

Code of Conduct Report abuse