Firstly, mea culpa
Well, well, well…here I am definitely not almost a year after my last post! I acknowledge the content sin I have committed and I come prepared to offer recompense in the form of juicy behind the scenes details of what I’ve been cooking up while cheating on you internet strangers with my family the past year. Since we last swapped silicon sagas, I’ve bid adieu to the horn honks and clearly inferior pizza of NYC (Chicago square cut thin crust pizza is where the real pizza happens, none of that deep dish tourist shit) and decamped for the tropical tranquility of Medellin, Colombia. I uprooted the wife, the cat, and our adorable, destructive 18-month-old tornado, strapped on our digital nomad boots, and said goodbye to the concrete jungle.

So let’s just get this out of the way right now… “Why go all Narcos on us, Ceej?”
Well, first of all, that’s “Don Ceej” to you.
Secondly, tranquilo, you Netflix junkie. It’s not all drug cartels and mustachioed sicarios (I’ve yet to see a single cartel or mustachioed sicario, 14/10 would continue to not do so). Medellin’s a mesh of lush greenery, vibrant culture and most importantly beautiful weather all year round. And when I say all year round I mean it is quite literally called the “City of Eternal Spring” because the temperature is pretty much the same all the time….always. This sounds great at face value, but in actuality: 1) it has been the hottest year on record in Medellin and consistently 10-15 degrees hotter than normal average since we got here (thanks climate change, you dick) 2) IT FEELS LIKE TIME IS A FLAT CIRCLE. Living my whole life in the Midwest and East Coast of the US, my body is pre-programmed to accept that the sky will be gray and depressing 6 months of the year, and that leaves changing colors means winter is coming. Do you know how fucking weird it is for the weather to never change? Seasons aren’t a thing. It’s just summer all the time always. Time crawls to a complete stop. I can’t tell if I’ve been here 6 months or 6 years. All I know is that I love it here, except for the whole time vortex thing. Time vortexes fucking suck. So anyways, BillingBot or whatever am I right?

BuildIT 2023 Speaking Engagement – Thanks to HaloPSA
At some point in the summer of 2023 HaloPSA reached out and asked me to speak on their behalf at BuildIT 2023 in Orlando. Something tells me if they had ever read this blog they probably wouldn’t have asked, but I’m glad they did and I hopefully didn’t embarrass them too badly. Out of morbid curiosity I did ask at the beginning of my talk if anyone even knew who I was. One beautiful soul raised his hand and proudly exclaimed that he had read every word I have ever written on this website. This shout out is for you, superfan. Your check is in the mail, please don’t forget to sign and return the NDA.

The title of my talk was Automation Vs AI and I got to showcase a few case studies of some cool shit I’ve built for HaloPSA. On prominent display were both BillingBot and OrderBot. Since that talk BillingBot has gone into full production release and is now available, and OrderBot is hot on its trail. Hopefully they invite me back this year.

