Skip to main content

Content modeling for beginners

 



Introduction

Learning by Doing – Optimizely Build Series is a YouTube series where I am building a fictional website called TasteTrail, food discovery and recipe website using Optimizely CMS 12. 

In this episode, I have deep dived into Content Modeling &  focused on what we learned—the strategic thinking, trade-offs, and best practices while shaping our content model.



Content Modeling Is Strategic:


Content modeling was approached as a strategic exercise, not just a technical one. 

It’s about aligning content structure with:

  • User experience
  • Personalization goals
  • Scalability and governance
  • Editorial workflows

Hybrid modeling approach was chosen—starting with a top-down vision and refining it bottom-up based on real content and user behavior.

Foundation First

Started by defining BasePage and BaseBlock to centralize shared properties like SEO metadata and display settings. 

This top-down design gave us consistency across all content types.

Key Learnings:

  • Use GroupName to organize fields into intuitive tabs.
  • Keep GUIDs stable across deployments.
  • Controlled vocabularies (via selection factories) prevent editorial chaos

Taxonomy Is a Power Tool

Next step was to model taxonomy using Optimizely Categories


It was split into three subtrees: CuisineDietary, and Tags


This structure powers:

  • Navigation
  • Faceted search
  • Personalization

Bottom-up refinement helped us evolve the taxonomy as real recipes were added. 


For example, “South Indian” was introduced after seeing regional diversity in content.

Structured Content

The RecipePage is the heart of TasteTrail website. 


It includes:

  • Core fields: Description, Servings, Prep/Cook Time
  • Taxonomy: Cuisine, Dietary, Tags
  • Blocks: Ingredients (IngredientItemBlock), Steps (RecipeStepBlock)
  • Media: Thumbnail, Gallery
  • Validation: Servings > 0, at least one ingredient and cuisine

We started with a structured model, but kept it extensible—adding ratings and favorites later on. 

Media Needs Structure Too

Modeled both images and videos as structured media types:

  • RecipeImage: JPG, PNG, WebP + AltText
  • RecipeVideo: MP4, WebM + Transcript

This top-down approach ensures accessibility, SEO, and editorial consistency.

Lesson: Media isn’t just decoration—it’s content. Treat it with the same as other content types.

Controlled Vocabularies Improve Quality

Fields like Difficulty use selection factories to enforce valid values: Easy, Medium, Hard.


Why it matters:

  • Prevents typos and inconsistent data
  • Improves filtering and analytics
  • Enhances editor experience

Search & Filters Must Be Modeled Early

Indexed key fields and designed filters for:

  • Cuisine & Dietary (multi-select)
  • Difficulty (selection factory)
  • Time (numeric ranges)

 This bottom-up tuning was driven by real user behavior.

Personalization Is Behavior-Driven

Created Visitor Groups based on user actions—like viewing ≥3 Italian recipes. 

These groups personalize teaser blocks on the Start Page.

Key Insight:
Don’t hardcode taste profiles. Let behavior shape personalization. 

Store profiles and map them to rules.

What We Learned

Here’s what this modeling journey taught us:

  • Content modeling is strategic—it shapes UX, personalization, and scalability.
  • Hybrid modeling works best: top-down for structure, bottom-up for adaptability.
  • Taxonomy, blocks, and media types must be modeled with intent.
  • Search and personalization should be part of the modeling conversation from day one.

Watch the Full Episode



Comments

Popular posts from this blog

Create a Simple home page in Optimizely CMS

  Introduction In this blog post, I will walk you through a step by step process to create a very basic home page on a Optimizley CMS Empty site. This is part of the “Learning by Doing: Build series” where we build a fictional website from scratch to focus on hands on learning and gain practical insights. If you prefer a video, please check out Optimizely CMS - Learning by Doing : EP02 . Step 1: Create Empty Website Create a project using Optimizley CMS Empty Template     Build and Run   Set up administrator account You will be redirected to home page but since the home page is not yet set up, 404 error is displayed Verify if you are able to login to admin / CMS interface by navigating to localhost:5000/EPiServer/CMS Step 2: Create Models •        Create Base Page Type (SitePageData.cs) •        Base class for all the pages to inherit common properties like SEO •   ...

Optimizely CMS : Overview of the Architecture

Optimizely is considered one of the top digital experience platforms.   In this blog, let us break down the architecture of Optimizely CMS, which is the core of the Optimizely DXP stack. This quick 3-minute read offers a concise glimpse into the layered architecture of Optimizely CMS. Optimizely CMS architecture can be visualized as layered architecture which includes the following layers. Platform & Framework The Optimizely CMS is build on ASP .NET core & hosted using Webservers like IIS, Kestrel OR Cloud environments Optimizely CMS Admin UI is built using JavaScript & DOJO toolkit enabling functionality like drag and drop, On page editing, responsive panels, custom widgets, plugins etc Data This layer handles storage and retrieval of content Microsoft SQL Servers stores the content, Azure SQL is also supported Integration to External content provides great flexibility Create Playground for the content authors and marketers Offers basic building bl...

Demystifying Optimizely Synchronization

  If you have ever wondered how basic information (like GUID) from the ContentType created using Optimizely Admin view and the properties from the code come together seamlessly to provide the content type. Let us unbox and find out the process of prefect harmony   What is Synchronization? As soon as the Optimizely website starts, it scans all the assemblies and looks for classes decorated with [ContentType] and properties [Display] or [Property]. Once the scan is complete, it compares these with the content types defined in the database and synchronizes based on one of the seven use cases as mentioned below. Key 7 Use cases :  # Use Case Pre-Condition Sync Process 1 New Content Type A new Class with [ContentType] is added to the code ·        Creates content type in DB ·        Properties are added to DB 2 ...