Agent Experiences

Education AXO Guide

A prospective student asks an assistant what a degree costs, how long it takes, and whether they can do it evenings. Those three facts exist at your institution. They are usually in a downloadable prospectus, a fees page written for the bursar, and a paragraph on a page nobody links to.

Education has an unusual profile among the industries covered here. The subject-matter expertise is real and deep, the structured-data vocabulary for describing it is one of the most developed on Schema.org, and almost nobody in the sector uses either in a way a retrieval system can read. Institutions write beautifully about their mission and leave the tuition figure in a PDF.

Five questions decide the shortlist, and most sites answer none of them in text

What are the entry requirements. How much does it cost. How long does it take. Can I do it part-time. Is it accredited. Every applicant asks some version of these before they look at anything else, and an assistant asked to compare four programs is going to try to fill exactly those five slots for each one.

A program that fills all five gets compared. A program that fills two gets described vaguely or dropped, because a comparison with holes in it is a bad answer and the model has three other options that do not have holes. Nothing about your program's quality enters into that.

The reasons those slots come up empty are boringly consistent across the sector:

  • The prospectus. A 90-page designed PDF, exported from InDesign, with no tag structure. The entry requirements are in it. They are also, functionally, nowhere. Untagged PDFs are the single largest reservoir of unreadable factual content in higher education.
  • The fee table as an image. Somebody screenshotted a spreadsheet. It renders fine. It contains no text.
  • The answer spread across four pages. Requirements on the admissions page, cost on the finance page, duration in the course catalog, mode of study in an FAQ. A human clicks around and assembles it. An extraction pass gets one fragment and the fragment does not say which program it belongs to.
  • Prose that avoids the number. "Our tuition is competitive and extensive financial support is available" contains no fact. It cannot be extracted because there is nothing in it to extract.
  • Tabs and accordions that fetch on click. If the entry requirements load only when someone opens the panel, they are not in the HTML and they do not exist to anything that does not run your JavaScript.

The fix is a single page per program that states all five facts in server-rendered text, near the top, in sentences that make sense alone. Not a landing page that links to five other pages. The page itself.

Nothing to lift

"Our flexible MSc is designed for working professionals, with a range of entry routes and a fee structure that reflects our commitment to access. Download the prospectus to learn more."

Five facts, each quotable alone

"The MSc Data Science at Example University takes 12 months full-time or 24 months part-time. Tuition for the 2027/28 academic year is $18,400 for domestic students. Entry requires a bachelor's degree at 2:1 or equivalent in a quantitative subject, plus evidence of programming in Python or R. The program is accredited by the Example Accrediting Commission, accreditation last reaffirmed in June 2024."

The right-hand version names the institution inside the sentence rather than relying on the page title, states the currency alongside the number, and attaches the academic year to the fee rather than leaving it to the reader to infer. Each of those is a small editorial habit that costs nothing and survives being pulled out of context. Keep the prospectus. It is a real thing that real applicants download. Just stop treating it as where the facts live.

Cost, deadlines and accreditation are dated facts, and stale ones do measurable harm

A wrong tuition figure repeated confidently costs somebody a decision. A passed application deadline stated as current costs somebody a year. These are not the same category of error as an out-of-date blog post, and the sector should stop managing them as though they were.

Assistants cache, index snapshots persist, and aggregators copy. You cannot recall a number once it is out. What you can control is whether the number was self-dating when it left, because a figure that carries its own academic year degrades into a historical fact rather than a false current one.

Undated     "Tuition is $18,400."
Dated       "Tuition for the 2027/28 academic year is $18,400 for domestic
             students, set by the Board of Trustees in March 2026."

Undated     "Applications close on 30 June."
Dated       "Applications for September 2027 entry close on 30 June 2027
             at 23:59 Eastern Time."

Read the second of each pair as a sentence somebody encounters with no surrounding page. It still tells them what they need and it tells them when it stops applying. That is the whole test.

