Added prompts to determine the starting and ending segments of a D&D session transcript

This commit is contained in:
2026-05-16 21:06:41 -05:00
parent 7f76534af0
commit d87e90f93b
9 changed files with 229 additions and 29 deletions

122
schemas/bounds.schema.json Normal file
View File

@@ -0,0 +1,122 @@
{
"schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"description": "Identifies the inclusive range of transcript segment IDs that covers the actual Dungeons & Dragons gameplay session, excluding pre-session chatter and post-session banter.",
"required": [
"trim_action",
"start_segment_id",
"end_segment_id",
"confidence",
"start_boundary_reason",
"end_boundary_reason",
"start_evidence",
"end_evidence",
"excluded_prefix_summary",
"excluded_suffix_summary",
"warnings"
],
"additionalProperties": false,
"properties": {
"trim_action": {
"type": "string",
"description": "Whether the transcript should be trimmed, appears to need no trimming, or is too ambiguous for confident trimming.",
"enum": [
"trim",
"no_trim_needed",
"uncertain"
]
},
"start_segment_id": {
"type": "integer",
"description": "The inclusive segment ID where actual gameplay begins. This should be the first meaningful gameplay segment, such as the DM's opening recap, scene-setting, or the first in-world decision.",
"minimum": 0
},
"end_segment_id": {
"type": "integer",
"description": "The inclusive segment ID where actual gameplay ends. This should be the final meaningful gameplay segment, such as final in-world narration, an adjudicated action, a cliffhanger, or a next-session handoff.",
"minimum": 0
},
"confidence": {
"type": "string",
"description": "Confidence in the selected boundaries.",
"enum": [
"high",
"medium",
"low"
]
},
"start_boundary_reason": {
"type": "string",
"description": "Brief explanation of why the selected start segment is the first gameplay segment."
},
"end_boundary_reason": {
"type": "string",
"description": "Brief explanation of why the selected end segment is the last gameplay segment."
},
"start_evidence": {
"type": "object",
"description": "Short evidence supporting the selected start boundary.",
"properties": {
"segment_id": {
"type": "integer",
"description": "The segment ID used as evidence for the start boundary.",
"minimum": 0
},
"speaker": {
"type": "string",
"description": "The speaker of the evidence segment."
},
"text_excerpt": {
"type": "string",
"description": "A short excerpt from the evidence segment showing why gameplay begins here."
}
},
"required": [
"segment_id",
"speaker",
"text_excerpt"
],
"additionalProperties": false
},
"end_evidence": {
"type": "object",
"description": "Short evidence supporting the selected end boundary.",
"properties": {
"segment_id": {
"type": "integer",
"description": "The segment ID used as evidence for the end boundary.",
"minimum": 0
},
"speaker": {
"type": "string",
"description": "The speaker of the evidence segment."
},
"text_excerpt": {
"type": "string",
"description": "A short excerpt from the evidence segment showing why gameplay ends here."
}
},
"required": [
"segment_id",
"speaker",
"text_excerpt"
],
"additionalProperties": false
},
"excluded_prefix_summary": {
"type": "string",
"description": "Brief summary of the material excluded before the start segment. Use an empty string if no prefix was excluded."
},
"excluded_suffix_summary": {
"type": "string",
"description": "Brief summary of the material excluded after the end segment. Use an empty string if no suffix was excluded."
},
"warnings": {
"type": "array",
"description": "Any caveats, ambiguities, or reasons the boundary selection may need human review.",
"items": {
"type": "string"
}
}
}
}

View File

@@ -1,27 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://example.local/structured_events.schema.json",
"type": "object",
"required": ["summary", "events"],
"properties": {
"summary": {
"type": "string",
"minLength": 1
},
"events": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["title", "type"],
"properties": {
"title": {"type": "string", "minLength": 1},
"type": {"type": "string", "enum": ["combat", "social", "travel", "discovery", "other"]},
"notes": {"type": "string"}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}