bengarves.com/work/proof-of-concept-and-mvp-projects
Proof of Concept and MVP Projects
Project One Pager: Projects Eleanor and Ella
From Ben Garves’s work at Udemy. Re-created from the original document, with people’s names, internal links and non-public numbers removed or generalized.
Project brief
- Company
- Udemy
- Type
- Project one-pager
- Projects
- Ella (Topic pages) and Eleanor (Course pages)
- Prioritization
- RICE
- Teams
- Product, Engineering
A proposal to build server-rendered versions of 10 Topic pages and 10 Course pages, free of personalization and experimentation scripts, to measure what client-side rendering costs Udemy in organic search, AI-platform visibility and Core Web Vitals.
- Technical SEO
- Rendering
- Core Web Vitals
- AI search
- Experimentation
RICE Score
Prioritized with the SEO team’s RICE framework (Reach × Impact × Confidence ÷ Effort).
| Work | Impact | Confidence | Effort |
|---|---|---|---|
| Ella | 3 | 100% | 8 |
| Eleanor | 3 | 100% | 8 |
| Global | 3 | 100% | 16 |
Background
Projects Eleanor and Ella will create “orphaned” versions of 10 Topic pages (Ella) and 10 Course pages (Eleanor) which are entirely rendered server-side (SSR) in order to measure the impact CSR and experimentation has on our organic search and AI traffic.
CSR vs SSR
Client-Side Rendering (CSR) delivers minimal HTML to a user’s browser, with JavaScript executing to display full-page content. This allows for:
- Personalization of content based on user behavior and attributes
- Seamless A/B testing and experimentation
- Dynamic content updates without full page reloads
- Interactive user experiences with instant state changes
Server-Side Rendering (SSR) generates complete HTML on the server before sending it to a user, allowing for:
- Immediate content availability to users (and crawlers)
- Faster initial page paint and better Core Web Vitals (CWV) scores
- Better accessibility for search engines and AI platforms
- Reduced dependency on JavaScript execution
Why Websites Use CSR
While the two approaches have merits, and most websites use a balance of both, Udemy tends to render the majority of its pages client-side (CSR) because we’ve built our business on two competitive advantages:
- Personalization
- Dynamic course recommendations based on user history, preferences, geolocation, etc.
- Localized pricing and currency display
- Experimentation
- Continuous A/B testing of layouts, CTAs, content hierarchy, etc.
- Feature flagging for gradual rollouts
- Changes that require speed to market on targeted subsets or geos
- Data-driven iteration on course discovery and purchase flows
The Downsides to Excessive CSR
While CSR allows for increased GMV through on-page optimization, it creates a number of significant SEO/SGE challenges:
Delayed Crawling and Indexing. Google, which makes up the large majority of our non-social organic traffic, uses a two-wave crawl process, initially looking only at a page’s HTML content before circling back 5–14 days later with a second crawl that executes JavaScript. This means that:
- Changes to JS-based experiences won’t be seen or indexed for 2+ weeks.
- Fresh and trending content won’t receive a freshness boost or be indexed in time to ride the trend. Google’s QDF algorithm (“Query Deserves Freshness”) impacts an estimated 35% of searches with:
- 6–10% increase in average rank
- 15–30% increase in traffic within 90 days
- 25–45% faster indexing
- Four independent studies found JavaScript that doesn’t execute in the first ~5 seconds is typically not indexed by Google, as its bot will move on.
Core Web Vitals (CWV) Degradation. CSR has net-negative impact on all three of Google’s Core Web Vitals (CWV).
- Largest Contentful Paint (LCP) is delayed as the paint isn’t complete until the structure of the page has been populated. This also impacts revenue, as sites with LCP scores above Google’s “Good” threshold of 2.5 seconds see:
- a 37% decrease in conversion rates if scoring in the 2.5s–4.0s “Needs Improvement” range
- an 82% decrease in conversion rates if scoring worse than 6s.
- Experimentation, which is a primary reason Udemy uses CSR, drives up Cumulative Layout Shift (CLS), which also has a significant impact on ranking. This is because the script that updates the page experience for an experiment will change and likely shift content.
- Shopify found CLS fixes resulted in a 31% decrease in mobile bounce rates and a 33% increase in conversion rates.
- Interaction to Next Paint (INP), which measures the amount of time it takes for a site to react to user input, gets dragged down by CSR because users may try to interact with the page while it’s still being generated.
- A study from Google found improving a site’s INP from “Poor” to “Good” resulted in a 24% increase in conversions.
- A study from Shopify found that for every 32ms delay in INP, they lost 1.5% of conversions.
AI Platform Invisibility. AI crawlers do not execute JavaScript and will not see content not included in the original HTML shell, resulting in near-zero citations and visibility on AI search platforms like ChatGPT, Claude, etc.
Crawl Budget Waste. CSR pages consume more crawl resources, limiting the number of Udemy pages that search engines are able to index effectively.
Why Eleanor and Ella?
These projects are named after two iconic women who spent a part of their childhoods as orphans and eventually made a tremendous and lasting impact on the world:
- Eleanor Roosevelt was the longest-serving First Lady and redefined the role by becoming a powerful political figure despite traditional expectations.
- Ella Fitzgerald, the “First Lady of Song”, transcended jazz conventions and operated in a category of her own.
Who is the user?
| User | Needs | Pain points | Benefits |
|---|---|---|---|
| Search Engines + Search Crawlers | Fast, reliable access to complete HTML content without JS and high crawl efficiency | Resource-intensive JS execution, incomplete HTML shells, poor user signals | Immediate access to full page in first crawl; more efficient crawl; higher confidence in indexed content accuracy |
| AI Platforms + AI Crawlers | Static, crawlable HTML content and fast page loads for bulk content acquisition | Can’t read content served via JS, seeing only blank HTML shells | Full content visibility without JS; higher mention and citation rates, based on branded content and not third-party content; improved presence on AI-powered search and recommendation systems |
| Human Visitors | Fast page load times, smooth browsing experience, good mobile-friendly performance | Slower content paint due to JS execution, poor CWV scores, potential layout shifts, and higher bounce rates | Faster perceived loading time; improved LCP, INP, CLS scores; better mobile experience; reduced bounce rates |
Search Engines + Search Crawlers
- Needs
- Fast, reliable access to complete HTML content without JS and high crawl efficiency
- Pain points
- Resource-intensive JS execution, incomplete HTML shells, poor user signals
- Benefits
- Immediate access to full page in first crawl; more efficient crawl; higher confidence in indexed content accuracy
AI Platforms + AI Crawlers
- Needs
- Static, crawlable HTML content and fast page loads for bulk content acquisition
- Pain points
- Can’t read content served via JS, seeing only blank HTML shells
- Benefits
- Full content visibility without JS; higher mention and citation rates, based on branded content and not third-party content; improved presence on AI-powered search and recommendation systems
Human Visitors
- Needs
- Fast page load times, smooth browsing experience, good mobile-friendly performance
- Pain points
- Slower content paint due to JS execution, poor CWV scores, potential layout shifts, and higher bounce rates
- Benefits
- Faster perceived loading time; improved LCP, INP, CLS scores; better mobile experience; reduced bounce rates
Why is solving these problems big enough to matter?
This is important for Udemy as it tells us the opportunity cost of on-page experimentation and personalization.
Extrapolated out to the organic traffic increase and the increase in conversion rates across all pages if they operated solely with SSR, those gains could outweigh the conversion gains we get from personalization and experimentation. This project measures whether that trade-off holds.
What is the hypothesis?
We believe that Udemy’s current client-side rendering approach is limiting organic search visibility and AI platform discoverability to a degree that equals or exceeds the revenue benefits gained through dynamic personalization and A/B testing on affected pages. If so:
- We should set revenue and conversion rate thresholds for personalization efforts that must be hit in order to warrant dynamic content being added to a page to replace static content.
- It’s worth developing alternative methods for experimentation, like split-URL testing, that minimize CSR and scripts.
- It may be worth developing functionality that:
- Emphasizes cache on dynamic content when we have no personalization clues
- Emphasizes cache on other dynamic fields (e.g., statistics, reviews, etc.)
What are the success criteria?
| Metric | Organic traffic | Conversion rates |
|---|---|---|
| Freshness and Trending | Increase | N/A |
| Core Web Vitals: Ella (Topics) | LCP: increase; INP: increase; CLS: increase | LCP: increase; INP: increase; CLS: increase |
| Core Web Vitals: Eleanor (Courses) | LCP: increase; INP: increase; CLS: increase | LCP: increase; INP: increase; CLS: increase |
What are we building?
Mostly-static, cached versions of 10 Topic pages (Project Ella) and 10 Course pages (Project Eleanor), which operate without personalization and experimentation scripts.
Ultimately, the approach will depend on what’s technically feasible and reasonable for the SEO Squad Engineering team to tackle without impairment of the checkout system and search/sort/filter functionality.
The subset of pages we’re looking at testing on:
- Ella (10 Topic pages)
- udemy.com/topic/communication-skills/
- udemy.com/topic/capm/
- udemy.com/topic/german-language/
- udemy.com/topic/accounting/
- udemy.com/topic/digital-marketing/
- udemy.com/topic/web-development/
- udemy.com/topic/freelancing/
- udemy.com/topic/financial-modeling/
- udemy.com/topic/data-engineering/
- udemy.com/topic/claude-ai/
- Eleanor (10 Course pages)
- udemy.com/course/ai-video-school/
- udemy.com/course/full-stack-java-developer-java/
- udemy.com/course/java-curso-completo/
- udemy.com/course/sap-fico-training-course/
- udemy.com/course/the-complete-javascript-course/
- udemy.com/course/learn-claude-code/
- udemy.com/course/ai-governance-professional-aigp-certification/
- udemy.com/course/curso-de-manutencao-de-celulares-do-basico/
- udemy.com/course/spring-5-with-spring-boot-2/
- udemy.com/course/70-778-analyzing-and-visualizing-data-with-powerbi/
What are the risks?
| Risk | Notes | Mitigation |
|---|---|---|
| Partial SSR | If we fail to achieve the majority of a page using SSR due to technical or organizational constraints. | Make the largest impact possible and measure it as a percentage change, which can be extrapolated to a rough impact of “total page” equivalent. |
| Performance Degradation | A heavier server-side page could introduce latency and negate the CWV benefits of this work. | Complete load time testing before launch. |
| Content Freshness | Removing dynamic behavior could result in stale content populating. | Topic pages are already largely stagnant, surfacing the same popular courses. A smart cache strategy will make sure we periodically check for new courses. |
| Revenue Loss | The static nature of these orphaned pages could miss out on a GMV-positive optimization. | Time boxing the experiment to 6 months, to make sure we roll back the pages if we’re seeing revenue loss without commensurate organic traffic gained. It’s important we give organic search platforms time to recognize our changes and for the new content to reach maturity, which typically happens within 6 months. This experiment has also been limited to 20 average pages instead of top-grossing pages in our portfolio. |
Partial SSR
- Notes
- If we fail to achieve the majority of a page using SSR due to technical or organizational constraints.
- Mitigation
- Make the largest impact possible and measure it as a percentage change, which can be extrapolated to a rough impact of “total page” equivalent.
Performance Degradation
- Notes
- A heavier server-side page could introduce latency and negate the CWV benefits of this work.
- Mitigation
- Complete load time testing before launch.
Content Freshness
- Notes
- Removing dynamic behavior could result in stale content populating.
- Mitigation
- Topic pages are already largely stagnant, surfacing the same popular courses. A smart cache strategy will make sure we periodically check for new courses.
Revenue Loss
- Notes
- The static nature of these orphaned pages could miss out on a GMV-positive optimization.
- Mitigation
- Time boxing the experiment to 6 months, to make sure we roll back the pages if we’re seeing revenue loss without commensurate organic traffic gained. It’s important we give organic search platforms time to recognize our changes and for the new content to reach maturity, which typically happens within 6 months. This experiment has also been limited to 20 average pages instead of top-grossing pages in our portfolio.
How will we go to market with this launch?
- Spikes to determine opportunities on Project Ella and Project Eleanor pages, along with common functionality they’ll both share.
- Building supporting functionality.
- Building a test page in each family to run CWV and CSR/SSR ratio testing on.
- Launch to full list of 10 Topic and 10 Course pages.
- Organic and CWV check-ins at 1, 3, and 6-month milestones.
- Post-mortem after seeing GMV, CTR, and organic traffic impact over six months.