The harder problem is duplication. Large institutions publish the same tuition figure on the program page, the fees page, the international students page, a scholarship comparison, a downloadable PDF, and a departmental microsite maintained by one person in the faculty office. They are correct on the day they are written and they drift apart within eighteen months, and the retrieval system has no way to tell which of six versions is current. Neither, usually, does the institution.

  • One authoritative page per fact. The fee lives in one place, with one URL. Everything else links to it. If a departmental page needs to show the number, it should pull it from the same source that renders the canonical page, not retype it.
  • State the effective date in the sentence, not in a page footer. "Effective 1 August 2026" sitting in small grey type below the table does not travel with the number above it.
  • Publish next year's figure with its year attached rather than replacing this year's. Applicants in an admissions cycle need both, and a page that carries two clearly labelled years is far less likely to be misread than one that silently swapped.
  • Treat a passed deadline as an incident. The day after a deadline, the page that announces it should say so in its first sentence and name the next one. A cheerful "apply by 30 June" still live in August is actively misleading and it is the easiest thing on this page to automate.
  • Accreditation gets a status, an accreditor, and a date. "Accredited by the Example Accrediting Commission, last reaffirmed June 2024, next review 2031" is checkable. "Fully accredited" is a claim with nothing behind it, and accreditation is exactly the sort of claim a careful applicant will try to verify against the accreditor's own register.
  • Link to the accreditor's directory entry. Third-party confirmation you do not control is worth more than any amount of self-description, and this is one of the rare cases where the third party publishes a stable public lookup.

There is a retrieval-side argument for the same discipline. Ahrefs' 2026 analysis found that AI-cited URLs skew roughly 25.7% fresher than the web at large (source). Read that as a reason to fund a review cadence on the pages carrying money and dates, not as a reason to bump timestamps across the catalog.

Course and EducationalOccupationalProgram describe more than anyone emits

Schema.org models education in more detail than it models most things. EducationalOccupationalProgram has properties for application windows, expected completion time, terms per year, credits, financial aid eligibility, and the occupational category graduates end up in. Course has course codes, prerequisites, credits, available languages, and hasCourseInstance for describing each actual offering with its own mode, schedule and instructor.

Almost nobody emits any of it, and the reason is worth naming: there is no rich result to chase. Google's course list feature requires only name and description, so a team optimizing for a visible SERP treatment stops there. Everything past those two fields has to be justified on machine-readability grounds alone. That justification is now the stronger one, but it is a harder sell internally, and pretending otherwise helps nobody.

