Hello beautiful fellas,
Welcome to the Daily product management show! 📺 I’m your host, Bhavya, and I’ll be bringing you fresh insights on product management every single day! 👋
A PM has to wear various hats and adapt to different challenges throughout the product development process.
First, you’re the visionary, ideating cool product ideas and deciding what’s gonna be a hit with the customers. Then, you put on the investigator hat, researching the market, checking out the competition, and sniffing out opportunities like a detective on a mission.
Next up, you become the maestro, orchestrating a team of designers, developers, and other pros. You gotta make sure everyone’s in sync, just like a conductor keepin’ the musicians on the same beat. You also play the juggler, balancing deadlines, budgets, and resources like a pro circus act. Sometimes you gotta channel your inner salesperson too! You pitch the product to stakeholders, trying to win ’em over with your enthusiasm and persuasive skills. It’s like you’re selling ice cream on a hot summer day, except the ice cream is your awesome product.
And let’s not forget the customer advocate hat! You gotta think like the folks who’ll be using your product. Walkin’ in their shoes, understanding their needs, and making sure the final product is something they’ll love.
Throughout the journey, you’ll be switching hats more often than a fashion model at a runway show. But that’s the beauty of it — you’re always learning, growing, and improving. It’s like a rollercoaster ride, full of ups and downs, but you’re the one steering it towards success.
🚀 Let’s build a hypothetical base problem to solve for; and lets try wearing 2 hats for this one;
Sulivan Inc, a software business, just acquired a regional operator named Nemo based in the Southeastern US.
Sulivan inherited 200 great people who can do it all between sales | account management | support. Each person will only perform one core role at a time. While each person will only perform one role at a time they can switch to another role at the start of any month. One person could cycle through every job without a loss in productivity.
The goal is to maximise Nemos’ run rate revenue 12 months from now (revenue in month 12 only, not cumulative revenue)
Different Roles & Responsibilities:
- 🪝 Sales- New Business Acquisition
- Responsible for getting new customers
- Acquire 15 new customers a month
- 📈 Account Management
- Responsible for improving overall customer retention
- Drive revenue growth from the existing customers
- Reduce churn for the customers they manage by 5% relative to baseline churn
- Increase revenue by 25% for all customers they manage
- Each Account Manager can carry 30 customers
- 🪴 Support
- Responsible for solving customer problems
- Improve retention for any active customer
- Each support agent increases CSAT by 1% point
- Each point of CSAT leads to a 25% relative decrease in churn
- If a customer has an account manager and then loses the account manager their metrics (churn and revenue per month) return to the baseline
Key metrics (Static):
- The business currently has 10,000 customers
- Acquires 250 customers per month organically
- Monthly churn rate= 15%.
- Additional support’s CSAT (Customer Satisfaction) has been steady at 75%
- Every active customer pays $1000 a month without any discounts
- How many people will work on acquiring new business, account management, and support?
- Why are they working there?
- What’s your plan to make sure you’ve made the right resource allocation decisions?
Before we dive into the details, let’s take a step back and talk about the big picture. In this section, we’ll go over the background and assumptions that we’re working with.
First off, let’s talk about what we’re trying to achieve. Our goal is to maximise the revenue of our business at the end of month 12. To do this, we need to figure out the best way to allocate our 200 employees across sales, account management, and support.
👒 Wearing the PM hat:
Step 1: Understand the problem
The first step is to understand the problem. In this case, the problem is to maximize Nemo’s run rate revenue 12 months from now. We need to figure out how to allocate our resources (people) in a way that will achieve this goal.
Step 2: Identify the key metrics
The next step is to identify the key metrics that will help us measure success. In this case, the key metrics are:
- Number of new customers acquired
- Monthly churn rate
- Customer satisfaction (CSAT)
- Revenue per month
Step 3: Develop hypotheses
Once we know the key metrics, we can start to develop hypotheses about how to allocate our resources. For example, we might hypothesize that:
- Allocating more people to sales will help us acquire more new customers.
- Allocating more people to account management will help us reduce churn and increase revenue.
- Allocating more people to support will help us improve CSAT and reduce churn.
- Categorisation into Managed & Non-managed customers:
Since the Churn rate & Revenue are calculated differently based on whether a customer is managed by an Account manager or not; let’s categorise the customers into these two buckets.
- Churn rate average -> Overall churn vs per customer churn:
- Overall churn refers to the % no. of customers lost during a specific time period.
- Whereas per customer churn refers to the probability of losing a particular customer.
- The problem statement refers to both of these churns here
- Let’s define an Overall churn metric by combining these 2 metrics.
Step 4: Test the hypotheses
The next step is to test our hypotheses. We can do this by allocating resources to different roles and tracking the results. For example, we might allocate 100 people to sales, 50 people to account management, and 50 people to support. We would then track the number of new customers acquired, the monthly churn rate, CSAT, and revenue per month.
Step 5: Make adjustments
After we have tested our hypotheses, we need to make adjustments based on the results. For example, if we find that allocating more people to sales does not result in a significant increase in the number of new customers, we might need to adjust our hypothesis. We might also need to adjust our resource allocation based on the changing needs of the business.
Step 6: Repeat
The final step is to repeat the process. We should continue to test our hypotheses, make adjustments, and track the results. This will help us ensure that we are making the right resource allocation decisions and that we are maximizing Nemo’s run rate revenue 12 months from now.
- Start by identifying the key metrics that will help me measure success.
- Then develop hypotheses about how to allocate my resources.
- Test my hypotheses and make adjustments based on the results.
- Continue to track the results and make adjustments as needed.
- Use data analytics to help me make informed decisions.
🤠 Wearing the Engineer hat:
Alternately, the Steps 3,4 & 5 can be converted into a programming problem;
Dynamic Programming approach:
- Since the goal is to maximise our revenue at the end of month 12, we need to figure out the best way to allocate our 200 employees across sales, account management, and support.
- Now, there are a lot of different ways we could allocate our employees. We could put all of them in sales, or all of them in support, or split them evenly across all three roles. And that’s just the tip of the iceberg — there are tons of other possibilities.
- So how do we figure out which allocation is the best? Well, we could try them all out and see which one gives us the most revenue. But that would take forever — there are way too many possibilities to test them all.
- That’s where dynamic programming comes in. With dynamic programming, we can break the problem down into smaller pieces and solve them one by one. We start by figuring out the best allocation for month 1, then use that information to figure out the best allocation for month 2, and so on.
- By solving the problem this way, we can avoid testing every single possibility. Instead, we only need to test the possibilities that are likely to give us a good result. This saves us a ton of time and effort.
- So that’s why we’re using dynamic programming — it’s a smart way to solve a complex problem without getting bogged down in endless calculations.
TLDR; 🧠 Brainstorm board
Here is a flowchart that represents the function and the maximum Revenue in the 12th month calculations, visually:
✍️ Building the formula for Monthly Revenue
Since I’m a product manager with an engineering background, I was immediately drawn to thinking in terms of algorithms to define the formula for Revenue calculation per month. Here is how I have formulated it:
Algorithm for the calculate_revenue function:
Defining the function calculate_revenue with input parameters: current_customers, churn_rate, csat_score, revenue_per_customer, T1, T2, and T3.
- T1 -> Sales folks
- T2 -> Account Managers
- T3 -> Customer Success Managers
Defining the following constants obtained from the case-study:
- organic_growth = 250
- new_customer_acquisition = 15
- churn_reduction = 0.5
- revenue_increase = 0.25
- csat_increase = 1
- csat_churn_reduction = 0.25
- account_manager_capacity = 30
- Calculate the number of new_customers acquired organically and through T1= new_customers = organic_growth + (T1 * new_customer_acquisition)
- Revenue_per_non_managed_customer = $1000
- Revenue_per_managed_customer = $1250
- Defining the function calculate_revenue that takes in the following parameters:
last_total_customers, last_churn_rate, last_csat_score, num_team1, num_team2, and num_team3
- Calculating the number of new customers acquired organically and through team 1 using the formula:
new_customers = organic_growth + (num_team1 * new_customer_acquisition)
- Calculating the current total number of customers before churn using the formula:
current_total_customers = last_total_customers + new_customers
- Determining the number of managed customers based on the size of team 2 using the formula:
current_managed_customers = num_team2 * account_manager_capacity
- Calculating the number of unmanaged customers using the formula:
current_unmanaged_customers = current_total_customers — current_managed_customers
- Updating the CSAT score based on the size of team 3 using the formula:
current_csat_score = last_csat_score + num_team3 * csat_increase
- Adjust the churn rate for CSAT using the formula:
current_churn_rate = round(last_churn_rate * (1 — (current_csat_score/100) * csat_churn_reduction), 3)
- Calculate the churn rate and revenue per customer for managed customers using the formula:
current_churn_rate_in_managed_customers = current_churn_rate * (1 — churn_reduction)
- Calculating the total number of customers at the end of the month after churn using the formulas:
• current_managed_customers_after_churn = int(current_managed_customers * (1 — current_churn_rate_in_managed_customers))
• current_non_managed_customers_after_churn = int(current_unmanaged_customers * (1 — current_churn_rate))
• current_total_customers_after_churn = current_managed_customers_after_churn + current_non_managed_customers_after_churn
- Calculating the revenue at the end of the month using the formula:
revenue = current_managed_customers_after_churn * revenue_per_managed_customer + current_non_managed_customers_after_churn * revenue_per_non_managed_customer
- Calculating the average churn rate using the formula:
churn_rate_average = (current_churn_rate * current_unmanaged_customers + current_churn_rate_in_managed_customers * current_managed_customers_after_churn)/current_total_customers
- Returning the current total number of customers after churn, revenue, average churn rate, and current CSAT score for the month.
✏️ Building the algorithm for Maximum Revenue at 12th month
- The state table[i][j][k] represents the maximum revenue that can be achieved at the end of month i with j employees in sales, k employees in account management, and the remaining employees in support.
- The state is initialised to 0 for all valid values of j and k.
- The algorithm then iterates over all months from 0 to 11, and for each month it considers all possible allocations of employees in the next month. The state is updated based on the revenue that can be achieved with the given allocation of employees.
- Finally, the algorithm finds the maximum value of table[j][k] for all valid values of j and k, which represents the maximum revenue that can be achieved at the end of month 12
- The table calculates the revenue numbers internally using the algorithm for revenue
- In order to figure out the best allocation of our 200 employees across sales, account management, and support, we came up with a dynamic programming approach that calculates the maximum revenue we can achieve in month 12 with different allocations of employees.
- By considering all the possibilities and seeing how they impact our revenue, we can make a smart decision about how to allocate our resources. This way, we can make sure we’re getting the most bang for our buck at the end of the 12th month!
- Once we know the maximum revenue, we can work backwards to figure out the best allocation of employees for each month. This will give us a clear plan for how many people should be in each role every month.
- However, we’ll need to keep an eye on things and make sure everything is going according to plan. We can check our performance regularly and compare it to our projections. If anything is off, we can adjust our plan as needed.
I’m a product manager myself, and I know how hard it can be to find good resources on the topic. That’s why I started writing this blog.
I hope you found this article helpful. If you have any questions or feedback, please feel free to leave a comment below. And if you’d like to stay up-to-date on my latest articles, please follow me.
See you in the next one 👀
Happy PM-ing! 🚀