KayJays and Kiakademie used opposite publishing setups and reached the same failure: course information was typed into pages instead of held as data. I designed the WordPress system underneath both cases so one source can serve people, crawlers and answer engines.
Both schools had a timetable people could read. Neither had a dependable source of course data that the website, search engines and future publishing surfaces could share.
KIAKADEMIE
A readable timetable that crawlers cannot see.
The entire timetable lives in a self-hosted PHP application, Kursorganizer, embedded through Advanced iFrame. Its schedule content is absent from the page HTML and from structured data: present for people, invisible to crawlers and answer engines.
KAYJAYS
A hand-written schedule that could drift.
The mirror-image problem: 26 schedule entries maintained by hand, with class codes that disagreed with the underlying records. Course information lived in page copy instead of in a reusable data model.
STUDIO CLASSES & SCHEDULE · THE FAILURE MODE
Two school websites, the same publishing problem
At Kiakademie, the timetable sits inside an embedded application. At KayJays, course information was written into pages by hand. The plugin replaces both patterns with connected records and first-party markup.
KIAKADEMIESchedule trapped in an embed
<div>
<iframe src="kursorganizer…">
</iframe>
</div>
<!-- no class names -->
<!-- no times -->
<!-- no teachers -->
<!-- no structured data -->
EXTRACTABLE FROM THE HTML
Courses0
Weekly classes0
Teachers0
Structured datanone
KAYJAYS · STAGINGRecords rendered as first-party markup
This is not a before-and-after comparison of one page. It shows two opposite implementations of the same problem: information living outside a shared data model. The counts on the right are from KayJays staging.
02
The thesis
One rule changes the publishing model.
“Teacher, courses, schedule info should only be entered in the plugin. It should never be manually written on the website.”
Four connected record types—courses, classes, teachers and locations—feed the schedule, course pages, teacher pages and schema from the same source. That shared source is what prevents the surfaces from drifting.
DESIGNED FOR THE SITE THAT EXISTS
The publishing layer supports both WordPress blocks and shortcodes. Avada Builder pages cannot host blocks, so compatibility with the schools’ existing page system was part of the architecture—not a later concession.
STUDIO CLASSES & SCHEDULE · THE MECHANISM
One source, six surfaces
Four record types are entered once. Every public and internal surface is rendered from them at request time—which is why the schedule, course page and structured data cannot disagree.
ENTERED ONCE
Coursethe offering
Classone weekly slot
Teachername, photo, profile
Locationstudio, room, address
ONE PLUGINStudio Classes & Schedule
RENDERED FROM THE RECORDS
Weekly schedulepublic timetable
Course pagecontent, facts, times
Teacher pagegrid and profile
JSON-LDCourse + CourseInstance
Attendance listteacher view
Confirmation emailsign-up confirmation
The rule the plugin exists to enforce: “Teacher, courses, schedule info should only be entered in the plugin. It should never be manually written on the website.”
STUDIO CLASSES & SCHEDULE · CONNECTED PUBLISHING
Change one record. Every connected surface follows.
The same rule applies to courses, classes, teachers and locations. Each record is a source for several outputs—not merely an entry in the admin. Which outputs are active depends on what each school needs.
The principle underneath is the same for all four record types.
ONE RECORDPutri Soedarsono
Portrait
Featured image
Profile
Role + copy
Assignment
Shuffle Dance
EDIT HERE ONCE
→
RE-RENDERED ACROSS THE WEBSITE
01
Team directoryName, portrait and teaching styles derived from assignments
02
Profile pageRole, short bio and currently assigned courses
03
Weekly scheduleHer name links to her profile on every class
04
Course pagesProfile link and teacher details wherever she teaches
05
Structured dataPerson and instructor nodes from the same relationship
STAGING OUTPUT · PROFILE PAGE
The profile is a generated surface, too.
Portrait, role and profile copy come from Putri’s teacher record. The course list beneath them comes from her current assignment—there is no second list for someone to keep in sync.
This is referential publishing, not copying. The same principle connects courses, classes, teachers and locations to their visible pages, links and structured data. Class and location outputs are used where a school’s publishing model needs them.
03
Public publishing modes
One data model. Two ways to find a class.
A school can publish the same class records as a detailed list or a compact weekly grid. The visitor experience changes; the source of the course, teacher, time and availability information does not.
STAGING OUTPUT
List view with inline registration
Availability, the relevant dates and the sign-up action sit beside the class a visitor has chosen.
STAGING OUTPUT
Weekly grid with course filter
The same records become a compact whole-week view for visitors who want to scan and compare first.
04
Machine-readable outcome
The structural outcome is the evidence.
A schedule that previously lived in an iframe or hand-written page copy becomes first-party HTML plus structured data on the school’s own domain. No performance result is implied; the outcome here is a technically legible publishing system.
STUDIO CLASSES & SCHEDULE · THE OUTPUT
What an answer engine can quote
Every structured fact is generated from the records at request time, so it cannot drift from the visible schedule. Descriptive prose remains deliberately authored.
One node per weekly class, built directly from its related records.
byDay — never null
The schedule row and schema read the same weekday field.
scheduleTimezone
A named city timezone rather than an error-prone UTC offset.
instructor
A Person node carrying the teacher’s profile; co-teaching remains representable.
Shown as emitted, lightly abridged. Locations can additionally carry Place and PostalAddress; descriptive course content is carried as description.
05
Interface studies
Designing for the work people actually do.
These are design studies from the implementation process—not screenshots of live client systems. Together they show how the same records support focused owner, teacher and public experiences.
KayJays brand and staff imagery are shown with permission. Mockups and staging outputs remain labelled so they cannot be mistaken for live production screens.
DESIGN STUDY
Weekly schedule workspace
Availability, staffing, closures and direct edits stay in the context where an owner makes the decision.
DESIGN STUDY
Course record
Fields are grouped around the owner’s questions, with each field showing where its value will appear.
DESIGN STUDY
Teacher record
Entered information and values derived from teaching assignments remain visibly distinct.
DESIGN STUDY
Teacher’s mobile view
A task-specific view for the moments between classes, instead of a desktop table squeezed onto a phone.
DESIGN STUDY
Public teacher grid
The public page derives names, profiles and teaching styles from the same relationships used by the schedule.
06
Process and governance
The software matters. The operating rules show the level.
01 · Specify
Write the system down before building it.
Roughly a dozen written specifications defined the records, relationships, publishing behaviour and boundaries before code.
02 · Challenge
Review the plan that is actually about to ship.
Every specification gets one adversarial plan-review pass, on the version about to be built—not on an amended version that has already moved on.
03 · Verify
Use disagreement to find defects.
A second-model review of the specification bundle raised eight findings. Six were real defects, and all six were patched before implementation continued.
04 · Deploy
Let the running system overrule the log.
The site’s own Plugins page is the source of truth. That rule caught a deploy-log entry describing an upload that had never landed.
07
Scope discipline
The work includes deciding what not to build.
WordPress.org submission
Shelved deliberately. Distribution is not the next problem to solve.
Waitlist and paid packaging
Deferred until a class actually fills and creates the need.
Kiakademie booking
Display parity only. Booking remains in the system the school already uses.
08
Evidence boundary
Strong enough without invented results.
In development, running on staging, two committed schools. Nothing is live, so there is no traffic, ranking, booking or conversion claim on this page.
The evidence is the diagnosis, the shared data architecture, the machine-readable output, the review discipline and the decisions that kept the build inside its real scope.