Which type to use is the question people get stuck on. Use EducationalOccupationalProgram for the thing an applicant applies to — a degree, a certificate, an apprenticeship, a bootcamp — because that is where the admissions and completion properties live. Use Course for a unit of teaching, and CourseInstance for a particular delivery of it. A university uses both, linked through hasCourse.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "CollegeOrUniversity",
      "@id": "https://example-university.edu/#organization",
      "name": "Example University",
      "url": "https://example-university.edu/",
      "address": {
        "@type": "PostalAddress",
        "streetAddress": "1 Example Quadrangle",
        "addressLocality": "Springfield",
        "addressRegion": "IL",
        "postalCode": "62701",
        "addressCountry": "US"
      },
      "identifier": {
        "@type": "PropertyValue",
        "propertyID": "IPEDS UnitID",
        "value": "000000"
      }
    },
    {
      "@type": "EducationalOccupationalProgram",
      "@id": "https://example-university.edu/programs/msc-data-science#program",
      "name": "MSc Data Science",
      "url": "https://example-university.edu/programs/msc-data-science",
      "description": "A 12-month taught master's in statistical learning, data engineering and applied machine learning, with a supervised dissertation.",
      "provider": { "@id": "https://example-university.edu/#organization" },
      "programType": "Postgraduate taught",
      "educationalProgramMode": "full-time",
      "timeToComplete": "P1Y",
      "termDuration": "P3M",
      "termsPerYear": 3,
      "numberOfCredits": 180,
      "educationalCredentialAwarded": {
        "@type": "EducationalOccupationalCredential",
        "name": "Master of Science in Data Science",
        "credentialCategory": "degree",
        "educationalLevel": "Master's degree"
      },
      "occupationalCategory": {
        "@type": "CategoryCode",
        "codeValue": "15-2051.00",
        "name": "Data Scientists",
        "inCodeSet": {
          "@type": "CategoryCodeSet",
          "name": "O*NET-SOC",
          "url": "https://www.onetonline.org/"
        }
      },
      "programPrerequisites": [
        {
          "@type": "EducationalOccupationalCredential",
          "credentialCategory": "degree",
          "name": "Bachelor's degree at 2:1 or equivalent in a quantitative subject"
        },
        "Evidence of prior programming in Python or R"
      ],
      "applicationStartDate": "2026-10-01",
      "applicationDeadline": "2027-06-30",
      "startDate": "2027-09-20",
      "financialAidEligible": "Federal Direct Unsubsidized Loan",
      "offers": {
        "@type": "Offer",
        "category": "Tuition, 2027/28 academic year, domestic students",
        "price": "18400",
        "priceCurrency": "USD",
        "priceValidUntil": "2028-08-31",
        "url": "https://example-university.edu/fees/postgraduate-2027-28"
      },
      "hasCourse": { "@id": "https://example-university.edu/courses/ds5100#course" }
    },
    {
      "@type": "Course",
      "@id": "https://example-university.edu/courses/ds5100#course",
      "name": "DS 5100: Foundations of Statistical Learning",
      "url": "https://example-university.edu/courses/ds5100",
      "description": "Regression, classification, resampling and regularisation, taught in R with weekly problem sets and a graded project.",
      "courseCode": "DS 5100",
      "provider": { "@id": "https://example-university.edu/#organization" },
      "numberOfCredits": 15,
      "availableLanguage": "en",
      "coursePrerequisites": "Undergraduate linear algebra and single-variable calculus",
      "educationalCredentialAwarded": "15 credits toward the MSc Data Science",
      "hasCourseInstance": [
        {
          "@type": "CourseInstance",
          "courseMode": "onsite",
          "courseWorkload": "PT10H",
          "startDate": "2027-09-20",
          "endDate": "2027-12-11",
          "instructor": { "@id": "https://example-university.edu/#/schema/person/aokafor" },
          "location": {
            "@type": "Place",
            "name": "Example University, Sciences Building, Room 214",
            "address": { "@id": "https://example-university.edu/#organization" }
          }
        },
        {
          "@type": "CourseInstance",
          "courseMode": "online",
          "courseWorkload": "PT10H",
          "startDate": "2028-01-17",
          "endDate": "2028-04-07",
          "instructor": { "@id": "https://example-university.edu/#/schema/person/aokafor" },
          "offers": {
            "@type": "Offer",
            "category": "Standalone module fee, 2027/28",
            "price": "1530",
            "priceCurrency": "USD"
          }
        }
      ]
    }
  ]
}
</script>
  • Durations are ISO 8601, and the units matter. timeToComplete of P1Y is one year; P1M is one month. courseWorkload is conventionally read as hours per week, so PT10H means ten hours weekly rather than ten hours in total. Say which you mean in the page text as well, because the convention is not self-evident.
  • One CourseInstance per actual offering. The autumn on-campus run and the spring online run are different objects with different dates, different modes, and possibly different prices. Collapsing them into one instance with courseMode of "blended" describes something you do not offer.
  • occupationalCategory takes a code, not a job title. A CategoryCode pointing at O*NET-SOC connects your program to an external taxonomy that already knows what those graduates earn and where they work. A bare string does not.
  • Model prerequisites as objects where you can. programPrerequisites accepts text, and text is better than nothing, but an EducationalOccupationalCredential object states the credential category explicitly and mixed arrays are legal, so use both.
  • Generate this from the same source as the page. Markup that says $18,400 above a page that says $19,100 is worse than no markup, because you have now published two conflicting figures under your own domain and given a retrieval system a reason to distrust both.
  • Do not mark up what you do not have. If your CMS has no reliable field for accreditation dates or application deadlines, omit the property. Fabricated or template-defaulted values are worse than gaps.

Your faculty are the authority signal you already have and do not express