“Did you just plug your product? Doesn’t it say ‘no ads, no sponsors, no bullshit’ on literally every page?”
Listen, it’s SaaS apps or OnlyFans for me and there is not exactly an abundance of people lining up to pay for the latter. If we’re going to develop and release modernized alternatives to all the tooling in the industry that the folks over at the Big-K ruin just by buying, subscriptions and investments are going to have to fund those initiatives. I will never take money or gifts from any entity to advertise or sponsor content on this website, but I will shamelessly self promote the things I have built until my last dying breath because I trust them to deliver and not make me look like a dick.
We’ve funded the development of BillingBot for the last several years on the back of our Pro Services and Managed Services revenue. We’ve priced it to be a value and we’ve committed to an Ethical Software Guarantee. We’re proud of the product we’ve developed, and we’re proud of the direction development continues to take. Most of all, we’re proud of our development team. They’re absolute rockstars and deserve more praise than we can give them.
We have a hefty roadmap for BillingBot , with many new features already delivered and many more on the way. The OrderBot procurement platform for HaloPSA is on deck next. We’re going to bring real time pricing and availability, electronic ordering, tracking & shipping, and all the other quoting and procurement functionality that MSPs want and need directly into HaloPSA via our middleware platform. We also have some extremely exciting (and extremely secret) AI tooling in development that is going to reshape the way you run your helpdesk in HaloPSA. More on that later this summer.
Really though, it is not you who I am trying to shake down for subscription revenue. Let’s not pretend that this entire article isn’t a thinly veiled attempt at courting investment capital. We did the easy part: we built the platform and we brought it to release after a grueling 18 months. Now marketing it, expanding the team to rapidly add features and value for our users, and taking on new initiatives are the hard part ahead. All of the private equity and venture capital firms who fund SaaS companies always say on their websites how they’re looking for the “thought leaders” and “unique personalities” and “industry experts with passion and ideas willing to break the mold.” Well, rich SaaS sugar daddies, I have frequently been described as a “unique personality”, are you going to mail a check or do you prefer to send me a wire?
But seriously, if you have money and you want to invest in a company that designs tooling MSPs actually want and need, we are actively seeking investors to help us expand the war effort.
OK, so…what even is BillingBot?
You may be wondering, “What is BillingBot, anyway? And why should I care? Is BillingBot in the room with us right now?” You’d be right to ask. After all, the world is awash with SaaS billing tools – I see you, Gradient, no need to raise your hand – and it seems like a new one pops up every few months. But here’s the thing. BillingBot is not just ‘another’ tool. It’s RoboCop patrolling the wild streets of HaloPSA billing, delivering justice in the form of immaculate invoices.
Anyway, enough with all these – at times bizarre – metaphors. Let’s clear the fog of sarcasm and dive into the nitty-gritty. BillingBot is a C# .NET 8 Blazor WebAssembly SaaS application that is designed with one key objective in mind – to automate MSP billing of 3rd party distributor invoices from vendors like Pax8, Twilio, Ingram Micro, D&H, and others directly into HaloPSA. That includes managing the lifecycle of products in HaloPSA and your accounting integration like Xero or QBO, among a myriad of other things.
You’re thinking to yourself, “Another billing automation application? Why not just punch myself in the face?” You’re right to react that way, and I don’t think we should rule out punching yourself in the face. However, there are some key differences:
| Features | Competition | BillingBot |
|---|---|---|
| Billing Automation for CSP Licensing like Pax8 | ✓ | ✓ |
| One Flat Cost – All Integrations – No Customer Limit | ✗ | ✓ |
| Customizable Azure Consumption Billing | ✗ | ✓ |
| Automatic Billing Actions and Customizable Invoicing Preferences | ✗ | ✓ |
| Cross bill individual lines or entire clients permanently or include/exclude individual lines or companies | ✗ | ✓ |
| Accounting Integration Aware (Xero, QBO) | ✗ | ✓ |
| Automatic HaloPSA Product Lifecycle Management | ✗ | ✓ |
| Able to target existing invoices, create new invoices, or attach to recurring invoices | ✗ | ✓ |
| Backup/Restore Invoices or Recurring Invoices to any point in time | ✗ | ✓ |
| Integrated with HaloPSA | ✓ | ✓ |
What problems does BillingBot solve?
In the seemingly straightforward world of SaaS billing, counting isn’t as simple as it appears. Despite all the technology and automations at play in the modern techscape, simple arithmetic remains the bane of our existence—just a bit more complex.
Imagine the scenario: HaloPSA imports subscription quantities from Pax8 or Ingram or Sherweb – whoever you use – on the daily to ensure things are fresh and relevant. This counting based on subscription quantity is great when you just need to count how many of something existed at a point in time – like user quantities. However to bill things like SaaS licensing from Pax8, counting is actually useless. Primarily because if your Halo integrator sync runs overnight and the subscription quantities change after midnight but were actually changed the previous workday, your pro-rate calculation is guaranteed to be skewed by at least one day. Secondarily, because counting is fundamentally useless to the invoicing process on things that bill in fractional amounts….like pro-rates or partials or arrears or whatever your CSP calls them.
Prorating, in a nutshell, is the process of calculating a cost based on usage rather than a flat fee. Instead of being required to pay the full amount for a service, regardless of how much they’ve used, customers are only charged for their specific consumption. Prorating translates to cost-effective billing but it is far from simple; it is a complex process that can complicate your pricing structure.
So how does this complicate things? Well, the core of the issue is the inherent variability of usage. Unlike static or fixed billing models, prorating is dynamically tied to user activity or in our case…license quantities. Maybe a new user starts using services on the 13th of the month, then gets fired on the 23rd of the next month. The prorated bill needs to accurately reflect that span of time and usage. Rather than simply tallying up the total users, you’re dealing with a moving target.
And that’s where Halo’s built-in counting system starts to falter. Halo works well with fixed whole quantities that are billed without proration, running into problems when usage fluctuates. Perhaps everything seems fine at the beginning of the month but by the end of the month, the counts are off, prorates are wrong, and the accounts are a mess. Many MSPs have put their blind faith in this system for a long time and never bothered to reconcile their PSA invoices to their distributor invoices. In fact, I know of one partner who left over $150k on the table in a one year period of time by doing this…just in partials and arrears. This doesn’t even get to the point of Azure consumption billing – which cannot be done natively in HaloPSA right now (but is coming in the future I’m told).
June – November 2021 – Invoice Bootstrapper is born


