Publication standards
Collection-level publication criteria (what each entity type needs) are defined once in _data/uxdb_publication_criteria.yml. The UXDB Pro hub and every collection’s Not up to standard reminder pull that same list. Purpose and privacy live on About UXDB.
This page keeps operator and editorial-process notes that are not shown on the hub, plus Pro presentation standards such as basic list, and reprints the shared criteria below so operators can read them without opening Pro.
Session editorial quality standard
The versioned standard is session-editorial-quality-v2. A session passes only when all of the hub’s session criteria are supported by a reviewed source.
A URL or populated field alone cannot establish editorial quality. Reviews live in
uxdb/reports/editorial-verification.json and are bound to the reviewed content
by a hash. Changes to that content invalidate the review. Source word counts
record the length of the description or other source material actually reviewed;
they are not estimates or the length of site navigation.
On 23 September 2026 the launch policy removed the mandatory speaker link and speaker-identity assertion. Existing v2 reviews retain their content hashes and remain usable when all remaining checks pass. Speaker presence and the original four presence checks remain visible as meets_completeness for
comparison. meets_standards now requires the editorial checks as well. A
source may support a useful description without supporting a method connection;
keep that record failing the method check rather than inventing a connection.
These audit results remain separate from the public-export inclusion rules on the hub.
Every operator record type supports last_checked_against_standards, a UTC ISO
datetime recording an actual evaluation against its then-current standards.
Missing or null means not yet evaluated. Passing and failing records are both
checked; unrelated records must not be stamped. This is distinct from source
verification (last_checked) and editing (updated_at). Running an audit does
not assert that new source research took place.
Run npm run uxdb:audit-standards to generate the full session report and compact
summary in uxdb/reports/, with a standards version and audit time. Run
node uxdb/scripts/audit-release-readiness.mjs --write to measure unique eligible
public pages against the release targets and stamp accepted (true/false) onto
each row in uxdb/data/sessions.json and uxdb/data/methods.json. The Pro hub
counts those stamps in the browser the same way it counts other collections.
The release report excludes duplicate sessions and non-talk types even when their
editorial checks pass.
Basic list (UXDB Pro presentation)
Basic list is the List option for presenting entity lists in UXDB Pro (Table is the default view), with Sessions (/uxdbpro/sessions/) as the original reference. It applies across the Pro collection pages, including People, Sessions, Events, Podcasts (with episodes nested under each series), Series, Sponsorships, Methods, Tools, Organizations, Books, Academic papers, Academic courses, and Artefacts.
Use a plain HTML list (ul / li), one line per item. Do not use card grids or multi-column list rows for this pattern.
Reading order for a collection line (session example):
Metrics Driven Design by Joshua Porter, UX London 2010, tag, talk
For an episode, the same reading order is Episode title by host/speaker, podcast, year, tag pill.
Where:
| Part | Treatment |
|---|---|
| Title | Bold (heavier than other links — font-weight 800), linked to the session detail page |
| Speaker | Linked to the person page (normal weight) |
| Event | Linked to the event page (normal weight) |
| Year | Plain text |
| Type | Plain text (e.g. talk) when called out as running copy |
| Tag | Displayed as a little grey pill (small rounded badge, grey background; pale AA-compliant text; pill box vertically centered on the line) — typically the session type label |
This is the basic list standard for UXDB Pro lists. Apply the same one-line, linked-names, grey-pill-tag approach when other Pro collection lists adopt basic list.
Every collection list also offers a View control (List / Cards / Table). Table is the default. List matches basic list. Cards matches the public Methods card grid. Table shows the same filtered rows in a sortable data table (click a column heading to sort; click again to reverse). The choice is per collection, stored in localStorage, and mirrored in the URL as ?view=list or ?view=cards (omitted for table). The Filter defaults to Not up to standard, which shows that collection’s publication standards above the results.
Implementation reference: _layouts/db.html collection renderers plus Cards via UxdbProLayoutView.cardHtml. Shared List/Cards/Table helper: _includes/uxdbpro-layout-view.js.
Collection publication criteria
Same lists as the Pro hub and collection filter reminders. Edit _data/uxdb_publication_criteria.yml only.
Sessions
-
Has a title
-
Linked to a public event
-
Talk-like type (talk, keynote, lightning talk, lecture, case study, fireside chat, webinar, or discussion)
-
Title checked against the programme, abstract, or recording
-
Original factual description — more concise than the source abstract, with source URL retained
-
At least one topic the session actually covers
-
At least one linked method backed by the abstract, programme, recording, or a detailed recap
-
Provenance: source URL, evidence, reviewer, review date, and standards version
-
No invented text, placeholders, or unsupported claims
-
One recording maps to one event (a video URL must match the session’s event; the same video must not appear on more than one event)
Editorial reviews use the versioned standard session-editorial-quality-v2 and live in uxdb/reports/editorial-verification.json, bound to content by hash. Run npm run uxdb:audit-standards for the session standards report (non-blank description, resolving speaker link, non-blank topic, resolving method link). That audit does not change public-export eligibility. npm run uxdb:audit-videos fails when the same video id is on more than one event_id, or a _sessions video_id is attached to a non-Brighton event; npm run uxdb:public runs that video audit before export. Optional last_checked_against_standards on operator records is distinct from last_checked and updated_at.
Methods
-
A description (empty methods stay unpublished)
-
At least one public talk-like session whose method_ids include that method
-
Practical, source-supported method description (release acceptance)
-
Content-bound editorial review (release acceptance)
-
At least one editorially accepted public session demonstrating the method (release acceptance)
-
The artefacts described by the method listed out
Artefacts
-
A short description
-
Some example images of that artefact
-
A connection to at least one method that can be used to create that artefact
-
A link to at least one talk, video, or article that describes how to produce the artefact
Tools
-
A maker (an organisation or a person) — without a maker the tool is not up to standard
-
A description
-
A logo
-
A URL of the official page for that tool
People
-
A name
-
At least one linked session
Events
-
A name
-
A description
-
A link to the official website
Event series
-
A name
-
A link to the official website
A description is not required for event series.
Podcasts
-
A link to the RSS feed for the podcast
-
An icon for the podcast
-
The people involved listed on the podcast page
-
Any organisations involved listed on the podcast page
Podcast episodes
-
Publication standards do not yet define acceptance criteria for podcast episodes
-
Podcast episodes stay in the operator / UXDBPRO circuit until episode standards are set
Books
-
An Amazon link with a UX Brighton affiliate code embedded in it
-
The name of the author or authors, linking to people pages (or mentioning people pages if People is not published yet)
-
A description of the book
-
Any sessions that mention the book listed on the book page
-
An explicit UX-related classification: ux_related is set to true or false
-
Optional: UX artefacts described in the book, linked via artefact_ids from the UX artefacts vocabulary at /uxdbpro/artefacts/ (not free-text labels)
The books data model uses the snake_case field ux_related. This is a classification field, not a requirement that every published book be UX-related: general books can meet the standard when they are explicitly marked false. Either value is accepted; the field must be present and must not be null or omitted. Artefacts are not required for a book to meet the standard. When a book does describe UX artefacts, link them with artefact_ids drawn from the UX artefacts controlled vocabulary (uxdb/data/artefacts.json, operator list at /uxdbpro/artefacts/) rather than free-text artefact labels.
Academic papers
-
Inclusion: the paper must have been mentioned in a session
-
Links to every session that mentions the paper (at least one)
-
A list of authors
-
Optional related links when the paper mentions them: books, academic courses, organizations, sponsorships, podcast episodes, podcasts, events, event series, people, artefacts, tools, methods, or sessions
Academic courses
-
UK academic courses only (for now)
-
Very closely related to user experience design, interaction design, human factors, human-computer interaction, or that sort of field
-
Mentions the organisation or organisations that run the course
Organizations
-
A name
-
A website or a description
Sponsorships
-
A name
-
A website
Public launch thresholds (Learning collections)
These thresholds match the UXDB Pro hub targets. A collection section goes public only when at least this many items meet the publication standard (seed catalogue rows alone are not enough):
| Collection | Public target | Notes |
|---|---|---|
| Books | 50 | Hub BOOK_PUBLIC_TARGET |
| Academic papers | 50 | Hub PAPER_PUBLIC_TARGET |
| Academic courses | 50 | Hub COURSE_PUBLIC_TARGET. Closely related to UX / IxD / human factors / HCI. International catalogue (country dropdown and regional subdivisions on the Academic Courses page). |
Live progress rings remain on the UXDB Pro hub. Criteria lists come from _data/uxdb_publication_criteria.yml.
Collection cross-references
The matrix below is the target set of collection-to-collection mentions and links for UXDB Pro detail/record pages. A tick means a page for the row collection should mention or list related items from the column collection when that relationship exists. Diagonal ticks mean related items of the same type (for example related methods, competing tools, sibling series). This matrix is aspirational editorial guidance for a rich Pro experience; it is not limited to fields already populated in uxdb/data/*.json. People is the Pro name for the speakers data collection, Organizations uses the Pro companies collection, and Sponsorships uses sponsors.json.
| Collection | Sessions | Methods | Tools | Artefacts | People | Events | Series | Podcasts | Episodes | Books | Academic papers | Academic courses | Organizations | Sponsorships |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Sessions | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
| Methods | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
| Tools | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
| Artefacts | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||||
| People | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||
| Events | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
| Series | ✓ | ✓ | ✓ | ✓ | ✓ | |||||||||
| Podcasts | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||||
| Episodes | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||
| Books | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
| Academic papers | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
| Academic courses | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
| Organizations | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
| Sponsorships | ✓ | ✓ | ✓ | ✓ |
Detail pages should only show a section when there is at least one real linked item. Empty relationships stay hidden rather than showing empty lists.
URL design (UXDB Pro)
Three rules apply to every UXDB Pro collection and entity URL.
No repeated path segment
The collection folder appears once, then the entity slug — never the collection name twice.
- Wrong:
/uxdbpro/podcasts/podcastsor/uxdbpro/methods/methods/… - Right:
/uxdbpro/podcastsfor the list, and/uxdbpro/podcasts/<slug>/for a detail page
Hash deep links follow the same idea: do not put the collection name in the hash when the path already names that collection (prefer a real path segment for the slug instead).
No redundant type prefix in detail slugs
On detail pages, do not prefix the entity slug with a type marker when the parent collection path already establishes the type.
- Wrong:
/uxdbpro/podcasts/pod-ux-podcast - Right:
/uxdbpro/podcasts/ux-podcast-ab675(see next rule for the id suffix) - Same for other collections: under
/uxdbpro/people/,/uxdbpro/sessions/,/uxdbpro/events/,/uxdbpro/methods/, and so on, do not keepspk-,ses-/sess-,evt-,meth-,ep-, or similar type prefixes in the path slug. The folder already says what the record is.
Internal data ids may still use those prefixes in JSON; public and Pro path slugs should be context-clean.
Human-readable slug + immutable ID
Every entity URL has two parts in the final path segment:
- A human-readable slug (may change or be ignored without breaking resolution)
- An immutable identifier suffix that is the stable id for lookup
Example: /uxdbpro/podcasts/ux-podcast-ab675 — ux-podcast is readable; ab675 is the immutable id fragment. Together with the collection folder (and without a repeated segment or a redundant pod- / ep- type prefix), that is the canonical detail shape for all entity types in UXDB.
Podcasts and episodes (nested paths only)
This rule applies only to podcasts and podcast episodes — not to other collections.
Episodes are not a flat top-level collection. An episode URL lives under its podcast’s folder.
- Wrong:
/uxdb/episodes/ep-ux-podcast-302(flat episodes collection + type prefix) - Wrong (Pro):
/uxdbpro/episodes/ep-ux-podcast-302or/uxdbpro/podcasts/ep-ux-podcast-302as a peer of the series - Right:
/uxdb/podcast/{podcast-name}/{episode-name-or-number} - Right (Pro):
/uxdbpro/podcast/{podcast-slug}/{episode-slug}/
Notes:
- No type prefix on the episode segment (
ep-is redundant; the podcast parent already establishes context). - No type prefix on the podcast segment either (
pod-is redundant under/podcast/). - Each segment still uses the general human-readable + immutable ID pattern (for example
ux-podcast-ab675). - The three general URL rules still apply: no repeated path segment, no redundant type prefix, human-readable + immutable ID.
The Pro list of podcast series remains /uxdbpro/podcasts/. Series and episode detail use the nested /uxdbpro/podcast/… tree above.
Corrections
Email [email protected] if a published page should change. See also About UXDB.