Most industries writing about expertise have to manufacture it. Universities employ people who have spent twenty years on a narrow question, published under their own names, and hold credentials a third party will confirm. Then the website renders that as a headshot, a job title, and a paragraph of prose with the person's ORCID nowhere on the page.

ORCID is the single most useful identifier in this sector. It is a persistent, globally unique ID for a researcher, it resolves to a public record of their affiliations and publications, and it disambiguates people with common names in a way no amount of biographical prose can. Put it in identifier as a PropertyValue and in sameAs as a resolvable URL.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Person",
  "@id": "https://example-university.edu/#/schema/person/aokafor",
  "name": "Ana Okafor",
  "givenName": "Ana",
  "familyName": "Okafor",
  "url": "https://example-university.edu/people/ana-okafor",
  "jobTitle": "Professor of Statistics",
  "worksFor": { "@id": "https://example-university.edu/#organization" },
  "affiliation": {
    "@type": "CollegeOrUniversity",
    "name": "Example University, Department of Mathematics and Statistics"
  },
  "alumniOf": {
    "@type": "CollegeOrUniversity",
    "name": "Example Institute of Technology"
  },
  "knowsAbout": [
    "Bayesian hierarchical modelling",
    "Causal inference in observational health data",
    "Missing data and multiple imputation"
  ],
  "hasCredential": {
    "@type": "EducationalOccupationalCredential",
    "name": "PhD, Statistics",
    "credentialCategory": "degree",
    "educationalLevel": "Doctoral degree",
    "dateCreated": "2009",
    "recognizedBy": {
      "@type": "CollegeOrUniversity",
      "name": "Example Institute of Technology"
    }
  },
  "identifier": {
    "@type": "PropertyValue",
    "propertyID": "ORCID",
    "value": "https://orcid.org/0000-0002-1825-0097"
  },
  "sameAs": [
    "https://orcid.org/0000-0002-1825-0097",
    "https://example-university.edu/people/ana-okafor"
  ]
}
</script>
  • Attribute course pages and research summaries to a named person. An author that resolves to a Person with an ORCID is a different kind of claim from "Office of Marketing and Communications". Institutional bylines throw away the one advantage you have over every content marketer writing about the same subject.
  • knowsAbout should be narrow. "Statistics" matches nothing usefully. "Causal inference in observational health data" matches the question somebody actually asked.
  • Link the person and the teaching in both directions. The CourseInstance names its instructor; the faculty page names the courses. Relationships stated from both ends resolve into an entity more reliably than either half alone.
  • Keep the profiles alive. Faculty pages are the most reliably stale content on a university site. A profile listing a 2018 grant and no publications since is a credibility signal too, and not the one you wanted.
  • Do not manufacture what is not there. If a program is taught by adjuncts and practitioners rather than publishing researchers, say so plainly and describe their practice. Inflated academic framing is checkable and the check is cheap.

Accessibility and machine-readability are largely the same work

In most sectors accessibility is a commitment. In education it is frequently a legal obligation. The US Department of Justice's April 2024 Title II rule sets WCAG 2.1 Level AA as the technical standard for state and local government web content, which covers public schools, community colleges and public universities; an interim final rule published on 20 April 2026 moved the compliance dates to 26 April 2027 for entities serving populations of 50,000 or more and 26 April 2028 for smaller entities and special districts (ada.gov).

That deadline is the budget you already have. A good deal of what it buys you is machine-readability, and the overlap is specific rather than rhetorical.

Untagged PDF prospectus
  Screen reader   announces an unstructured wall of text, no headings
  Fetcher         extracts an unstructured wall of text, no headings

Fee table as a screenshot
  Screen reader   announces "image"
  Fetcher         extracts nothing

Headings chosen for font size, not hierarchy
  Screen reader   heading navigation lands in the wrong places
  Fetcher         section boundaries inferred wrongly, passages merged

Deadline shown only by a red badge
  Screen reader   colour conveys nothing
  Fetcher         status is not in the text

Recorded lecture with no transcript
  Screen reader   no access to the content
  Fetcher         no access to the content