Let’s delve into the backstory of BillingBot and the arduous path it took to become a reliable solution for MSP billing complexities. We retread to June 2021 – a simpler time where PowerShell was my tool of choice for waging war against the challenges of MSP…anything. When all you have is a hammer, everything looks like a nail. After many late nights, countless cups of coffee, and a wrestling match with bugs, I emerged with Invoice Bootstrapper. The very first embryonic version of BillingBot.
Invoice Bootstrapper was a PowerShell GUI tool, crafted to process Pax8 invoices into HaloPSA. If you visualize the beleaguered billing team, struggling under the avalanche of relentless invoices, you’d understand the significance of having a tool that could automate most of their workload. Their relief? Immeasurable.
Bootstrapper was much more than a tool. It served as a testament to the transformative power of automation, problem-solving with a dash of audacity. It directly challenged the issues I previously discussed, alleviating them with a direct, no-nonsense approach. I was really proud of what I had created, and I still am. Bootstrapper really sparked my passion for this kind of stuff. It solidly laid the groundwork for the evolution of BillingBot. A practical, reliable solution to our billing woes was born from this iteration.
December 2021 – November 2022 – OrderBot comes to life
Beginning a new journey can be somewhat petrifying, right? Especially when you have to abandon your fortress of familiarity (PowerShell and Azure Runbooks, in my case) and venture into the realms of the unknown. As our calendars flipped to December 2021, I found myself irresistibly drawn towards the aura of bridging the great divide: between my comfort-zone of PowerShell and the beckoning allure of C# Blazor WebAssembly that lay ahead.
With the critical task of Pax8 invoicing fixed for now, we turned our aspirations toward a new horizon, OrderBot. Quite reflective of its function in its name, OrderBot was designed to seamlessly streamline the nitty-gritty of tracking, shipping, and reconciling third-party distributor orders – particularly for hardware.
Because desktop apps are so last decade, OrderBot needed to be a web-based application. The only problem here was that I really hate doing web design. JavaScript and PHP? Miss me with that shit. All of the popular frontend frameworks require JavaScript to some extent, which meant that React and Angular were probably not it for us. At the same time, we wanted to remain a Microsoft stack from top to bottom, which means our options were MVC and Blazor. Blazor is the newest Microsoft framework for web app development and comes in three flavors – Blazor Server, Blazor Hybrid (brand new in .NET 8.0), and Blazor WebAssembly (WASM). The important advantage with Blazor is that it allows you to build the front and back end in C#. The frontend components are C# with HTML and CSS, and the back end is C#, too. An entirely .NET solution from front to back with a modern architecture compatible with Azure deployment.
Blazor Server operates by handling user interactions over a SignalR connection, with the UI logic running on the server. This approach minimizes the download size since the client only needs to handle UI rendering, but it can introduce latency due to the constant communication between the client and server. Blazor WebAssembly (WASM), on the other hand, runs the entire application directly in the browser using WebAssembly, allowing for offline capabilities and a snappier user experience, though it requires a larger initial download and more browser resources. Blazor Hybrid combines elements of both, enabling developers to create applications that can run parts of their code on the client-side for responsiveness, while still leveraging server-side processing for heavier tasks, offering a balanced approach for complex applications.
After considering the pros and cons of different Blazor flavors, we decided to go with Blazor Server for OrderBot and the initial incarnation of BillingBot. This allowed us to leverage the power of C# on both the frontend and backend, while keeping the download size small and avoiding compatibility issues with older browsers. However, as we continued to develop and improve our applications, we realized that Blazor Server had some limitations in terms of scalability, performance, and user experience. That’s why we eventually migrated to Blazor WebAssembly for the current version of BillingBot, which is much faster and better architected using a WebAPI backend. Blazor WebAssembly enabled us to run our UI logic directly in the browser, reducing latency and server load, while still benefiting from the productivity and elegance of C#. This was a major improvement that paved the way for more features and enhancements in our web applications.

