The traffic number from this job looks good on a CV. That is not what I remember. I remember a paid campaign I never planned properly, a localisation programme I could not handle, and an onpage audit I never finished.
Vu Quynh Anh — hired as a marketer, survived as an SEO · AhaSlides, 10/2021 – 5/2024
Two years and seven months with AhaSlides
- A global interactive presentation platform. Live polls, quizzes, word clouds, spinner wheels, interactive slide types.
- The site went from 200K to 3M monthly sessions.
- Organic search reached 723K a month. That was 35% of all traffic, on a four-year-old domain.
- Average ranking 8.6 across the tracked set.
- The team: me and one freelance SEO consultant.
No AI anywhere in this. Not for research, not for writing, not for auditing, not for translation. Things were done by hand, in spreadsheets, from 10/2021 to 5/2024.
What I was hired to do
| Area | What | How it went |
|---|---|---|
| Go-to-market | Positioning and campaigns for educators and for business people | Failed |
| Paid | Performance ads, Google Ads, YouTube ads | Failed from the start |
| On-page SEO | Keyword plans for the blog, the feature pages, user content | Worked |
| Competitors | Comparison and alternative pages against the big four (Menti, Kahoot, Slido and Poll Everywhere | Worked, then partly taken back |
| Localisation | A plan for each non-English market (German) | Right idea, bad result |
| Off-page | Backlinks, partnerships, media buying, guest posts, satellite network | Worked |
| Technical | Site vitals, performance, usability, monitoring | Fine |
| Content | Copywriting, design, video, CMS, editing, some HTML and CSS | Worked |
| Audit | Finding decay, cannibalisation and stale pages across the site | Never done |
| Process | Marketing as a Scrum team. OKRs, sprints, budget | Worked |
Most portfolio posts drop that third column. I am keeping it. It is the point of this one.
The first 12M did not work
I did not arrive as an SEO. I arrived as a marketer with a wide job description and a good SaaS product.
So I did what the job description said. A go-to-market strategy. Campaigns for educators, teachers who need to stop thirty children from drifting off. Campaigns for business people, including trainers and facilitators running workshops where nobody answers. Performance ads. Google Ads. YouTube ads.
None of it worked. Not “below target”. It did not work, from week one.
There is an easy explanation and it is true. I was not calm. I didn’t spend enough time to study the customer journey properly. I used company money by hunches, not facts.
I did not plan those campaigns properly.
I ran educators and business people at the same time, from the same budget, without deciding which one the company was actually for. I never wrote down what success would look like before I launched. No target cost. No number at which I would stop. No single question I was testing. I spent time changing creative and targeting inside campaigns whose basic idea I had never checked.
I simply didn’t have enough skills to handle the campaign.
By the time the numbers were impossible to argue with, people had started asking whether the role was working.
Then I tried SEO, last
SEO was not a strategy. It was the last thing I could do before getting fired.
It worked almost straight away. And the reason is the opposite of why the ads failed.
Someone typing how to make a spin wheel, or free live poll for class, or word cloud generator, has already decided they need it. Nobody interrupted them. They came looking.
For a free-to-start product that is everything. Ads pay to create demand that your price cannot pay back. Search picks up demand that already exists, for almost nothing, and it keeps working after you stop.
I started with long-tail keyword strategy.
I would like to say I worked this out on purpose. I did not. I ran out of options, took the last one, and it turned out to be the one the business model had been pointing at all along. Getting the right answer by elimination still counts. But it is not a method, and I do not let myself call it one.
The keywords
Most SaaS teams start a blog and hope some of it converts. What actually carried our traffic was the feature pages. The parts of the product you could use right there, on the page, with no account.
Below is an example of the top value back then, “spinner wheel”
| Keyword | Volume | Difficulty | Position | Page |
|---|---|---|---|---|
| random wheel generator | 22,000 | 75 | 4 | /features/spinner-wheel/ |
| spin wheel custom | 12,000 | 73 | 5 | /features/spinner-wheel/ |
| generator wheel | 11,000 | 47 | 3 | /features/spinner-wheel/ |
| picker wheel | 9,200 | 64 | 4 | /features/spinner-wheel/ |
| spin the wheel creator | 6,900 | 74 | 3 | /features/spinner-wheel/ |
| word cloud interactive | 40 | 44 | 8 | /features/live-word-cloud-generator/ |
| best friend quiz | 8,700 | 35 | 3 | /blog/ — quiz cluster |
So here is the thing I have used on every project since. If your product has a part people can use without signing up, that part is your best marketing asset. It usually belongs to engineering. Nobody in marketing has ever booked a meeting about it.
Around the feature pages sat the blog. Its job was not thought leadership. Its job was to own the occasions. A classroom quiz. An icebreaker for a team meeting. Trivia on a Friday. A quiz at a wedding. That is where someone first needs a live poll and does not yet know that live polls are a category.
Keep in mind that, this strategy is out of date. It’s now 2026, not 2021. People can produce spinner wheel out of simple prompts on Claude.
Kahoot, Mentimeter, Poll Everywhere, Slido
There were gaps in the market. Not everyone was there for B2C…
All of those 4 brands are much bigger than us. All have strong brands with good corporate sale pipeline. People search those names all day, but few of their customers were not happy. Users wanted something cheaper, features which those 4 tools didn’t provide.
The mission was to fill the gap. I was in Marketing so I had limitedly resources, which means I wasn’t able to touch the product side. But with SEO, below are two things I had done:
- Launch a proper onpage plan Long-tails, directed to customer needs, filled in the competitor keyword gaps, ‘alternative’ to any competitor which I could relate AhaSlides to…
- Proper backlink strategy: not by quantity, but by clear categories. AhaSlides itself is already an exciting online product, it was not difficult to relate it to Games, classroom tools or business pitching tips…
That traffic converted better than almost anything else on the site. It showed up in revenue, not only in sessions. Which makes sense. Someone looking for an alternative to a paid tool has already accepted that this kind of software is worth paying for. Half the sale is done before they arrive.
Then Google took it back
One morning I opened the rank tracker and one line had moved like this.
| Keyword | Volume | Was | Became | Traffic lost |
|---|---|---|---|---|
| google spinner | 163,000 | 2 | 96 | −19,770 / month |
Traffics just dropped, because of one keyword. Gone in four weeks.
No penalty. No technical mistake. Google simply changed its mind about who deserves to rank for a search containing another company’s brand name.
It was not alone. In the same weeks google slides (1.1M searches) slipped to 97 and then disappeared. trivia questions (175K) did the same from 81.
The part I am not proud of is that it surprised me.
I could have told you our top keyword’s traffic at any moment. I could not have told you what share of our whole organic traffic sat on one URL. So I had run a channel for two years without knowing how exposed it was. The numbers were in exports I pulled myself, every month. I just never asked the question.
Three things changed after that, and they stayed changed:
- Concentration is a number I check now. What share sits on the top URL. It takes five minutes.
- Borrowed traffic is borrowed. Anything ranking on someone else’s brand name is on loan. Plan for losing it.
- Do not panic and rewrite the winner. The page had not changed. The results page had. Rewriting it would have risked the four keywords still working.
Localisation was a problem
The answer to concentration was not another big English keyword. It was taking the pages that already worked into other languages. Same asset. Smaller markets. Much less competition.
The idea was right, and I can prove it. The spinner wheel page in Vietnamese ranked second for quay bánh xe may mắn. That is 6,600 searches a month, against nothing like the pressure on the English page. Slovenian blog posts picked up links from Slovenian teaching sites.
Then I could not run it properly. This is the failure I think about most.
- Every language was a manual job. Translation. On-page. Metadata inside character limits. Internal links. Hreflang. Checking each page got indexed. Eleven-plus versions, by hand, in spreadsheets.
- There were no tools. In 2024 AI had arrived for the public, but it had not arrived for marketers yet. Nothing to translate and optimise at scale. Nothing to group searches per market. Nothing to check a page in a language I cannot read.
- The contents were relied heavily to the freelancers, and I had no criteria for choosing them. How do you judge a Slovenian SEO writer when you do not read Slovenian? A test piece shows you they can write. It does not show you whether they picked the words people in that market actually type, or whether they understood the intent at all. I was choosing by the number, on who was free that week, and on how confident the reply email sounded.
- I could not tell good work from bad. Some language versions were good. Some were probably not. I only found out from rankings, months later, when the pages were already published and linked.
The audit was never done
My workflow worked, then it stopped growing. It stopped at auditing.
By 2024 the site was thousands of URLs across eleven-plus language versions. Auditing that means going page by page. What has gone stale. What is competing with our own page. What lost a ranking, and why. What quietly decayed after publishing. Which internal links pointed at the wrong thing.
Two people and a spreadsheet couldn’t do that. It was not a task, it was a backlog that grows faster than you could work it. We audited what we could reach. Everything else got old in the dark.
And there was nothing to help. No way to crawl and classify at that size. No way to compare a ranking drop against a content change. No way to group thousands of searches into intent without a week of sorting by hand.
I know precisely how to build this now, it’s the exact system I’ve spent the past two years constructing elsewhere. By scheduling rank and traffic exports to join automatically with master URL lists, AI can instantly flag content decay and cannibalization. Instead of buried crawl reports, human experts get a lean, prioritized priority queue. Human judgment remains intact, but manual counting is eliminated. AI drives all initial content creation based on strict human oversight and structured workflows, feeding directly back into long-term rank and traffic tracking.
My regrets
Writing it plainly, because leaving it vague is how a portfolio post turns into a brochure.
- The paid channel was never fixed. I abandoned it. I did not solve it. I still do not know whether a properly planned campaign would have worked, because I never ran one.
- Localisation never became a system. It stayed a pile of freelance relationships held together by me, with quality I could not check in most of the languages.
- The audit backlog was handed over, not cleared. Thousands of URLs nobody had looked at since the day they went live.

What I’d tell myself in 2021
- Write down what failure looks like before you launch. My ads failed in week one, which means they were wrong before any money moved. A stopping rule would have shown me that in days, not months.
- Pick an audience. Educators or business, you need to choose. Running both means you learn nothing from either.
- Learn and practice English. I was most complained about my English, since I was the content manager of the project. Till today, I still have no idea why my boss kept me around for nearly 3 years.
- Do not hire in a language you cannot judge until you have written the criteria. Write the test. Decide the acceptance check. Find the reviewer. Then post the brief.
Two years and seven months on a channel I reached for because nothing else was left. It changed how I think, how I work and what I am paid. I know how to finish off properly now, but it’s too later.