Five defects, one root cause each time: meaning encoded in something other than structured text. The remedy is identical for both audiences, which means the accessibility remediation project already funded and scheduled at most institutions is also the largest AXO project available to them, and nobody has to argue for it twice.

The overlap is not total and it is worth being honest about where it stops. Keyboard focus order, visible focus indicators, contrast ratios, motion preferences and touch target sizes matter enormously to real people and do nothing whatsoever for retrieval. Conversely, JSON-LD does nothing for a screen reader. Anyone selling accessibility as an AXO tactic, or the reverse, is overstating a genuine and useful overlap.

On PDFs specifically: the pragmatic move is to publish the facts as HTML first and treat the PDF as a printable rendering of that page rather than the source of record. Tagging a 90-page prospectus properly is real work and it still leaves you with a document nobody links into at the paragraph level. If a document has to stay a PDF, tag it, give it a real title, and put its key figures on a web page too.

Discovery moved into the assistant; the application stayed on your site

SparkToro's 2026 analysis found that 68% of US Google searches ended without a click between January and April 2026, up from 60.45% in 2024 (source). Applied to admissions, that describes a top of funnel which has largely stopped visiting.

Nobody is going to submit a UCAS form or a Common App essay inside a chat window. The application still happens on your site or your platform. What has moved is everything before it: the long browsing phase where somebody assembled a list of twelve institutions, narrowed it to four, and only then started clicking. That phase is now a conversation you are not in, and you are represented in it by whatever facts about you are extractable.

Two consequences follow, and the second one catches people out.

First, being accurate and comparable inside the assistant matters as much as the landing page does. You are being described to a prospective student whether or not you have written anything for that purpose, and the description is assembled from your fee page, your course catalog, and whatever a third-party rankings site said about you.

Second, the visits you do get arrive further down the funnel. Somebody who lands on your program page after an assistant shortlisted you has already compared you to three alternatives and chosen to look closer. They convert at a different rate than the browsing traffic you used to get, they are a smaller number, and most analytics setups will file them under direct or referral without comment. An admissions team watching organic sessions fall and drawing a conclusion about interest in the program is measuring the wrong thing. The measurement guide covers how to separate those signals before anyone makes a budget decision on them.

One practical note for international recruitment. Fee, visa and eligibility answers vary by applicant nationality and residency, and an assistant summarizing a single number will pick one. State which cohort each figure applies to inside the sentence that contains it, the same way a legal page states its jurisdiction. "Tuition is $18,400" on a page whose heading says "Domestic students" becomes wrong the moment it is quoted.

Education AXO checklist

  • Entry requirements, cost, duration, study mode and accreditation stated in server-rendered text on the program page itself
  • Every fee carries its currency, its academic year, and the cohort it applies to, inside the sentence
  • Every deadline carries its entry cycle, its date, and its time zone
  • One authoritative page per fact; departmental copies pull from it rather than retyping it
  • Passed deadlines updated the next day, with the following cycle named
  • Accreditation stated with the accreditor, the status, the reaffirmation date, and a link to their public register
  • EducationalOccupationalProgram for anything applied to; Course plus one CourseInstance per real offering
  • Structured data generated from the same source that renders the page, never hand-maintained alongside it
  • Faculty as Person with ORCID in identifier and sameAs, narrow knowsAbout, and named bylines on course and research pages
  • No facts locked in untagged PDFs or screenshotted tables; WCAG 2.1 AA work scoped and scheduled against the Title II dates
  • Analytics able to distinguish assistant-referred arrivals before anyone concludes the channel is dead

Related reading: schema markup for the implementation mechanics, trust and authority signals for the credibility patterns underneath the faculty section, and the glossary for terminology.

Example University, the Example Accrediting Commission and the people named in the markup samples are placeholders. The accessibility deadlines above describe the US Department of Justice's Title II rule as published; institutions outside the United States, and private institutions inside it, are covered by different instruments. Check what applies to you rather than taking the dates here as your compliance calendar.

Stay Updated

Analysis of AI search, crawler policy and agent standards — sent when there is something worth reading, roughly twice a month. Unsubscribe anytime.

We store your email address only to send you this newsletter. See our privacy policy.

Back to Industries