December 2022 – TechPulse Pro Services is established
The onset of December 2022 marked a significant milestone for TechPulse Pro Services. We were commissioned with the humbling responsibility of acting as one of the official HaloPSA onboarding partners.
This opportunity presented us with an exclusive authority in tackling systematic issues within MSP’s processes. We extended our contribution beyond just onboarding and started offering customization solutions to partners using HaloPSA where we develop custom integrations or processes inside the platform that are bespoke to the needs of that entity.
As we engaged with various MSPs, one trend became clear: they all faced the daunting task of dealing with Pax8 invoicing. This problem was as prevalent as it was persistent, experienced by nearly every provider we on-boarded.
It was evident that we were in a unique position to address this issue and enhance the MSPs’ experience. With this realization, the idea of BillingBot was born—a simple and ingenious solution to a complex problem. The wheels were starting to turn for our next move.
April 2023 – Arrival of the Time Pushers
Ever heard the saying, “Rome wasn’t built in a day, but they were laying bricks every hour”? Software is kind of like that except somehow the bricks are conceptually not yet formed and you’re building invisible walls. By April of 2023 we had made the difficult decision between which product we would bring to market first – OrderBot or BillingBot. Based on the name of the article you can probably guess which we chose.
By April 2023 we were gearing up for a potential leap towards our vision for BillingBot—except we had one hitch: we needed more cooks in the kitchen. While I had developed the original single tenant tools for our internal use, I was not qualified to be the sole developer to bring a multitenant application to market. I am lucky enough to know what I don’t know sometimes. Since we are no strangers to outsourcing, we decided to look for a development shop that could help us realize BillingBot.
We interviewed dozens of development firms and found out quickly that there are not many Blazor experts in the world, as it is a relatively new framework. Finally, we found and settled on a group from Eastern Europe. And by that, I mean they told us they were from Eastern Europe then after we signed the contract, we learned they were Russians who had fled to Kazakhstan to avoid fighting Putin’s war in Ukraine. With all the bad press going on at the time I don’t really blame them for splitting that hair, and I am married to a Russian immigrant who helped us close the communication gaps between teams. The primary draw of this firm was that they had been around a VERY long time and had all the different disciplines in house. Need UI/UX to draw you up a new interface? They have that. Need QA/QI testing? They have a department for that too.
Unfortunately, “Jack of all Trades, Master of None” is a statement grounded in truth. Our comrades had enough red tape to make an entirely new Iron Curtain. The matchless efficiency we were expecting turned out to be a multi-month circus of endlessly stalling code deployment, squashing invisible bugs, and debunking the myth of progress. Our project wasn’t stuck in the mud, it was being buried in quicksand.
To their credit, the team did manage to create a beautiful interface for BillingBot, with sleek design and intuitive navigation. It looked like a product that could impress any potential customer. However, looks can be deceiving, and beauty is only skin deep. The interface was slow, convoluted, and buggy, often crashing or freezing without warning. Users had to wait for several seconds for each page to load, and sometimes the data would not show up at all. The code was a mess, with poor documentation, inconsistent naming, and redundant functions. The team had apparently used a lot of shortcuts and workarounds to make the interface look good, but they had sacrificed quality and reliability in the process.
We were not happy with the performance of Blazor server for this application. Blazor server relies on a persistent connection between the browser and the server, which makes it vulnerable to network latency and bandwidth limitations. It also requires a lot of server resources to handle multiple concurrent users, which increases the hosting costs and reduces the scalability. We had hoped that Blazor server would provide us with a fast and easy way to build a modern web app with C#, but we soon realized that it was not suitable for our needs.
I had basically made a fully functional single tenant Blazor server app for our internal use, and I expected the team to be able to convert it to a multi tenant app with minimal changes. However, they struggled deeply with this task, and ended up rewriting most of the code from scratch. They claimed that they had to do this because of the complexity and specificity of our business logic, but I suspected that they just wanted to bill us more hours. After months of delays and disappointments, we still did not have a product that we could launch with confidence. We were not happy and did not feel content putting out something half baked.

June 2023 – February 2024 – TechPulse LATAM Takes Over

As they kept working on the project, I looked for another developer to hire and manage ourselves. Being a Spanish speaker, I wanted a developer in South America, hoping to find someone with more expertise and less red tape. I put up an ad on a freelance platform, explaining the project and the skills we required. I got many replies, but one of them stood out. His name was William, and he was from Colombia. He had a portfolio of amazing web apps made with Blazor WASM, the client-side version of Blazor. He said he could do a complete rewrite of our platform to Blazor WASM, and that he could do it fast. I didn’t know it then, but he would turn out to be the best thing that ever happened to BillingBot.
I decided to give William a chance and hired him on a trial basis. I was amazed by his enthusiasm, professionalism and skill. He quickly grasped the idea of our platform and started working on the Blazor WASM rewrite. He communicated with me daily, showing me his progress and asking for feedback. He also taught me a lot about Blazor WASM, how it differed from Blazor Server, and how to optimize it for performance and security.
William and I became friends as we worked together. We shared our stories, our passions, and our goals. He told me about his life in Bogota, his family, and his experiences developing software for all sorts of neat projects. I taught him about our business model, our billing struggles, and my vision for BillingBot. I felt like I had found a true partner in crime.
February 2024 – BillingBot Official Release
In about five or six months, we completed the rewrite of the platform. We switched from Blazor Server to Blazor WASM and created a backend WebAPI to handle the data and logic. We used a full Microsoft stack as we set out to do. We redesigned the UI, using Tailwind and Syncfusion components, and improved the UX, using animations, notifications, and tooltips. We tested the platform extensively, using automated and manual methods, and fixed any bugs or issues. We deployed the platform to a staging environment and invited some beta testers to try it out.
The results were astonishing. The platform was fast, responsive, and reliable. It loaded in seconds and ran smoothly on any device or browser. It handled hundreds of concurrent users and transactions without breaking a sweat. It was secure, protecting the data and privacy of our customers and their clients. It was beautiful, with a modern and elegant design that impressed everyone. It was easy to use, with intuitive and helpful features that made billing a breeze. It was everything we wanted, and more.
We were thrilled, and so were our beta testers. They loved the new platform and gave us rave reviews. They said it was the best billing solution they had ever seen, and that they couldn’t wait to use it for their business. They also gave us some suggestions for improvement, which we gladly accepted and implemented. We were ready to launch our platform to the world, and we couldn’t have done it without William.
Conclusion
The journey from a concept sparked by necessity to the triumphant launch of BillingBot has been nothing short of an odyssey. Reflecting on the past year, it’s clear that while the road was fraught with challenges, unexpected detours, and learning curves steep enough to test the resolve of even the most seasoned adventurers, the destination proved worth every step. My voyage from the bustling streets of NYC to the eternal spring of Medellin, and through the dense, often perplexing jungle of software development, has been a tale of transformation, growth, and the relentless pursuit of innovation.
As “Don Ceej,” I’ve navigated the turbulent waters of change, from adopting a digital nomad lifestyle with my family to spearheading the development of a groundbreaking billing solution. The adventure has been marked by milestones both personal and professional, including speaking engagements, unexpected alliances, and the forging of new friendships and partnerships that have enriched the journey beyond measure.
BillingBot, with its robust features and ethical software guarantee, stands as a testament to what can be achieved when vision meets determination, powered by a team of rockstars who believe in pushing boundaries. Our success is not just measured by the launch of a product but by the impact it promises to make on the MSP landscape, offering a much-needed solution to a complex problem.
Looking ahead, the road stretches out with endless possibilities. With the unwavering support of our community, the brilliance of minds like William’s, and the continued commitment to innovation, we stand on the brink of exploring new horizons. Our adventure into the realms of AI tooling hints at a future where the complexities of helpdesk management are not just simplified but revolutionized.
As we peer into the future, it’s not without a sense of anticipation for what lies ahead. With our sights set on expansion, driven by the quest for investors who share our vision, the journey is far from over. It’s an ongoing saga of innovation, challenge, and discovery, with each chapter promising new opportunities to reshape the industry and leave an indelible mark on the digital landscape.
So, to our readers, supporters, and prospective partners, stay tuned. The road ahead is bright with the promise of innovation, and together, there’s no limit to the heights we can reach. The adventure continues, and you’re invited to join us on this exciting journey into the unknown, where the only constant is change and the potential for greatness is boundless.

