Content modeling
How AISquare structures content and how to map it onto your UI.
AISquare organizes content into a hierarchy. Understanding it is the key to building feeds, learning flows, and discovery pages that render cleanly.
AI Studio (Publication)
|-- Experiences
| '-- ResourcesFor the entities themselves, see Core Concepts. This guide focuses on turning them into UI.
Building blocks
AI Studio
The top-level container: a workspace, a content hub, a themed collection of
experiences. It is addressed by a url, for example ai-research-studio.
Experience
A logical grouping of content, such as a topic, a module, or a journey. Example: "Advanced Machine Learning Models." An experience is a container, not a content item.
Resource
The actual content unit. An experience holds many resources, and each resource has a type.
| Type | Use case |
|---|---|
AI_EXPERT | Interactive AI systems |
AI_NOTE | Educational or written content |
QUEST | Challenges or tasks |
PODCAST | Audio content |
Two response formats
AISquare returns content in two shapes.
Flattened (recommended)
Each resource comes back as its own item, with the parent experience repeated on each row.
{
"experience_title": "Advanced Machine Learning Models",
"resource_type": "AI_EXPERT",
"resource_title": "Image Classification Expert"
}It looks redundant, and that is the point: a frontend can render the rows as a flat list with no joining. Use it for feeds, search results, and discovery pages.
Nested
Experiences contain their resources inside them. Use it for a detailed experience view or a structured content page, where the grouping matters.
UI patterns
Feed
The common case. Use flattened data to build a scrollable list.
[ AI Expert Card ]
[ AI Note Card ]
[ Quest Card ]Grouped by experience
Group resources under their experience for a sectioned layout.
Experience: Advanced ML
- AI Expert
- AI NoteCollection
Use collections to build playlists, courses, and learning paths from ordered groups of experiences.
Mapping fields to UI
| API field | UI usage |
|---|---|
experience_title | Section header |
resource_title | Card title |
resource_type | Badge or icon |
cover_image | Thumbnail |
creator | Author info |
metrics | Likes, views, engagement |
Rendering by resource type
Different types call for different layouts. Branch on resource_type:
if resource_type == "AI_EXPERT":
show_interactive_ui()
elif resource_type == "AI_NOTE":
show_reading_layout()
elif resource_type == "QUEST":
show_challenge_ui()Using metrics
Each item carries engagement metrics. Use them to sort (trending, popular),
highlight popular content, and surface engagement in the UI. See the metrics
section of Core Concepts for what is
tracked.
Designing for scale
As content grows:
- Paginate. Do not load everything at once.
- Lazy load. Fetch more as the user scrolls.
- Cache. Reuse responses for frequently accessed data.
See Search and filtering for the list parameters that drive all three.
Common mistakes
- Treating experiences as content. An experience is the container; a resource is the content.
- Ignoring resource types. Each type needs its own UI handling.
- Overfetching. Always use pagination and filters.
Putting it together
- Fetch flattened resources.
- Map each item to a UI card.
- Group or filter if needed.
- Render as a feed or sections.