GEO for universities
When AI talks about your university, make it talk well.
More and more prospective students ask ChatGPT, Perplexity or Gemini before deciding. Structure your knowledge so AI reads, understands and cites you —and measure how ready you are.
What data master’s degrees does UTEF University offer?
UTEF offers the Master’s in Data Science (60 ECTS), an official program aimed at training professionals in data analysis, machine learning and advanced visualization. Available on campus and online, starting in October. For more information and enrolment, see the official site: university.edu/master-data-science
Source: Open Knowledge Format · university.edu/okf/
Your knowledge, structured
This is how a university declares its content for AI.
Programs, faculty, events, news… every content type becomes a concept with its frontmatter and its relationships. Explore it:
---
type: Griddo Page Content Type
title: Program
description: Degree program with category filters for school, area, modality, and language. Template ProgramDetail. Data pack PROGRAMS.
resource: src/schemas/content-types/page/PROGRAM/index.ts
tags: [program, academic-offer, programs-data-pack]
timestamp: 2026-07-02T00:00:00Z
griddo_schema_type: PageContentType
griddo_from_page: true
griddo_translate: true
griddo_local: false
---
Belongs to the [PROGRAMS data pack](../../data-packs/programs.md). Each instance generates a page rendered by the `ProgramDetail` template.
Category fields (`MultiCheckSelect`) act as filters for [ProgramsDistributor](../../modules/programs-distributor.md) and related listing modules. A program can belong to multiple schools, areas, and modalities simultaneously.
# Schema
| Key | Field type | Title | Mandatory | Notes |
|---|---|---|---|---|
| `title` | TextField | Title | ✅ | Page title and CMS label. |
| `abstract` | Wysiwyg (not full) | Abstract | — | Short rich-text description. |
| `image` | ImageField | Image | — | Thumbnail shown in distributor cards. |
| `centers` | MultiCheckSelect | Centers | — | → [CENTER](../../taxonomies/center.md). `from: categories.centers` |
| `schools` | MultiCheckSelect | Schools | — | → [SCHOOL](../../taxonomies/school.md). `from: categories.schools` |
| `programTypes` | MultiCheckSelect | Program type | — | → [PROGRAM_TYPE](../simple/program-type.md). `from: categories.programTypes` |
| `academicAreas` | MultiCheckSelect | Academic area | — | → [ACADEMIC_AREA](../../taxonomies/academic-area.md). `from: categories.academicAreas` |
| `languages` | MultiCheckSelect | Languages | — | → [LANGUAGE](../../taxonomies/language.md). `from: categories.languages` |
| `modalities` | MultiCheckSelect | Modalities | — | → [MODALITY](../../taxonomies/modality.md). `from: categories.modalities` |
| `intake` | DateField | Starts On | — | Next intake date. `from: intake` |
| `duration` | TextField | Duration | — | Free text (e.g. "18 months"). `from: duration` |
| `seats` | TextField | Seats | — | Free text for available seats. `from: seats` |
| `data` | ReferenceField | Document to download | — | → DOCUMENT (structured data). Manual selection only. |
# Relationships
- Filtered in [ProgramsDistributor](../../modules/programs-distributor.md) by `schools`, `academicAreas`, `programTypes`, `modalities`, `languages`, `centers`.
- [STUDY_PLAN](../simple/study-plan.md) items in the PROGRAMS data pack display inside the `ProgramDetail` template via the StudyPlan module.
- [TESTIMONIAL](../simple/testimonial.md) items reference this program via their `programs` field.
# Citations
[1] [src/schemas/content-types/page/PROGRAM/index.ts](src/schemas/content-types/page/PROGRAM/index.ts)---
type: Griddo Simple Content Type
title: People
description: Person card with center filter. Structurally similar to FACULTY but belongs to the TESTIMONIAL data pack and adds a center category.
resource: src/schemas/content-types/simple/PEOPLE/index.ts
tags: [people, faculty, testimonial-data-pack]
timestamp: 2026-07-02T00:00:00Z
griddo_schema_type: SimpleContentType
griddo_from_page: false
griddo_translate: true
griddo_local: false
---
Belongs to the [TESTIMONIAL data pack](../../data-packs/testimonial.md) despite describing a person, not a testimonial. Its purpose is to represent people (staff, speakers, collaborators) in contexts where center-based filtering is needed — distinct from [FACULTY](faculty.md) which has no such filter.
# Schema
| Key | Field type | Title | Mandatory | Notes |
|---|---|---|---|---|
| `title` | TextField | Label | ✅ | Internal CMS label only. |
| `image` | ImageField | Image | — | Shown on distributor cards. |
| `name` | HeadingField | Name | — | `isMockup: true`. Default tag h4. |
| `position` | TextField | Position | — | `humanReadable: true`. |
| `content` | Wysiwyg (not full) | Content | — | `humanReadable: true`. |
| `contact` | ConditionalField | Contact | — | Same as FACULTY — url+linkedin OR email+linkedin. |
| `centers` | MultiCheckSelect | Centers | — | → [CENTER](../../taxonomies/center.md). Enables center-based filtering. |
## Contact field (ConditionalField)
| Mode | Sub-fields |
|---|---|
| `url` | `url` (UrlField, advanced), `linkedin` (TextField) |
| `email` | `email` (TextField, format: email), `linkedin` (TextField) |
# Key difference vs FACULTY
[FACULTY](faculty.md) has no category fields. `PEOPLE` adds `centers`, making its items filterable by center in distributor queries. Both share the same visual structure but serve different data-pack contexts.
# Citations
[1] [src/schemas/content-types/simple/PEOPLE/index.ts](src/schemas/content-types/simple/PEOPLE/index.ts)---
type: Griddo Page Content Type
title: Event
description: Academic and institutional events with mandatory date, time, image, and six category filters. Template EventDetail. Data pack EVENTS.
resource: src/schemas/content-types/page/EVENT/index.ts
tags: [event, calendar, events-data-pack]
timestamp: 2026-07-02T00:00:00Z
griddo_schema_type: PageContentType
griddo_from_page: true
griddo_translate: true
griddo_local: false
---
Belongs to the [EVENTS data pack](../../data-packs/events.md). Generates a page via the `EventDetail` template. All six category fields are **mandatory**, making events highly filterable across [EventsDistributor](../../modules/events-distributor.md).
# Schema
| Key | Field type | Title | Mandatory | Notes |
|---|---|---|---|---|
| `title` | TextField | Title | ✅ | |
| `eventDate` | DateField | Date | ✅ | `from: eventDate`. Indexable — used for sorting and filtering. |
| `eventTime` | TimeField | Time | ✅ | `from: eventTime` |
| `thumbImage` | ImageField | Image | ✅ | `from: thumbImage`. Shown in distributor cards. |
| `abstract` | Wysiwyg (not full) | Abstract | — | `from: abstract` |
| `centers` | MultiCheckSelect | Centers | ✅ | → [CENTER](../../taxonomies/center.md). `from: categories.centers` |
| `schools` | MultiCheckSelect | Schools | ✅ | → [SCHOOL](../../taxonomies/school.md). `from: categories.schools` |
| `services` | MultiCheckSelect | Services | ✅ | → [SERVICE](../../taxonomies/service.md). `from: categories.services` |
| `locations` | MultiCheckSelect | Locations | ✅ | → [LOCATION](../../taxonomies/location.md). `from: categories.locations` |
| `topics` | MultiCheckSelect | Topics | ✅ | → [TOPIC](../../taxonomies/topic.md). `from: categories.topics` |
| `type` | MultiCheckSelect | Event type | ✅ | → [EVENT_TYPE](../../taxonomies/event-type.md). `from: categories.type` |
# Relationships
- All six categories are mandatory — every event must be classifiable by center, school, service, location, topic, and type.
- [EventsDistributor](../../modules/events-distributor.md) filters on `eventDate` (indexable) and all category fields.
# Citations
[1] [src/schemas/content-types/page/EVENT/index.ts](src/schemas/content-types/page/EVENT/index.ts)---
type: Griddo Page Content Type
title: News
description: News items with date (indexable), image, and five mandatory category filters. Template NewsDetail. Data pack NEWS.
resource: src/schemas/content-types/page/NEWS/index.ts
tags: [news, editorial, news-data-pack]
timestamp: 2026-07-02T00:00:00Z
griddo_schema_type: PageContentType
griddo_from_page: true
griddo_translate: true
griddo_local: false
---
Belongs to the [NEWS data pack](../../data-packs/news.md) alongside [INS_NEWS](ins-news.md). Generates a page via the `NewsDetail` template. See also [INS_NEWS](ins-news.md) for institutional news without category filters.
# Schema
| Key | Field type | Title | Mandatory | Notes |
|---|---|---|---|---|
| `title` | TextField | Title | ✅ | |
| `newsDate` | DateField | Date | — | `from: newsDate`. Indexable — used for chronological ordering. |
| `abstract` | Wysiwyg (not full) | Abstract | — | `from: abstract` |
| `image` | ImageField | Image | ✅ | `from: image` |
| `centers` | MultiCheckSelect | Centers | ✅ | → [CENTER](../../taxonomies/center.md). `from: categories.centers` |
| `schools` | MultiCheckSelect | Schools | ✅ | → [SCHOOL](../../taxonomies/school.md). `from: categories.schools` |
| `services` | MultiCheckSelect | Services | ✅ | → [SERVICE](../../taxonomies/service.md). `from: categories.services` |
| `topics` | MultiCheckSelect | Topics | ✅ | → [TOPIC](../../taxonomies/topic.md). `from: categories.topics` |
| `types` | MultiCheckSelect | Type | ✅ | → [NEWS_TYPE](../../taxonomies/news-type.md). `from: categories.types` |
# Relationships
- `newsDate` is indexable — used by [NewsDistributor](../../modules/news-distributor.md) for sort and recency filtering.
- Both `NEWS` and `INS_NEWS` belong to the same [NEWS data pack](../../data-packs/news.md); distributors can filter by content type to show only one or both.
- `NEWS` has 5 mandatory category fields; [INS_NEWS](ins-news.md) has none — intended for high-level institutional announcements that cross all category boundaries.
# Citations
[1] [src/schemas/content-types/page/NEWS/index.ts](src/schemas/content-types/page/NEWS/index.ts)---
type: Griddo Simple Content Type
title: Study Plan
description: Nested curriculum structure — years > semesters > subjects (with credits and optional document). Data pack PROGRAMS.
resource: src/schemas/content-types/simple/STUDY_PLAN/index.ts
tags: [study-plan, curriculum, programs-data-pack]
timestamp: 2026-07-02T00:00:00Z
griddo_schema_type: SimpleContentType
griddo_from_page: false
griddo_translate: true
griddo_local: false
---
Belongs to the [PROGRAMS data pack](../../data-packs/programs.md). Displayed inside [PROGRAM](../page/program.md) detail pages via the [StudyPlan module](../../modules/study-plan.md). The nesting is three levels deep: years → semesters → subjects.
# Schema
```
STUDY_PLAN
└── title (TextField, mandatory) — CMS label
└── years (ArrayFieldGroup, dropDown, mandatory)
└── heading — Year title (e.g. "Year 1")
└── detail — Year description
└── semesters (ArrayFieldGroup, dropDown, mandatory)
└── semesterTitle (TextField, mandatory, humanReadable)
└── creditsTitle (TextField, humanReadable)
└── subjects (ArrayFieldGroup, dropDown, mandatory)
└── heading — Subject name (mandatory, tag h4)
└── credits (TextField, mandatory)
└── document (FileField) — Downloadable syllabus
```
# Nesting detail
| Level | Key | Type | Mandatory | Notes |
|---|---|---|---|---|
| Root | `title` | TextField | ✅ | Editor label. |
| Year | `heading` | HeadingField | — | Year label. `isMockup: true`. |
| Year | `detail` | (preset) | — | Year description. |
| Semester | `semesterTitle` | TextField | ✅ | e.g. "Semester 1". `humanReadable: true`. |
| Semester | `creditsTitle` | TextField | — | e.g. "30 ECTS". `humanReadable: true`. |
| Subject | `heading` | HeadingField | ✅ | Subject name. Tag h4. |
| Subject | `credits` | TextField | ✅ | Credit value for this subject. |
| Subject | `document` | FileField | — | Downloadable syllabus PDF. |
# Relationships
- Displayed in [PROGRAM](../page/program.md) detail pages via the StudyPlan module.
- Multiple study plans can exist per program (e.g. one per academic year); only the active one is published.
# Citations
[1] [src/schemas/content-types/simple/STUDY_PLAN/index.ts](src/schemas/content-types/simple/STUDY_PLAN/index.ts)---
type: Griddo Page Content Type
title: Press Release
description: Minimal press release with only title and mandatory date. All editorial content lives in the PressReleasesDetail template modules. Data pack PRESS_RELEASES.
resource: src/schemas/content-types/page/PRESS_RELEASES/index.ts
tags: [press-release, media, press-releases-data-pack]
timestamp: 2026-07-02T00:00:00Z
griddo_schema_type: PageContentType
griddo_from_page: true
griddo_translate: true
griddo_local: false
---
Belongs to the [PRESS_RELEASES data pack](../../data-packs/press-releases.md). The schema is intentionally minimal — only metadata fields. All visible content (body copy, contact, attachments) is authored directly in the `PressReleasesDetail` template as page modules, not as structured fields.
# Schema
| Key | Field type | Title | Mandatory | Notes |
|---|---|---|---|---|
| `title` | TextField | Title | ✅ | Page title and CMS label. |
| `itemDate` | DateField | Date | ✅ | `from: itemDate`. Indexable — used for ordering in the press releases listing. |
# Design note
The minimal field set is a deliberate choice: press releases are typically short-lived, media-targeted items. Their content does not need to be filtered or reused across other distributors, so structured fields beyond title and date add no value. Body and contact info are free-form module content.
# Citations
[1] [src/schemas/content-types/page/PRESS_RELEASES/index.ts](src/schemas/content-types/page/PRESS_RELEASES/index.ts)Beyond schema.org
Structured data vs. Open Knowledge Format.
Schema.org markup helps traditional search engines. OKF goes a step further: it lets your knowledge travel off the website, verifiable and citable by AI agents.
Structured data · schema.org
- Marks entities inside the page (JSON-LD).
- Designed for traditional search engines (rich snippets).
- The data lives in the HTML; it does not travel off the website.
- Maintained page by page and template by template.
Open Knowledge Format · GEO
- A portable format: knowledge travels in a bundle (
/okf/). - Designed for AI agents: read, verify and cite.
- Every concept with type, source, timestamp and relationships.
- In Griddo it generates itself from your content.
SEO + GEO, automatic
Griddo does it for you.
The technical pieces that decide whether AI represents you well —and that in Griddo work with no extra effort.
SEO Outline
The semantic structure of every page, generated automatically so search engines and AI understand the hierarchy of your content.
AI-generated meta and keywords
AI-assisted generation of meta titles, descriptions and keywords, optimized page by page.
Automatic sitemap
An XML sitemap always up to date, with no manual work, for complete and error-free crawling.
llms.txt and OKF
Automatic publishing of llms.txt and OKF bundles: your knowledge, readable and citable by AI agents.
Want to know how OKF works in Griddo?
Explore the standard in depth, with our own OKF bundle live and browsable.
Get AI citing your university, free in 2026.
Through 2026, automatic generation of OKF bundles is included at no cost in Griddo. Start structuring your knowledge now so ChatGPT, Perplexity and Gemini read and cite you —and get ahead while the standard settles.
Check your university’s AI visibility
Tell us your university and we will prepare a personalized diagnosis of how ready you are for AI search.