Day 36: Cracking the Code to Profitable AI SaaS Product Pricing
Pricing. The final frontier of launching a startup. How do you ensure that you are not too expensive but, at the same time, that you’re not leaving money on the table by pricing too low?
This is the question most startup founders wrestle with when trying to figure out how to set a price for their product.
Today, we will go into a lot of detail about how Slobodan and I decided to do it for Knowlo.
Let me start this article by saying that we are not pricing experts. In fact, we think (and are told by our customers) that Vacation Tracker is priced too low. We’ve been told we’re giving away too much and that we should raise our price.
But that’s not the subject of this article. Figuring out Knowlo’s price is.
What I’ll discuss in today’s article is one way of setting the price. There are multiple ways to do it, and how we do it here will certainly not work for everyone. It may not even end up working for us. We’ll probably be revising this pricing ten times over the next year. But we still need a starting point, and what I’ll describe today is a good starting point for us. It may not necessarily work or make sense in your context.
Pricing Theory and What to Read
Since we’re not the experts on pricing, who is? One person who comes to mind and knows a thing or two about pricing is Patrick Campbell from Profitwell.
Here is a gem of wisdom he recently posted on X:
As Patrick discovered by talking to 4,200 startup founders, most of us will underprice our products. This is part of our insecurity about the quality of our product relative to our competitors. And it’s normal to be a little on the cheap side in the early stages of a startup in order to gain some traction. But once the ball is rolling, it’s crucial to revise pricing to see how much room there is for increases.
Before we get into Knowlo’s pricing, here is some additional reading about SaaS pricing that we found helpful:
- A Definitive Guide to SaaS Pricing Models – Strategies, Examples, and Top Metrics to Track by Chargebee.
- How to Price a SaaS Product by Hubspot.
- B-side: A Compact Guide to Pricing Strategy by Patrick Campbell.
This is by no means an exhaustive list. There are many books and articles on pricing, too many to list in this already-too-long article. These are just three of the many articles we’ve read over the years about this subject that I think are worth recommending.
But a Google search on SaaS B2B pricing will result in many articles, books and videos on this subject for those who are interested.
I would also recommend watching this presentation by Jason Cohen at Microconf: Designing the Ideal Bootstrapped Business with Jason Cohen. Although the subject is about designing an ideal bootstrapped business, he does a great job discussing pricing and his experiences experimenting with pricing at WPEngine.
Which approach to use?
If you checked out any of the articles I linked to above, or if you’ve already read something about pricing, you’ve probably run into the most common pricing strategies: value-based, competition-based, cost-plus, and freemium.
Which of these should we start with?
We can eliminate value-based and competition-based off the list right away. We have yet to determine how much value our customers will get from this product and our competitors bundle tooltip products with other stuff, so it’s impossible to figure out how much just the tooltip part would cost. So for now, we’ll cross these two off the list.
We’re also going to eliminate freemium because we are not believers in giving things away for free. We’ll definitely have a 7 or 14-day free trial, and those who sign up early will get 3-6 months of Knowlo for free. But we have no intention of providing a free tier of the product.
Which leaves us with cost-plus. This type of pricing is usually not recommended for this type of product. Still, we have some experience with it from pricing projects at Cloud Horizon. We feel this is the only way to do it at the beginning, given how we will be incurring costs for Knowlo.
Let’s get started
Figuring out how to set a profitable price for Knowlo will be a bit trickier than it was for Vacation Tracker. The reason is that with Vacation Tracker, we don’t have to pay anything to OpenAI. Our incremental cost of servicing a customer is the price of hosting the software on Amazon Web Services (AWS) + the time our support team spends on that customer (which on average is not very much time).
With Knowlo, we have all the same types of costs that we have with Vacation Tracker + we have the variable costs of using OpenAIs APIs. But as far as our customers are concerned, we want to have simple pricing with a manageable amount of variability. So we’re going to make some assumptions around the average usage of the tooltips to come up with a monthly per-tooltip price.
If ever someone blasts through our assumed usage levels, we consider this a good problem. It means that the product is being heavily used, and we’ll figure out how to reprice it in a profitable way.
So, let’s start with a list of the product-related costs. The goal here is to figure out approximately how much each tooltip will cost. Here are all the things we have to take into account:
- The cost of importing and hosting the customer knowledge base, FAQs and other information that will be used to create and run the tooltips
- The cost of creating and managing tooltips
- The cost of usage of the tooltips
Before we take a closer look at each of these, let’s take a moment to talk about the fundamental economic unit of pricing in AI.
All three of the costs mentioned above will require the use of tokens, so I’ve asked CofounderGPT to write a simple explanation of what a token is:
In AI, “tokens” are the smallest units of text that a machine can understand and process. Think of them like individual pieces in a puzzle. A token can be as small as a single letter or as long as a word.
For example, the sentence “CofounderGPT is great!” can be broken down into five tokens: [“CofounderGPT”, “is”,” “, “great”, “!”].
A document with 1,000 tokens might be around 700-800 actual words, considering spaces and punctuation marks also count as tokens. For text in English, 1 token is approximately 4 characters or 0.75 words.
OpenAI’s pricing for all models is charged per 1,000 tokens.
Importing and Hosting
The first thing a customer will do when they sign up for Knowlo is import some data so that the system has the necessary data to create tooltips and answer customer questions. Since we’re targeting software companies, in most cases, our customers will likely have a knowledge base that can be used for this. But essentially, they can import whatever text they want, it doesn’t necessarily have to be a knowledge base.
In fact, to assess the cost of a tooltip, we don’t really care whether it’s a knowledge base or any other kind of text document. We’re paying OpenAI for tokens, which is another way of saying that we’ll pay based on the quantity of text that passes through the OpenAI API.
We have a pretty comprehensive knowledge base for Vacation Tracker. When we add everything up, it has 150,000 words. But we’ll assume that our customers will have 10x more words for pricing purposes.
Let’s do some math:
- The size of 1,500,000 words on a hard disk is about 3,000 KB or about 3 MB. If we assume that 750 words are equal to 1,000 tokens, the 1,500,000 words above would equal 2,000,000 tokens.
- We store knowledge bases and embeddings on AWS S3, and importing data into it is free.
- Storage on AWS costs $0.023 per GB. So for 3 MB, it’ll cost us (3 x 0.023) / 1,000 = $0.0000069 per month for all the data.
- We’ll be using OpenAI’s Ada V2 model to create the embeddings. The cost for Ada is $0.0001 for 1,000 tokens. So, for our 2,000,000 tokens, it will cost 2,000,000 / 1,000 x $0.0001 = $0.2 per knowledge-base.
- Besides storing customer knowledge bases, FAQs and other product data, we are also using DynamoDB as the database for the Knowlo product itself. Two possible costs associated with DynamoDB are read/write requests and storage. The cost of Write Request Units (WRU) is $1.4135 per million write request units, and the cost of Read Request Units (RRU) is $0.283 per million read request units. We assume that even if we add a giant buffer, we will do 100 write and 200 read requests during importing and over the span of 1 month of usage. So our 100 write requests will cost $0.000014135, and our 200 read requests will cost $0.0000566. Let’s go crazy with our buffering and increase this to $0.01 per customer for the purposes of this estimate.
- We’ll need to use a few Lambdas during this process. Lambdas cost $0.20 per 1 million requests and $0.0000166667 for every GB-second. We currently have 2 Lambda executions (which last a few milliseconds) and 1 processing of the knowledge base (which has a maximum processing time of 15 minutes, or 900s). When we add this up: ($0.2 x 2 / 1,000,000) + (1 x 900s x 1024MB (memory) x ($0.0000166667 / 1000)) = $0.0000004 + $0.01535 = $0.01535506
- Finally, we’ll be using API gateway, which costs $3.5 per million requests. The import process will be 1 request and then we’ll assume another 5,000 requests each month (which is a crazy overestimation). The cost for API gateway adds up to $0.0175.
The total of what it’s going to cost us when a customer imports some data and for us to host that data for a month: $0.24.
But wait Lav, what about a server? Actually, we don’t have one. Slobodan and CofounderGPT architected this using a technology called serverless. We only pay when a customer actually does something and there is some computing required for them. All of that will be covered in the Usage section of this article.
A note for the following 2 calculations: DynamoDB (#5), Lambda (#6) and API gateway (#7) are complicated to calculate and incur costs for all the actions that a user takes. Their cost in this step adds up to a maximum of $0.04 per customer per month. When I refer to DynamoDB, Lambda and API gateway below, I’ll simplify by assuming a cost of $0.05 per tooltip (which is a considerable overestimation of the cost, especially when it comes to creating and managing tooltips).
Creating and managing tooltips
When a user creates a tooltip, they’ll have to go through a few steps before it’s ready to be embedded into their software:
- They’ll need to write a short description of up to 500 characters to explain the tooltip. Then, based on the data they imported about the software, Knowlo will use the description and data to generate the tooltip text. (125 input tokens)
- We’re going to allow up to 2 refinements of the tooltip after Knowlo produces the first version. The user will be allowed to explain what needs to be improved in a description of up to 250 characters. So two of those adds another 500 characters. (125 input tokens)
- The first “tooltip” iteration that Knowlo will produce will be a maximum of 1,000 characters. (250 output tokens)
- There will be two possible iterations of the tooltip, each with a maximum of 1,000 characters. (250 output tokens)
- The customers’ data will be in the form of an embedding, which will be retrieved by Knowlo and used to write the tooltip. This means that in the background, there are going to be up to 1,000 input tokens of customer data and 175 input tokens for Knowlo’s wrapper (a background prompt which explains to Knowlo what it needs to do). (1,175 input tokens)
- If the user is still unsatisfied, they can restart the whole process. Steps 1-5 above add up to 1,425 input tokens and 500 output tokens. Most won’t, but let’s assume that a user will repeat this process up to 3 times. That’s 9 iterations total. This means that for each tooltip, the maximum cost is 4,275 input tokens and 1,500 output tokens.
- As I noted above, to keep things simple, we’ll assume that the DynamoDB, Lambda and API Gateway costs for this step will be $0.05 per tooltip. This is way way more than what it will actually cost us.
Why are we dividing this into input and output tokens you may ask? Because OpenAI charges different amounts for these two types of tokens. Input tokens are when you’re putting information into GPT, and output tokens are consumed when it’s writing text.
For this step, we’ll be using GPT-4 because we need the best performance possible to generate the tooltips. The input token cost for GPT-4 is $0.03 per 1,000 tokens, and the output token cost is $0.06 per 1,000 tokens.
So we assume that the maximum cost a customer can incur for creating a tooltip is ($0.03 x 4,275 / 1,000) + ($0.06 x 1,500 / 1,000) + $0.05 = $0.27 per tooltip.
This is arguably the most challenging part for us to estimate because we really have no idea how often our tooltips are going to be used and how often questions will be asked inside the tooltips. We will be able to “cache” questions and answers so that if a question inside a tooltip repeats, there will be no need to ask GPT the same question and waste tokens.
For answering questions inside the tooltip, we’ve decided to use GPT-3.5 Turbo. The main reason is that GPT-4 is a little slow, and we don’t want people to wait too long for a response once they ask a question. GPT-3.5 Turbo is also 20 times less expensive than GPT-4 and for what we need, it provides very good quality answers.
If we assume that our average customer has 100,000 monthly active users, and that each month, 2% of those users will open each tooltip and that 1% will have up to two questions which we will need to pass along to GPT, that translates into 2,000 requests for information retrieval and 2,000 requests for questions per tooltip (1,000 for the first question and 1,000 for the second).
Here’s how the cost for those 4,000 requests breaks down:
- Information retrieval requests: To retrieve the initial tooltip, Knowlo will need to use API Gateway, AWS Lambda and S3 on AWS. These are all priced in $ per thousand or million requests. If we standardize around a million requests, the total cost adds up to $1.7 per million requests. Our 4,000 requests per tooltip would cost 4,000 / 1,000,000 x $1.7 = $0.0068 per tooltip.
- Information retrieval bandwidth: we’ll be retrieving some data from the customer database on S3 that was created during the knowledge-base import. Since we limit this to 1,000 tokens, that’s about 750 words for each request. At 4,000 requests, that adds up to 3,000,000 words or about 6MB of bandwidth. Data transfer out of S3 costs $0.09 per GB, so for our 6MB, the bandwidth cost would be $0.00000054 per tooltip.
- Tooltip questions: for this, we’ll assume that nothing will be cached and that every question that a user asks a tooltip will be unique. Users will be able to ask up to 2 questions to the tooltip. We’ll assume they will try that up to a maximum of 3 times before reaching out to support, so 6 questions total per tooltip per month. If each question has a maximum of 500 characters, and each response has a maximum of 1,000 characters, then we can assume that 6 questions and answers will add up to a maximum of 3,000 input tokens and 6,000 output tokens. The 4k version of GPT-3.5 Turbo costs $0.0015 per 1,000 input tokens and $0.002 per 1,000 output tokens. When we do the math, the cost for the tooltip questions will be a maximum of $0.0165 per tooltip.
- Again, we’ll assume the entire AWS infrastructure (including DynamoDB, Lambda, and API Gateway) would cost $0.05 per tooltip opening or submitting a question, so I’ll skip the detailed calculation here. We’ll assume again that the total cost will be a maximum of $0.05 per tooltip.
Once we take all of this into account, our cost for the usage of a tooltip will be a maximum of $0.07 per tooltip.
Those were all the product costs. Now let’s look at what it might cost us to offer customer support for Knowlo.
We want to make Knowlo as self-serve as possible, and we plan to have a good onboarding system and lots of tutorial videos. But there will always be some customers who will feel more comfortable asking customer support questions and they will also be reporting bugs. Let’s assume each customer will use about 30 minutes of customer support time per year. If you assume that a customer support representative’s salary is $25 per hour, that’s $12.5 per year in support time or $1.04 per month.
A word about conservative estimates
You may have noticed that we are assuming that everything will be “maxed out” when we assess what the cost of operating these tooltips will be. For example, we assume that the users will use the maximum number of characters when writing a question and that Knowlo will use the maximum number of characters to write a response.
In reality, it’s highly unlikely that every user of our tooltips will use the product in the way we assumed here. It will most likely be much less than what we are assuming here. And we prefer to estimate revenues and costs conservatively. It’s always worked for us in the past. If you assume a higher cost and then it ends up being less, you’ll have a larger profit than expected. If you assume a lower cost and it ends up being higher, then you’ll have less profit and possibly a hole in your budget. We always prefer having extra profit. It’s easier to figure out what to do with it.
And if the usage ends up significantly higher than the 4,000 requests that we’re assuming, well that’s a good problem! At least someone will be getting a lot of value out of Knowlo. And we’ll figure out how to reprice the product in that case.
Putting it all together
Once we add all this up:
- $0.24 for importing a hosting
- $0.27 for creating and managing a tooltip
- $0.07 per tooltip for usage
- $0.25 per tooltip per month as a buffer for anything we may have miscalculated
The total for that is $0.83 per tooltip per month.
And then, we have the $1.04 per month for customer support time.
As I mentioned earlier, we want to take all the complexity you see above away from our customers and have a simple pricing plan that will be easy for them to understand.
To start, we will have one pricing plan only, and we’ll adjust and add others once we start gathering customer feedback.
Since each tooltip costs us $0.83, we’ve decided to include 10 as part of the basic plan and charge for each additional tooltip. That will incur a maximum cost of 10 x $0.83 = $8.30 plus $0.83 for each additional tooltip. And let’s not forget the $1.04 in customer support costs per month, which brings us to a grand total of $9.34.
Taking everything in this article into account, the price we’ve settled on for Knowlo for the basic plan of 10 tooltips will be $10. And then we’ll charge $1 for each additional tooltip.
How did we decide this? It’s not overly scientific. Everything we assumed in the article is maxed out. Very few customers, if any, will actually end up costing us $9.34 per month. Most will likely cost below $1. Which gives us room for profit while leaving the price reasonable for startups to try out Knowlo.
Having said all this, all the beta customers who signed up to our waitlist will receive 3 months of Knowlo for free. Now they can even figure out what it will cost us to give them these 3 months for free!
In the next article, we’ll provide some updates on how we will be moving forward with the Knowlo launch. We’ve intentionally slowed down a bit due to other obligations with our main gig at Vacation Tracker. So in the next article, we’ll talk about this and our plans for the next couple of weeks.
Time spent today: 8h
Total time spent: 246h
Investment today: $67.84 (WordPress.com and ChatGPT monthly costs)
Total investment: $1,374.44 USD
Beta list subscribers: 97
Paying customers: 0