In this episode, Rob chats with Michele and Mathias Hansen, the married co-founders of Geocodio.
We talk about bootstrapping into a commoditized space and how they’ve grown their SaaS app from a side project to full-time over the past 6.5 years.
The topics we cover
[01:38] What is Geocodio?
[10:29] Innovating in a commoditized market
[16:07] How they defined their product roadmap
[18:06] Launching a HIPAA compliant enterprise pricing tier
Links from the show
- Show HN: Ridiculously cheap bulk geocoding
- Geocodio | Website
- Geocodio | Website
- Michele Hansen | Twitter
- Mathias Hansen | Twitter
If you enjoyed this episode, let us know by clicking the link and sharing what you learned.
If you have questions about starting or scaling a software business that you’d like for us to cover, please submit your question for an upcoming episode. We’d love to hear from you!
Michele: Thank you for having us. Mathias: Thank you.
Rob: You are the co-founders of Geocodio. Your h1 reads, hassle-free geocoding, straightforward and easy-to-use geocoding, reverse geocoding, and data matching for US and Canadian addresses. For folks who don’t know, you can enter an address or you can enter a latitude-longitude and it’ll give you back the opposite one. I’m guessing that’s probably how the service started way back in the day but at this point, you guys have added integrations to where you correct misspellings, you have US and Canadian census data, Congressional districts, state legislative districts, school districts, time zones, all that kind of stuff. I’m imagining that didn’t come on day one and you’ve built that all out over the years.
Michele: Yeah, that’s been added slowly. How we often describe it is that a computer doesn’t understand an address, it only understands the coordinates or geocodes. What we do at a very basic level is converting an address into coordinates so a computer can understand it, and coordinates into an address so a human can understand it. Our niche in the market is there’s a lot of data that is only unlocked by having the coordinates. As you mentioned time zones for example, you can only get that data if you have the coordinates. You may be using coordinates to make a map online for example, but you may not even care about maps and you may just want to know the time zone for a particular location.
Rob: That makes a lot of sense. A service like Geocodio is something that my co-founder Derrick and I when we were running Drip, we had an author who was going to go on a book tour and he was going to go to San Francisco, LA, and these various cities. He asked us, is there a way I can go into Drip and query which of my email subscribers are within 60 miles or 100-mile radius of San Francisco? Of course we would have needed either their address, or you can obviously turn an IP address into a “location”, not exact but it would probably be good enough for this purpose. We did actually look into services like this. We never want to build in that feature out but that gives folks—if you’re listening to this—one particular use case of why you may want to use a geocoding service. You guys launched it 6 ½ years ago in January of 2014 as a side project essentially on Hacker News is what I see. My assistant producer found the original Hacker News thread which was generally positive. I mean, sometimes those things go really sideways. There was a comment or two—because you were saying, hey, Geocodio, it’s aimed at developers and it’s a less expensive way to do this. Someone came in, little bit know-it-all comment of like, oh, if you use—I don’t remember what the service was—it ‘ll be this inexpensive blah-blah-blah. Pretty quickly, both of you chimed in with factual data and references of like, no, actually, we are less expensive, we don’t have restrictions on your data and you don’t have to use their maps, you can do it as you want. I thought it was a pretty elegant interaction. I’m curious, did you guys come away from that launch feeling pretty good about the reception? Mathias: There’s definitely a lot of constructive feedback in that thread but also as you said, a lot of positive comments. I think the biggest takeaway we had was, woah, we aren’t really the only people with this problem that we wanted to get solved. We didn’t realize how big the potential market would be. This really showed us that there is a potential here.
Michele: I remember we got hundreds of emails from people after that thread. I remember that day just being absolutely wild. I think that’s what everybody does when you put something in Hacker News, you send it to your friends and you’re like, hey, upvote this. Then if it gets five upvotes and you get 10 people visiting your product, you feel pretty good about it. Seeing that sit on the front page all day, it was just unbelievable. We got so much feedback from people about everything from things they wish we did to complaints about our competitors and how they were so glad to see something like this. We even had the M&A team from a major product reach out to us because they were unhappy with their geocoding. Of course, when we launched our product, it wasn’t that great. Mathias: That’s true. Full context, it was a really, really terrible product when we launched it. It was barely something we could actually use ourselves. We only use it ourselves because we just couldn’t afford anything else. It was not a very good product. The data was not high quality, high equity, things like that. We’ve had a long, long way since then but it was just so cool to see that despite a crappy prototype, there is still so much interest in this.
Michele: As you said Rob, some of those commenters pointed out that with geocoding, the accuracy of the locations is important but what really differentiates us from many other services is that people can use the data without restrictions. They’re allowed to store it in their database. There aren’t these overly cumbersome caching limitations and requirements about using it with a particular brand of map, public phasing only, more expensive pricing, if it’s private phasing only, and all of these things. Us developers ourselves, we’re like that’s annoying and nobody wants to deal with that. We don’t want to deal with that. That perspective of being the customers ourselves is something that we have carried with us the entire time.
Rob: That’s a good perspective. Obviously, if you launched into a space like that that is crowded and is commoditized, to hear that there’s that much of a reception, that you really touched on a pain point is such a good way to get out of the gate. I’m actually surprised to read then—again, I have notes from my assistant producer—that you only made $31 in your first month at the gate. I would expect with a reception like that that you would have had more people using it. Mathias: No, exactly. It was a very success in our heads actually. Our expectations were so low that our success criteria was basically if we can pay for the virtual service to run the servers, if we can pay for that, that’s a success, that’s the ideal. The fact that we made around $31 was enough to cover our $5 a month DigitalOcean instances and there was even testing. It also goes to show being on Hacker News in the frontpage for 24 hours doesn’t mean you’re on overnight success. We had a lot of work in front of us but we had so much fire power, so much enthusiasm to continue working on this. We knew that there was this something here that we can continue trading on.
Michele: Right. We were so surprised that anyone wanted to pay us that when we launched it, we had integrated Stripe. We said we would charge on the first of the following month for pay-as-you-go usage so people can just pay for whatever they needed and we would just charge them once a month. We’d integrated Stripe from the beginning but we were so surprised that anyone wanted to pay us that actually, February 1st came and we looked at each other like, oh, we didn’t actually write any of the code to charge people. We were genuinely shocked that people wanted to pay us.
Rob: I’ve been there with not having billing code, that’s such a great MVP way to do it. Four years later then, the two of you in 2018 both went full-time on the product and were able to financially afford to do that. You mentioned back in 2018 that you have passed $1 million in all-time revenue. That would have been about 4–4 ½ years span. Michele, recently on your podcast Software Social, you mentioned that top-line revenue growth to July of this year was 59% growth compared to last year. Obviously, really, really solid growth is happening. To give folks an idea of scale, you have thousands of customers and I was looking at your homepage. I’ve seen big, big customers here, Amazon, Deloitte, Cushman & Wakefield, Comcast, all that kind of stuff. So fascinating that in a space, I have already said it once but I think commoditized is the word that comes to mind when I think of geocoding data. I don’t necessarily care if I were looking for geocoding data when we worked for Drip. I cared that the company stayed in business, and that the data was accurate, and the price was reasonable, and API was easy to work with, but that was it. I didn’t care about, brand, I didn’t care about a lot of other things that one might care about when searching for a product. Given that geocoding is a volume business and it is harder to differentiate. It does not necessarily lend itself to a defensible mode. I think you guys have mentioned that you’ve done a lot of innovation. You can correct me if I’m wrong, but you’ve done most of your innovation on pricing and integrations. You want to talk a little about that?
Michele: Yeah, we sometimes say that geocoding is sort of selling wood into the software market. Everybody needs it, which creates this really wide market. Our customers are one person companies and freelance developers to huge companies and pretty much every industry. In that commodity market with limited opportunity for most, no opportunity for pricing power, it sounds like a great business to be in, doesn’t it? Where we have kind of carved out our space is really focusing on making it easy for people and that’s where the data integrations come into play where we had past experiences here, for example, if you needed to know someone’s congressional district. Let’s say that you had a Drip customer that was a charity that wanted their supporters to contact Congress about an issue that is important to them. Before Geocodio, in order to figure out which congressperson each volunteer or supporter had, first, you’d have to hit one API to get the coordinates, then you have to hit another one to get the congressional district, and then you have to hit another one to get their actual contact information. You may even have to hit another one to first get the Congressperson’s name, and then another one to get their contact email or whatever their contact form link is, and then you go off and integrate that. You’re hitting three or four different places there and that creates a lot of complications in terms of just managing the data, gathering all of that data. It’s all coming to you in different formats. They may have different terms, different pricing, different restrictions on storing the data, on using the data. Where we have found our success is in trying to eliminate steps in the process for people and making it easy to get lots of related data that’s down the line all in one place. You only have to hit one API to not only parse and standardize the addresses, but you can also add the average household income for an area, or the school districts, or other types of data that you might need for everything from real estate to insurance to simply showing a map.
Rob: That makes a lot of sense and it sounds like it’s much more useful for a customer who would want that information. I’m curious, do they have to pay more for access to it? Because I’m imagining do you have to pay for that data or are you actually going out and actively scraping to get that data? Because it seems like if there’s a cost to you, that you would almost have to pass that onto your customer. I’m thinking like feature gating, right? It’s like if you just want addresses, it’s X amount per month, but if you want congressional districts, is it an add or per check or are you able to offer it just as a one big bundle. Mathias: Yes. For additional data points, we do indeed charge additionally for those. And the biggest thing is additional data storage costs and processing costs.
Michele: With the data, one of the most important parts of our service, the cornerstones is the lack of restrictions on how people use the data. We don’t want to be standing over our customers shoulders telling them how they can and can’t use the data. What that means is that we only integrate publicly available data sources. We’ve actually had quite a few people over the years come to us wanting us to resell their data and we simply have to decline those because one of the most important pieces of our service is that you can do whatever you want with the data and that’s one of the great things about using publicly available data. Now, it may seem counterintuitive that you can charge for that, but a lot of that data is in extremely difficult to use formats that are only available if you have other sort of doorways to the data in addition to the coordinates. How we charge for that, the basic level is that we call everything a look up. For example, one address to coordinate conversion is a lookup. But then if you want to add the time zone, that’s an additional lookup. If you want to add the census identifier. For example, in your Drip example from earlier where the customer wanted to know who was in or around San Francisco and who was around Minneapolis, they could add the census identifiers, which that category of data append at something called the Metropolitan Statistical Area, which is basically the broader metro area and does that radius thing for you. All of those things count as an additional lookup. For example, if someone had a hundred addresses and they wanted five different data appends for them, that will actually increase the number of lookups, that’s actually 600 lookups.
Rob: Which is nice because you’re adding value to your customers, but you also are charging for that value. You have now differentiated yourself from other geocoding services while also essentially charging more, which is a great goal of every SaaS.
Michele: Yeah and the great thing about it is, yes, we can charge for that and also we can charge nothing for it. We have a freemium model and that means that if students or people who simply don’t have a lot of data that they’re working with, they can get that data that they might need as long as they only have 500 addresses or whatnot, they don’t actually have to pay for it. But if it’s a huge company that needs, let’s say for example household income and demographics and other pieces of data, about 300 million addresses in the country, then they will be paying a lot more.
Rob: I feel like I know the answer to this next question, but I want to ask it anyway. How did you know to do all these integrations? What prompted you to integrate time zones, school districts, state legislative congressional, legislative. Were these customer requests, or was there some other way that you figured out your product roadmap?
Michele: Yeah, we talked to our customers.
Rob: Were you proactive by going out to them? Was it a mix of people writing in requests or were you also reaching out saying what we should build next?
Michele: It was a combination. You mentioned that first hacker news thread. There is a ton of feedback on that, some of it negative, mostly positive, and we got tons of emails from people saying hey, it would be awesome if you guys could do this, or you could do that? That kind of planted the seed of talking to people and the value of talking to customers. We were also learning about the space ourselves. Neither one of us did our undergrad in geographic information systems. We very much come at this from a developer’s perspective rather than a geographers perspective. When our customers came to us early on with asks, we would always ask them oh, why do you need that? Because we genuinely didn’t know, and we also had experiences from our own work showing us the value of reducing the number of API calls or places you have to get data from. I think as I grew as a product manager myself and as we worked more in the business, really started deeply talking to customers, not just waiting for them to come to us with requests, but sitting down with them, understanding their complete process, knowing every single point along the way and what those frustrations were, and where they were spending a lot of time or a lot of money, or they had to use a vendor and they didn’t like them for some reason. All of those things contributed to an ever evolving roadmap that is informed by our customers.
Rob: Is that how you decided to build your HIPAA compliant tier or you’re pricing your HIPAA product, I guess. I bring it up because on your software social podcast, you had a really good episode talking about kind of telling the story of how you built it and then I believe no one signed up for it. But the costs of keeping it running were relatively substantial, not inconsequential, I’ll say and you kind of mothballed it for a while and then suddenly a bunch of people out of nowhere wanted to to use it. Mathias: Yeah, exactly, we kept hearing over and over again is your service HIPAA compliant? Can we use this for patient data and things like that? I remember seeing it for the first time. I was like, I don’t even know what HIPAA means, or covers, or anything like that. After hearing this one too many times and also Michele’s doing a lot of custom interviews and hearing this over and over again from customers, we decided to sit down and build out this HIPAA product. It’s probably the biggest undertaking at that time. We had to really rethink our whole product from scratch and make sure everything was secure to much higher standards than we originally built geocodio for. We really pour a lot of time and money into this and we launch it and then poof, nothing. Exactly what you fear and also kind of what you expect sometimes. Indeed since we had to set this up completely separately with separate infrastructure, there’s a lot of upfront cost to us, not just the development costs, but also the infrastructure costs of keeping this running. We basically did not have a single sign up for I don’t even know how long, and we ended up almost completely shutting down this product. But for some reason, we somehow decided to keep it alive, probably just because of all the effort we put into this. It was hard to kill it completely so we decided to keep it on for a little bit longer. Seemingly out of nowhere, we have been seeing a lot of growth on this product this year in particular, really happy that we kept it alive and we actually do a lot of things now to give it a lot of love and attention that it deserves at this point.
Michele: That launch was so hard. Mathias: Yeah.
Michele: The number one rule of bootstrapping is to always make money. We don’t have the luxury of launching something and running in the red for six months or a year. I think it was maybe only a month after we launched and we learned the hard way that the sales cycle is so much longer when you’re dealing with companies that have robust legal departments, which is the case for pretty much any organization dealing with sensitive data like that. We basically had to shut off the pay as you go version of the products, and only it sort of kept it alive on our unlimited tier, which basically we only incur the cost when we actually have a customer. We had the landing page up only for I don’t know how many months. Our sole marketing and sales channel is SEO, we don’t do any outbound sales. We continued working on the landing page a little bit. I think we were a little bit dispirited, quite frankly, though for a while. And then eventually we very, very slowly started getting customers. But I don’t think we actually really believed in it being a significant part of our business or the capability to be a significant part of our business until maybe the middle of last year and then this year really took off. Mathias: I think the big gotcha with launching that product, something we perhaps hadn’t fully understood until after we launched was Geocodio was originally a super classic, sort of low touch SaaS product, self sign up and stuff like that as Michele I mentioned we jumped into all this stuff with long sales cycles. Eventually things started picking up and we suddenly had to do enterprise sales, super high touch, which is, first of all, it’s not very scalable for us to go through the process. It’s not something that was something we were used to or have a little experience with and things like that. That was definitely an uphill battle to start with.
Michele: Yeah. For an example, earlier this year or this summer, we signed a Fortune 100 customer for that product and I started talking to them in May of last year.
Rob: That’s the thing that so many founders don’t realize is the moment you start talking procurement or POs and manual invoicing in terms of net 15 or net 30, you are talking months and months of sales cycle and you’re talking you should be charging between 10 and 100 times what you charge everyone else purely to put up with the hassle or the time and potentially legal costs because they often want custom terms that you have to sign and that instantly becomes this enterprise tier that should be way, way, way more expensive. We talk about this a lot in TinySeed in the first month or two. Most SaaS apps from people who don’t really have this experience dealing with these larger companies. Most assets are underpriced and so if you have tiers that are in, as a random app, if you have $50, $200, to $300 as most of your tiers, if a Fortune 500 or Fortune 1000 company comes in, there are going to put you through the procurement wringer. You should be charging between $30,000-$100,000 a year. It really needs to be there and you should be often charging upfront. They want to pay annual, which is a great cash influx for a bootstrapped company. In addition, a lot of the companies I see that are getting really strong traction, they have what I call this dual funnel. A low touch funnel is much like probably what geocodio was when you first launched it where you come to this low price point, people can sign up with a credit card. You don’t have to talk to them and they just go. The high touch funnel, of course, is your HIPAA tier, but having both of those is like a superpower with SaaS growth because you can get a lot of people using it on the low end and you can get that constant influx and constant kind of, I’d say slower growth perhaps if we’re landing lower priced people. But when the enterprises come through, that’s when you see the really big months of growth hit because you’re again, you should be signing this $20,000 to $30,000 to $100,000 year contract and that gives you this big bump. But if you rely solely on the large ones, of course, there are great businesses built on the enterprise sales. If you rely solely on them, then you tend to have a lot of time invested doing stuff that most of us don’t want to do. I’ll say as makers, as founders, as customer researchers, that’s not our strong suit. It’s not necessarily what we want to be doing is spending time talking to procurement and legal anyway. Those two things add together to give really nice growth. I want to come back to something that Mathias said. He said, out of nowhere, all of a sudden, you started getting these HIPAA customers. Where are they coming from? Because nobody comes out of nowhere, is it just as simple as Google search and search engines or have you been doing other marketing to promote Geocodio?
Michele: We basically don’t do a lot of other marketing. We occasionally sponsor conferences, but mostly those are just conferences that our friends run. It’s very SEO driven. To what you were saying about low touch and high SaaS in combination, it’s been really fascinating for us to see how those interplay and how they feed one another. We will very often find that somebody on a team within a large company will be googling for geocoding or whatnot. They start using us on the free tier or they get their bosses free card and they do a little bit of usage and then anywhere from a day to a month to a year later, they might say hey, we want to get an annual contract. What’s so amazing, especially about having freemium SaaS is that they can try out the product and see if it’s a fit for them before you ever even talk to them. You don’t have to spend all of this time with a huge sales team, doing demos, doing cold calling, cold emailing, all those things. We don’t do any of that because customers can figure out for themselves whether the product is right for them and then they simply tell us when they want to switch to annual. I also find that doing those negotiations where they always want to customize things in the contracts, and there are sometimes difficult scenarios in those negotiations. But I find that having a point of contact at those companies that have already been using our product, is already totally sold on it, and is a huge advocate for the product within the company can make those conversations with legal or with compliance or whatnot a lot easier because they’re doing some of that negotiation for us. They’re advocating for us and time and time again, that’s helpful. It’s always so fascinating to me, seeing the interplay of them. In Slack, we have a feed whenever someone cancels or deletes their account and wants to talk about our product as if someone has an organizational account, they have to delete their old account to be re-added because we never thought about that from the beginning. It’s so interesting to see the comments in that and so often it’s oh, my company got an account, so I’m just deleting this one so I can re-associate it.
Rob: That’s fascinating. This really lines up with what several of the B2B SaaS companies that are growing like a B2C companies, they have superpower growth are companies like Slack where they have the bottom up approach. That’s been a big thing where a small team of three or four starts using it and then another team of ten and then a team of 20 and suddenly the IT department’s like wait, we need single sign on. We want to manage it. We want an annual contract. We want a paid version, and they want to bring it under the corporate umbrella. That’s in essence what is working for them. A big part of that is a really inexpensive or a free tier, frankly, because that allows people to use it. Once they’re in it, you have the champion, much like you’re saying. I was looking at an app, I have no idea what it was but it was a SaaS app. They had a free tier and then their pricing started at a thousand dollars a month and up. It was like they know their customers because they know that people want to try for free, get used to it. If it’s valuable, it was worth $1000 a month. It was some type of enterprise type tool that, again, I don’t recall what it was, but that’s when you know that someone has thought it through and not just said well, I’m going to have free. Isn’t it usual that you do like a $50, $100, and $200 dollar plan? It’s kind of the basics. Someone has really refined and honed it and that is an obvious advantage both for companies like Slack and even for bootstrapped assets like yourself. Mathias: Yeah, I say from a pure economics and finance perspective, I think a lot of things we do will be a lot simpler, but it’s a bunch of plans we can so predict MRR things like that. Having this pay as you go tier means that basically the revenue from each customer can vary like crazy depending on their usage. But I feel like that’s also a cornerstone of the foundational part of the company and how we started out. We really, truly believe that anybody should be able to afford this. One of the reasons why we founded this company was because we had this issue where using another very public geocode provider, you code 2500 addresses per day and if you needed, say, 3000 addresses per day, we had to do like an annual $50,000 a year contract or something crazy like that. There was nothing in between. Having this pay as you go tier for us means that, you can just pay an extra $5 a month or whatever for the additional data and not have to lock yourself into a high priced tier. That is just so important and something real. We promised everybody who’s asking, no, we’ll never give it up, we can’t. It’s just so important that there’s room for the little guys and the big ones, too, right?
Michele: It’s funny sometimes when I’m talking to people, I’m surprised by how often I’ll hear someone say oh, we’re only using you guys for $20 a month. I feel so bad. Is there a way we can pay you more? Which is always kind of a funny thing. Or my boss is really cheap, and I’m like that’s fine, it’s totally fine. Some people only need $20 a month worth of usage, but maybe they’ll go on to a company someday where they actually need $1000 a month of usage or they need it for free. You just never know and it’s not just a relationship with a company, it’s a relationship with a customer and with a person. We just so strongly believe that if you meet them where they are, that will be beneficial for everyone, and may not be always financially, and we’re totally okay with that.
Rob: That’s the beauty of bootstrapping or frankly, just being in control of your company and not having to optimize for growth to the extent that you can’t have that attitude. If that’s what makes you happy as a founder, and you’re happy with your growth, and you’re happy with the way you run your business, that’s why we start companies, so we can be in control of how we treat our vendors, our customers, our investors if we have them, and our team members as well. I think a control thing that I think a lot of folks don’t remember or perhaps they forget as they do it. Well, guys, we are hitting time here. I want to really thank you guys for taking time to chat with me today about Geocodio and your story and all the things you’ve been up to. If folks want to keep up with you, Michele, you release every week on this Software Social Podcast with Colleen Schnettler and on Twitter, you are a prolific tweeter at @mjwhansen and Mathias, you’re @MathiasHansen, but we’re going to put both those in the show notes because spelling Mathias is not perhaps as phonetic as one might think. Thank you guys again for coming on up to Startups for the Rest of Us.
Michele: Thanks so much. Mathias: Thank you so much for having us.
Rob: Thanks again to Michelle and Mathias. Really appreciate them taking the time to have that conversation with me. I hope you.got a lot of value, maybe a little bit of inspiration, some strategies, tactics for yourself.