Skip to content

Expand occasions parsing for discussions, introductions, and conversations - #945

Merged
alistairjcbrown merged 1 commit into
mainfrom
claude/jolly-fermi-9vsc5b
Nov 11, 2026
Merged

alistairjcbrown merged 1 commit into
mainfrom
claude/jolly-fermi-9vsc5b

Conversation

@alistairjcbrown

Copy link
Copy Markdown
Member

Summary

Extends the occasions parsing system to recognize a broader range of event formats: discussions with named participants, introductions with specific wording constraints, and conversations that distinguish between people in the room and works being curated together. Also adds support for reading organiser credits from OutSavvy's "Hosted By" panel and partnership credits from venue descriptions.

Key Changes

  • Discussion occasions: Recognizes "discussion with [guest]" patterns as inConversation when a person is named, filtering out unnamed discussions (audience talking) and panel/Q&A discussions which are their own occasion types
  • Introduction parsing: Tightens intro pattern to match only when the film/screening is the object ("will introduce the films"), excluding programme copy that introduces audiences to things and titles like "Introducing the Dwights"
  • Conversation distinction: Adds conversationWithWork pattern to exclude curator phrases like "in conversation with the final chapter of Taring Padi's Rakyat Pasti Menang" (an exhibition), which are not guest appearances
  • Conversation role patterns: Recognizes "Director Conversation" and similar role-based conversation titles as inConversation occasions
  • OutSavvy organiser credits: Reads organiser name from the "Hosted By" panel when not present in the description, with venue self-credit filtering
  • Partnership credits: Extends getPresenterNote to recognize "Presented in collaboration with" and "Presented in partnership with" patterns, preserving the venue's wording
  • Savoy Systems partnership notes: Extracts partnership credits from event descriptions and adds them to performance notes, filtering out venue self-credits
  • Ibraaz occasion merging: Merges occasions from film page descriptions with those from ticket listing sources, allowing page-specific details (like introduction guests) to combine with listing-sourced occasions

Implementation Details

  • New regex patterns in common/occasions.js: conversationRole, conversationWithWork, notInTheRoomOrAWork
  • Updated rules for inConversation to handle multiple pattern types and exclude works being curated
  • Updated intro rule with negative lookahead and object-matching constraints
  • Enhanced getPresenterNote in common/utils.js to handle partnership patterns with PRESENTED_WITH_PATTERN
  • New getPresentedNote function in common/savoysystems.co.uk/transform.js for extracting and filtering partnership credits
  • Updated OutSavvy's getPresentedByNote to check "Hosted By" panel as fallback
  • New mergeOccasions export in common/utils.js for combining occasion objects
  • Ibraaz transform now merges page-sourced occasions with listing-sourced ones

Test Coverage

  • Added comprehensive test suite for Ibraaz transform with occasion merging
  • Added OutSavvy fixture for "Hosted By" panel testing
  • Extended occasions.test.js with new patterns: director conversations, discussion with named guests, partnership credits, and edge cases (unnamed discussions, programme introductions, works in conversation)
  • Updated snapshots across multiple venues reflecting newly recognized occasions

- Read "Director Conversation" and a discussion with someone named as an
  in conversation, keeping a "Q&A discussion" a Q&A and a "discussion
  panel" a panel
- Read "will introduce the film(s)" as an introduction
- Don't read a work put "in conversation with" a film as a guest
- Read Ibraaz's own film page for occasions, not only its Ticket Tailor
  event, which leaves the introduction out
- Note an OutSavvy event's "Hosted By" organiser when its description
  credits no one
- Read "Presented in collaboration with X" as X, not "Presented", and note
  it on Savoy Systems venues

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GBhsxUjNUGUbmiiJSyJM72
@alistairjcbrown
alistairjcbrown merged commit e4d5aea into main Nov 11, 2026
2 checks passed
@alistairjcbrown
alistairjcbrown deleted the claude/jolly-fermi-9vsc5b branch November 11, 2026 19:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants