I’m cheap. And I use HubSpot. Those two occasionally conflict what I do to get around that is I use some of the developer features to create HubSpot utilities to do some simple data cleanup. Any sufficiently complex CRM will need this from time to time. I use mine for business and for politics.
I find the Associations object in HubSpot intellectually interesting, but inpractice, annoying. In my view, everything about a Contact object should be on the Contact record. So, what the intelligence function will do is often look at the email domain and create an Association. But it does this while leaving the company name on the Contact blank. I wanted a simple bulk way to fix this. And usually when I look at problems like this, I reach for Python. This time was no different.
Full Disclosure: I did use Google Gemini 3 Pro in Visual Studio Code to code this. I don’t think this was vibe code because I gave it enough specific instructions about how to code Python. I think the standard definition of vibecoding is someone who doesn’t know the technology, and I was telling Google Gemini how I like my “f” statements to appear, for example. If you think it’s vibe coding, drop a comment below.
HubSpot APIs
You have to be careful, because there are two separate models for building and coding around HubSpot. They have something which they call “legacy apps” which is essentially making rest API calls to pull data from various objects. The name legacy is a bit disturbing because it means it’ll go away. I’m not sure that’s a good thing.
They have a second model which they built around Projects, and uses Node.js. The principal purpose of this is to build extensions inside the UI and the HubSpot app itself. But it does give you a rather byzantine way of getting an API key, so that your applications are broken out by project. Intellectually, I like the project model, but as an operational metaphor, and its basic usage, I think it stinks. Too complicated. I’ll use it, but oy.
That said, here’s the code. If you want me to build you something, contact me here.
