👋 Hey, I’m George Chasiotis. Welcome to GrowthWaves, your weekly dose of B2B growth insights—featuring powerful case studies, emerging trends, and unconventional strategies you won’t find anywhere else.
GrowthWaves has one single goal, and that’s to help you:
Get Smarter About Growth
We’re topic-and-industry-agnostic, but we play within the boundaries of B2B.
The other day, I was thinking about the following question:
What are some misconceptions and misunderstood concepts in B2B growth?
Concepts that…
Many people talk about;
Few people have actually tried;
Very few people know how to do well.
One of the top concepts that came to my mind is programmatic SEO.
That’s what today’s note is all about.
Key points
Before we jump into discussing the framework, let me share a few key points to keep in mind when doing programmatic SEO, as inspired by Unsplash’s case.
Focus on internal and external demand signals. These signals play equally important roles in the stages of capturing existing demand and identifying search trends, creating pages programmatically, and evaluating their performance.
‘Drop’ pages that don’t capture demand. For instance, some pages on Unsplash, such as the one ranking for the search term baby crying, don’t perform well but remain indexed. It makes sense to drop these pages from the index altogether.
Take your crawl budget into consideration. Keeping too many programmatically created pages indexed can negatively impact the crawl capacity limit
Now, let me tell you more about the framework and how I came to devise it.
Unsplash is an image repository.
As of April 2023, Unsplash’s image library has hit 5 million photos, with 5,162 image views a second.
That made me think: “With so much content, Unsplash definitely should create some pages programmatically.”
Was my assumption correct?
No, but after digging into the website, I found it quite an exciting case for a potential programmatic SEO framework.
Let me explain.
My research started with exploring some simple search terms that would lead me to image results.
One of the keywords I tried was crying baby photos.
Search results brought me some images from Unsplash and its webpage ranking for this search term in second place.
As I clicked on this page, I saw that it is located in the folder S, which, when searched for separately, redirects you to the home page, and the photos are aggregated using different tags.

As a simple check shows, the page is also indexed.
“Now, what if I change the search term slightly? Will I get the same image results on Unsplash?” I thought.
Yes, pretty much.
The new page under a different URL ranking for the search term baby crying contained the same photos, with only a few new additions.
The tags differ slightly, too.
Take a look.

Looks like nothing peculiar, right?
At first glance, yes.
But here’s the catch.
This page, although looks very similar to the previous one, is also indexed.
So, it makes two pages with more or less similar content included in the Google index.
“Alright,” I thought, “what if I narrow down my search a little?”
Would I get the same results?
I tried crying baby in a stroller.
Alas, the results have nothing to do with the search intent.

So, why would Unsplash optimize and index a page ranking for a similar search term as crying baby, with almost duplicate results and tags?
Why are other related pages left behind?
The search for an answer turned out to be a fascinating case for a programmatic SEO framework.
Let me share it with you.
The framework
Overall, what I noticed from Unsplash’s entire case is that there are some inconsistencies in how Usplash creates the pages and chooses the ones that should be indexed.
There are both missed opportunities, as well as pages that need to be dropped (from Google’s index) completely.
The following framework offers a possible perspective on how Unsplash could turn things around for its benefit.
Let’s break it down.
Step #1: Capture existing demand
Capturing existing demand is about understanding what people are searching for.
You can grasp the idea from what people look up through your internal search engine (like in Unsplash’s case) or through keyword research.
From Unsplash’s case, we can assume that the search term driving most demand is crying baby.
Presumably, Unsplash pinpointed this search term based on the demand it generated via the website’s internal search engine.
The same is most likely the case with another search term example—a page ranking for the keyword baby crying.
It is also included in the Google index and has some visibility in Ahrefs.
So, the first option to capture existing demand is through an internal search engine.
What if you don’t have one?
You can always rely on tools like Ahrefs, Semrush, and Exploding Topics.
Editor’s Note: As an extra source of information, you can check out the webinar we did with Clearscope on how to do SaaS keyword research.
Next, as you have collected all search terms generating demand, it’s time to create pages targeting these terms.
These are the pages people will certainly keep looking for since the demand for the information they carry is high.
I recommend tracking these pages and the search terms they rank for via a simple dataset, like the one below.
With this clear, let’s move on to the next step.
Step #2: Identify search trends
Alright, say you have created all the main pages based on the data obtained through an internal search engine or keyword research.
But have you covered all the bases?
What else may people be looking for outside the search terms you have collected?
Essentially, your task here is to look for search trends you might have missed during the first step.
You will need these trends to create new pages programmatically.
How can you identify these missed opportunities?
Here are some suggestions.
Once you have your search terms collected, I suggest organizing them into the dataset like the one I showed you before.
Here, I extended that datasheet with search trends related to the term crying baby.
By the way, you can automate the process of filling in the data in your dataset to a certain extent.
So, the only thing left for you to do would be to score the search trends you’ve added, which we’ll discuss next.
Step #3: Score search trends
When it comes to scoring search trends, the best way is to move from general to specific.
In other words, the task is to filter each search trend through a metric/metrics chosen for scoring until you are left with the most viable options.
Why is this necessary?
Determining value. Not all search trends on your list will pull the weight and turn into high-performing pages.
Optimizing for your crawl budget. An overwhelmingly high volume of pages created programmatically in time will reduce your ability to get pages indexed.
You can see these two cases reflected in Unsplash’s example.
Remember the page ranking for crying baby in a stroller?
The page, assuming it was created programmatically, doesn’t perform well because the search term it ranks for wasn’t scored properly, thus delivering little to no value.
The criterion for scoring here, most likely, would be the ability to satisfy search intent, which Unsplash doesn’t have since there are no images on this page with a crying baby in a stroller.

So, this page is just a “dead weight,” putting a strain on Unsplash’s crawl budgets.
Alright, back to the main point.
What criteria can be used for scoring search trends?
Here are some suggestions.
Let’s try to do an exercise and put Unsplash’s crying baby in a stroller page through each of these criteria.
What would a scoring process look like?
Here’s an example with some hypothetical metrics (excluding revenue potential since it’s a very specific business criterion).
As you can see, crying baby in a stroller would only be a good candidate if Keyword Difficulty was the only scoring criterion.
However, it would hardly make any difference with no search volume and, most importantly, the lack of content in Unsplash’s inventory that would match the search intent.
Once you filtered each search trend through your scoring criteria, make sure to include your data in the dataset.
Here, just as an example, I scored search trends based on search volume, keyword difficulty, and traffic potential.

Alright, you have scored each search trend.
What’s next?
Step #4: Create pages programmatically
The list of vetted search trends lays a strong foundation for programmatically-created pages.
The question is, what do you do with these pages?
Well, first and foremost, they should satisfy demand.
Here’s what I mean.
Let’s take a couple of examples from Unsplash included in the dataset above.
The first is a page ranking for the search term baby crying in sleep.
Let’s assume this search term passed our scoring test because it has decent search volume and traffic potential. Plus, it’s not very competitive.
But does the content this page provides match the search intent of this keyword?
Not at all.

So, assuming Unsplash has relevant images in its inventory, it should refurbish this page to show relevant search results.
By the way, many Unsplash pages from the dataset mentioned above do not satisfy demand.
Here are the results for the pages ranking for keywords with good search volume and traffic potential.
So, these pages definitely need some extra work before moving on to the next step—capturing new demand.
Step #5: Capture new demand
Assuming your pages match the intent and are correctly optimized, they are ready to drive visitors to your site.
Once you index them, you can start analyzing and recording the demand they bring.
Ultimately, your goal is to determine whether they are a viable long-term investment.
How can you capture new demand?
In Unsplash’s case, the most straightforward way is through the internal search engine.
Say, if Unsplash optimized the baby crying in sleep page with relevant images, and it starts generating more visitors and, possibly, image downloads, then we can say it’s generating demand.
So, overall, what other channels can you use to capture demand?
Here are some suggestions.
From this list, we can also assume that Unsplash could record new demand through referral sources like Pinterest and similar websites.
However, the process doesn’t end at this stage.
Step #6: Evaluate performance and drop underperforming pages
Creating a page, optimizing, and indexing it doesn’t guarantee its good performance.
If we take Unsplash’s case, some pages we discussed that have been indexed and that rank for search terms that have high demand still need to be deleted.
Simply put, their performance is poor.
For instance, take the baby crying page.
From the standpoint of organic traffic (which is the only criterion available in open access), it’s not doing so hot.
Moreover, if Unsplash runs this page through other relevant criteria, its viability may get even lower.
Off the top of my head, such criteria can include:
Conversions;
Photo clicks;
Photo downloads;
Photo likes;
How many times a photo was added to a collection;
Attributions to photographers.
If none of these benchmarks are met, you can drop the page altogether or at least exclude it from the index so that it doesn’t waste your crawl budget.
Overall, this entire programmatic SEO process based on Unsplash’s case is not linear but rather circular.
The idea is that once you evaluate and drop some pages, you’ll move on to creating new ones by identifying search trends, scoring them, and then evaluating and possibly losing the pages that underperform again.
Visually, it would look something like this.
This system is what Unsplash currently lacks.
Therefore, the website includes several pages that provide no real value and create visual clutter and possible strain on the crawl budget.
So, the solution here is to continuously overhaul the entire page inventory to make sure the ones that stay are those that serve the demand.
Kind Favor (Instead of a conclusion)
I usually close my notes with a conclusion.
This time, I’ll close with a kind favor because, well, we don’t need a conclusion every time, right?
I’m trying to build up my presence on Substack.
I've been here for a couple of weeks but only started getting active on the platform recently.
My goal is to grow GrowthWaves to 10,000 subscribers by the end of this year.
If you’re there and you’re active on the platform, please hit that follow button and stay tuned to the things I’m sharing.
Your support means a lot to me 🙏
See you next week!