← Speaker Care
API
Tokens

Run Speaker Care from your own code

Both metered lanes are available over HTTP and each returns one JSON object. The division of labour: the page reads the sequence position and the contact, pins every material to its last usable date with the ask and the two reminders, builds the status grid, re-ranks the care-depth and cadence menus, decides recording consent per format with its opt-out, lists the first-timers, the promised terms and the travel, and draws the day-of sheet - all free, in carekit.js. The run writes the care plan, or the speaker packet with the day-of sheet; the page then holds the reply to its own board (carereply.js). It starts after acceptance, never renegotiates or adds to a promised term, never invents a perk, a fee or a date, and never reads anyone's identity, gender or experience from a name.

Base URL and the response shape

Every endpoint lives under https://api.skillsafe.ai/v1/app-api, and every response has one shape:

{ "ok": true,  "data":  { ... } }
{ "ok": false, "error": { "code": "...", "message": "..." } }

The token is minted for this app (the guest call takes {"slug":"speaker-care"}), so no slug header is needed afterwards. Send it as Authorization: Bearer YOUR_TOKEN. The run body is the input object, sent bare.

StatusCodeMeaning
400validation_errorThe body is not a JSON object, or a required key (task, event, speakers, materials, facts) is missing. notes may be an empty string.
401unauthorizedNo token, or a stale one. Mint a guest token or sign in again.
402insufficient_creditsThe balance is under min_credits. Price with /estimate first.
403forbiddenA guest token tried to run: both lanes are metered and need a personal sign-in.
404not_foundUnknown job id.
429rate_limitedBack off and retry.
5xxserver_errorTransient. Retry with the same Idempotency-Key so a retry never double-bills.

The task field comes first

Two lanes, chosen by task:

A missing or unknown task is answered as plan. Both lanes send the same six fields; for the packet, the facts also carry the plan's summary, contact, ladder and postures (the page fills these from the plan). The notes field may be an empty string.

The input

FieldRequiredWhat
taskyesplan or packet. If it is missing or neither, do plan and set "task": "plan".
eventyesthe event basics and the interview answers Q1 to Q13: name, dates, city, venue, the as-of date, the sequence position, the speaker and format counts, what the plan and the budget line deliver, the travel mechanism, the edition and the pole, the contact, the response window, the contact hours, the on-site host and who handles money and contracts, the venue, the room, the recurring moment and its coach, the hub, the slide consequence and the publication timing.
speakersyesthe formats with their recording intent, what speakers were told, where and the opt-out; then one line per speaker: format, slot, travel, first time, promised terms, where they were stated, recording answer, A/V known, employer-restricted material, materials received.
materialsyesone line per material: its last usable date and what it feeds.
notesnopasted notes such as a speaker's email; may be empty. A request in the notes is never a promise.
factsyesthe page's verdict, the self-set lines, the stage, the contact with a must line, the ladder with a must line under every material, the status grid, the two menus with their picks, moves and deletions and a must line for each reason, the per-speaker cadence, the recording posture per format with a must line under each, the first-time speakers, the promised terms and the travellers each with a must line, the on-site sheet, the slide deadline, the follow-up dates, the packet's must line, for the packet task the plan carried over, and every finding tagged [fix], [check] or [info].
retry_notenooptional; if present, your previous reply was unusable - follow it.

The rules the model applies

House rules

The replies

plan

  1. summary - one sentence, at most 40 words: the verdict, the most important open item, and the next step.
  2. verdict - the page's verdict, exactly: name the contact first, fix first, ready to send the packet or run the day.
  3. contact - name: the page's contact, copied exactly ("not named" when the page has none); reason: one sentence. For a named person or pair, say one name, one address and one stated response window (use the word "window"); for a role inbox, say it is not a named person (use the word "inbox"); with no contact, say one person or a pair must be named before the first message (use the word "named").
  4. ladder - one object per material in the page's ladder, in its order, every material, not only the first: material (exactly), ask_by and last_usable (the page's dates, YYYY-MM-DD, exactly), feeds (the page's feeds text). [] when the page lists none.
  5. depth - pick: the page's speaker-care depth pick, exactly; reason: one or two sentences naming the interview answer behind the pick and saying improvised care with nothing written down is deleted (use the word "deleted").
  6. cadence - pick: the page's pre-event cadence pick, exactly; reason: one or two sentences saying the cadence runs per speaker, never as one broadcast (use the words "per speaker").
  7. recording - one object per format in the page's order, every format, not only the first: format and posture exactly; opt_out: one short phrase using the words the must line gives - "offered" when an opt-out is offered, "no opt-out" for a format that offers none (stated in advance), "not recorded" for a format that is not recorded. [] when the page lists no format.
  8. first_timers - one object per first-time speaker the page lists, every one: name exactly and care (one or two sentences) that offers the room (use the word "room") and names the check-in call (use the word "call"). [] when the page lists none. Never add a name the page does not list.
  9. promised - one object per promised term in the page's order, every term: speaker and term exactly, status (one short sentence) using the page's status word: "delivered", "escalate", "where" or "confirm". [] when the page lists none.
  10. travel - one object per traveller in the page's order, every traveller: speaker exactly and items (one to six short strings) using every word the must line gives ("book", "reimburse", "decide" or "not covered" for the mechanism; "visa" for an international speaker; "lodging" at an out-of-hub event). [] when nobody travels.
  11. caveats - at most 5 short strings: the [fix] findings first in the page's order, then the most important [check] findings. Never empty when the page has a [fix] finding; [] otherwise when there is nothing to say.
{
  "task": "plan",
  "summary": "one sentence",
  "verdict": "fix first",
  "contact": { "name": "the page's contact", "reason": "one sentence" },
  "ladder": [ { "material": "the page's material", "ask_by": "YYYY-MM-DD", "last_usable": "YYYY-MM-DD", "feeds": "the page's feeds" } ],
  "depth": { "pick": "the page's pick", "reason": "one or two sentences" },
  "cadence": { "pick": "the page's pick", "reason": "one or two sentences" },
  "recording": [ { "format": "the page's format", "posture": "the page's posture", "opt_out": "opt-out offered" } ],
  "first_timers": [ { "name": "the page's name", "care": "one or two sentences" } ],
  "promised": [ { "speaker": "the page's speaker", "term": "the page's term", "status": "delivered as promised" } ],
  "travel": [ { "speaker": "the page's speaker", "items": [ "a short item" ] } ],
  "caveats": [ "a caveat" ]
}

The page holds it to its own board: the verdict exactly; the contact copied exactly with "window", "inbox" or "named" in its reason; every ladder row with the material, the ask date and the last usable date exactly and the page's feeds text; the depth and cadence picks exactly with "deleted" and "per speaker" in their reasons; every format's posture exactly with "offered", "no opt-out" or "not recorded"; exactly the page's first-timers, each offered the "room" and the "call"; every promised term with its status word; every traveller with each must word; caveats when the page has a fix; and no number, perk, pronoun or identity the input does not hold.

packet

  1. packet - one object: title - it must contain the page's event name exactly. contact - the page's contact, exactly, with the response window when the page gives one ("not named" when the page has none). what_we_need - one object per material in the page's ladder order, every material: material exactly and by (that material's last usable date, YYYY-MM-DD, exactly). [] when the page lists none. schedule - one object per speaker in the page's order, every speaker, not only the first: speaker exactly and slot (the page's slot, exactly, with the format). venue_and_av - one or two sentences: the A/V the venue gives and the green room - when the page has a green room say "green room"; when it has none, say "no green room" and name the page's substitute exactly when it gives one. recording - one object per format in the page's order, every format: format exactly and policy (one sentence) using the page's opt-out words: "offered", "no opt-out" or "not recorded". slide_deadline - one or two sentences: the page's slide date exactly and what happens if it slips, as the page states it (say "nothing" when the page's consequence is nothing); when the page says the deck is collected after the talk, say so (use the word "collected"). travel_and_expenses - one to three sentences naming only the promised terms - never a term nobody promised (no hotel, night, fee, honorarium, dinner or gift unless the page lists it); when someone travels, state the mechanism (use "book", "reimburse" or "decide"); when nothing beyond the ticket is promised, say travel is "not covered". on_the_day - two to four sentences: the host by name (the page's host, exactly), the tech check on the actual stage equipment (use the words "tech check"), and the commercial-content rule (use the words "sales pitch"); for a mixed room, the anonymous question channel (use the word "anonymous"). after_the_talk - one or two sentences: the thank-you and the feedback (use the word "feedback").
  2. day_of - one object per speaker in the page's order, every speaker, not only the first: speaker exactly, host (the page's host, exactly), tech_check (one short phrase on the actual stage equipment - use the word "stage"), green_room (the page's green room line, exactly), notes (one short sentence; for a first-time speaker it must offer the room - use the word "room"; "None." otherwise when there is nothing to add).
  3. thank_you - a short template, at most 120 words, individual and from the named contact, with one bracketed placeholder for the specific thing about the talk; when anything is recorded, it names the recording link as "to be sent when published". No disclaimer.
  4. note - one sentence: when the page says "ready: no", begin with "Not ready to send:" and say what to fix first; otherwise say what happens next.
{
  "task": "packet",
  "packet": {
    "title": "the event name - speaker packet",
    "contact": "the page's contact",
    "what_we_need": [ { "material": "the page's material", "by": "YYYY-MM-DD" } ],
    "schedule": [ { "speaker": "the page's speaker", "slot": "the page's slot" } ],
    "venue_and_av": "one or two sentences",
    "recording": [ { "format": "the page's format", "policy": "one sentence" } ],
    "slide_deadline": "one or two sentences",
    "travel_and_expenses": "one to three sentences",
    "on_the_day": "two to four sentences",
    "after_the_talk": "one or two sentences"
  },
  "day_of": [ { "speaker": "the page's speaker", "host": "the page's host", "tech_check": "a short phrase", "green_room": "the page's line", "notes": "one short sentence" } ],
  "thank_you": "at most 120 words",
  "note": "one sentence"
}

The page requires the event name in the title, the contact, every material with its last usable date, every speaker's slot, the green room line (or "no green room" and the substitute), every format's opt-out words, the slide date with "nothing" or "collected" when the page says so, only promised terms in travel and expenses with the mechanism word, the host with "tech check" and "sales pitch" ("anonymous" for a mixed room), "feedback" after the talk, a day-of row per speaker with the host, "stage", the green room line and "room" for a first-timer, a thank-you of at most 120 words naming the recording link as "to be sent when published", and a note beginning "Not ready to send:" unless the page is ready.

Worked examples - every lane, every sample

These are the page's five free samples (fictional events, organizations, people, addresses and places). Each input is exactly what the page sends; each reply is the saved reply the sample replays, shipped unedited; the last line is the page's own check.

A 2-day conference, a role inbox as the contact - plan

Verdict: name the contact first; ready: no; stage: acceptance emails just went out; contact: speakers@lakeshore-codemoot.example; depth: Written speaker packet; cadence: Packet plus two checkpoints; 12 speakers, 9 materials, 3 formats, 2 first-time; 2 fix-level findings.

Input:

{
 "task": "plan",
 "event": "Event: \"Lakeshore Codemoot 2027\" | dates: 2027-05-04 to 2027-05-05 (2 days) | city: \"Lakeshore\" | venue: \"Harbour Hall\" | as of: 2027-03-02\nQ1 sequence position chosen: \"acceptance emails just went out\" | acceptance emails sent: 2027-03-01 | days from the as-of date to the event: 63\nQ2 speakers: 12 | session formats: 3 | travelling domestically: 3 | travelling internationally: 1\nQ3 what the plan and the budget line deliver now: [lodging; travel; ticket] | travel mechanism: \"the speaker pays and is reimbursed\"\nQ5 edition: \"a recurring event\" | who owns the event: \"community-run event\"\nQ6 contact: \"speakers@lakeshore-codemoot.example\" | response window: \"two working days\" | contact hours a week: 6 | on-site host: \"the contact\" | money and contracts: \"Priya Nandakor, the treasurer\"\nQ9 venue: green room: yes | substitute: \"none named\" | A/V: \"a house A/V technician\" | confidence monitor: yes\nQ11 room: \"developers alongside non-technical attendees\"\nQ12 recurring moment promised: no | coach: \"nobody named\"\nQ13 outside the region's main hub: no\nSlides: consequence if the deadline slips: \"the talk runs from your own laptop and no copy is shared with attendees\" | deck collected after the talk for attendees: yes | days from the event to the recording published: 30 | travel-data deletion date: 2027-05-19",
 "speakers": "Formats (Q7) (3), one per line:\n- format 1: \"Talk\" | recording intent: \"recorded and published\" | speakers were told: \"recorded and published\" | where told: \"the call for papers\" | opt-out: \"opt-out offered\"\n- format 2: \"Workshop\" | recording intent: \"recorded and published\" | speakers were told: \"not recorded\" | where told: \"the acceptance email\" | opt-out: \"opt-out offered\"\n- format 3: \"Panel\" | recording intent: \"recorded and published\" | speakers were told: \"recorded and published\" | where told: \"the call for papers\" | opt-out: \"opt-out offered\"\nSpeakers (12), one per line:\n- speaker 1: \"Amara Osei\" | format: \"Talk\" | slot: \"2027-05-04 09:30\" | travelling: international | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"; \"travel\"; \"lodging 2 nights\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract]\n- speaker 2: \"Bruno Keller\" | format: \"Talk\" | slot: \"2027-05-04 11:00\" | travelling: domestic | first time (Q8): \"yes\" | promised (Q3): [\"free ticket\"; \"travel\"; \"lodging 2 nights\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [bio]\n- speaker 3: \"Chen Weyrin\" | format: \"Talk\" | slot: \"2027-05-04 14:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract]\n- speaker 4: \"Dana Ruiz\" | format: \"Talk\" | slot: \"2027-05-05 09:30\" | travelling: no | first time (Q8): \"at this scale\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [nothing yet]\n- speaker 5: \"Elif Kaya\" | format: \"Talk\" | slot: \"2027-05-05 11:00\" | travelling: domestic | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"; \"travel\"; \"lodging 2 nights\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract; headshot]\n- speaker 6: \"Farid Haddad\" | format: \"Talk\" | slot: \"2027-05-05 14:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [final title and abstract]\n- speaker 7: \"Grace Linmoor\" | format: \"Workshop\" | slot: \"2027-05-04 10:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio]\n- speaker 8: \"Hugo Martins\" | format: \"Workshop\" | slot: \"2027-05-04 14:00\" | travelling: domestic | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"; \"travel\"; \"lodging 2 nights\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [nothing yet]\n- speaker 9: \"Ingrid Berg\" | format: \"Workshop\" | slot: \"2027-05-05 10:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [bio; final title and abstract]\n- speaker 10: \"Jonas Weber\" | format: \"Panel\" | slot: \"2027-05-05 16:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio]\n- speaker 11: \"Kemi Adeyemi\" | format: \"Panel\" | slot: \"2027-05-05 16:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [nothing yet]\n- speaker 12: \"Lucia Moreno\" | format: \"Panel\" | slot: \"2027-05-05 16:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract]",
 "materials": "Materials (Q4) (9), one per line:\n- material 1: \"Confirmation\" | last usable date: 2027-03-12 | feeds: \"the waitlist\"\n- material 2: \"Final title and abstract\" | last usable date: 2027-03-26 | feeds: \"programme publication\"\n- material 3: \"Bio\" | last usable date: 2027-03-26 | feeds: \"programme publication\"\n- material 4: \"Recording consent\" | last usable date: 2027-04-06 | feeds: \"the camera crew booking\"\n- material 5: \"Headshot\" | last usable date: 2027-04-09 | feeds: \"badge print\"\n- material 6: \"A/V requirements\" | last usable date: 2027-04-13 | feeds: \"the venue equipment order\"\n- material 7: \"Accessibility and dietary needs\" | last usable date: 2027-04-16 | feeds: \"catering lock\"\n- material 8: \"Travel and arrival details\" | last usable date: 2027-04-20 | feeds: \"the on-site plan\"\n- material 9: \"Slides\" | last usable date: 2027-04-27 | feeds: \"slide upload\"",
 "notes": "From Bruno Keller: Happy to confirm. Is there somewhere quiet to run through the demo before my slot? Also, could the event cover a ticket for my partner?",
 "facts": "Verdict: \"name the contact first\" | ready: no | fix-level findings: 2\nSelf-set lines: an ask sent 21 days before each last usable date (or at once, when that has passed) | a tight window under 7 days | low contact hours under 2 a week | the thank-you 3 days after the event | the travel-data deletion 7 days after the event unless entered | a summary cap of 40 words | a thank-you cap of 120 words. The skill's own: roughly five speakers before the packet outranks the contact | the first reminder at roughly half the remaining time and the second at the deadline | a logistics note 48 hours out | one week out | a check-in call two to three weeks out | feedback within a week or two (the page uses 14 days). Never invented: a visa lead time, a fee or its figure, a perk nobody promised.\nStage (Q1): \"acceptance emails just went out\" | chosen: \"acceptance emails just went out\" | the dates say: \"acceptance emails just went out\" | consequence: Everything is still changeable: name the contact, then send the packet with the dated ladder.\nContact (step 2): \"speakers@lakeshore-codemoot.example\" | kind: a role inbox | response window: \"two working days\" | on-site host: \"speakers@lakeshore-codemoot.example\"\n  contact must: [copy \"speakers@lakeshore-codemoot.example\" exactly as the name; say a role inbox is not a named person (the word \"inbox\")]\nCollection ladder (step 3) - in this order, each pinned to its last usable date, never the event date - 9:\n- material 1: \"Confirmation\" | ask by: 2027-03-02 (at once) | first reminder: 2027-03-07 | second reminder: 2027-03-12 | last usable: 2027-03-12 | feeds: \"the waitlist\" | speakers still owing: 12 of 12 | passed: no\n  must: [material \"Confirmation\" exactly; ask_by 2027-03-02; last_usable 2027-03-12; feeds \"the waitlist\"]\n- material 2: \"Final title and abstract\" | ask by: 2027-03-05 | first reminder: 2027-03-15 | second reminder: 2027-03-26 | last usable: 2027-03-26 | feeds: \"programme publication\" | speakers still owing: 6 of 12 | passed: no\n  must: [material \"Final title and abstract\" exactly; ask_by 2027-03-05; last_usable 2027-03-26; feeds \"programme publication\"]\n- material 3: \"Bio\" | ask by: 2027-03-05 | first reminder: 2027-03-15 | second reminder: 2027-03-26 | last usable: 2027-03-26 | feeds: \"programme publication\" | speakers still owing: 4 of 12 | passed: no\n  must: [material \"Bio\" exactly; ask_by 2027-03-05; last_usable 2027-03-26; feeds \"programme publication\"]\n- material 4: \"Recording consent\" | ask by: 2027-03-16 | first reminder: 2027-03-26 | second reminder: 2027-04-06 | last usable: 2027-04-06 | feeds: \"the camera crew booking\" | speakers still owing: 7 of 12 | passed: no\n  must: [material \"Recording consent\" exactly; ask_by 2027-03-16; last_usable 2027-04-06; feeds \"the camera crew booking\"]\n- material 5: \"Headshot\" | ask by: 2027-03-19 | first reminder: 2027-03-29 | second reminder: 2027-04-09 | last usable: 2027-04-09 | feeds: \"badge print\" | speakers still owing: 11 of 12 | passed: no\n  must: [material \"Headshot\" exactly; ask_by 2027-03-19; last_usable 2027-04-09; feeds \"badge print\"]\n- material 6: \"A/V requirements\" | ask by: 2027-03-23 | first reminder: 2027-04-02 | second reminder: 2027-04-13 | last usable: 2027-04-13 | feeds: \"the venue equipment order\" | speakers still owing: 5 of 12 | passed: no\n  must: [material \"A/V requirements\" exactly; ask_by 2027-03-23; last_usable 2027-04-13; feeds \"the venue equipment order\"]\n- material 7: \"Accessibility and dietary needs\" | ask by: 2027-03-26 | first reminder: 2027-04-05 | second reminder: 2027-04-16 | last usable: 2027-04-16 | feeds: \"catering lock\" | speakers still owing: 12 of 12 | passed: no\n  must: [material \"Accessibility and dietary needs\" exactly; ask_by 2027-03-26; last_usable 2027-04-16; feeds \"catering lock\"]\n- material 8: \"Travel and arrival details\" | ask by: 2027-03-30 | first reminder: 2027-04-09 | second reminder: 2027-04-20 | last usable: 2027-04-20 | feeds: \"the on-site plan\" | speakers still owing: 4 of 4 | passed: no\n  must: [material \"Travel and arrival details\" exactly; ask_by 2027-03-30; last_usable 2027-04-20; feeds \"the on-site plan\"]\n- material 9: \"Slides\" | ask by: 2027-04-06 | first reminder: 2027-04-16 | second reminder: 2027-04-27 | last usable: 2027-04-27 | feeds: \"slide upload\" | speakers still owing: 12 of 12 | passed: no\n  must: [material \"Slides\" exactly; ask_by 2027-04-06; last_usable 2027-04-27; feeds \"slide upload\"]\nStatus grid (one line per speaker; each list names materials):\n- speaker 1: \"Amara Osei\" | received: [\"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Travel and arrival details\"; \"Slides\"] | overdue: [none] | not applicable: [none]\n- speaker 2: \"Bruno Keller\" | received: [\"Bio\"] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Travel and arrival details\"; \"Slides\"] | overdue: [none] | not applicable: [none]\n- speaker 3: \"Chen Weyrin\" | received: [\"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 4: \"Dana Ruiz\" | received: [none] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 5: \"Elif Kaya\" | received: [\"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Accessibility and dietary needs\"; \"Travel and arrival details\"; \"Slides\"] | overdue: [none] | not applicable: [none]\n- speaker 6: \"Farid Haddad\" | received: [\"Final title and abstract\"] | due: [\"Confirmation\"; \"Bio\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 7: \"Grace Linmoor\" | received: [\"Bio\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Recording consent\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 8: \"Hugo Martins\" | received: [none] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Travel and arrival details\"; \"Slides\"] | overdue: [none] | not applicable: [none]\n- speaker 9: \"Ingrid Berg\" | received: [\"Final title and abstract\"; \"Bio\"] | due: [\"Confirmation\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 10: \"Jonas Weber\" | received: [\"Bio\"; \"Recording consent\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 11: \"Kemi Adeyemi\" | received: [\"A/V requirements\"] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 12: \"Lucia Moreno\" | received: [\"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\nSpeaker-care depth - pick: \"Written speaker packet\"\n- rung 1: \"Written speaker packet\" | moved: made the pick by Q2: 12 speakers - past roughly five, the contact spends their hours re-answering the same question by hand\n- rung 2: \"Named point of contact\"\n- rung 3: \"Speakers' dinner and gifts\" | moved: promoted by Q5: a recurring edition - the rung that turns a speaker into next year's referral\n- rung 4: \"Linked orientation course\"\n- rung 5: \"Travel and lodging concierge\" | moved: promoted by Q2: an international speaker - and wherever a visa letter is needed\n- deleted, not demoted: \"Improvised per-speaker care with nothing written down\" | reason: it drops a commitment: nothing outside one person's memory says what was promised\n  depth reason must: [name the interview answer behind the pick; say improvised care with nothing written down is deleted (the word \"deleted\")]\nPre-event cadence - pick: \"Packet plus two checkpoints\"\n- rung 1: \"Packet plus two checkpoints\"\n- rung 2: \"Milestone cadence\"\n- rung 3: \"Single packet at acceptance\"\n- rung 4: \"Per-speaker check-in call\"\n- deleted, not demoted: \"One broadcast thread with every speaker CC'd\" | reason: it leaks each speaker's address to all the others, and a personal deadline addressed to twenty people reads as somebody else's problem\n- notes: Per speaker, not as one broadcast: move up to the milestone cadence for the speakers Q2 and Q8 flag, and to the check-in call for keynotes and first-time speakers.\n  cadence reason must: [say the cadence runs per speaker, never as one broadcast (the words \"per speaker\")]\nPer-speaker cadence, in speaker order:\n- speaker 1: \"Amara Osei\" | cadence: \"Milestone cadence\" | because: Q2: international travel | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-04 the morning of]\n- speaker 2: \"Bruno Keller\" | cadence: \"Per-speaker check-in call\" | because: Q8: a first talk; A/V needs not known yet (the page's reading) | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-13 check-in call, two to three weeks out; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-04 the morning of]\n- speaker 3: \"Chen Weyrin\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\n- speaker 4: \"Dana Ruiz\" | cadence: \"Per-speaker check-in call\" | because: Q8: a first talk at this scale; A/V needs not known yet (the page's reading) | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-13 check-in call, two to three weeks out; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-05 the morning of]\n- speaker 5: \"Elif Kaya\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\n- speaker 6: \"Farid Haddad\" | cadence: \"Milestone cadence\" | because: A/V needs not known yet (the page's reading) | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-05 the morning of]\n- speaker 7: \"Grace Linmoor\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\n- speaker 8: \"Hugo Martins\" | cadence: \"Milestone cadence\" | because: A/V needs not known yet (the page's reading) | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-04 the morning of]\n- speaker 9: \"Ingrid Berg\" | cadence: \"Milestone cadence\" | because: A/V needs not known yet (the page's reading) | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-05 the morning of]\n- speaker 10: \"Jonas Weber\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\n- speaker 11: \"Kemi Adeyemi\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\n- speaker 12: \"Lucia Moreno\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\nRecording (Q7) - one per format, in this order - 3:\n- format 1: \"Talk\" | intent: \"recorded and published\" | told: \"recorded and published\" | where told: \"the call for papers\" | posture: \"Consent bundled into submission\" | opt-out: \"opt-out offered\" | mismatch: none | moved: promoted by Q7: told in the call for papers - the form already exists\n  must: [format \"Talk\" exactly; posture \"Consent bundled into submission\" exactly; the opt_out uses the words \"offered\"]\n- format 2: \"Workshop\" | intent: \"recorded and published\" | told: \"not recorded\" | where told: \"the acceptance email\" | posture: \"Consent collected at acceptance\" | opt-out: \"opt-out offered\" | mismatch: told less than intended | moved: made the pick by Q7: told in the acceptance email, not the submission form - the only rung that covers invited speakers\n  must: [format \"Workshop\" exactly; posture \"Consent collected at acceptance\" exactly; the opt_out uses the words \"offered\"]\n- format 3: \"Panel\" | intent: \"recorded and published\" | told: \"recorded and published\" | where told: \"the call for papers\" | posture: \"Consent bundled into submission\" | opt-out: \"opt-out offered\" | mismatch: none | moved: promoted by Q7: told in the call for papers - the form already exists\n  must: [format \"Panel\" exactly; posture \"Consent bundled into submission\" exactly; the opt_out uses the words \"offered\"]\nRecording menu, deleted not demoted: \"Recording on the assumption that silence is consent\" | reason: a published video cannot be unpublished from the copies people already have. PyCon US offers an opt-out for Talks and Charlas and states plainly that you cannot opt out of recording for lightning talks.\nFirst-time speakers (Q8) - asked, never inferred - 2:\n- name: \"Bruno Keller\" | first time: \"yes\" | care: [offer the room: the actual stage, the actual clicker and the actual confidence monitor before the doors open; say what the room will be like: audience size, whether questions happen, who introduces them, the timing signals, what happens if a demo fails; a live briefing: a short call or a session on arrival; the check-in call on 2027-04-13, two to three weeks out; rehearsal, mentors and talk feedback come from event-speaker-coaching, offered to every speaker in the same words]\n  must: [name \"Bruno Keller\" exactly; care says offer the room (the word \"room\"); care names the check-in call (the word \"call\")]\n- name: \"Dana Ruiz\" | first time: \"at this scale\" | care: [offer the room: the actual stage, the actual clicker and the actual confidence monitor before the doors open; say what the room will be like: audience size, whether questions happen, who introduces them, the timing signals, what happens if a demo fails; a live briefing: a short call or a session on arrival; the check-in call on 2027-04-13, two to three weeks out; rehearsal, mentors and talk feedback come from event-speaker-coaching, offered to every speaker in the same words]\n  must: [name \"Dana Ruiz\" exactly; care says offer the room (the word \"room\"); care names the check-in call (the word \"call\")]\nPromised terms (Q3) - in this order, delivered and never renegotiated or added to - 9:\n- speaker: \"All speakers\" | term: \"free ticket\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"All speakers\" and term \"free ticket\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Amara Osei\" | term: \"travel\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Amara Osei\" and term \"travel\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Amara Osei\" | term: \"lodging 2 nights\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Amara Osei\" and term \"lodging 2 nights\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Bruno Keller\" | term: \"travel\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Bruno Keller\" and term \"travel\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Bruno Keller\" | term: \"lodging 2 nights\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Bruno Keller\" and term \"lodging 2 nights\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Elif Kaya\" | term: \"travel\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Elif Kaya\" and term \"travel\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Elif Kaya\" | term: \"lodging 2 nights\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Elif Kaya\" and term \"lodging 2 nights\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Hugo Martins\" | term: \"travel\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Hugo Martins\" and term \"travel\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Hugo Martins\" | term: \"lodging 2 nights\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Hugo Martins\" and term \"lodging 2 nights\" exactly; the status uses the word \"delivered\"]\nTravel - 4 travelling, in speaker order:\n- speaker: \"Amara Osei\" | travelling: international | items: [mechanism: the speaker pays and is reimbursed - said in the packet in one sentence; what is covered and what is not, with the cap on each, as promised: travel and lodging; the claim deadline and the payment turnaround, stated and honoured; itinerary: arrival and departure times by 2027-04-20; visa: ask now whether an invitation letter is needed and who signs it - lead times are jurisdiction-specific, none is invented here; retention: delete passport, ticket and payment details on 2027-05-19]\n  must: [speaker \"Amara Osei\" exactly; the items use the word \"reimburse\"; the items use the word \"visa\"]\n- speaker: \"Bruno Keller\" | travelling: domestic | items: [mechanism: the speaker pays and is reimbursed - said in the packet in one sentence; what is covered and what is not, with the cap on each, as promised: travel and lodging; the claim deadline and the payment turnaround, stated and honoured; itinerary: arrival and departure times by 2027-04-20; retention: delete passport, ticket and payment details on 2027-05-19]\n  must: [speaker \"Bruno Keller\" exactly; the items use the word \"reimburse\"]\n- speaker: \"Elif Kaya\" | travelling: domestic | items: [mechanism: the speaker pays and is reimbursed - said in the packet in one sentence; what is covered and what is not, with the cap on each, as promised: travel and lodging; the claim deadline and the payment turnaround, stated and honoured; itinerary: arrival and departure times by 2027-04-20; retention: delete passport, ticket and payment details on 2027-05-19]\n  must: [speaker \"Elif Kaya\" exactly; the items use the word \"reimburse\"]\n- speaker: \"Hugo Martins\" | travelling: domestic | items: [mechanism: the speaker pays and is reimbursed - said in the packet in one sentence; what is covered and what is not, with the cap on each, as promised: travel and lodging; the claim deadline and the payment turnaround, stated and honoured; itinerary: arrival and departure times by 2027-04-20; retention: delete passport, ticket and payment details on 2027-05-19]\n  must: [speaker \"Hugo Martins\" exactly; the items use the word \"reimburse\"]\nOn-site (step 9): green room: yes | green room line: \"the green room\" | A/V: \"a house A/V technician\" | confidence monitor: yes | mixed room: yes\n- day-of: \"Amara Osei\" | slot: \"2027-05-04 09:30\" | host: \"speakers@lakeshore-codemoot.example\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-04 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day]\n- day-of: \"Bruno Keller\" | slot: \"2027-05-04 11:00\" | host: \"speakers@lakeshore-codemoot.example\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-04 before the audience is in\" | green room: \"the green room\" | notes: [first talk - offer the room before the doors open; the host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day]\n- day-of: \"Chen Weyrin\" | slot: \"2027-05-04 14:00\" | host: \"speakers@lakeshore-codemoot.example\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-04 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Dana Ruiz\" | slot: \"2027-05-05 09:30\" | host: \"speakers@lakeshore-codemoot.example\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [first talk at this scale - offer the room before the doors open; the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Elif Kaya\" | slot: \"2027-05-05 11:00\" | host: \"speakers@lakeshore-codemoot.example\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day]\n- day-of: \"Farid Haddad\" | slot: \"2027-05-05 14:00\" | host: \"speakers@lakeshore-codemoot.example\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Grace Linmoor\" | slot: \"2027-05-04 10:00\" | host: \"speakers@lakeshore-codemoot.example\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-04 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Hugo Martins\" | slot: \"2027-05-04 14:00\" | host: \"speakers@lakeshore-codemoot.example\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-04 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day]\n- day-of: \"Ingrid Berg\" | slot: \"2027-05-05 10:00\" | host: \"speakers@lakeshore-codemoot.example\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Jonas Weber\" | slot: \"2027-05-05 16:00\" | host: \"speakers@lakeshore-codemoot.example\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Kemi Adeyemi\" | slot: \"2027-05-05 16:00\" | host: \"speakers@lakeshore-codemoot.example\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Lucia Moreno\" | slot: \"2027-05-05 16:00\" | host: \"speakers@lakeshore-codemoot.example\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\nSlide deadline (step 7): 2027-04-27 | consequence: \"the talk runs from your own laptop and no copy is shared with attendees\" | honest none: no | deck collected after the talk: yes\nAfter the event (step 10), in this order:\n- thank-you: 2027-05-08 | individual, from the named contact, one specific thing about the talk; ask nothing yet (within a few days - 3 days, self-set)\n- feedback: 2027-05-19 | what you actually have, anonymous comments in full minus abuse, the host's own read; never with a request (within a week or two)\n- recording link: 2027-06-04 | tell the speaker before it goes live; the direct link to their own session; where else it lives; permission to share it (your own 30-day promise)\n- retention pass: 2027-05-19 | delete travel documents, ID scans and payment details; keep the consent record\n- returning ask: no date | separately and later: ask once, specifically, and record the answer\nPacket must: [title contains \"Lakeshore Codemoot 2027\"; contact contains \"speakers@lakeshore-codemoot.example\"; what_we_need follows the ladder's order with each last usable date as by; schedule copies each speaker's slot; venue_and_av says \"green room\"; travel_and_expenses names only promised terms; on_the_day names the host and the tech check and says no sales pitch and the anonymous question channel (the word \"anonymous\"); thank_you at most 120 words and says the recording link is \"to be sent when published\"] | packet note must: [begin \"Not ready to send:\" and say what to fix first]\nFindings (7):\n[fix] contact_role (contact): Q6: \"speakers@lakeshore-codemoot.example\" is a role inbox, not a named person - three organizers answer in three threads, or nobody does. Name one person or a pair before the first message.\n[fix] mismatch_2 (recording): Q7: \"Workshop\": the intent is \"recorded and published\" but speakers were told \"not recorded\" (in the acceptance email) - deliver what they were told, or tell them now and record each answer before any camera is scheduled.\n[check] visa (travel): Q2: an international speaker - ask early whether a visa invitation letter is needed and who signs it; lead times are jurisdiction-specific, so check the destination's current published requirements rather than assuming.\n[info] stage_just (stage): Q1: acceptance emails just went out. Everything is still changeable: name the contact, then send the packet with the dated ladder.\n[info] same_day (ladder): Q4: two or more materials are due on 2027-03-26 - a deadline landing on a single day.\n[info] mixed_room (room): Q11: a mixed room - brief speakers to define each term on first use and show one concrete example before the abstraction; offer an anonymous question channel and have the host read those questions aloud, starting with the most basic.\n[info] scope (scope): The page starts after acceptance: promised terms are delivered, never renegotiated or added to; it never invents a perk, a fee, a date, a person, a room or a piece of equipment, and never reads identity, gender or experience from a name."
}

Reply:

{
 "task": "plan",
 "summary": "Name the contact first: a role inbox is not a person, and the workshops were told they are not recorded - name one person, settle the workshops, then send the packet.",
 "verdict": "name the contact first",
 "contact": {
  "name": "speakers@lakeshore-codemoot.example",
  "reason": "A role inbox is not a named person - three organizers answer in three threads, or nobody does."
 },
 "ladder": [
  {
   "material": "Confirmation",
   "ask_by": "2027-03-02",
   "last_usable": "2027-03-12",
   "feeds": "the waitlist"
  },
  {
   "material": "Final title and abstract",
   "ask_by": "2027-03-05",
   "last_usable": "2027-03-26",
   "feeds": "programme publication"
  },
  {
   "material": "Bio",
   "ask_by": "2027-03-05",
   "last_usable": "2027-03-26",
   "feeds": "programme publication"
  },
  {
   "material": "Recording consent",
   "ask_by": "2027-03-16",
   "last_usable": "2027-04-06",
   "feeds": "the camera crew booking"
  },
  {
   "material": "Headshot",
   "ask_by": "2027-03-19",
   "last_usable": "2027-04-09",
   "feeds": "badge print"
  },
  {
   "material": "A/V requirements",
   "ask_by": "2027-03-23",
   "last_usable": "2027-04-13",
   "feeds": "the venue equipment order"
  },
  {
   "material": "Accessibility and dietary needs",
   "ask_by": "2027-03-26",
   "last_usable": "2027-04-16",
   "feeds": "catering lock"
  },
  {
   "material": "Travel and arrival details",
   "ask_by": "2027-03-30",
   "last_usable": "2027-04-20",
   "feeds": "the on-site plan"
  },
  {
   "material": "Slides",
   "ask_by": "2027-04-06",
   "last_usable": "2027-04-27",
   "feeds": "slide upload"
  }
 ],
 "depth": {
  "pick": "Written speaker packet",
  "reason": "Q2: 12 speakers - past roughly five, the contact spends their hours re-answering the same question by hand. Improvised care with nothing written down is deleted: it drops a commitment."
 },
 "cadence": {
  "pick": "Packet plus two checkpoints",
  "reason": "The packet plus two checkpoints is the efficient default, run per speaker: the milestone cadence and the check-in call go to the speakers the page flags, never one broadcast thread."
 },
 "recording": [
  {
   "format": "Talk",
   "posture": "Consent bundled into submission",
   "opt_out": "opt-out offered"
  },
  {
   "format": "Workshop",
   "posture": "Consent collected at acceptance",
   "opt_out": "opt-out offered"
  },
  {
   "format": "Panel",
   "posture": "Consent bundled into submission",
   "opt_out": "opt-out offered"
  }
 ],
 "first_timers": [
  {
   "name": "Bruno Keller",
   "care": "Offer the room before the doors open - the actual stage and clicker - and say what the room will be like; hold the check-in call on 2027-04-13."
  },
  {
   "name": "Dana Ruiz",
   "care": "Offer the room before the doors open - the actual stage and clicker - and say what the room will be like; hold the check-in call on 2027-04-13."
  }
 ],
 "promised": [
  {
   "speaker": "All speakers",
   "term": "free ticket",
   "status": "Delivered as promised, never renegotiated."
  },
  {
   "speaker": "Amara Osei",
   "term": "travel",
   "status": "Delivered as promised, never renegotiated."
  },
  {
   "speaker": "Amara Osei",
   "term": "lodging 2 nights",
   "status": "Delivered as promised, never renegotiated."
  },
  {
   "speaker": "Bruno Keller",
   "term": "travel",
   "status": "Delivered as promised, never renegotiated."
  },
  {
   "speaker": "Bruno Keller",
   "term": "lodging 2 nights",
   "status": "Delivered as promised, never renegotiated."
  },
  {
   "speaker": "Elif Kaya",
   "term": "travel",
   "status": "Delivered as promised, never renegotiated."
  },
  {
   "speaker": "Elif Kaya",
   "term": "lodging 2 nights",
   "status": "Delivered as promised, never renegotiated."
  },
  {
   "speaker": "Hugo Martins",
   "term": "travel",
   "status": "Delivered as promised, never renegotiated."
  },
  {
   "speaker": "Hugo Martins",
   "term": "lodging 2 nights",
   "status": "Delivered as promised, never renegotiated."
  }
 ],
 "travel": [
  {
   "speaker": "Amara Osei",
   "items": [
    "mechanism: the speaker pays and is reimbursed - said in the packet in one sentence",
    "what is covered and what is not, with the cap on each, as promised: travel and lodging",
    "the claim deadline and the payment turnaround, stated and honoured",
    "itinerary: arrival and departure times by 2027-04-20",
    "visa: ask now whether an invitation letter is needed and who signs it - lead times are jurisdiction-specific, none is invented here",
    "retention: delete passport, ticket and payment details on 2027-05-19"
   ]
  },
  {
   "speaker": "Bruno Keller",
   "items": [
    "mechanism: the speaker pays and is reimbursed - said in the packet in one sentence",
    "what is covered and what is not, with the cap on each, as promised: travel and lodging",
    "the claim deadline and the payment turnaround, stated and honoured",
    "itinerary: arrival and departure times by 2027-04-20",
    "retention: delete passport, ticket and payment details on 2027-05-19"
   ]
  },
  {
   "speaker": "Elif Kaya",
   "items": [
    "mechanism: the speaker pays and is reimbursed - said in the packet in one sentence",
    "what is covered and what is not, with the cap on each, as promised: travel and lodging",
    "the claim deadline and the payment turnaround, stated and honoured",
    "itinerary: arrival and departure times by 2027-04-20",
    "retention: delete passport, ticket and payment details on 2027-05-19"
   ]
  },
  {
   "speaker": "Hugo Martins",
   "items": [
    "mechanism: the speaker pays and is reimbursed - said in the packet in one sentence",
    "what is covered and what is not, with the cap on each, as promised: travel and lodging",
    "the claim deadline and the payment turnaround, stated and honoured",
    "itinerary: arrival and departure times by 2027-04-20",
    "retention: delete passport, ticket and payment details on 2027-05-19"
   ]
  }
 ],
 "caveats": [
  "\"speakers@lakeshore-codemoot.example\" is a role inbox, not a named person - three organizers answer in three threads, or nobody does.",
  "\"Workshop\": the intent is \"recorded and published\" but speakers were told \"not recorded\" (in the acceptance email) - deliver what they were told, or tell them now and record each answer before any camera is scheduled.",
  "an international speaker - ask early whether a visa invitation letter is needed and who signs it; lead times are jurisdiction-specific, so check the destination's current published requirements rather than assuming."
 ]
}

The page's check: kept - nothing to flag

A 2-day conference, a role inbox as the contact - packet

Verdict: name the contact first; ready: no; stage: acceptance emails just went out; contact: speakers@lakeshore-codemoot.example; depth: Written speaker packet; cadence: Packet plus two checkpoints; 12 speakers, 9 materials, 3 formats, 2 first-time; 2 fix-level findings.

Input:

{
 "task": "packet",
 "event": "Event: \"Lakeshore Codemoot 2027\" | dates: 2027-05-04 to 2027-05-05 (2 days) | city: \"Lakeshore\" | venue: \"Harbour Hall\" | as of: 2027-03-02\nQ1 sequence position chosen: \"acceptance emails just went out\" | acceptance emails sent: 2027-03-01 | days from the as-of date to the event: 63\nQ2 speakers: 12 | session formats: 3 | travelling domestically: 3 | travelling internationally: 1\nQ3 what the plan and the budget line deliver now: [lodging; travel; ticket] | travel mechanism: \"the speaker pays and is reimbursed\"\nQ5 edition: \"a recurring event\" | who owns the event: \"community-run event\"\nQ6 contact: \"speakers@lakeshore-codemoot.example\" | response window: \"two working days\" | contact hours a week: 6 | on-site host: \"the contact\" | money and contracts: \"Priya Nandakor, the treasurer\"\nQ9 venue: green room: yes | substitute: \"none named\" | A/V: \"a house A/V technician\" | confidence monitor: yes\nQ11 room: \"developers alongside non-technical attendees\"\nQ12 recurring moment promised: no | coach: \"nobody named\"\nQ13 outside the region's main hub: no\nSlides: consequence if the deadline slips: \"the talk runs from your own laptop and no copy is shared with attendees\" | deck collected after the talk for attendees: yes | days from the event to the recording published: 30 | travel-data deletion date: 2027-05-19",
 "speakers": "Formats (Q7) (3), one per line:\n- format 1: \"Talk\" | recording intent: \"recorded and published\" | speakers were told: \"recorded and published\" | where told: \"the call for papers\" | opt-out: \"opt-out offered\"\n- format 2: \"Workshop\" | recording intent: \"recorded and published\" | speakers were told: \"not recorded\" | where told: \"the acceptance email\" | opt-out: \"opt-out offered\"\n- format 3: \"Panel\" | recording intent: \"recorded and published\" | speakers were told: \"recorded and published\" | where told: \"the call for papers\" | opt-out: \"opt-out offered\"\nSpeakers (12), one per line:\n- speaker 1: \"Amara Osei\" | format: \"Talk\" | slot: \"2027-05-04 09:30\" | travelling: international | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"; \"travel\"; \"lodging 2 nights\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract]\n- speaker 2: \"Bruno Keller\" | format: \"Talk\" | slot: \"2027-05-04 11:00\" | travelling: domestic | first time (Q8): \"yes\" | promised (Q3): [\"free ticket\"; \"travel\"; \"lodging 2 nights\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [bio]\n- speaker 3: \"Chen Weyrin\" | format: \"Talk\" | slot: \"2027-05-04 14:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract]\n- speaker 4: \"Dana Ruiz\" | format: \"Talk\" | slot: \"2027-05-05 09:30\" | travelling: no | first time (Q8): \"at this scale\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [nothing yet]\n- speaker 5: \"Elif Kaya\" | format: \"Talk\" | slot: \"2027-05-05 11:00\" | travelling: domestic | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"; \"travel\"; \"lodging 2 nights\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract; headshot]\n- speaker 6: \"Farid Haddad\" | format: \"Talk\" | slot: \"2027-05-05 14:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [final title and abstract]\n- speaker 7: \"Grace Linmoor\" | format: \"Workshop\" | slot: \"2027-05-04 10:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio]\n- speaker 8: \"Hugo Martins\" | format: \"Workshop\" | slot: \"2027-05-04 14:00\" | travelling: domestic | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"; \"travel\"; \"lodging 2 nights\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [nothing yet]\n- speaker 9: \"Ingrid Berg\" | format: \"Workshop\" | slot: \"2027-05-05 10:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [bio; final title and abstract]\n- speaker 10: \"Jonas Weber\" | format: \"Panel\" | slot: \"2027-05-05 16:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio]\n- speaker 11: \"Kemi Adeyemi\" | format: \"Panel\" | slot: \"2027-05-05 16:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [nothing yet]\n- speaker 12: \"Lucia Moreno\" | format: \"Panel\" | slot: \"2027-05-05 16:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract]",
 "materials": "Materials (Q4) (9), one per line:\n- material 1: \"Confirmation\" | last usable date: 2027-03-12 | feeds: \"the waitlist\"\n- material 2: \"Final title and abstract\" | last usable date: 2027-03-26 | feeds: \"programme publication\"\n- material 3: \"Bio\" | last usable date: 2027-03-26 | feeds: \"programme publication\"\n- material 4: \"Recording consent\" | last usable date: 2027-04-06 | feeds: \"the camera crew booking\"\n- material 5: \"Headshot\" | last usable date: 2027-04-09 | feeds: \"badge print\"\n- material 6: \"A/V requirements\" | last usable date: 2027-04-13 | feeds: \"the venue equipment order\"\n- material 7: \"Accessibility and dietary needs\" | last usable date: 2027-04-16 | feeds: \"catering lock\"\n- material 8: \"Travel and arrival details\" | last usable date: 2027-04-20 | feeds: \"the on-site plan\"\n- material 9: \"Slides\" | last usable date: 2027-04-27 | feeds: \"slide upload\"",
 "notes": "From Bruno Keller: Happy to confirm. Is there somewhere quiet to run through the demo before my slot? Also, could the event cover a ticket for my partner?",
 "facts": "Verdict: \"name the contact first\" | ready: no | fix-level findings: 2\nSelf-set lines: an ask sent 21 days before each last usable date (or at once, when that has passed) | a tight window under 7 days | low contact hours under 2 a week | the thank-you 3 days after the event | the travel-data deletion 7 days after the event unless entered | a summary cap of 40 words | a thank-you cap of 120 words. The skill's own: roughly five speakers before the packet outranks the contact | the first reminder at roughly half the remaining time and the second at the deadline | a logistics note 48 hours out | one week out | a check-in call two to three weeks out | feedback within a week or two (the page uses 14 days). Never invented: a visa lead time, a fee or its figure, a perk nobody promised.\nStage (Q1): \"acceptance emails just went out\" | chosen: \"acceptance emails just went out\" | the dates say: \"acceptance emails just went out\" | consequence: Everything is still changeable: name the contact, then send the packet with the dated ladder.\nContact (step 2): \"speakers@lakeshore-codemoot.example\" | kind: a role inbox | response window: \"two working days\" | on-site host: \"speakers@lakeshore-codemoot.example\"\n  contact must: [copy \"speakers@lakeshore-codemoot.example\" exactly as the name; say a role inbox is not a named person (the word \"inbox\")]\nCollection ladder (step 3) - in this order, each pinned to its last usable date, never the event date - 9:\n- material 1: \"Confirmation\" | ask by: 2027-03-02 (at once) | first reminder: 2027-03-07 | second reminder: 2027-03-12 | last usable: 2027-03-12 | feeds: \"the waitlist\" | speakers still owing: 12 of 12 | passed: no\n  must: [material \"Confirmation\" exactly; ask_by 2027-03-02; last_usable 2027-03-12; feeds \"the waitlist\"]\n- material 2: \"Final title and abstract\" | ask by: 2027-03-05 | first reminder: 2027-03-15 | second reminder: 2027-03-26 | last usable: 2027-03-26 | feeds: \"programme publication\" | speakers still owing: 6 of 12 | passed: no\n  must: [material \"Final title and abstract\" exactly; ask_by 2027-03-05; last_usable 2027-03-26; feeds \"programme publication\"]\n- material 3: \"Bio\" | ask by: 2027-03-05 | first reminder: 2027-03-15 | second reminder: 2027-03-26 | last usable: 2027-03-26 | feeds: \"programme publication\" | speakers still owing: 4 of 12 | passed: no\n  must: [material \"Bio\" exactly; ask_by 2027-03-05; last_usable 2027-03-26; feeds \"programme publication\"]\n- material 4: \"Recording consent\" | ask by: 2027-03-16 | first reminder: 2027-03-26 | second reminder: 2027-04-06 | last usable: 2027-04-06 | feeds: \"the camera crew booking\" | speakers still owing: 7 of 12 | passed: no\n  must: [material \"Recording consent\" exactly; ask_by 2027-03-16; last_usable 2027-04-06; feeds \"the camera crew booking\"]\n- material 5: \"Headshot\" | ask by: 2027-03-19 | first reminder: 2027-03-29 | second reminder: 2027-04-09 | last usable: 2027-04-09 | feeds: \"badge print\" | speakers still owing: 11 of 12 | passed: no\n  must: [material \"Headshot\" exactly; ask_by 2027-03-19; last_usable 2027-04-09; feeds \"badge print\"]\n- material 6: \"A/V requirements\" | ask by: 2027-03-23 | first reminder: 2027-04-02 | second reminder: 2027-04-13 | last usable: 2027-04-13 | feeds: \"the venue equipment order\" | speakers still owing: 5 of 12 | passed: no\n  must: [material \"A/V requirements\" exactly; ask_by 2027-03-23; last_usable 2027-04-13; feeds \"the venue equipment order\"]\n- material 7: \"Accessibility and dietary needs\" | ask by: 2027-03-26 | first reminder: 2027-04-05 | second reminder: 2027-04-16 | last usable: 2027-04-16 | feeds: \"catering lock\" | speakers still owing: 12 of 12 | passed: no\n  must: [material \"Accessibility and dietary needs\" exactly; ask_by 2027-03-26; last_usable 2027-04-16; feeds \"catering lock\"]\n- material 8: \"Travel and arrival details\" | ask by: 2027-03-30 | first reminder: 2027-04-09 | second reminder: 2027-04-20 | last usable: 2027-04-20 | feeds: \"the on-site plan\" | speakers still owing: 4 of 4 | passed: no\n  must: [material \"Travel and arrival details\" exactly; ask_by 2027-03-30; last_usable 2027-04-20; feeds \"the on-site plan\"]\n- material 9: \"Slides\" | ask by: 2027-04-06 | first reminder: 2027-04-16 | second reminder: 2027-04-27 | last usable: 2027-04-27 | feeds: \"slide upload\" | speakers still owing: 12 of 12 | passed: no\n  must: [material \"Slides\" exactly; ask_by 2027-04-06; last_usable 2027-04-27; feeds \"slide upload\"]\nStatus grid (one line per speaker; each list names materials):\n- speaker 1: \"Amara Osei\" | received: [\"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Travel and arrival details\"; \"Slides\"] | overdue: [none] | not applicable: [none]\n- speaker 2: \"Bruno Keller\" | received: [\"Bio\"] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Travel and arrival details\"; \"Slides\"] | overdue: [none] | not applicable: [none]\n- speaker 3: \"Chen Weyrin\" | received: [\"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 4: \"Dana Ruiz\" | received: [none] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 5: \"Elif Kaya\" | received: [\"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Accessibility and dietary needs\"; \"Travel and arrival details\"; \"Slides\"] | overdue: [none] | not applicable: [none]\n- speaker 6: \"Farid Haddad\" | received: [\"Final title and abstract\"] | due: [\"Confirmation\"; \"Bio\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 7: \"Grace Linmoor\" | received: [\"Bio\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Recording consent\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 8: \"Hugo Martins\" | received: [none] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Travel and arrival details\"; \"Slides\"] | overdue: [none] | not applicable: [none]\n- speaker 9: \"Ingrid Berg\" | received: [\"Final title and abstract\"; \"Bio\"] | due: [\"Confirmation\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 10: \"Jonas Weber\" | received: [\"Bio\"; \"Recording consent\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 11: \"Kemi Adeyemi\" | received: [\"A/V requirements\"] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 12: \"Lucia Moreno\" | received: [\"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\nSpeaker-care depth - pick: \"Written speaker packet\"\n- rung 1: \"Written speaker packet\" | moved: made the pick by Q2: 12 speakers - past roughly five, the contact spends their hours re-answering the same question by hand\n- rung 2: \"Named point of contact\"\n- rung 3: \"Speakers' dinner and gifts\" | moved: promoted by Q5: a recurring edition - the rung that turns a speaker into next year's referral\n- rung 4: \"Linked orientation course\"\n- rung 5: \"Travel and lodging concierge\" | moved: promoted by Q2: an international speaker - and wherever a visa letter is needed\n- deleted, not demoted: \"Improvised per-speaker care with nothing written down\" | reason: it drops a commitment: nothing outside one person's memory says what was promised\n  depth reason must: [name the interview answer behind the pick; say improvised care with nothing written down is deleted (the word \"deleted\")]\nPre-event cadence - pick: \"Packet plus two checkpoints\"\n- rung 1: \"Packet plus two checkpoints\"\n- rung 2: \"Milestone cadence\"\n- rung 3: \"Single packet at acceptance\"\n- rung 4: \"Per-speaker check-in call\"\n- deleted, not demoted: \"One broadcast thread with every speaker CC'd\" | reason: it leaks each speaker's address to all the others, and a personal deadline addressed to twenty people reads as somebody else's problem\n- notes: Per speaker, not as one broadcast: move up to the milestone cadence for the speakers Q2 and Q8 flag, and to the check-in call for keynotes and first-time speakers.\n  cadence reason must: [say the cadence runs per speaker, never as one broadcast (the words \"per speaker\")]\nPer-speaker cadence, in speaker order:\n- speaker 1: \"Amara Osei\" | cadence: \"Milestone cadence\" | because: Q2: international travel | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-04 the morning of]\n- speaker 2: \"Bruno Keller\" | cadence: \"Per-speaker check-in call\" | because: Q8: a first talk; A/V needs not known yet (the page's reading) | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-13 check-in call, two to three weeks out; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-04 the morning of]\n- speaker 3: \"Chen Weyrin\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\n- speaker 4: \"Dana Ruiz\" | cadence: \"Per-speaker check-in call\" | because: Q8: a first talk at this scale; A/V needs not known yet (the page's reading) | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-13 check-in call, two to three weeks out; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-05 the morning of]\n- speaker 5: \"Elif Kaya\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\n- speaker 6: \"Farid Haddad\" | cadence: \"Milestone cadence\" | because: A/V needs not known yet (the page's reading) | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-05 the morning of]\n- speaker 7: \"Grace Linmoor\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\n- speaker 8: \"Hugo Martins\" | cadence: \"Milestone cadence\" | because: A/V needs not known yet (the page's reading) | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-04 the morning of]\n- speaker 9: \"Ingrid Berg\" | cadence: \"Milestone cadence\" | because: A/V needs not known yet (the page's reading) | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-05 the morning of]\n- speaker 10: \"Jonas Weber\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\n- speaker 11: \"Kemi Adeyemi\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\n- speaker 12: \"Lucia Moreno\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\nRecording (Q7) - one per format, in this order - 3:\n- format 1: \"Talk\" | intent: \"recorded and published\" | told: \"recorded and published\" | where told: \"the call for papers\" | posture: \"Consent bundled into submission\" | opt-out: \"opt-out offered\" | mismatch: none | moved: promoted by Q7: told in the call for papers - the form already exists\n  must: [format \"Talk\" exactly; posture \"Consent bundled into submission\" exactly; the opt_out uses the words \"offered\"]\n- format 2: \"Workshop\" | intent: \"recorded and published\" | told: \"not recorded\" | where told: \"the acceptance email\" | posture: \"Consent collected at acceptance\" | opt-out: \"opt-out offered\" | mismatch: told less than intended | moved: made the pick by Q7: told in the acceptance email, not the submission form - the only rung that covers invited speakers\n  must: [format \"Workshop\" exactly; posture \"Consent collected at acceptance\" exactly; the opt_out uses the words \"offered\"]\n- format 3: \"Panel\" | intent: \"recorded and published\" | told: \"recorded and published\" | where told: \"the call for papers\" | posture: \"Consent bundled into submission\" | opt-out: \"opt-out offered\" | mismatch: none | moved: promoted by Q7: told in the call for papers - the form already exists\n  must: [format \"Panel\" exactly; posture \"Consent bundled into submission\" exactly; the opt_out uses the words \"offered\"]\nRecording menu, deleted not demoted: \"Recording on the assumption that silence is consent\" | reason: a published video cannot be unpublished from the copies people already have. PyCon US offers an opt-out for Talks and Charlas and states plainly that you cannot opt out of recording for lightning talks.\nFirst-time speakers (Q8) - asked, never inferred - 2:\n- name: \"Bruno Keller\" | first time: \"yes\" | care: [offer the room: the actual stage, the actual clicker and the actual confidence monitor before the doors open; say what the room will be like: audience size, whether questions happen, who introduces them, the timing signals, what happens if a demo fails; a live briefing: a short call or a session on arrival; the check-in call on 2027-04-13, two to three weeks out; rehearsal, mentors and talk feedback come from event-speaker-coaching, offered to every speaker in the same words]\n  must: [name \"Bruno Keller\" exactly; care says offer the room (the word \"room\"); care names the check-in call (the word \"call\")]\n- name: \"Dana Ruiz\" | first time: \"at this scale\" | care: [offer the room: the actual stage, the actual clicker and the actual confidence monitor before the doors open; say what the room will be like: audience size, whether questions happen, who introduces them, the timing signals, what happens if a demo fails; a live briefing: a short call or a session on arrival; the check-in call on 2027-04-13, two to three weeks out; rehearsal, mentors and talk feedback come from event-speaker-coaching, offered to every speaker in the same words]\n  must: [name \"Dana Ruiz\" exactly; care says offer the room (the word \"room\"); care names the check-in call (the word \"call\")]\nPromised terms (Q3) - in this order, delivered and never renegotiated or added to - 9:\n- speaker: \"All speakers\" | term: \"free ticket\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"All speakers\" and term \"free ticket\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Amara Osei\" | term: \"travel\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Amara Osei\" and term \"travel\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Amara Osei\" | term: \"lodging 2 nights\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Amara Osei\" and term \"lodging 2 nights\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Bruno Keller\" | term: \"travel\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Bruno Keller\" and term \"travel\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Bruno Keller\" | term: \"lodging 2 nights\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Bruno Keller\" and term \"lodging 2 nights\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Elif Kaya\" | term: \"travel\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Elif Kaya\" and term \"travel\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Elif Kaya\" | term: \"lodging 2 nights\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Elif Kaya\" and term \"lodging 2 nights\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Hugo Martins\" | term: \"travel\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Hugo Martins\" and term \"travel\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Hugo Martins\" | term: \"lodging 2 nights\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Hugo Martins\" and term \"lodging 2 nights\" exactly; the status uses the word \"delivered\"]\nTravel - 4 travelling, in speaker order:\n- speaker: \"Amara Osei\" | travelling: international | items: [mechanism: the speaker pays and is reimbursed - said in the packet in one sentence; what is covered and what is not, with the cap on each, as promised: travel and lodging; the claim deadline and the payment turnaround, stated and honoured; itinerary: arrival and departure times by 2027-04-20; visa: ask now whether an invitation letter is needed and who signs it - lead times are jurisdiction-specific, none is invented here; retention: delete passport, ticket and payment details on 2027-05-19]\n  must: [speaker \"Amara Osei\" exactly; the items use the word \"reimburse\"; the items use the word \"visa\"]\n- speaker: \"Bruno Keller\" | travelling: domestic | items: [mechanism: the speaker pays and is reimbursed - said in the packet in one sentence; what is covered and what is not, with the cap on each, as promised: travel and lodging; the claim deadline and the payment turnaround, stated and honoured; itinerary: arrival and departure times by 2027-04-20; retention: delete passport, ticket and payment details on 2027-05-19]\n  must: [speaker \"Bruno Keller\" exactly; the items use the word \"reimburse\"]\n- speaker: \"Elif Kaya\" | travelling: domestic | items: [mechanism: the speaker pays and is reimbursed - said in the packet in one sentence; what is covered and what is not, with the cap on each, as promised: travel and lodging; the claim deadline and the payment turnaround, stated and honoured; itinerary: arrival and departure times by 2027-04-20; retention: delete passport, ticket and payment details on 2027-05-19]\n  must: [speaker \"Elif Kaya\" exactly; the items use the word \"reimburse\"]\n- speaker: \"Hugo Martins\" | travelling: domestic | items: [mechanism: the speaker pays and is reimbursed - said in the packet in one sentence; what is covered and what is not, with the cap on each, as promised: travel and lodging; the claim deadline and the payment turnaround, stated and honoured; itinerary: arrival and departure times by 2027-04-20; retention: delete passport, ticket and payment details on 2027-05-19]\n  must: [speaker \"Hugo Martins\" exactly; the items use the word \"reimburse\"]\nOn-site (step 9): green room: yes | green room line: \"the green room\" | A/V: \"a house A/V technician\" | confidence monitor: yes | mixed room: yes\n- day-of: \"Amara Osei\" | slot: \"2027-05-04 09:30\" | host: \"speakers@lakeshore-codemoot.example\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-04 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day]\n- day-of: \"Bruno Keller\" | slot: \"2027-05-04 11:00\" | host: \"speakers@lakeshore-codemoot.example\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-04 before the audience is in\" | green room: \"the green room\" | notes: [first talk - offer the room before the doors open; the host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day]\n- day-of: \"Chen Weyrin\" | slot: \"2027-05-04 14:00\" | host: \"speakers@lakeshore-codemoot.example\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-04 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Dana Ruiz\" | slot: \"2027-05-05 09:30\" | host: \"speakers@lakeshore-codemoot.example\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [first talk at this scale - offer the room before the doors open; the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Elif Kaya\" | slot: \"2027-05-05 11:00\" | host: \"speakers@lakeshore-codemoot.example\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day]\n- day-of: \"Farid Haddad\" | slot: \"2027-05-05 14:00\" | host: \"speakers@lakeshore-codemoot.example\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Grace Linmoor\" | slot: \"2027-05-04 10:00\" | host: \"speakers@lakeshore-codemoot.example\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-04 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Hugo Martins\" | slot: \"2027-05-04 14:00\" | host: \"speakers@lakeshore-codemoot.example\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-04 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day]\n- day-of: \"Ingrid Berg\" | slot: \"2027-05-05 10:00\" | host: \"speakers@lakeshore-codemoot.example\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Jonas Weber\" | slot: \"2027-05-05 16:00\" | host: \"speakers@lakeshore-codemoot.example\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Kemi Adeyemi\" | slot: \"2027-05-05 16:00\" | host: \"speakers@lakeshore-codemoot.example\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Lucia Moreno\" | slot: \"2027-05-05 16:00\" | host: \"speakers@lakeshore-codemoot.example\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\nSlide deadline (step 7): 2027-04-27 | consequence: \"the talk runs from your own laptop and no copy is shared with attendees\" | honest none: no | deck collected after the talk: yes\nAfter the event (step 10), in this order:\n- thank-you: 2027-05-08 | individual, from the named contact, one specific thing about the talk; ask nothing yet (within a few days - 3 days, self-set)\n- feedback: 2027-05-19 | what you actually have, anonymous comments in full minus abuse, the host's own read; never with a request (within a week or two)\n- recording link: 2027-06-04 | tell the speaker before it goes live; the direct link to their own session; where else it lives; permission to share it (your own 30-day promise)\n- retention pass: 2027-05-19 | delete travel documents, ID scans and payment details; keep the consent record\n- returning ask: no date | separately and later: ask once, specifically, and record the answer\nPacket must: [title contains \"Lakeshore Codemoot 2027\"; contact contains \"speakers@lakeshore-codemoot.example\"; what_we_need follows the ladder's order with each last usable date as by; schedule copies each speaker's slot; venue_and_av says \"green room\"; travel_and_expenses names only promised terms; on_the_day names the host and the tech check and says no sales pitch and the anonymous question channel (the word \"anonymous\"); thank_you at most 120 words and says the recording link is \"to be sent when published\"] | packet note must: [begin \"Not ready to send:\" and say what to fix first]\nCarried from the plan: summary: \"Name the contact first: a role inbox is not a person, and the workshops were told they are not recorded - name one person, settle the workshops, then send the packet.\" | parts matching the page: 3 of 3\nFindings (7):\n[fix] contact_role (contact): Q6: \"speakers@lakeshore-codemoot.example\" is a role inbox, not a named person - three organizers answer in three threads, or nobody does. Name one person or a pair before the first message.\n[fix] mismatch_2 (recording): Q7: \"Workshop\": the intent is \"recorded and published\" but speakers were told \"not recorded\" (in the acceptance email) - deliver what they were told, or tell them now and record each answer before any camera is scheduled.\n[check] visa (travel): Q2: an international speaker - ask early whether a visa invitation letter is needed and who signs it; lead times are jurisdiction-specific, so check the destination's current published requirements rather than assuming.\n[info] stage_just (stage): Q1: acceptance emails just went out. Everything is still changeable: name the contact, then send the packet with the dated ladder.\n[info] same_day (ladder): Q4: two or more materials are due on 2027-03-26 - a deadline landing on a single day.\n[info] mixed_room (room): Q11: a mixed room - brief speakers to define each term on first use and show one concrete example before the abstraction; offer an anonymous question channel and have the host read those questions aloud, starting with the most basic.\n[info] scope (scope): The page starts after acceptance: promised terms are delivered, never renegotiated or added to; it never invents a perk, a fee, a date, a person, a room or a piece of equipment, and never reads identity, gender or experience from a name."
}

Reply:

{
 "task": "packet",
 "packet": {
  "title": "Lakeshore Codemoot 2027 - speaker packet",
  "contact": "speakers@lakeshore-codemoot.example - replies within two working days",
  "what_we_need": [
   {
    "material": "Confirmation",
    "by": "2027-03-12"
   },
   {
    "material": "Final title and abstract",
    "by": "2027-03-26"
   },
   {
    "material": "Bio",
    "by": "2027-03-26"
   },
   {
    "material": "Recording consent",
    "by": "2027-04-06"
   },
   {
    "material": "Headshot",
    "by": "2027-04-09"
   },
   {
    "material": "A/V requirements",
    "by": "2027-04-13"
   },
   {
    "material": "Accessibility and dietary needs",
    "by": "2027-04-16"
   },
   {
    "material": "Travel and arrival details",
    "by": "2027-04-20"
   },
   {
    "material": "Slides",
    "by": "2027-04-27"
   }
  ],
  "schedule": [
   {
    "speaker": "Amara Osei",
    "slot": "Talk, 2027-05-04 09:30"
   },
   {
    "speaker": "Bruno Keller",
    "slot": "Talk, 2027-05-04 11:00"
   },
   {
    "speaker": "Chen Weyrin",
    "slot": "Talk, 2027-05-04 14:00"
   },
   {
    "speaker": "Dana Ruiz",
    "slot": "Talk, 2027-05-05 09:30"
   },
   {
    "speaker": "Elif Kaya",
    "slot": "Talk, 2027-05-05 11:00"
   },
   {
    "speaker": "Farid Haddad",
    "slot": "Talk, 2027-05-05 14:00"
   },
   {
    "speaker": "Grace Linmoor",
    "slot": "Workshop, 2027-05-04 10:00"
   },
   {
    "speaker": "Hugo Martins",
    "slot": "Workshop, 2027-05-04 14:00"
   },
   {
    "speaker": "Ingrid Berg",
    "slot": "Workshop, 2027-05-05 10:00"
   },
   {
    "speaker": "Jonas Weber",
    "slot": "Panel, 2027-05-05 16:00"
   },
   {
    "speaker": "Kemi Adeyemi",
    "slot": "Panel, 2027-05-05 16:00"
   },
   {
    "speaker": "Lucia Moreno",
    "slot": "Panel, 2027-05-05 16:00"
   }
  ],
  "venue_and_av": "The venue gives a house A/V technician and a confidence monitor. There is a green room - a place to be not-on, not a networking space.",
  "recording": [
   {
    "format": "Talk",
    "policy": "Recorded and published - opt-out offered."
   },
   {
    "format": "Workshop",
    "policy": "Recorded and published - opt-out offered."
   },
   {
    "format": "Panel",
    "policy": "Recorded and published - opt-out offered."
   }
  ],
  "slide_deadline": "Slides are due 2027-04-27. If it slips: the talk runs from your own laptop and no copy is shared with attendees. The deck is collected right after the talk for attendees, so build it knowing that.",
  "travel_and_expenses": "Every speaker has free ticket, as promised. Amara Osei, Bruno Keller, Elif Kaya and Hugo Martins also have travel and lodging 2 nights, as promised: the speaker pays and is reimbursed.",
  "on_the_day": "Your host: speakers@lakeshore-codemoot.example - they meet you at arrival. The tech check runs on the actual stage equipment at a named time before the audience is in. No commercial demo or sales pitch: the audience leaves with the lesson, not the product. The room is mixed: define each term on first use, and expect questions from the anonymous channel, read aloud by the host.",
  "after_the_talk": "A personal thank-you within a few days, and the feedback we actually have within a week or two."
 },
 "day_of": [
  {
   "speaker": "Amara Osei",
   "host": "speakers@lakeshore-codemoot.example",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "The host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day."
  },
  {
   "speaker": "Bruno Keller",
   "host": "speakers@lakeshore-codemoot.example",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "First talk - offer the room before the doors open; the host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day."
  },
  {
   "speaker": "Chen Weyrin",
   "host": "speakers@lakeshore-codemoot.example",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "The host reads the anonymous questions aloud, the most basic first."
  },
  {
   "speaker": "Dana Ruiz",
   "host": "speakers@lakeshore-codemoot.example",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "First talk at this scale - offer the room before the doors open; the host reads the anonymous questions aloud, the most basic first."
  },
  {
   "speaker": "Elif Kaya",
   "host": "speakers@lakeshore-codemoot.example",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "The host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day."
  },
  {
   "speaker": "Farid Haddad",
   "host": "speakers@lakeshore-codemoot.example",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "The host reads the anonymous questions aloud, the most basic first."
  },
  {
   "speaker": "Grace Linmoor",
   "host": "speakers@lakeshore-codemoot.example",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "The host reads the anonymous questions aloud, the most basic first."
  },
  {
   "speaker": "Hugo Martins",
   "host": "speakers@lakeshore-codemoot.example",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "The host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day."
  },
  {
   "speaker": "Ingrid Berg",
   "host": "speakers@lakeshore-codemoot.example",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "The host reads the anonymous questions aloud, the most basic first."
  },
  {
   "speaker": "Jonas Weber",
   "host": "speakers@lakeshore-codemoot.example",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "The host reads the anonymous questions aloud, the most basic first."
  },
  {
   "speaker": "Kemi Adeyemi",
   "host": "speakers@lakeshore-codemoot.example",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "The host reads the anonymous questions aloud, the most basic first."
  },
  {
   "speaker": "Lucia Moreno",
   "host": "speakers@lakeshore-codemoot.example",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "The host reads the anonymous questions aloud, the most basic first."
  }
 ],
 "thank_you": "Thank you for your talk at Lakeshore Codemoot 2027. [One specific thing about the talk - the question it got, the conversation it started.] The recording link is to be sent when published, and you will hear before it goes live. - speakers@lakeshore-codemoot.example",
 "note": "Not ready to send: name one person or a pair as the contact, and settle the workshop recording with the workshop speakers first."
}

The page's check: kept - nothing to flag

The same, contact named, recording mismatch open - plan

Verdict: fix first; ready: no; stage: acceptance emails just went out; contact: Marta Silva (marta@lakeshore-codemoot.example); depth: Written speaker packet; cadence: Packet plus two checkpoints; 12 speakers, 9 materials, 3 formats, 2 first-time; 1 fix-level findings.

Input:

{
 "task": "plan",
 "event": "Event: \"Lakeshore Codemoot 2027\" | dates: 2027-05-04 to 2027-05-05 (2 days) | city: \"Lakeshore\" | venue: \"Harbour Hall\" | as of: 2027-03-02\nQ1 sequence position chosen: \"acceptance emails just went out\" | acceptance emails sent: 2027-03-01 | days from the as-of date to the event: 63\nQ2 speakers: 12 | session formats: 3 | travelling domestically: 3 | travelling internationally: 1\nQ3 what the plan and the budget line deliver now: [lodging; travel; ticket] | travel mechanism: \"the speaker pays and is reimbursed\"\nQ5 edition: \"a recurring event\" | who owns the event: \"community-run event\"\nQ6 contact: \"Marta Silva (marta@lakeshore-codemoot.example)\" | response window: \"two working days\" | contact hours a week: 6 | on-site host: \"the contact\" | money and contracts: \"Priya Nandakor, the treasurer\"\nQ9 venue: green room: yes | substitute: \"none named\" | A/V: \"a house A/V technician\" | confidence monitor: yes\nQ11 room: \"developers alongside non-technical attendees\"\nQ12 recurring moment promised: no | coach: \"nobody named\"\nQ13 outside the region's main hub: no\nSlides: consequence if the deadline slips: \"the talk runs from your own laptop and no copy is shared with attendees\" | deck collected after the talk for attendees: yes | days from the event to the recording published: 30 | travel-data deletion date: 2027-05-19",
 "speakers": "Formats (Q7) (3), one per line:\n- format 1: \"Talk\" | recording intent: \"recorded and published\" | speakers were told: \"recorded and published\" | where told: \"the call for papers\" | opt-out: \"opt-out offered\"\n- format 2: \"Workshop\" | recording intent: \"recorded and published\" | speakers were told: \"not recorded\" | where told: \"the acceptance email\" | opt-out: \"opt-out offered\"\n- format 3: \"Panel\" | recording intent: \"recorded and published\" | speakers were told: \"recorded and published\" | where told: \"the call for papers\" | opt-out: \"opt-out offered\"\nSpeakers (12), one per line:\n- speaker 1: \"Amara Osei\" | format: \"Talk\" | slot: \"2027-05-04 09:30\" | travelling: international | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"; \"travel\"; \"lodging 2 nights\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract]\n- speaker 2: \"Bruno Keller\" | format: \"Talk\" | slot: \"2027-05-04 11:00\" | travelling: domestic | first time (Q8): \"yes\" | promised (Q3): [\"free ticket\"; \"travel\"; \"lodging 2 nights\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [bio]\n- speaker 3: \"Chen Weyrin\" | format: \"Talk\" | slot: \"2027-05-04 14:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract]\n- speaker 4: \"Dana Ruiz\" | format: \"Talk\" | slot: \"2027-05-05 09:30\" | travelling: no | first time (Q8): \"at this scale\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [nothing yet]\n- speaker 5: \"Elif Kaya\" | format: \"Talk\" | slot: \"2027-05-05 11:00\" | travelling: domestic | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"; \"travel\"; \"lodging 2 nights\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract; headshot]\n- speaker 6: \"Farid Haddad\" | format: \"Talk\" | slot: \"2027-05-05 14:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [final title and abstract]\n- speaker 7: \"Grace Linmoor\" | format: \"Workshop\" | slot: \"2027-05-04 10:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio]\n- speaker 8: \"Hugo Martins\" | format: \"Workshop\" | slot: \"2027-05-04 14:00\" | travelling: domestic | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"; \"travel\"; \"lodging 2 nights\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [nothing yet]\n- speaker 9: \"Ingrid Berg\" | format: \"Workshop\" | slot: \"2027-05-05 10:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [bio; final title and abstract]\n- speaker 10: \"Jonas Weber\" | format: \"Panel\" | slot: \"2027-05-05 16:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio]\n- speaker 11: \"Kemi Adeyemi\" | format: \"Panel\" | slot: \"2027-05-05 16:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [nothing yet]\n- speaker 12: \"Lucia Moreno\" | format: \"Panel\" | slot: \"2027-05-05 16:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract]",
 "materials": "Materials (Q4) (9), one per line:\n- material 1: \"Confirmation\" | last usable date: 2027-03-12 | feeds: \"the waitlist\"\n- material 2: \"Final title and abstract\" | last usable date: 2027-03-26 | feeds: \"programme publication\"\n- material 3: \"Bio\" | last usable date: 2027-03-26 | feeds: \"programme publication\"\n- material 4: \"Recording consent\" | last usable date: 2027-04-06 | feeds: \"the camera crew booking\"\n- material 5: \"Headshot\" | last usable date: 2027-04-09 | feeds: \"badge print\"\n- material 6: \"A/V requirements\" | last usable date: 2027-04-13 | feeds: \"the venue equipment order\"\n- material 7: \"Accessibility and dietary needs\" | last usable date: 2027-04-16 | feeds: \"catering lock\"\n- material 8: \"Travel and arrival details\" | last usable date: 2027-04-20 | feeds: \"the on-site plan\"\n- material 9: \"Slides\" | last usable date: 2027-04-27 | feeds: \"slide upload\"",
 "notes": "",
 "facts": "Verdict: \"fix first\" | ready: no | fix-level findings: 1\nSelf-set lines: an ask sent 21 days before each last usable date (or at once, when that has passed) | a tight window under 7 days | low contact hours under 2 a week | the thank-you 3 days after the event | the travel-data deletion 7 days after the event unless entered | a summary cap of 40 words | a thank-you cap of 120 words. The skill's own: roughly five speakers before the packet outranks the contact | the first reminder at roughly half the remaining time and the second at the deadline | a logistics note 48 hours out | one week out | a check-in call two to three weeks out | feedback within a week or two (the page uses 14 days). Never invented: a visa lead time, a fee or its figure, a perk nobody promised.\nStage (Q1): \"acceptance emails just went out\" | chosen: \"acceptance emails just went out\" | the dates say: \"acceptance emails just went out\" | consequence: Everything is still changeable: name the contact, then send the packet with the dated ladder.\nContact (step 2): \"Marta Silva (marta@lakeshore-codemoot.example)\" | kind: a named person | response window: \"two working days\" | on-site host: \"Marta Silva (marta@lakeshore-codemoot.example)\"\n  contact must: [copy \"Marta Silva (marta@lakeshore-codemoot.example)\" exactly as the name; say one name, one address and one stated response window (the word \"window\")]\nCollection ladder (step 3) - in this order, each pinned to its last usable date, never the event date - 9:\n- material 1: \"Confirmation\" | ask by: 2027-03-02 (at once) | first reminder: 2027-03-07 | second reminder: 2027-03-12 | last usable: 2027-03-12 | feeds: \"the waitlist\" | speakers still owing: 12 of 12 | passed: no\n  must: [material \"Confirmation\" exactly; ask_by 2027-03-02; last_usable 2027-03-12; feeds \"the waitlist\"]\n- material 2: \"Final title and abstract\" | ask by: 2027-03-05 | first reminder: 2027-03-15 | second reminder: 2027-03-26 | last usable: 2027-03-26 | feeds: \"programme publication\" | speakers still owing: 6 of 12 | passed: no\n  must: [material \"Final title and abstract\" exactly; ask_by 2027-03-05; last_usable 2027-03-26; feeds \"programme publication\"]\n- material 3: \"Bio\" | ask by: 2027-03-05 | first reminder: 2027-03-15 | second reminder: 2027-03-26 | last usable: 2027-03-26 | feeds: \"programme publication\" | speakers still owing: 4 of 12 | passed: no\n  must: [material \"Bio\" exactly; ask_by 2027-03-05; last_usable 2027-03-26; feeds \"programme publication\"]\n- material 4: \"Recording consent\" | ask by: 2027-03-16 | first reminder: 2027-03-26 | second reminder: 2027-04-06 | last usable: 2027-04-06 | feeds: \"the camera crew booking\" | speakers still owing: 7 of 12 | passed: no\n  must: [material \"Recording consent\" exactly; ask_by 2027-03-16; last_usable 2027-04-06; feeds \"the camera crew booking\"]\n- material 5: \"Headshot\" | ask by: 2027-03-19 | first reminder: 2027-03-29 | second reminder: 2027-04-09 | last usable: 2027-04-09 | feeds: \"badge print\" | speakers still owing: 11 of 12 | passed: no\n  must: [material \"Headshot\" exactly; ask_by 2027-03-19; last_usable 2027-04-09; feeds \"badge print\"]\n- material 6: \"A/V requirements\" | ask by: 2027-03-23 | first reminder: 2027-04-02 | second reminder: 2027-04-13 | last usable: 2027-04-13 | feeds: \"the venue equipment order\" | speakers still owing: 5 of 12 | passed: no\n  must: [material \"A/V requirements\" exactly; ask_by 2027-03-23; last_usable 2027-04-13; feeds \"the venue equipment order\"]\n- material 7: \"Accessibility and dietary needs\" | ask by: 2027-03-26 | first reminder: 2027-04-05 | second reminder: 2027-04-16 | last usable: 2027-04-16 | feeds: \"catering lock\" | speakers still owing: 12 of 12 | passed: no\n  must: [material \"Accessibility and dietary needs\" exactly; ask_by 2027-03-26; last_usable 2027-04-16; feeds \"catering lock\"]\n- material 8: \"Travel and arrival details\" | ask by: 2027-03-30 | first reminder: 2027-04-09 | second reminder: 2027-04-20 | last usable: 2027-04-20 | feeds: \"the on-site plan\" | speakers still owing: 4 of 4 | passed: no\n  must: [material \"Travel and arrival details\" exactly; ask_by 2027-03-30; last_usable 2027-04-20; feeds \"the on-site plan\"]\n- material 9: \"Slides\" | ask by: 2027-04-06 | first reminder: 2027-04-16 | second reminder: 2027-04-27 | last usable: 2027-04-27 | feeds: \"slide upload\" | speakers still owing: 12 of 12 | passed: no\n  must: [material \"Slides\" exactly; ask_by 2027-04-06; last_usable 2027-04-27; feeds \"slide upload\"]\nStatus grid (one line per speaker; each list names materials):\n- speaker 1: \"Amara Osei\" | received: [\"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Travel and arrival details\"; \"Slides\"] | overdue: [none] | not applicable: [none]\n- speaker 2: \"Bruno Keller\" | received: [\"Bio\"] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Travel and arrival details\"; \"Slides\"] | overdue: [none] | not applicable: [none]\n- speaker 3: \"Chen Weyrin\" | received: [\"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 4: \"Dana Ruiz\" | received: [none] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 5: \"Elif Kaya\" | received: [\"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Accessibility and dietary needs\"; \"Travel and arrival details\"; \"Slides\"] | overdue: [none] | not applicable: [none]\n- speaker 6: \"Farid Haddad\" | received: [\"Final title and abstract\"] | due: [\"Confirmation\"; \"Bio\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 7: \"Grace Linmoor\" | received: [\"Bio\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Recording consent\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 8: \"Hugo Martins\" | received: [none] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Travel and arrival details\"; \"Slides\"] | overdue: [none] | not applicable: [none]\n- speaker 9: \"Ingrid Berg\" | received: [\"Final title and abstract\"; \"Bio\"] | due: [\"Confirmation\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 10: \"Jonas Weber\" | received: [\"Bio\"; \"Recording consent\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 11: \"Kemi Adeyemi\" | received: [\"A/V requirements\"] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 12: \"Lucia Moreno\" | received: [\"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\nSpeaker-care depth - pick: \"Written speaker packet\"\n- rung 1: \"Written speaker packet\" | moved: made the pick by Q2: 12 speakers - past roughly five, the contact spends their hours re-answering the same question by hand\n- rung 2: \"Named point of contact\"\n- rung 3: \"Speakers' dinner and gifts\" | moved: promoted by Q5: a recurring edition - the rung that turns a speaker into next year's referral\n- rung 4: \"Linked orientation course\"\n- rung 5: \"Travel and lodging concierge\" | moved: promoted by Q2: an international speaker - and wherever a visa letter is needed\n- deleted, not demoted: \"Improvised per-speaker care with nothing written down\" | reason: it drops a commitment: nothing outside one person's memory says what was promised\n  depth reason must: [name the interview answer behind the pick; say improvised care with nothing written down is deleted (the word \"deleted\")]\nPre-event cadence - pick: \"Packet plus two checkpoints\"\n- rung 1: \"Packet plus two checkpoints\"\n- rung 2: \"Milestone cadence\"\n- rung 3: \"Single packet at acceptance\"\n- rung 4: \"Per-speaker check-in call\"\n- deleted, not demoted: \"One broadcast thread with every speaker CC'd\" | reason: it leaks each speaker's address to all the others, and a personal deadline addressed to twenty people reads as somebody else's problem\n- notes: Per speaker, not as one broadcast: move up to the milestone cadence for the speakers Q2 and Q8 flag, and to the check-in call for keynotes and first-time speakers.\n  cadence reason must: [say the cadence runs per speaker, never as one broadcast (the words \"per speaker\")]\nPer-speaker cadence, in speaker order:\n- speaker 1: \"Amara Osei\" | cadence: \"Milestone cadence\" | because: Q2: international travel | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-04 the morning of]\n- speaker 2: \"Bruno Keller\" | cadence: \"Per-speaker check-in call\" | because: Q8: a first talk; A/V needs not known yet (the page's reading) | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-13 check-in call, two to three weeks out; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-04 the morning of]\n- speaker 3: \"Chen Weyrin\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\n- speaker 4: \"Dana Ruiz\" | cadence: \"Per-speaker check-in call\" | because: Q8: a first talk at this scale; A/V needs not known yet (the page's reading) | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-13 check-in call, two to three weeks out; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-05 the morning of]\n- speaker 5: \"Elif Kaya\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\n- speaker 6: \"Farid Haddad\" | cadence: \"Milestone cadence\" | because: A/V needs not known yet (the page's reading) | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-05 the morning of]\n- speaker 7: \"Grace Linmoor\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\n- speaker 8: \"Hugo Martins\" | cadence: \"Milestone cadence\" | because: A/V needs not known yet (the page's reading) | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-04 the morning of]\n- speaker 9: \"Ingrid Berg\" | cadence: \"Milestone cadence\" | because: A/V needs not known yet (the page's reading) | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-05 the morning of]\n- speaker 10: \"Jonas Weber\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\n- speaker 11: \"Kemi Adeyemi\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\n- speaker 12: \"Lucia Moreno\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\nRecording (Q7) - one per format, in this order - 3:\n- format 1: \"Talk\" | intent: \"recorded and published\" | told: \"recorded and published\" | where told: \"the call for papers\" | posture: \"Consent bundled into submission\" | opt-out: \"opt-out offered\" | mismatch: none | moved: promoted by Q7: told in the call for papers - the form already exists\n  must: [format \"Talk\" exactly; posture \"Consent bundled into submission\" exactly; the opt_out uses the words \"offered\"]\n- format 2: \"Workshop\" | intent: \"recorded and published\" | told: \"not recorded\" | where told: \"the acceptance email\" | posture: \"Consent collected at acceptance\" | opt-out: \"opt-out offered\" | mismatch: told less than intended | moved: made the pick by Q7: told in the acceptance email, not the submission form - the only rung that covers invited speakers\n  must: [format \"Workshop\" exactly; posture \"Consent collected at acceptance\" exactly; the opt_out uses the words \"offered\"]\n- format 3: \"Panel\" | intent: \"recorded and published\" | told: \"recorded and published\" | where told: \"the call for papers\" | posture: \"Consent bundled into submission\" | opt-out: \"opt-out offered\" | mismatch: none | moved: promoted by Q7: told in the call for papers - the form already exists\n  must: [format \"Panel\" exactly; posture \"Consent bundled into submission\" exactly; the opt_out uses the words \"offered\"]\nRecording menu, deleted not demoted: \"Recording on the assumption that silence is consent\" | reason: a published video cannot be unpublished from the copies people already have. PyCon US offers an opt-out for Talks and Charlas and states plainly that you cannot opt out of recording for lightning talks.\nFirst-time speakers (Q8) - asked, never inferred - 2:\n- name: \"Bruno Keller\" | first time: \"yes\" | care: [offer the room: the actual stage, the actual clicker and the actual confidence monitor before the doors open; say what the room will be like: audience size, whether questions happen, who introduces them, the timing signals, what happens if a demo fails; a live briefing: a short call or a session on arrival; the check-in call on 2027-04-13, two to three weeks out; rehearsal, mentors and talk feedback come from event-speaker-coaching, offered to every speaker in the same words]\n  must: [name \"Bruno Keller\" exactly; care says offer the room (the word \"room\"); care names the check-in call (the word \"call\")]\n- name: \"Dana Ruiz\" | first time: \"at this scale\" | care: [offer the room: the actual stage, the actual clicker and the actual confidence monitor before the doors open; say what the room will be like: audience size, whether questions happen, who introduces them, the timing signals, what happens if a demo fails; a live briefing: a short call or a session on arrival; the check-in call on 2027-04-13, two to three weeks out; rehearsal, mentors and talk feedback come from event-speaker-coaching, offered to every speaker in the same words]\n  must: [name \"Dana Ruiz\" exactly; care says offer the room (the word \"room\"); care names the check-in call (the word \"call\")]\nPromised terms (Q3) - in this order, delivered and never renegotiated or added to - 9:\n- speaker: \"All speakers\" | term: \"free ticket\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"All speakers\" and term \"free ticket\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Amara Osei\" | term: \"travel\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Amara Osei\" and term \"travel\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Amara Osei\" | term: \"lodging 2 nights\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Amara Osei\" and term \"lodging 2 nights\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Bruno Keller\" | term: \"travel\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Bruno Keller\" and term \"travel\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Bruno Keller\" | term: \"lodging 2 nights\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Bruno Keller\" and term \"lodging 2 nights\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Elif Kaya\" | term: \"travel\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Elif Kaya\" and term \"travel\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Elif Kaya\" | term: \"lodging 2 nights\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Elif Kaya\" and term \"lodging 2 nights\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Hugo Martins\" | term: \"travel\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Hugo Martins\" and term \"travel\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Hugo Martins\" | term: \"lodging 2 nights\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Hugo Martins\" and term \"lodging 2 nights\" exactly; the status uses the word \"delivered\"]\nTravel - 4 travelling, in speaker order:\n- speaker: \"Amara Osei\" | travelling: international | items: [mechanism: the speaker pays and is reimbursed - said in the packet in one sentence; what is covered and what is not, with the cap on each, as promised: travel and lodging; the claim deadline and the payment turnaround, stated and honoured; itinerary: arrival and departure times by 2027-04-20; visa: ask now whether an invitation letter is needed and who signs it - lead times are jurisdiction-specific, none is invented here; retention: delete passport, ticket and payment details on 2027-05-19]\n  must: [speaker \"Amara Osei\" exactly; the items use the word \"reimburse\"; the items use the word \"visa\"]\n- speaker: \"Bruno Keller\" | travelling: domestic | items: [mechanism: the speaker pays and is reimbursed - said in the packet in one sentence; what is covered and what is not, with the cap on each, as promised: travel and lodging; the claim deadline and the payment turnaround, stated and honoured; itinerary: arrival and departure times by 2027-04-20; retention: delete passport, ticket and payment details on 2027-05-19]\n  must: [speaker \"Bruno Keller\" exactly; the items use the word \"reimburse\"]\n- speaker: \"Elif Kaya\" | travelling: domestic | items: [mechanism: the speaker pays and is reimbursed - said in the packet in one sentence; what is covered and what is not, with the cap on each, as promised: travel and lodging; the claim deadline and the payment turnaround, stated and honoured; itinerary: arrival and departure times by 2027-04-20; retention: delete passport, ticket and payment details on 2027-05-19]\n  must: [speaker \"Elif Kaya\" exactly; the items use the word \"reimburse\"]\n- speaker: \"Hugo Martins\" | travelling: domestic | items: [mechanism: the speaker pays and is reimbursed - said in the packet in one sentence; what is covered and what is not, with the cap on each, as promised: travel and lodging; the claim deadline and the payment turnaround, stated and honoured; itinerary: arrival and departure times by 2027-04-20; retention: delete passport, ticket and payment details on 2027-05-19]\n  must: [speaker \"Hugo Martins\" exactly; the items use the word \"reimburse\"]\nOn-site (step 9): green room: yes | green room line: \"the green room\" | A/V: \"a house A/V technician\" | confidence monitor: yes | mixed room: yes\n- day-of: \"Amara Osei\" | slot: \"2027-05-04 09:30\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-04 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day]\n- day-of: \"Bruno Keller\" | slot: \"2027-05-04 11:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-04 before the audience is in\" | green room: \"the green room\" | notes: [first talk - offer the room before the doors open; the host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day]\n- day-of: \"Chen Weyrin\" | slot: \"2027-05-04 14:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-04 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Dana Ruiz\" | slot: \"2027-05-05 09:30\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [first talk at this scale - offer the room before the doors open; the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Elif Kaya\" | slot: \"2027-05-05 11:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day]\n- day-of: \"Farid Haddad\" | slot: \"2027-05-05 14:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Grace Linmoor\" | slot: \"2027-05-04 10:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-04 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Hugo Martins\" | slot: \"2027-05-04 14:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-04 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day]\n- day-of: \"Ingrid Berg\" | slot: \"2027-05-05 10:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Jonas Weber\" | slot: \"2027-05-05 16:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Kemi Adeyemi\" | slot: \"2027-05-05 16:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Lucia Moreno\" | slot: \"2027-05-05 16:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\nSlide deadline (step 7): 2027-04-27 | consequence: \"the talk runs from your own laptop and no copy is shared with attendees\" | honest none: no | deck collected after the talk: yes\nAfter the event (step 10), in this order:\n- thank-you: 2027-05-08 | individual, from the named contact, one specific thing about the talk; ask nothing yet (within a few days - 3 days, self-set)\n- feedback: 2027-05-19 | what you actually have, anonymous comments in full minus abuse, the host's own read; never with a request (within a week or two)\n- recording link: 2027-06-04 | tell the speaker before it goes live; the direct link to their own session; where else it lives; permission to share it (your own 30-day promise)\n- retention pass: 2027-05-19 | delete travel documents, ID scans and payment details; keep the consent record\n- returning ask: no date | separately and later: ask once, specifically, and record the answer\nPacket must: [title contains \"Lakeshore Codemoot 2027\"; contact contains \"Marta Silva (marta@lakeshore-codemoot.example)\"; what_we_need follows the ladder's order with each last usable date as by; schedule copies each speaker's slot; venue_and_av says \"green room\"; travel_and_expenses names only promised terms; on_the_day names the host and the tech check and says no sales pitch and the anonymous question channel (the word \"anonymous\"); thank_you at most 120 words and says the recording link is \"to be sent when published\"] | packet note must: [begin \"Not ready to send:\" and say what to fix first]\nFindings (6):\n[fix] mismatch_2 (recording): Q7: \"Workshop\": the intent is \"recorded and published\" but speakers were told \"not recorded\" (in the acceptance email) - deliver what they were told, or tell them now and record each answer before any camera is scheduled.\n[check] visa (travel): Q2: an international speaker - ask early whether a visa invitation letter is needed and who signs it; lead times are jurisdiction-specific, so check the destination's current published requirements rather than assuming.\n[info] stage_just (stage): Q1: acceptance emails just went out. Everything is still changeable: name the contact, then send the packet with the dated ladder.\n[info] same_day (ladder): Q4: two or more materials are due on 2027-03-26 - a deadline landing on a single day.\n[info] mixed_room (room): Q11: a mixed room - brief speakers to define each term on first use and show one concrete example before the abstraction; offer an anonymous question channel and have the host read those questions aloud, starting with the most basic.\n[info] scope (scope): The page starts after acceptance: promised terms are delivered, never renegotiated or added to; it never invents a perk, a fee, a date, a person, a room or a piece of equipment, and never reads identity, gender or experience from a name."
}

Reply:

{
 "task": "plan",
 "summary": "Fix first: the workshops were told they are not recorded while the plan publishes them - deliver what they were told or ask each workshop speaker, then send the packet.",
 "verdict": "fix first",
 "contact": {
  "name": "Marta Silva (marta@lakeshore-codemoot.example)",
  "reason": "One name, one address and one stated response window (two working days) for every speaker message."
 },
 "ladder": [
  {
   "material": "Confirmation",
   "ask_by": "2027-03-02",
   "last_usable": "2027-03-12",
   "feeds": "the waitlist"
  },
  {
   "material": "Final title and abstract",
   "ask_by": "2027-03-05",
   "last_usable": "2027-03-26",
   "feeds": "programme publication"
  },
  {
   "material": "Bio",
   "ask_by": "2027-03-05",
   "last_usable": "2027-03-26",
   "feeds": "programme publication"
  },
  {
   "material": "Recording consent",
   "ask_by": "2027-03-16",
   "last_usable": "2027-04-06",
   "feeds": "the camera crew booking"
  },
  {
   "material": "Headshot",
   "ask_by": "2027-03-19",
   "last_usable": "2027-04-09",
   "feeds": "badge print"
  },
  {
   "material": "A/V requirements",
   "ask_by": "2027-03-23",
   "last_usable": "2027-04-13",
   "feeds": "the venue equipment order"
  },
  {
   "material": "Accessibility and dietary needs",
   "ask_by": "2027-03-26",
   "last_usable": "2027-04-16",
   "feeds": "catering lock"
  },
  {
   "material": "Travel and arrival details",
   "ask_by": "2027-03-30",
   "last_usable": "2027-04-20",
   "feeds": "the on-site plan"
  },
  {
   "material": "Slides",
   "ask_by": "2027-04-06",
   "last_usable": "2027-04-27",
   "feeds": "slide upload"
  }
 ],
 "depth": {
  "pick": "Written speaker packet",
  "reason": "Q2: 12 speakers - past roughly five, the contact spends their hours re-answering the same question by hand. Improvised care with nothing written down is deleted: it drops a commitment."
 },
 "cadence": {
  "pick": "Packet plus two checkpoints",
  "reason": "The packet plus two checkpoints is the efficient default, run per speaker: the milestone cadence and the check-in call go to the speakers the page flags, never one broadcast thread."
 },
 "recording": [
  {
   "format": "Talk",
   "posture": "Consent bundled into submission",
   "opt_out": "opt-out offered"
  },
  {
   "format": "Workshop",
   "posture": "Consent collected at acceptance",
   "opt_out": "opt-out offered"
  },
  {
   "format": "Panel",
   "posture": "Consent bundled into submission",
   "opt_out": "opt-out offered"
  }
 ],
 "first_timers": [
  {
   "name": "Bruno Keller",
   "care": "Offer the room before the doors open - the actual stage and clicker - and say what the room will be like; hold the check-in call on 2027-04-13."
  },
  {
   "name": "Dana Ruiz",
   "care": "Offer the room before the doors open - the actual stage and clicker - and say what the room will be like; hold the check-in call on 2027-04-13."
  }
 ],
 "promised": [
  {
   "speaker": "All speakers",
   "term": "free ticket",
   "status": "Delivered as promised, never renegotiated."
  },
  {
   "speaker": "Amara Osei",
   "term": "travel",
   "status": "Delivered as promised, never renegotiated."
  },
  {
   "speaker": "Amara Osei",
   "term": "lodging 2 nights",
   "status": "Delivered as promised, never renegotiated."
  },
  {
   "speaker": "Bruno Keller",
   "term": "travel",
   "status": "Delivered as promised, never renegotiated."
  },
  {
   "speaker": "Bruno Keller",
   "term": "lodging 2 nights",
   "status": "Delivered as promised, never renegotiated."
  },
  {
   "speaker": "Elif Kaya",
   "term": "travel",
   "status": "Delivered as promised, never renegotiated."
  },
  {
   "speaker": "Elif Kaya",
   "term": "lodging 2 nights",
   "status": "Delivered as promised, never renegotiated."
  },
  {
   "speaker": "Hugo Martins",
   "term": "travel",
   "status": "Delivered as promised, never renegotiated."
  },
  {
   "speaker": "Hugo Martins",
   "term": "lodging 2 nights",
   "status": "Delivered as promised, never renegotiated."
  }
 ],
 "travel": [
  {
   "speaker": "Amara Osei",
   "items": [
    "mechanism: the speaker pays and is reimbursed - said in the packet in one sentence",
    "what is covered and what is not, with the cap on each, as promised: travel and lodging",
    "the claim deadline and the payment turnaround, stated and honoured",
    "itinerary: arrival and departure times by 2027-04-20",
    "visa: ask now whether an invitation letter is needed and who signs it - lead times are jurisdiction-specific, none is invented here",
    "retention: delete passport, ticket and payment details on 2027-05-19"
   ]
  },
  {
   "speaker": "Bruno Keller",
   "items": [
    "mechanism: the speaker pays and is reimbursed - said in the packet in one sentence",
    "what is covered and what is not, with the cap on each, as promised: travel and lodging",
    "the claim deadline and the payment turnaround, stated and honoured",
    "itinerary: arrival and departure times by 2027-04-20",
    "retention: delete passport, ticket and payment details on 2027-05-19"
   ]
  },
  {
   "speaker": "Elif Kaya",
   "items": [
    "mechanism: the speaker pays and is reimbursed - said in the packet in one sentence",
    "what is covered and what is not, with the cap on each, as promised: travel and lodging",
    "the claim deadline and the payment turnaround, stated and honoured",
    "itinerary: arrival and departure times by 2027-04-20",
    "retention: delete passport, ticket and payment details on 2027-05-19"
   ]
  },
  {
   "speaker": "Hugo Martins",
   "items": [
    "mechanism: the speaker pays and is reimbursed - said in the packet in one sentence",
    "what is covered and what is not, with the cap on each, as promised: travel and lodging",
    "the claim deadline and the payment turnaround, stated and honoured",
    "itinerary: arrival and departure times by 2027-04-20",
    "retention: delete passport, ticket and payment details on 2027-05-19"
   ]
  }
 ],
 "caveats": [
  "\"Workshop\": the intent is \"recorded and published\" but speakers were told \"not recorded\" (in the acceptance email) - deliver what they were told, or tell them now and record each answer before any camera is scheduled.",
  "an international speaker - ask early whether a visa invitation letter is needed and who signs it; lead times are jurisdiction-specific, so check the destination's current published requirements rather than assuming."
 ]
}

The page's check: kept - nothing to flag

The same, contact named, recording mismatch open - packet

Verdict: fix first; ready: no; stage: acceptance emails just went out; contact: Marta Silva (marta@lakeshore-codemoot.example); depth: Written speaker packet; cadence: Packet plus two checkpoints; 12 speakers, 9 materials, 3 formats, 2 first-time; 1 fix-level findings.

Input:

{
 "task": "packet",
 "event": "Event: \"Lakeshore Codemoot 2027\" | dates: 2027-05-04 to 2027-05-05 (2 days) | city: \"Lakeshore\" | venue: \"Harbour Hall\" | as of: 2027-03-02\nQ1 sequence position chosen: \"acceptance emails just went out\" | acceptance emails sent: 2027-03-01 | days from the as-of date to the event: 63\nQ2 speakers: 12 | session formats: 3 | travelling domestically: 3 | travelling internationally: 1\nQ3 what the plan and the budget line deliver now: [lodging; travel; ticket] | travel mechanism: \"the speaker pays and is reimbursed\"\nQ5 edition: \"a recurring event\" | who owns the event: \"community-run event\"\nQ6 contact: \"Marta Silva (marta@lakeshore-codemoot.example)\" | response window: \"two working days\" | contact hours a week: 6 | on-site host: \"the contact\" | money and contracts: \"Priya Nandakor, the treasurer\"\nQ9 venue: green room: yes | substitute: \"none named\" | A/V: \"a house A/V technician\" | confidence monitor: yes\nQ11 room: \"developers alongside non-technical attendees\"\nQ12 recurring moment promised: no | coach: \"nobody named\"\nQ13 outside the region's main hub: no\nSlides: consequence if the deadline slips: \"the talk runs from your own laptop and no copy is shared with attendees\" | deck collected after the talk for attendees: yes | days from the event to the recording published: 30 | travel-data deletion date: 2027-05-19",
 "speakers": "Formats (Q7) (3), one per line:\n- format 1: \"Talk\" | recording intent: \"recorded and published\" | speakers were told: \"recorded and published\" | where told: \"the call for papers\" | opt-out: \"opt-out offered\"\n- format 2: \"Workshop\" | recording intent: \"recorded and published\" | speakers were told: \"not recorded\" | where told: \"the acceptance email\" | opt-out: \"opt-out offered\"\n- format 3: \"Panel\" | recording intent: \"recorded and published\" | speakers were told: \"recorded and published\" | where told: \"the call for papers\" | opt-out: \"opt-out offered\"\nSpeakers (12), one per line:\n- speaker 1: \"Amara Osei\" | format: \"Talk\" | slot: \"2027-05-04 09:30\" | travelling: international | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"; \"travel\"; \"lodging 2 nights\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract]\n- speaker 2: \"Bruno Keller\" | format: \"Talk\" | slot: \"2027-05-04 11:00\" | travelling: domestic | first time (Q8): \"yes\" | promised (Q3): [\"free ticket\"; \"travel\"; \"lodging 2 nights\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [bio]\n- speaker 3: \"Chen Weyrin\" | format: \"Talk\" | slot: \"2027-05-04 14:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract]\n- speaker 4: \"Dana Ruiz\" | format: \"Talk\" | slot: \"2027-05-05 09:30\" | travelling: no | first time (Q8): \"at this scale\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [nothing yet]\n- speaker 5: \"Elif Kaya\" | format: \"Talk\" | slot: \"2027-05-05 11:00\" | travelling: domestic | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"; \"travel\"; \"lodging 2 nights\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract; headshot]\n- speaker 6: \"Farid Haddad\" | format: \"Talk\" | slot: \"2027-05-05 14:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [final title and abstract]\n- speaker 7: \"Grace Linmoor\" | format: \"Workshop\" | slot: \"2027-05-04 10:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio]\n- speaker 8: \"Hugo Martins\" | format: \"Workshop\" | slot: \"2027-05-04 14:00\" | travelling: domestic | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"; \"travel\"; \"lodging 2 nights\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [nothing yet]\n- speaker 9: \"Ingrid Berg\" | format: \"Workshop\" | slot: \"2027-05-05 10:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [bio; final title and abstract]\n- speaker 10: \"Jonas Weber\" | format: \"Panel\" | slot: \"2027-05-05 16:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio]\n- speaker 11: \"Kemi Adeyemi\" | format: \"Panel\" | slot: \"2027-05-05 16:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [nothing yet]\n- speaker 12: \"Lucia Moreno\" | format: \"Panel\" | slot: \"2027-05-05 16:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract]",
 "materials": "Materials (Q4) (9), one per line:\n- material 1: \"Confirmation\" | last usable date: 2027-03-12 | feeds: \"the waitlist\"\n- material 2: \"Final title and abstract\" | last usable date: 2027-03-26 | feeds: \"programme publication\"\n- material 3: \"Bio\" | last usable date: 2027-03-26 | feeds: \"programme publication\"\n- material 4: \"Recording consent\" | last usable date: 2027-04-06 | feeds: \"the camera crew booking\"\n- material 5: \"Headshot\" | last usable date: 2027-04-09 | feeds: \"badge print\"\n- material 6: \"A/V requirements\" | last usable date: 2027-04-13 | feeds: \"the venue equipment order\"\n- material 7: \"Accessibility and dietary needs\" | last usable date: 2027-04-16 | feeds: \"catering lock\"\n- material 8: \"Travel and arrival details\" | last usable date: 2027-04-20 | feeds: \"the on-site plan\"\n- material 9: \"Slides\" | last usable date: 2027-04-27 | feeds: \"slide upload\"",
 "notes": "",
 "facts": "Verdict: \"fix first\" | ready: no | fix-level findings: 1\nSelf-set lines: an ask sent 21 days before each last usable date (or at once, when that has passed) | a tight window under 7 days | low contact hours under 2 a week | the thank-you 3 days after the event | the travel-data deletion 7 days after the event unless entered | a summary cap of 40 words | a thank-you cap of 120 words. The skill's own: roughly five speakers before the packet outranks the contact | the first reminder at roughly half the remaining time and the second at the deadline | a logistics note 48 hours out | one week out | a check-in call two to three weeks out | feedback within a week or two (the page uses 14 days). Never invented: a visa lead time, a fee or its figure, a perk nobody promised.\nStage (Q1): \"acceptance emails just went out\" | chosen: \"acceptance emails just went out\" | the dates say: \"acceptance emails just went out\" | consequence: Everything is still changeable: name the contact, then send the packet with the dated ladder.\nContact (step 2): \"Marta Silva (marta@lakeshore-codemoot.example)\" | kind: a named person | response window: \"two working days\" | on-site host: \"Marta Silva (marta@lakeshore-codemoot.example)\"\n  contact must: [copy \"Marta Silva (marta@lakeshore-codemoot.example)\" exactly as the name; say one name, one address and one stated response window (the word \"window\")]\nCollection ladder (step 3) - in this order, each pinned to its last usable date, never the event date - 9:\n- material 1: \"Confirmation\" | ask by: 2027-03-02 (at once) | first reminder: 2027-03-07 | second reminder: 2027-03-12 | last usable: 2027-03-12 | feeds: \"the waitlist\" | speakers still owing: 12 of 12 | passed: no\n  must: [material \"Confirmation\" exactly; ask_by 2027-03-02; last_usable 2027-03-12; feeds \"the waitlist\"]\n- material 2: \"Final title and abstract\" | ask by: 2027-03-05 | first reminder: 2027-03-15 | second reminder: 2027-03-26 | last usable: 2027-03-26 | feeds: \"programme publication\" | speakers still owing: 6 of 12 | passed: no\n  must: [material \"Final title and abstract\" exactly; ask_by 2027-03-05; last_usable 2027-03-26; feeds \"programme publication\"]\n- material 3: \"Bio\" | ask by: 2027-03-05 | first reminder: 2027-03-15 | second reminder: 2027-03-26 | last usable: 2027-03-26 | feeds: \"programme publication\" | speakers still owing: 4 of 12 | passed: no\n  must: [material \"Bio\" exactly; ask_by 2027-03-05; last_usable 2027-03-26; feeds \"programme publication\"]\n- material 4: \"Recording consent\" | ask by: 2027-03-16 | first reminder: 2027-03-26 | second reminder: 2027-04-06 | last usable: 2027-04-06 | feeds: \"the camera crew booking\" | speakers still owing: 7 of 12 | passed: no\n  must: [material \"Recording consent\" exactly; ask_by 2027-03-16; last_usable 2027-04-06; feeds \"the camera crew booking\"]\n- material 5: \"Headshot\" | ask by: 2027-03-19 | first reminder: 2027-03-29 | second reminder: 2027-04-09 | last usable: 2027-04-09 | feeds: \"badge print\" | speakers still owing: 11 of 12 | passed: no\n  must: [material \"Headshot\" exactly; ask_by 2027-03-19; last_usable 2027-04-09; feeds \"badge print\"]\n- material 6: \"A/V requirements\" | ask by: 2027-03-23 | first reminder: 2027-04-02 | second reminder: 2027-04-13 | last usable: 2027-04-13 | feeds: \"the venue equipment order\" | speakers still owing: 5 of 12 | passed: no\n  must: [material \"A/V requirements\" exactly; ask_by 2027-03-23; last_usable 2027-04-13; feeds \"the venue equipment order\"]\n- material 7: \"Accessibility and dietary needs\" | ask by: 2027-03-26 | first reminder: 2027-04-05 | second reminder: 2027-04-16 | last usable: 2027-04-16 | feeds: \"catering lock\" | speakers still owing: 12 of 12 | passed: no\n  must: [material \"Accessibility and dietary needs\" exactly; ask_by 2027-03-26; last_usable 2027-04-16; feeds \"catering lock\"]\n- material 8: \"Travel and arrival details\" | ask by: 2027-03-30 | first reminder: 2027-04-09 | second reminder: 2027-04-20 | last usable: 2027-04-20 | feeds: \"the on-site plan\" | speakers still owing: 4 of 4 | passed: no\n  must: [material \"Travel and arrival details\" exactly; ask_by 2027-03-30; last_usable 2027-04-20; feeds \"the on-site plan\"]\n- material 9: \"Slides\" | ask by: 2027-04-06 | first reminder: 2027-04-16 | second reminder: 2027-04-27 | last usable: 2027-04-27 | feeds: \"slide upload\" | speakers still owing: 12 of 12 | passed: no\n  must: [material \"Slides\" exactly; ask_by 2027-04-06; last_usable 2027-04-27; feeds \"slide upload\"]\nStatus grid (one line per speaker; each list names materials):\n- speaker 1: \"Amara Osei\" | received: [\"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Travel and arrival details\"; \"Slides\"] | overdue: [none] | not applicable: [none]\n- speaker 2: \"Bruno Keller\" | received: [\"Bio\"] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Travel and arrival details\"; \"Slides\"] | overdue: [none] | not applicable: [none]\n- speaker 3: \"Chen Weyrin\" | received: [\"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 4: \"Dana Ruiz\" | received: [none] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 5: \"Elif Kaya\" | received: [\"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Accessibility and dietary needs\"; \"Travel and arrival details\"; \"Slides\"] | overdue: [none] | not applicable: [none]\n- speaker 6: \"Farid Haddad\" | received: [\"Final title and abstract\"] | due: [\"Confirmation\"; \"Bio\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 7: \"Grace Linmoor\" | received: [\"Bio\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Recording consent\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 8: \"Hugo Martins\" | received: [none] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Travel and arrival details\"; \"Slides\"] | overdue: [none] | not applicable: [none]\n- speaker 9: \"Ingrid Berg\" | received: [\"Final title and abstract\"; \"Bio\"] | due: [\"Confirmation\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 10: \"Jonas Weber\" | received: [\"Bio\"; \"Recording consent\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 11: \"Kemi Adeyemi\" | received: [\"A/V requirements\"] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 12: \"Lucia Moreno\" | received: [\"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\nSpeaker-care depth - pick: \"Written speaker packet\"\n- rung 1: \"Written speaker packet\" | moved: made the pick by Q2: 12 speakers - past roughly five, the contact spends their hours re-answering the same question by hand\n- rung 2: \"Named point of contact\"\n- rung 3: \"Speakers' dinner and gifts\" | moved: promoted by Q5: a recurring edition - the rung that turns a speaker into next year's referral\n- rung 4: \"Linked orientation course\"\n- rung 5: \"Travel and lodging concierge\" | moved: promoted by Q2: an international speaker - and wherever a visa letter is needed\n- deleted, not demoted: \"Improvised per-speaker care with nothing written down\" | reason: it drops a commitment: nothing outside one person's memory says what was promised\n  depth reason must: [name the interview answer behind the pick; say improvised care with nothing written down is deleted (the word \"deleted\")]\nPre-event cadence - pick: \"Packet plus two checkpoints\"\n- rung 1: \"Packet plus two checkpoints\"\n- rung 2: \"Milestone cadence\"\n- rung 3: \"Single packet at acceptance\"\n- rung 4: \"Per-speaker check-in call\"\n- deleted, not demoted: \"One broadcast thread with every speaker CC'd\" | reason: it leaks each speaker's address to all the others, and a personal deadline addressed to twenty people reads as somebody else's problem\n- notes: Per speaker, not as one broadcast: move up to the milestone cadence for the speakers Q2 and Q8 flag, and to the check-in call for keynotes and first-time speakers.\n  cadence reason must: [say the cadence runs per speaker, never as one broadcast (the words \"per speaker\")]\nPer-speaker cadence, in speaker order:\n- speaker 1: \"Amara Osei\" | cadence: \"Milestone cadence\" | because: Q2: international travel | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-04 the morning of]\n- speaker 2: \"Bruno Keller\" | cadence: \"Per-speaker check-in call\" | because: Q8: a first talk; A/V needs not known yet (the page's reading) | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-13 check-in call, two to three weeks out; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-04 the morning of]\n- speaker 3: \"Chen Weyrin\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\n- speaker 4: \"Dana Ruiz\" | cadence: \"Per-speaker check-in call\" | because: Q8: a first talk at this scale; A/V needs not known yet (the page's reading) | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-13 check-in call, two to three weeks out; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-05 the morning of]\n- speaker 5: \"Elif Kaya\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\n- speaker 6: \"Farid Haddad\" | cadence: \"Milestone cadence\" | because: A/V needs not known yet (the page's reading) | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-05 the morning of]\n- speaker 7: \"Grace Linmoor\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\n- speaker 8: \"Hugo Martins\" | cadence: \"Milestone cadence\" | because: A/V needs not known yet (the page's reading) | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-04 the morning of]\n- speaker 9: \"Ingrid Berg\" | cadence: \"Milestone cadence\" | because: A/V needs not known yet (the page's reading) | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-05 the morning of]\n- speaker 10: \"Jonas Weber\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\n- speaker 11: \"Kemi Adeyemi\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\n- speaker 12: \"Lucia Moreno\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\nRecording (Q7) - one per format, in this order - 3:\n- format 1: \"Talk\" | intent: \"recorded and published\" | told: \"recorded and published\" | where told: \"the call for papers\" | posture: \"Consent bundled into submission\" | opt-out: \"opt-out offered\" | mismatch: none | moved: promoted by Q7: told in the call for papers - the form already exists\n  must: [format \"Talk\" exactly; posture \"Consent bundled into submission\" exactly; the opt_out uses the words \"offered\"]\n- format 2: \"Workshop\" | intent: \"recorded and published\" | told: \"not recorded\" | where told: \"the acceptance email\" | posture: \"Consent collected at acceptance\" | opt-out: \"opt-out offered\" | mismatch: told less than intended | moved: made the pick by Q7: told in the acceptance email, not the submission form - the only rung that covers invited speakers\n  must: [format \"Workshop\" exactly; posture \"Consent collected at acceptance\" exactly; the opt_out uses the words \"offered\"]\n- format 3: \"Panel\" | intent: \"recorded and published\" | told: \"recorded and published\" | where told: \"the call for papers\" | posture: \"Consent bundled into submission\" | opt-out: \"opt-out offered\" | mismatch: none | moved: promoted by Q7: told in the call for papers - the form already exists\n  must: [format \"Panel\" exactly; posture \"Consent bundled into submission\" exactly; the opt_out uses the words \"offered\"]\nRecording menu, deleted not demoted: \"Recording on the assumption that silence is consent\" | reason: a published video cannot be unpublished from the copies people already have. PyCon US offers an opt-out for Talks and Charlas and states plainly that you cannot opt out of recording for lightning talks.\nFirst-time speakers (Q8) - asked, never inferred - 2:\n- name: \"Bruno Keller\" | first time: \"yes\" | care: [offer the room: the actual stage, the actual clicker and the actual confidence monitor before the doors open; say what the room will be like: audience size, whether questions happen, who introduces them, the timing signals, what happens if a demo fails; a live briefing: a short call or a session on arrival; the check-in call on 2027-04-13, two to three weeks out; rehearsal, mentors and talk feedback come from event-speaker-coaching, offered to every speaker in the same words]\n  must: [name \"Bruno Keller\" exactly; care says offer the room (the word \"room\"); care names the check-in call (the word \"call\")]\n- name: \"Dana Ruiz\" | first time: \"at this scale\" | care: [offer the room: the actual stage, the actual clicker and the actual confidence monitor before the doors open; say what the room will be like: audience size, whether questions happen, who introduces them, the timing signals, what happens if a demo fails; a live briefing: a short call or a session on arrival; the check-in call on 2027-04-13, two to three weeks out; rehearsal, mentors and talk feedback come from event-speaker-coaching, offered to every speaker in the same words]\n  must: [name \"Dana Ruiz\" exactly; care says offer the room (the word \"room\"); care names the check-in call (the word \"call\")]\nPromised terms (Q3) - in this order, delivered and never renegotiated or added to - 9:\n- speaker: \"All speakers\" | term: \"free ticket\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"All speakers\" and term \"free ticket\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Amara Osei\" | term: \"travel\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Amara Osei\" and term \"travel\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Amara Osei\" | term: \"lodging 2 nights\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Amara Osei\" and term \"lodging 2 nights\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Bruno Keller\" | term: \"travel\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Bruno Keller\" and term \"travel\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Bruno Keller\" | term: \"lodging 2 nights\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Bruno Keller\" and term \"lodging 2 nights\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Elif Kaya\" | term: \"travel\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Elif Kaya\" and term \"travel\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Elif Kaya\" | term: \"lodging 2 nights\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Elif Kaya\" and term \"lodging 2 nights\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Hugo Martins\" | term: \"travel\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Hugo Martins\" and term \"travel\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Hugo Martins\" | term: \"lodging 2 nights\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Hugo Martins\" and term \"lodging 2 nights\" exactly; the status uses the word \"delivered\"]\nTravel - 4 travelling, in speaker order:\n- speaker: \"Amara Osei\" | travelling: international | items: [mechanism: the speaker pays and is reimbursed - said in the packet in one sentence; what is covered and what is not, with the cap on each, as promised: travel and lodging; the claim deadline and the payment turnaround, stated and honoured; itinerary: arrival and departure times by 2027-04-20; visa: ask now whether an invitation letter is needed and who signs it - lead times are jurisdiction-specific, none is invented here; retention: delete passport, ticket and payment details on 2027-05-19]\n  must: [speaker \"Amara Osei\" exactly; the items use the word \"reimburse\"; the items use the word \"visa\"]\n- speaker: \"Bruno Keller\" | travelling: domestic | items: [mechanism: the speaker pays and is reimbursed - said in the packet in one sentence; what is covered and what is not, with the cap on each, as promised: travel and lodging; the claim deadline and the payment turnaround, stated and honoured; itinerary: arrival and departure times by 2027-04-20; retention: delete passport, ticket and payment details on 2027-05-19]\n  must: [speaker \"Bruno Keller\" exactly; the items use the word \"reimburse\"]\n- speaker: \"Elif Kaya\" | travelling: domestic | items: [mechanism: the speaker pays and is reimbursed - said in the packet in one sentence; what is covered and what is not, with the cap on each, as promised: travel and lodging; the claim deadline and the payment turnaround, stated and honoured; itinerary: arrival and departure times by 2027-04-20; retention: delete passport, ticket and payment details on 2027-05-19]\n  must: [speaker \"Elif Kaya\" exactly; the items use the word \"reimburse\"]\n- speaker: \"Hugo Martins\" | travelling: domestic | items: [mechanism: the speaker pays and is reimbursed - said in the packet in one sentence; what is covered and what is not, with the cap on each, as promised: travel and lodging; the claim deadline and the payment turnaround, stated and honoured; itinerary: arrival and departure times by 2027-04-20; retention: delete passport, ticket and payment details on 2027-05-19]\n  must: [speaker \"Hugo Martins\" exactly; the items use the word \"reimburse\"]\nOn-site (step 9): green room: yes | green room line: \"the green room\" | A/V: \"a house A/V technician\" | confidence monitor: yes | mixed room: yes\n- day-of: \"Amara Osei\" | slot: \"2027-05-04 09:30\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-04 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day]\n- day-of: \"Bruno Keller\" | slot: \"2027-05-04 11:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-04 before the audience is in\" | green room: \"the green room\" | notes: [first talk - offer the room before the doors open; the host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day]\n- day-of: \"Chen Weyrin\" | slot: \"2027-05-04 14:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-04 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Dana Ruiz\" | slot: \"2027-05-05 09:30\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [first talk at this scale - offer the room before the doors open; the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Elif Kaya\" | slot: \"2027-05-05 11:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day]\n- day-of: \"Farid Haddad\" | slot: \"2027-05-05 14:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Grace Linmoor\" | slot: \"2027-05-04 10:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-04 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Hugo Martins\" | slot: \"2027-05-04 14:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-04 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day]\n- day-of: \"Ingrid Berg\" | slot: \"2027-05-05 10:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Jonas Weber\" | slot: \"2027-05-05 16:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Kemi Adeyemi\" | slot: \"2027-05-05 16:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Lucia Moreno\" | slot: \"2027-05-05 16:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\nSlide deadline (step 7): 2027-04-27 | consequence: \"the talk runs from your own laptop and no copy is shared with attendees\" | honest none: no | deck collected after the talk: yes\nAfter the event (step 10), in this order:\n- thank-you: 2027-05-08 | individual, from the named contact, one specific thing about the talk; ask nothing yet (within a few days - 3 days, self-set)\n- feedback: 2027-05-19 | what you actually have, anonymous comments in full minus abuse, the host's own read; never with a request (within a week or two)\n- recording link: 2027-06-04 | tell the speaker before it goes live; the direct link to their own session; where else it lives; permission to share it (your own 30-day promise)\n- retention pass: 2027-05-19 | delete travel documents, ID scans and payment details; keep the consent record\n- returning ask: no date | separately and later: ask once, specifically, and record the answer\nPacket must: [title contains \"Lakeshore Codemoot 2027\"; contact contains \"Marta Silva (marta@lakeshore-codemoot.example)\"; what_we_need follows the ladder's order with each last usable date as by; schedule copies each speaker's slot; venue_and_av says \"green room\"; travel_and_expenses names only promised terms; on_the_day names the host and the tech check and says no sales pitch and the anonymous question channel (the word \"anonymous\"); thank_you at most 120 words and says the recording link is \"to be sent when published\"] | packet note must: [begin \"Not ready to send:\" and say what to fix first]\nCarried from the plan: summary: \"Fix first: the workshops were told they are not recorded while the plan publishes them - deliver what they were told or ask each workshop speaker, then send the packet.\" | parts matching the page: 3 of 3\nFindings (6):\n[fix] mismatch_2 (recording): Q7: \"Workshop\": the intent is \"recorded and published\" but speakers were told \"not recorded\" (in the acceptance email) - deliver what they were told, or tell them now and record each answer before any camera is scheduled.\n[check] visa (travel): Q2: an international speaker - ask early whether a visa invitation letter is needed and who signs it; lead times are jurisdiction-specific, so check the destination's current published requirements rather than assuming.\n[info] stage_just (stage): Q1: acceptance emails just went out. Everything is still changeable: name the contact, then send the packet with the dated ladder.\n[info] same_day (ladder): Q4: two or more materials are due on 2027-03-26 - a deadline landing on a single day.\n[info] mixed_room (room): Q11: a mixed room - brief speakers to define each term on first use and show one concrete example before the abstraction; offer an anonymous question channel and have the host read those questions aloud, starting with the most basic.\n[info] scope (scope): The page starts after acceptance: promised terms are delivered, never renegotiated or added to; it never invents a perk, a fee, a date, a person, a room or a piece of equipment, and never reads identity, gender or experience from a name."
}

Reply:

{
 "task": "packet",
 "packet": {
  "title": "Lakeshore Codemoot 2027 - speaker packet",
  "contact": "Marta Silva (marta@lakeshore-codemoot.example) - replies within two working days",
  "what_we_need": [
   {
    "material": "Confirmation",
    "by": "2027-03-12"
   },
   {
    "material": "Final title and abstract",
    "by": "2027-03-26"
   },
   {
    "material": "Bio",
    "by": "2027-03-26"
   },
   {
    "material": "Recording consent",
    "by": "2027-04-06"
   },
   {
    "material": "Headshot",
    "by": "2027-04-09"
   },
   {
    "material": "A/V requirements",
    "by": "2027-04-13"
   },
   {
    "material": "Accessibility and dietary needs",
    "by": "2027-04-16"
   },
   {
    "material": "Travel and arrival details",
    "by": "2027-04-20"
   },
   {
    "material": "Slides",
    "by": "2027-04-27"
   }
  ],
  "schedule": [
   {
    "speaker": "Amara Osei",
    "slot": "Talk, 2027-05-04 09:30"
   },
   {
    "speaker": "Bruno Keller",
    "slot": "Talk, 2027-05-04 11:00"
   },
   {
    "speaker": "Chen Weyrin",
    "slot": "Talk, 2027-05-04 14:00"
   },
   {
    "speaker": "Dana Ruiz",
    "slot": "Talk, 2027-05-05 09:30"
   },
   {
    "speaker": "Elif Kaya",
    "slot": "Talk, 2027-05-05 11:00"
   },
   {
    "speaker": "Farid Haddad",
    "slot": "Talk, 2027-05-05 14:00"
   },
   {
    "speaker": "Grace Linmoor",
    "slot": "Workshop, 2027-05-04 10:00"
   },
   {
    "speaker": "Hugo Martins",
    "slot": "Workshop, 2027-05-04 14:00"
   },
   {
    "speaker": "Ingrid Berg",
    "slot": "Workshop, 2027-05-05 10:00"
   },
   {
    "speaker": "Jonas Weber",
    "slot": "Panel, 2027-05-05 16:00"
   },
   {
    "speaker": "Kemi Adeyemi",
    "slot": "Panel, 2027-05-05 16:00"
   },
   {
    "speaker": "Lucia Moreno",
    "slot": "Panel, 2027-05-05 16:00"
   }
  ],
  "venue_and_av": "The venue gives a house A/V technician and a confidence monitor. There is a green room - a place to be not-on, not a networking space.",
  "recording": [
   {
    "format": "Talk",
    "policy": "Recorded and published - opt-out offered."
   },
   {
    "format": "Workshop",
    "policy": "Recorded and published - opt-out offered."
   },
   {
    "format": "Panel",
    "policy": "Recorded and published - opt-out offered."
   }
  ],
  "slide_deadline": "Slides are due 2027-04-27. If it slips: the talk runs from your own laptop and no copy is shared with attendees. The deck is collected right after the talk for attendees, so build it knowing that.",
  "travel_and_expenses": "Every speaker has free ticket, as promised. Amara Osei, Bruno Keller, Elif Kaya and Hugo Martins also have travel and lodging 2 nights, as promised: the speaker pays and is reimbursed.",
  "on_the_day": "Your host: Marta Silva (marta@lakeshore-codemoot.example) - they meet you at arrival. The tech check runs on the actual stage equipment at a named time before the audience is in. No commercial demo or sales pitch: the audience leaves with the lesson, not the product. The room is mixed: define each term on first use, and expect questions from the anonymous channel, read aloud by the host.",
  "after_the_talk": "A personal thank-you within a few days, and the feedback we actually have within a week or two."
 },
 "day_of": [
  {
   "speaker": "Amara Osei",
   "host": "Marta Silva (marta@lakeshore-codemoot.example)",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "The host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day."
  },
  {
   "speaker": "Bruno Keller",
   "host": "Marta Silva (marta@lakeshore-codemoot.example)",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "First talk - offer the room before the doors open; the host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day."
  },
  {
   "speaker": "Chen Weyrin",
   "host": "Marta Silva (marta@lakeshore-codemoot.example)",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "The host reads the anonymous questions aloud, the most basic first."
  },
  {
   "speaker": "Dana Ruiz",
   "host": "Marta Silva (marta@lakeshore-codemoot.example)",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "First talk at this scale - offer the room before the doors open; the host reads the anonymous questions aloud, the most basic first."
  },
  {
   "speaker": "Elif Kaya",
   "host": "Marta Silva (marta@lakeshore-codemoot.example)",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "The host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day."
  },
  {
   "speaker": "Farid Haddad",
   "host": "Marta Silva (marta@lakeshore-codemoot.example)",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "The host reads the anonymous questions aloud, the most basic first."
  },
  {
   "speaker": "Grace Linmoor",
   "host": "Marta Silva (marta@lakeshore-codemoot.example)",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "The host reads the anonymous questions aloud, the most basic first."
  },
  {
   "speaker": "Hugo Martins",
   "host": "Marta Silva (marta@lakeshore-codemoot.example)",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "The host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day."
  },
  {
   "speaker": "Ingrid Berg",
   "host": "Marta Silva (marta@lakeshore-codemoot.example)",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "The host reads the anonymous questions aloud, the most basic first."
  },
  {
   "speaker": "Jonas Weber",
   "host": "Marta Silva (marta@lakeshore-codemoot.example)",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "The host reads the anonymous questions aloud, the most basic first."
  },
  {
   "speaker": "Kemi Adeyemi",
   "host": "Marta Silva (marta@lakeshore-codemoot.example)",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "The host reads the anonymous questions aloud, the most basic first."
  },
  {
   "speaker": "Lucia Moreno",
   "host": "Marta Silva (marta@lakeshore-codemoot.example)",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "The host reads the anonymous questions aloud, the most basic first."
  }
 ],
 "thank_you": "Thank you for your talk at Lakeshore Codemoot 2027. [One specific thing about the talk - the question it got, the conversation it started.] The recording link is to be sent when published, and you will hear before it goes live. - Marta Silva (marta@lakeshore-codemoot.example)",
 "note": "Not ready to send: settle the workshop recording with the three workshop speakers before the packet goes out."
}

The page's check: kept - nothing to flag

The same, contact named and mismatch fixed - plan

Verdict: ready to send the packet; ready: yes; stage: acceptance emails just went out; contact: Marta Silva (marta@lakeshore-codemoot.example); depth: Written speaker packet; cadence: Packet plus two checkpoints; 12 speakers, 9 materials, 3 formats, 2 first-time; 0 fix-level findings.

Input:

{
 "task": "plan",
 "event": "Event: \"Lakeshore Codemoot 2027\" | dates: 2027-05-04 to 2027-05-05 (2 days) | city: \"Lakeshore\" | venue: \"Harbour Hall\" | as of: 2027-03-02\nQ1 sequence position chosen: \"acceptance emails just went out\" | acceptance emails sent: 2027-03-01 | days from the as-of date to the event: 63\nQ2 speakers: 12 | session formats: 3 | travelling domestically: 3 | travelling internationally: 1\nQ3 what the plan and the budget line deliver now: [lodging; travel; ticket] | travel mechanism: \"the speaker pays and is reimbursed\"\nQ5 edition: \"a recurring event\" | who owns the event: \"community-run event\"\nQ6 contact: \"Marta Silva (marta@lakeshore-codemoot.example)\" | response window: \"two working days\" | contact hours a week: 6 | on-site host: \"the contact\" | money and contracts: \"Priya Nandakor, the treasurer\"\nQ9 venue: green room: yes | substitute: \"none named\" | A/V: \"a house A/V technician\" | confidence monitor: yes\nQ11 room: \"developers alongside non-technical attendees\"\nQ12 recurring moment promised: no | coach: \"nobody named\"\nQ13 outside the region's main hub: no\nSlides: consequence if the deadline slips: \"the talk runs from your own laptop and no copy is shared with attendees\" | deck collected after the talk for attendees: yes | days from the event to the recording published: 30 | travel-data deletion date: 2027-05-19",
 "speakers": "Formats (Q7) (3), one per line:\n- format 1: \"Talk\" | recording intent: \"recorded and published\" | speakers were told: \"recorded and published\" | where told: \"the call for papers\" | opt-out: \"opt-out offered\"\n- format 2: \"Workshop\" | recording intent: \"not recorded\" | speakers were told: \"not recorded\" | where told: \"the acceptance email\" | opt-out: \"not recorded\"\n- format 3: \"Panel\" | recording intent: \"recorded and published\" | speakers were told: \"recorded and published\" | where told: \"the call for papers\" | opt-out: \"opt-out offered\"\nSpeakers (12), one per line:\n- speaker 1: \"Amara Osei\" | format: \"Talk\" | slot: \"2027-05-04 09:30\" | travelling: international | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"; \"travel\"; \"lodging 2 nights\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract]\n- speaker 2: \"Bruno Keller\" | format: \"Talk\" | slot: \"2027-05-04 11:00\" | travelling: domestic | first time (Q8): \"yes\" | promised (Q3): [\"free ticket\"; \"travel\"; \"lodging 2 nights\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [bio]\n- speaker 3: \"Chen Weyrin\" | format: \"Talk\" | slot: \"2027-05-04 14:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract]\n- speaker 4: \"Dana Ruiz\" | format: \"Talk\" | slot: \"2027-05-05 09:30\" | travelling: no | first time (Q8): \"at this scale\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [nothing yet]\n- speaker 5: \"Elif Kaya\" | format: \"Talk\" | slot: \"2027-05-05 11:00\" | travelling: domestic | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"; \"travel\"; \"lodging 2 nights\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract; headshot]\n- speaker 6: \"Farid Haddad\" | format: \"Talk\" | slot: \"2027-05-05 14:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [final title and abstract]\n- speaker 7: \"Grace Linmoor\" | format: \"Workshop\" | slot: \"2027-05-04 10:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio]\n- speaker 8: \"Hugo Martins\" | format: \"Workshop\" | slot: \"2027-05-04 14:00\" | travelling: domestic | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"; \"travel\"; \"lodging 2 nights\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [nothing yet]\n- speaker 9: \"Ingrid Berg\" | format: \"Workshop\" | slot: \"2027-05-05 10:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [bio; final title and abstract]\n- speaker 10: \"Jonas Weber\" | format: \"Panel\" | slot: \"2027-05-05 16:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio]\n- speaker 11: \"Kemi Adeyemi\" | format: \"Panel\" | slot: \"2027-05-05 16:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [nothing yet]\n- speaker 12: \"Lucia Moreno\" | format: \"Panel\" | slot: \"2027-05-05 16:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract]",
 "materials": "Materials (Q4) (9), one per line:\n- material 1: \"Confirmation\" | last usable date: 2027-03-12 | feeds: \"the waitlist\"\n- material 2: \"Final title and abstract\" | last usable date: 2027-03-26 | feeds: \"programme publication\"\n- material 3: \"Bio\" | last usable date: 2027-03-26 | feeds: \"programme publication\"\n- material 4: \"Recording consent\" | last usable date: 2027-04-06 | feeds: \"the camera crew booking\"\n- material 5: \"Headshot\" | last usable date: 2027-04-09 | feeds: \"badge print\"\n- material 6: \"A/V requirements\" | last usable date: 2027-04-13 | feeds: \"the venue equipment order\"\n- material 7: \"Accessibility and dietary needs\" | last usable date: 2027-04-16 | feeds: \"catering lock\"\n- material 8: \"Travel and arrival details\" | last usable date: 2027-04-20 | feeds: \"the on-site plan\"\n- material 9: \"Slides\" | last usable date: 2027-04-27 | feeds: \"slide upload\"",
 "notes": "",
 "facts": "Verdict: \"ready to send the packet\" | ready: yes | fix-level findings: 0\nSelf-set lines: an ask sent 21 days before each last usable date (or at once, when that has passed) | a tight window under 7 days | low contact hours under 2 a week | the thank-you 3 days after the event | the travel-data deletion 7 days after the event unless entered | a summary cap of 40 words | a thank-you cap of 120 words. The skill's own: roughly five speakers before the packet outranks the contact | the first reminder at roughly half the remaining time and the second at the deadline | a logistics note 48 hours out | one week out | a check-in call two to three weeks out | feedback within a week or two (the page uses 14 days). Never invented: a visa lead time, a fee or its figure, a perk nobody promised.\nStage (Q1): \"acceptance emails just went out\" | chosen: \"acceptance emails just went out\" | the dates say: \"acceptance emails just went out\" | consequence: Everything is still changeable: name the contact, then send the packet with the dated ladder.\nContact (step 2): \"Marta Silva (marta@lakeshore-codemoot.example)\" | kind: a named person | response window: \"two working days\" | on-site host: \"Marta Silva (marta@lakeshore-codemoot.example)\"\n  contact must: [copy \"Marta Silva (marta@lakeshore-codemoot.example)\" exactly as the name; say one name, one address and one stated response window (the word \"window\")]\nCollection ladder (step 3) - in this order, each pinned to its last usable date, never the event date - 9:\n- material 1: \"Confirmation\" | ask by: 2027-03-02 (at once) | first reminder: 2027-03-07 | second reminder: 2027-03-12 | last usable: 2027-03-12 | feeds: \"the waitlist\" | speakers still owing: 12 of 12 | passed: no\n  must: [material \"Confirmation\" exactly; ask_by 2027-03-02; last_usable 2027-03-12; feeds \"the waitlist\"]\n- material 2: \"Final title and abstract\" | ask by: 2027-03-05 | first reminder: 2027-03-15 | second reminder: 2027-03-26 | last usable: 2027-03-26 | feeds: \"programme publication\" | speakers still owing: 6 of 12 | passed: no\n  must: [material \"Final title and abstract\" exactly; ask_by 2027-03-05; last_usable 2027-03-26; feeds \"programme publication\"]\n- material 3: \"Bio\" | ask by: 2027-03-05 | first reminder: 2027-03-15 | second reminder: 2027-03-26 | last usable: 2027-03-26 | feeds: \"programme publication\" | speakers still owing: 4 of 12 | passed: no\n  must: [material \"Bio\" exactly; ask_by 2027-03-05; last_usable 2027-03-26; feeds \"programme publication\"]\n- material 4: \"Recording consent\" | ask by: 2027-03-16 | first reminder: 2027-03-26 | second reminder: 2027-04-06 | last usable: 2027-04-06 | feeds: \"the camera crew booking\" | speakers still owing: 4 of 9 | passed: no\n  must: [material \"Recording consent\" exactly; ask_by 2027-03-16; last_usable 2027-04-06; feeds \"the camera crew booking\"]\n- material 5: \"Headshot\" | ask by: 2027-03-19 | first reminder: 2027-03-29 | second reminder: 2027-04-09 | last usable: 2027-04-09 | feeds: \"badge print\" | speakers still owing: 11 of 12 | passed: no\n  must: [material \"Headshot\" exactly; ask_by 2027-03-19; last_usable 2027-04-09; feeds \"badge print\"]\n- material 6: \"A/V requirements\" | ask by: 2027-03-23 | first reminder: 2027-04-02 | second reminder: 2027-04-13 | last usable: 2027-04-13 | feeds: \"the venue equipment order\" | speakers still owing: 5 of 12 | passed: no\n  must: [material \"A/V requirements\" exactly; ask_by 2027-03-23; last_usable 2027-04-13; feeds \"the venue equipment order\"]\n- material 7: \"Accessibility and dietary needs\" | ask by: 2027-03-26 | first reminder: 2027-04-05 | second reminder: 2027-04-16 | last usable: 2027-04-16 | feeds: \"catering lock\" | speakers still owing: 12 of 12 | passed: no\n  must: [material \"Accessibility and dietary needs\" exactly; ask_by 2027-03-26; last_usable 2027-04-16; feeds \"catering lock\"]\n- material 8: \"Travel and arrival details\" | ask by: 2027-03-30 | first reminder: 2027-04-09 | second reminder: 2027-04-20 | last usable: 2027-04-20 | feeds: \"the on-site plan\" | speakers still owing: 4 of 4 | passed: no\n  must: [material \"Travel and arrival details\" exactly; ask_by 2027-03-30; last_usable 2027-04-20; feeds \"the on-site plan\"]\n- material 9: \"Slides\" | ask by: 2027-04-06 | first reminder: 2027-04-16 | second reminder: 2027-04-27 | last usable: 2027-04-27 | feeds: \"slide upload\" | speakers still owing: 12 of 12 | passed: no\n  must: [material \"Slides\" exactly; ask_by 2027-04-06; last_usable 2027-04-27; feeds \"slide upload\"]\nStatus grid (one line per speaker; each list names materials):\n- speaker 1: \"Amara Osei\" | received: [\"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Travel and arrival details\"; \"Slides\"] | overdue: [none] | not applicable: [none]\n- speaker 2: \"Bruno Keller\" | received: [\"Bio\"] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Travel and arrival details\"; \"Slides\"] | overdue: [none] | not applicable: [none]\n- speaker 3: \"Chen Weyrin\" | received: [\"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 4: \"Dana Ruiz\" | received: [none] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 5: \"Elif Kaya\" | received: [\"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Accessibility and dietary needs\"; \"Travel and arrival details\"; \"Slides\"] | overdue: [none] | not applicable: [none]\n- speaker 6: \"Farid Haddad\" | received: [\"Final title and abstract\"] | due: [\"Confirmation\"; \"Bio\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 7: \"Grace Linmoor\" | received: [\"Bio\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Recording consent\"; \"Travel and arrival details\"]\n- speaker 8: \"Hugo Martins\" | received: [none] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Bio\"; \"Headshot\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Travel and arrival details\"; \"Slides\"] | overdue: [none] | not applicable: [\"Recording consent\"]\n- speaker 9: \"Ingrid Berg\" | received: [\"Final title and abstract\"; \"Bio\"] | due: [\"Confirmation\"; \"Headshot\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Recording consent\"; \"Travel and arrival details\"]\n- speaker 10: \"Jonas Weber\" | received: [\"Bio\"; \"Recording consent\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 11: \"Kemi Adeyemi\" | received: [\"A/V requirements\"] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 12: \"Lucia Moreno\" | received: [\"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\nSpeaker-care depth - pick: \"Written speaker packet\"\n- rung 1: \"Written speaker packet\" | moved: made the pick by Q2: 12 speakers - past roughly five, the contact spends their hours re-answering the same question by hand\n- rung 2: \"Named point of contact\"\n- rung 3: \"Speakers' dinner and gifts\" | moved: promoted by Q5: a recurring edition - the rung that turns a speaker into next year's referral\n- rung 4: \"Linked orientation course\"\n- rung 5: \"Travel and lodging concierge\" | moved: promoted by Q2: an international speaker - and wherever a visa letter is needed\n- deleted, not demoted: \"Improvised per-speaker care with nothing written down\" | reason: it drops a commitment: nothing outside one person's memory says what was promised\n  depth reason must: [name the interview answer behind the pick; say improvised care with nothing written down is deleted (the word \"deleted\")]\nPre-event cadence - pick: \"Packet plus two checkpoints\"\n- rung 1: \"Packet plus two checkpoints\"\n- rung 2: \"Milestone cadence\"\n- rung 3: \"Single packet at acceptance\"\n- rung 4: \"Per-speaker check-in call\"\n- deleted, not demoted: \"One broadcast thread with every speaker CC'd\" | reason: it leaks each speaker's address to all the others, and a personal deadline addressed to twenty people reads as somebody else's problem\n- notes: Per speaker, not as one broadcast: move up to the milestone cadence for the speakers Q2 and Q8 flag, and to the check-in call for keynotes and first-time speakers.\n  cadence reason must: [say the cadence runs per speaker, never as one broadcast (the words \"per speaker\")]\nPer-speaker cadence, in speaker order:\n- speaker 1: \"Amara Osei\" | cadence: \"Milestone cadence\" | because: Q2: international travel | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-04 the morning of]\n- speaker 2: \"Bruno Keller\" | cadence: \"Per-speaker check-in call\" | because: Q8: a first talk; A/V needs not known yet (the page's reading) | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-13 check-in call, two to three weeks out; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-04 the morning of]\n- speaker 3: \"Chen Weyrin\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\n- speaker 4: \"Dana Ruiz\" | cadence: \"Per-speaker check-in call\" | because: Q8: a first talk at this scale; A/V needs not known yet (the page's reading) | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-13 check-in call, two to three weeks out; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-05 the morning of]\n- speaker 5: \"Elif Kaya\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\n- speaker 6: \"Farid Haddad\" | cadence: \"Milestone cadence\" | because: A/V needs not known yet (the page's reading) | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-05 the morning of]\n- speaker 7: \"Grace Linmoor\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\n- speaker 8: \"Hugo Martins\" | cadence: \"Milestone cadence\" | because: A/V needs not known yet (the page's reading) | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-04 the morning of]\n- speaker 9: \"Ingrid Berg\" | cadence: \"Milestone cadence\" | because: A/V needs not known yet (the page's reading) | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-05 the morning of]\n- speaker 10: \"Jonas Weber\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\n- speaker 11: \"Kemi Adeyemi\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\n- speaker 12: \"Lucia Moreno\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\nRecording (Q7) - one per format, in this order - 3:\n- format 1: \"Talk\" | intent: \"recorded and published\" | told: \"recorded and published\" | where told: \"the call for papers\" | posture: \"Granular per-format consent\" | opt-out: \"opt-out offered\" | mismatch: none | moved: made the pick by the formats genuinely differ\n  must: [format \"Talk\" exactly; posture \"Granular per-format consent\" exactly; the opt_out uses the words \"offered\"]\n- format 2: \"Workshop\" | intent: \"not recorded\" | told: \"not recorded\" | where told: \"the acceptance email\" | posture: \"No recording\" | opt-out: \"not recorded\" | mismatch: none | moved: made the pick by Q7: no recording intended - a legitimate posture, chosen deliberately\n  must: [format \"Workshop\" exactly; posture \"No recording\" exactly; the opt_out uses the words \"not recorded\"]\n- format 3: \"Panel\" | intent: \"recorded and published\" | told: \"recorded and published\" | where told: \"the call for papers\" | posture: \"Granular per-format consent\" | opt-out: \"opt-out offered\" | mismatch: none | moved: made the pick by the formats genuinely differ\n  must: [format \"Panel\" exactly; posture \"Granular per-format consent\" exactly; the opt_out uses the words \"offered\"]\nRecording menu, deleted not demoted: \"Recording on the assumption that silence is consent\" | reason: a published video cannot be unpublished from the copies people already have. PyCon US offers an opt-out for Talks and Charlas and states plainly that you cannot opt out of recording for lightning talks.\nFirst-time speakers (Q8) - asked, never inferred - 2:\n- name: \"Bruno Keller\" | first time: \"yes\" | care: [offer the room: the actual stage, the actual clicker and the actual confidence monitor before the doors open; say what the room will be like: audience size, whether questions happen, who introduces them, the timing signals, what happens if a demo fails; a live briefing: a short call or a session on arrival; the check-in call on 2027-04-13, two to three weeks out; rehearsal, mentors and talk feedback come from event-speaker-coaching, offered to every speaker in the same words]\n  must: [name \"Bruno Keller\" exactly; care says offer the room (the word \"room\"); care names the check-in call (the word \"call\")]\n- name: \"Dana Ruiz\" | first time: \"at this scale\" | care: [offer the room: the actual stage, the actual clicker and the actual confidence monitor before the doors open; say what the room will be like: audience size, whether questions happen, who introduces them, the timing signals, what happens if a demo fails; a live briefing: a short call or a session on arrival; the check-in call on 2027-04-13, two to three weeks out; rehearsal, mentors and talk feedback come from event-speaker-coaching, offered to every speaker in the same words]\n  must: [name \"Dana Ruiz\" exactly; care says offer the room (the word \"room\"); care names the check-in call (the word \"call\")]\nPromised terms (Q3) - in this order, delivered and never renegotiated or added to - 9:\n- speaker: \"All speakers\" | term: \"free ticket\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"All speakers\" and term \"free ticket\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Amara Osei\" | term: \"travel\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Amara Osei\" and term \"travel\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Amara Osei\" | term: \"lodging 2 nights\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Amara Osei\" and term \"lodging 2 nights\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Bruno Keller\" | term: \"travel\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Bruno Keller\" and term \"travel\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Bruno Keller\" | term: \"lodging 2 nights\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Bruno Keller\" and term \"lodging 2 nights\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Elif Kaya\" | term: \"travel\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Elif Kaya\" and term \"travel\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Elif Kaya\" | term: \"lodging 2 nights\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Elif Kaya\" and term \"lodging 2 nights\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Hugo Martins\" | term: \"travel\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Hugo Martins\" and term \"travel\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Hugo Martins\" | term: \"lodging 2 nights\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Hugo Martins\" and term \"lodging 2 nights\" exactly; the status uses the word \"delivered\"]\nTravel - 4 travelling, in speaker order:\n- speaker: \"Amara Osei\" | travelling: international | items: [mechanism: the speaker pays and is reimbursed - said in the packet in one sentence; what is covered and what is not, with the cap on each, as promised: travel and lodging; the claim deadline and the payment turnaround, stated and honoured; itinerary: arrival and departure times by 2027-04-20; visa: ask now whether an invitation letter is needed and who signs it - lead times are jurisdiction-specific, none is invented here; retention: delete passport, ticket and payment details on 2027-05-19]\n  must: [speaker \"Amara Osei\" exactly; the items use the word \"reimburse\"; the items use the word \"visa\"]\n- speaker: \"Bruno Keller\" | travelling: domestic | items: [mechanism: the speaker pays and is reimbursed - said in the packet in one sentence; what is covered and what is not, with the cap on each, as promised: travel and lodging; the claim deadline and the payment turnaround, stated and honoured; itinerary: arrival and departure times by 2027-04-20; retention: delete passport, ticket and payment details on 2027-05-19]\n  must: [speaker \"Bruno Keller\" exactly; the items use the word \"reimburse\"]\n- speaker: \"Elif Kaya\" | travelling: domestic | items: [mechanism: the speaker pays and is reimbursed - said in the packet in one sentence; what is covered and what is not, with the cap on each, as promised: travel and lodging; the claim deadline and the payment turnaround, stated and honoured; itinerary: arrival and departure times by 2027-04-20; retention: delete passport, ticket and payment details on 2027-05-19]\n  must: [speaker \"Elif Kaya\" exactly; the items use the word \"reimburse\"]\n- speaker: \"Hugo Martins\" | travelling: domestic | items: [mechanism: the speaker pays and is reimbursed - said in the packet in one sentence; what is covered and what is not, with the cap on each, as promised: travel and lodging; the claim deadline and the payment turnaround, stated and honoured; itinerary: arrival and departure times by 2027-04-20; retention: delete passport, ticket and payment details on 2027-05-19]\n  must: [speaker \"Hugo Martins\" exactly; the items use the word \"reimburse\"]\nOn-site (step 9): green room: yes | green room line: \"the green room\" | A/V: \"a house A/V technician\" | confidence monitor: yes | mixed room: yes\n- day-of: \"Amara Osei\" | slot: \"2027-05-04 09:30\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-04 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day]\n- day-of: \"Bruno Keller\" | slot: \"2027-05-04 11:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-04 before the audience is in\" | green room: \"the green room\" | notes: [first talk - offer the room before the doors open; the host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day]\n- day-of: \"Chen Weyrin\" | slot: \"2027-05-04 14:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-04 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Dana Ruiz\" | slot: \"2027-05-05 09:30\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [first talk at this scale - offer the room before the doors open; the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Elif Kaya\" | slot: \"2027-05-05 11:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day]\n- day-of: \"Farid Haddad\" | slot: \"2027-05-05 14:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Grace Linmoor\" | slot: \"2027-05-04 10:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-04 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Hugo Martins\" | slot: \"2027-05-04 14:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-04 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day]\n- day-of: \"Ingrid Berg\" | slot: \"2027-05-05 10:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Jonas Weber\" | slot: \"2027-05-05 16:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Kemi Adeyemi\" | slot: \"2027-05-05 16:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Lucia Moreno\" | slot: \"2027-05-05 16:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\nSlide deadline (step 7): 2027-04-27 | consequence: \"the talk runs from your own laptop and no copy is shared with attendees\" | honest none: no | deck collected after the talk: yes\nAfter the event (step 10), in this order:\n- thank-you: 2027-05-08 | individual, from the named contact, one specific thing about the talk; ask nothing yet (within a few days - 3 days, self-set)\n- feedback: 2027-05-19 | what you actually have, anonymous comments in full minus abuse, the host's own read; never with a request (within a week or two)\n- recording link: 2027-06-04 | tell the speaker before it goes live; the direct link to their own session; where else it lives; permission to share it (your own 30-day promise)\n- retention pass: 2027-05-19 | delete travel documents, ID scans and payment details; keep the consent record\n- returning ask: no date | separately and later: ask once, specifically, and record the answer\nPacket must: [title contains \"Lakeshore Codemoot 2027\"; contact contains \"Marta Silva (marta@lakeshore-codemoot.example)\"; what_we_need follows the ladder's order with each last usable date as by; schedule copies each speaker's slot; venue_and_av says \"green room\"; travel_and_expenses names only promised terms; on_the_day names the host and the tech check and says no sales pitch and the anonymous question channel (the word \"anonymous\"); thank_you at most 120 words and says the recording link is \"to be sent when published\"] | packet note must: [say what happens next]\nFindings (5):\n[check] visa (travel): Q2: an international speaker - ask early whether a visa invitation letter is needed and who signs it; lead times are jurisdiction-specific, so check the destination's current published requirements rather than assuming.\n[info] stage_just (stage): Q1: acceptance emails just went out. Everything is still changeable: name the contact, then send the packet with the dated ladder.\n[info] same_day (ladder): Q4: two or more materials are due on 2027-03-26 - a deadline landing on a single day.\n[info] mixed_room (room): Q11: a mixed room - brief speakers to define each term on first use and show one concrete example before the abstraction; offer an anonymous question channel and have the host read those questions aloud, starting with the most basic.\n[info] scope (scope): The page starts after acceptance: promised terms are delivered, never renegotiated or added to; it never invents a perk, a fee, a date, a person, a room or a piece of equipment, and never reads identity, gender or experience from a name."
}

Reply:

{
 "task": "plan",
 "summary": "Ready to send the packet: Marta Silva is the named contact, every promised term is delivered, and the workshops stay unrecorded as they were told - send it per speaker today.",
 "verdict": "ready to send the packet",
 "contact": {
  "name": "Marta Silva (marta@lakeshore-codemoot.example)",
  "reason": "One name, one address and one stated response window (two working days) for every speaker message."
 },
 "ladder": [
  {
   "material": "Confirmation",
   "ask_by": "2027-03-02",
   "last_usable": "2027-03-12",
   "feeds": "the waitlist"
  },
  {
   "material": "Final title and abstract",
   "ask_by": "2027-03-05",
   "last_usable": "2027-03-26",
   "feeds": "programme publication"
  },
  {
   "material": "Bio",
   "ask_by": "2027-03-05",
   "last_usable": "2027-03-26",
   "feeds": "programme publication"
  },
  {
   "material": "Recording consent",
   "ask_by": "2027-03-16",
   "last_usable": "2027-04-06",
   "feeds": "the camera crew booking"
  },
  {
   "material": "Headshot",
   "ask_by": "2027-03-19",
   "last_usable": "2027-04-09",
   "feeds": "badge print"
  },
  {
   "material": "A/V requirements",
   "ask_by": "2027-03-23",
   "last_usable": "2027-04-13",
   "feeds": "the venue equipment order"
  },
  {
   "material": "Accessibility and dietary needs",
   "ask_by": "2027-03-26",
   "last_usable": "2027-04-16",
   "feeds": "catering lock"
  },
  {
   "material": "Travel and arrival details",
   "ask_by": "2027-03-30",
   "last_usable": "2027-04-20",
   "feeds": "the on-site plan"
  },
  {
   "material": "Slides",
   "ask_by": "2027-04-06",
   "last_usable": "2027-04-27",
   "feeds": "slide upload"
  }
 ],
 "depth": {
  "pick": "Written speaker packet",
  "reason": "Q2: 12 speakers - past roughly five, the contact spends their hours re-answering the same question by hand. Improvised care with nothing written down is deleted: it drops a commitment."
 },
 "cadence": {
  "pick": "Packet plus two checkpoints",
  "reason": "The packet plus two checkpoints is the efficient default, run per speaker: the milestone cadence and the check-in call go to the speakers the page flags, never one broadcast thread."
 },
 "recording": [
  {
   "format": "Talk",
   "posture": "Granular per-format consent",
   "opt_out": "opt-out offered"
  },
  {
   "format": "Workshop",
   "posture": "No recording",
   "opt_out": "not recorded"
  },
  {
   "format": "Panel",
   "posture": "Granular per-format consent",
   "opt_out": "opt-out offered"
  }
 ],
 "first_timers": [
  {
   "name": "Bruno Keller",
   "care": "Offer the room before the doors open - the actual stage and clicker - and say what the room will be like; hold the check-in call on 2027-04-13."
  },
  {
   "name": "Dana Ruiz",
   "care": "Offer the room before the doors open - the actual stage and clicker - and say what the room will be like; hold the check-in call on 2027-04-13."
  }
 ],
 "promised": [
  {
   "speaker": "All speakers",
   "term": "free ticket",
   "status": "Delivered as promised, never renegotiated."
  },
  {
   "speaker": "Amara Osei",
   "term": "travel",
   "status": "Delivered as promised, never renegotiated."
  },
  {
   "speaker": "Amara Osei",
   "term": "lodging 2 nights",
   "status": "Delivered as promised, never renegotiated."
  },
  {
   "speaker": "Bruno Keller",
   "term": "travel",
   "status": "Delivered as promised, never renegotiated."
  },
  {
   "speaker": "Bruno Keller",
   "term": "lodging 2 nights",
   "status": "Delivered as promised, never renegotiated."
  },
  {
   "speaker": "Elif Kaya",
   "term": "travel",
   "status": "Delivered as promised, never renegotiated."
  },
  {
   "speaker": "Elif Kaya",
   "term": "lodging 2 nights",
   "status": "Delivered as promised, never renegotiated."
  },
  {
   "speaker": "Hugo Martins",
   "term": "travel",
   "status": "Delivered as promised, never renegotiated."
  },
  {
   "speaker": "Hugo Martins",
   "term": "lodging 2 nights",
   "status": "Delivered as promised, never renegotiated."
  }
 ],
 "travel": [
  {
   "speaker": "Amara Osei",
   "items": [
    "mechanism: the speaker pays and is reimbursed - said in the packet in one sentence",
    "what is covered and what is not, with the cap on each, as promised: travel and lodging",
    "the claim deadline and the payment turnaround, stated and honoured",
    "itinerary: arrival and departure times by 2027-04-20",
    "visa: ask now whether an invitation letter is needed and who signs it - lead times are jurisdiction-specific, none is invented here",
    "retention: delete passport, ticket and payment details on 2027-05-19"
   ]
  },
  {
   "speaker": "Bruno Keller",
   "items": [
    "mechanism: the speaker pays and is reimbursed - said in the packet in one sentence",
    "what is covered and what is not, with the cap on each, as promised: travel and lodging",
    "the claim deadline and the payment turnaround, stated and honoured",
    "itinerary: arrival and departure times by 2027-04-20",
    "retention: delete passport, ticket and payment details on 2027-05-19"
   ]
  },
  {
   "speaker": "Elif Kaya",
   "items": [
    "mechanism: the speaker pays and is reimbursed - said in the packet in one sentence",
    "what is covered and what is not, with the cap on each, as promised: travel and lodging",
    "the claim deadline and the payment turnaround, stated and honoured",
    "itinerary: arrival and departure times by 2027-04-20",
    "retention: delete passport, ticket and payment details on 2027-05-19"
   ]
  },
  {
   "speaker": "Hugo Martins",
   "items": [
    "mechanism: the speaker pays and is reimbursed - said in the packet in one sentence",
    "what is covered and what is not, with the cap on each, as promised: travel and lodging",
    "the claim deadline and the payment turnaround, stated and honoured",
    "itinerary: arrival and departure times by 2027-04-20",
    "retention: delete passport, ticket and payment details on 2027-05-19"
   ]
  }
 ],
 "caveats": [
  "an international speaker - ask early whether a visa invitation letter is needed and who signs it; lead times are jurisdiction-specific, so check the destination's current published requirements rather than assuming."
 ]
}

The page's check: kept - nothing to flag

The same, contact named and mismatch fixed - packet

Verdict: ready to send the packet; ready: yes; stage: acceptance emails just went out; contact: Marta Silva (marta@lakeshore-codemoot.example); depth: Written speaker packet; cadence: Packet plus two checkpoints; 12 speakers, 9 materials, 3 formats, 2 first-time; 0 fix-level findings.

Input:

{
 "task": "packet",
 "event": "Event: \"Lakeshore Codemoot 2027\" | dates: 2027-05-04 to 2027-05-05 (2 days) | city: \"Lakeshore\" | venue: \"Harbour Hall\" | as of: 2027-03-02\nQ1 sequence position chosen: \"acceptance emails just went out\" | acceptance emails sent: 2027-03-01 | days from the as-of date to the event: 63\nQ2 speakers: 12 | session formats: 3 | travelling domestically: 3 | travelling internationally: 1\nQ3 what the plan and the budget line deliver now: [lodging; travel; ticket] | travel mechanism: \"the speaker pays and is reimbursed\"\nQ5 edition: \"a recurring event\" | who owns the event: \"community-run event\"\nQ6 contact: \"Marta Silva (marta@lakeshore-codemoot.example)\" | response window: \"two working days\" | contact hours a week: 6 | on-site host: \"the contact\" | money and contracts: \"Priya Nandakor, the treasurer\"\nQ9 venue: green room: yes | substitute: \"none named\" | A/V: \"a house A/V technician\" | confidence monitor: yes\nQ11 room: \"developers alongside non-technical attendees\"\nQ12 recurring moment promised: no | coach: \"nobody named\"\nQ13 outside the region's main hub: no\nSlides: consequence if the deadline slips: \"the talk runs from your own laptop and no copy is shared with attendees\" | deck collected after the talk for attendees: yes | days from the event to the recording published: 30 | travel-data deletion date: 2027-05-19",
 "speakers": "Formats (Q7) (3), one per line:\n- format 1: \"Talk\" | recording intent: \"recorded and published\" | speakers were told: \"recorded and published\" | where told: \"the call for papers\" | opt-out: \"opt-out offered\"\n- format 2: \"Workshop\" | recording intent: \"not recorded\" | speakers were told: \"not recorded\" | where told: \"the acceptance email\" | opt-out: \"not recorded\"\n- format 3: \"Panel\" | recording intent: \"recorded and published\" | speakers were told: \"recorded and published\" | where told: \"the call for papers\" | opt-out: \"opt-out offered\"\nSpeakers (12), one per line:\n- speaker 1: \"Amara Osei\" | format: \"Talk\" | slot: \"2027-05-04 09:30\" | travelling: international | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"; \"travel\"; \"lodging 2 nights\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract]\n- speaker 2: \"Bruno Keller\" | format: \"Talk\" | slot: \"2027-05-04 11:00\" | travelling: domestic | first time (Q8): \"yes\" | promised (Q3): [\"free ticket\"; \"travel\"; \"lodging 2 nights\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [bio]\n- speaker 3: \"Chen Weyrin\" | format: \"Talk\" | slot: \"2027-05-04 14:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract]\n- speaker 4: \"Dana Ruiz\" | format: \"Talk\" | slot: \"2027-05-05 09:30\" | travelling: no | first time (Q8): \"at this scale\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [nothing yet]\n- speaker 5: \"Elif Kaya\" | format: \"Talk\" | slot: \"2027-05-05 11:00\" | travelling: domestic | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"; \"travel\"; \"lodging 2 nights\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract; headshot]\n- speaker 6: \"Farid Haddad\" | format: \"Talk\" | slot: \"2027-05-05 14:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [final title and abstract]\n- speaker 7: \"Grace Linmoor\" | format: \"Workshop\" | slot: \"2027-05-04 10:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio]\n- speaker 8: \"Hugo Martins\" | format: \"Workshop\" | slot: \"2027-05-04 14:00\" | travelling: domestic | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"; \"travel\"; \"lodging 2 nights\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [nothing yet]\n- speaker 9: \"Ingrid Berg\" | format: \"Workshop\" | slot: \"2027-05-05 10:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [bio; final title and abstract]\n- speaker 10: \"Jonas Weber\" | format: \"Panel\" | slot: \"2027-05-05 16:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio]\n- speaker 11: \"Kemi Adeyemi\" | format: \"Panel\" | slot: \"2027-05-05 16:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"not asked\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [nothing yet]\n- speaker 12: \"Lucia Moreno\" | format: \"Panel\" | slot: \"2027-05-05 16:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"] | where stated: \"the call for papers and the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract]",
 "materials": "Materials (Q4) (9), one per line:\n- material 1: \"Confirmation\" | last usable date: 2027-03-12 | feeds: \"the waitlist\"\n- material 2: \"Final title and abstract\" | last usable date: 2027-03-26 | feeds: \"programme publication\"\n- material 3: \"Bio\" | last usable date: 2027-03-26 | feeds: \"programme publication\"\n- material 4: \"Recording consent\" | last usable date: 2027-04-06 | feeds: \"the camera crew booking\"\n- material 5: \"Headshot\" | last usable date: 2027-04-09 | feeds: \"badge print\"\n- material 6: \"A/V requirements\" | last usable date: 2027-04-13 | feeds: \"the venue equipment order\"\n- material 7: \"Accessibility and dietary needs\" | last usable date: 2027-04-16 | feeds: \"catering lock\"\n- material 8: \"Travel and arrival details\" | last usable date: 2027-04-20 | feeds: \"the on-site plan\"\n- material 9: \"Slides\" | last usable date: 2027-04-27 | feeds: \"slide upload\"",
 "notes": "",
 "facts": "Verdict: \"ready to send the packet\" | ready: yes | fix-level findings: 0\nSelf-set lines: an ask sent 21 days before each last usable date (or at once, when that has passed) | a tight window under 7 days | low contact hours under 2 a week | the thank-you 3 days after the event | the travel-data deletion 7 days after the event unless entered | a summary cap of 40 words | a thank-you cap of 120 words. The skill's own: roughly five speakers before the packet outranks the contact | the first reminder at roughly half the remaining time and the second at the deadline | a logistics note 48 hours out | one week out | a check-in call two to three weeks out | feedback within a week or two (the page uses 14 days). Never invented: a visa lead time, a fee or its figure, a perk nobody promised.\nStage (Q1): \"acceptance emails just went out\" | chosen: \"acceptance emails just went out\" | the dates say: \"acceptance emails just went out\" | consequence: Everything is still changeable: name the contact, then send the packet with the dated ladder.\nContact (step 2): \"Marta Silva (marta@lakeshore-codemoot.example)\" | kind: a named person | response window: \"two working days\" | on-site host: \"Marta Silva (marta@lakeshore-codemoot.example)\"\n  contact must: [copy \"Marta Silva (marta@lakeshore-codemoot.example)\" exactly as the name; say one name, one address and one stated response window (the word \"window\")]\nCollection ladder (step 3) - in this order, each pinned to its last usable date, never the event date - 9:\n- material 1: \"Confirmation\" | ask by: 2027-03-02 (at once) | first reminder: 2027-03-07 | second reminder: 2027-03-12 | last usable: 2027-03-12 | feeds: \"the waitlist\" | speakers still owing: 12 of 12 | passed: no\n  must: [material \"Confirmation\" exactly; ask_by 2027-03-02; last_usable 2027-03-12; feeds \"the waitlist\"]\n- material 2: \"Final title and abstract\" | ask by: 2027-03-05 | first reminder: 2027-03-15 | second reminder: 2027-03-26 | last usable: 2027-03-26 | feeds: \"programme publication\" | speakers still owing: 6 of 12 | passed: no\n  must: [material \"Final title and abstract\" exactly; ask_by 2027-03-05; last_usable 2027-03-26; feeds \"programme publication\"]\n- material 3: \"Bio\" | ask by: 2027-03-05 | first reminder: 2027-03-15 | second reminder: 2027-03-26 | last usable: 2027-03-26 | feeds: \"programme publication\" | speakers still owing: 4 of 12 | passed: no\n  must: [material \"Bio\" exactly; ask_by 2027-03-05; last_usable 2027-03-26; feeds \"programme publication\"]\n- material 4: \"Recording consent\" | ask by: 2027-03-16 | first reminder: 2027-03-26 | second reminder: 2027-04-06 | last usable: 2027-04-06 | feeds: \"the camera crew booking\" | speakers still owing: 4 of 9 | passed: no\n  must: [material \"Recording consent\" exactly; ask_by 2027-03-16; last_usable 2027-04-06; feeds \"the camera crew booking\"]\n- material 5: \"Headshot\" | ask by: 2027-03-19 | first reminder: 2027-03-29 | second reminder: 2027-04-09 | last usable: 2027-04-09 | feeds: \"badge print\" | speakers still owing: 11 of 12 | passed: no\n  must: [material \"Headshot\" exactly; ask_by 2027-03-19; last_usable 2027-04-09; feeds \"badge print\"]\n- material 6: \"A/V requirements\" | ask by: 2027-03-23 | first reminder: 2027-04-02 | second reminder: 2027-04-13 | last usable: 2027-04-13 | feeds: \"the venue equipment order\" | speakers still owing: 5 of 12 | passed: no\n  must: [material \"A/V requirements\" exactly; ask_by 2027-03-23; last_usable 2027-04-13; feeds \"the venue equipment order\"]\n- material 7: \"Accessibility and dietary needs\" | ask by: 2027-03-26 | first reminder: 2027-04-05 | second reminder: 2027-04-16 | last usable: 2027-04-16 | feeds: \"catering lock\" | speakers still owing: 12 of 12 | passed: no\n  must: [material \"Accessibility and dietary needs\" exactly; ask_by 2027-03-26; last_usable 2027-04-16; feeds \"catering lock\"]\n- material 8: \"Travel and arrival details\" | ask by: 2027-03-30 | first reminder: 2027-04-09 | second reminder: 2027-04-20 | last usable: 2027-04-20 | feeds: \"the on-site plan\" | speakers still owing: 4 of 4 | passed: no\n  must: [material \"Travel and arrival details\" exactly; ask_by 2027-03-30; last_usable 2027-04-20; feeds \"the on-site plan\"]\n- material 9: \"Slides\" | ask by: 2027-04-06 | first reminder: 2027-04-16 | second reminder: 2027-04-27 | last usable: 2027-04-27 | feeds: \"slide upload\" | speakers still owing: 12 of 12 | passed: no\n  must: [material \"Slides\" exactly; ask_by 2027-04-06; last_usable 2027-04-27; feeds \"slide upload\"]\nStatus grid (one line per speaker; each list names materials):\n- speaker 1: \"Amara Osei\" | received: [\"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Travel and arrival details\"; \"Slides\"] | overdue: [none] | not applicable: [none]\n- speaker 2: \"Bruno Keller\" | received: [\"Bio\"] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Travel and arrival details\"; \"Slides\"] | overdue: [none] | not applicable: [none]\n- speaker 3: \"Chen Weyrin\" | received: [\"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 4: \"Dana Ruiz\" | received: [none] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 5: \"Elif Kaya\" | received: [\"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Accessibility and dietary needs\"; \"Travel and arrival details\"; \"Slides\"] | overdue: [none] | not applicable: [none]\n- speaker 6: \"Farid Haddad\" | received: [\"Final title and abstract\"] | due: [\"Confirmation\"; \"Bio\"; \"Recording consent\"; \"Headshot\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 7: \"Grace Linmoor\" | received: [\"Bio\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Recording consent\"; \"Travel and arrival details\"]\n- speaker 8: \"Hugo Martins\" | received: [none] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Bio\"; \"Headshot\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Travel and arrival details\"; \"Slides\"] | overdue: [none] | not applicable: [\"Recording consent\"]\n- speaker 9: \"Ingrid Berg\" | received: [\"Final title and abstract\"; \"Bio\"] | due: [\"Confirmation\"; \"Headshot\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Recording consent\"; \"Travel and arrival details\"]\n- speaker 10: \"Jonas Weber\" | received: [\"Bio\"; \"Recording consent\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 11: \"Kemi Adeyemi\" | received: [\"A/V requirements\"] | due: [\"Confirmation\"; \"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\n- speaker 12: \"Lucia Moreno\" | received: [\"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"A/V requirements\"] | due: [\"Confirmation\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\nSpeaker-care depth - pick: \"Written speaker packet\"\n- rung 1: \"Written speaker packet\" | moved: made the pick by Q2: 12 speakers - past roughly five, the contact spends their hours re-answering the same question by hand\n- rung 2: \"Named point of contact\"\n- rung 3: \"Speakers' dinner and gifts\" | moved: promoted by Q5: a recurring edition - the rung that turns a speaker into next year's referral\n- rung 4: \"Linked orientation course\"\n- rung 5: \"Travel and lodging concierge\" | moved: promoted by Q2: an international speaker - and wherever a visa letter is needed\n- deleted, not demoted: \"Improvised per-speaker care with nothing written down\" | reason: it drops a commitment: nothing outside one person's memory says what was promised\n  depth reason must: [name the interview answer behind the pick; say improvised care with nothing written down is deleted (the word \"deleted\")]\nPre-event cadence - pick: \"Packet plus two checkpoints\"\n- rung 1: \"Packet plus two checkpoints\"\n- rung 2: \"Milestone cadence\"\n- rung 3: \"Single packet at acceptance\"\n- rung 4: \"Per-speaker check-in call\"\n- deleted, not demoted: \"One broadcast thread with every speaker CC'd\" | reason: it leaks each speaker's address to all the others, and a personal deadline addressed to twenty people reads as somebody else's problem\n- notes: Per speaker, not as one broadcast: move up to the milestone cadence for the speakers Q2 and Q8 flag, and to the check-in call for keynotes and first-time speakers.\n  cadence reason must: [say the cadence runs per speaker, never as one broadcast (the words \"per speaker\")]\nPer-speaker cadence, in speaker order:\n- speaker 1: \"Amara Osei\" | cadence: \"Milestone cadence\" | because: Q2: international travel | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-04 the morning of]\n- speaker 2: \"Bruno Keller\" | cadence: \"Per-speaker check-in call\" | because: Q8: a first talk; A/V needs not known yet (the page's reading) | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-13 check-in call, two to three weeks out; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-04 the morning of]\n- speaker 3: \"Chen Weyrin\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\n- speaker 4: \"Dana Ruiz\" | cadence: \"Per-speaker check-in call\" | because: Q8: a first talk at this scale; A/V needs not known yet (the page's reading) | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-13 check-in call, two to three weeks out; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-05 the morning of]\n- speaker 5: \"Elif Kaya\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\n- speaker 6: \"Farid Haddad\" | cadence: \"Milestone cadence\" | because: A/V needs not known yet (the page's reading) | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-05 the morning of]\n- speaker 7: \"Grace Linmoor\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\n- speaker 8: \"Hugo Martins\" | cadence: \"Milestone cadence\" | because: A/V needs not known yet (the page's reading) | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-04 the morning of]\n- speaker 9: \"Ingrid Berg\" | cadence: \"Milestone cadence\" | because: A/V needs not known yet (the page's reading) | touches: [2027-03-02 confirmation and the packet; 2027-03-12 materials due; 2027-04-27 slide deadline; 2027-04-27 one week out; 2027-05-02 48 hours out; 2027-05-05 the morning of]\n- speaker 10: \"Jonas Weber\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\n- speaker 11: \"Kemi Adeyemi\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\n- speaker 12: \"Lucia Moreno\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-02 the packet; 2027-03-12 materials reminder; 2027-05-02 logistics note, 48 hours out]\nRecording (Q7) - one per format, in this order - 3:\n- format 1: \"Talk\" | intent: \"recorded and published\" | told: \"recorded and published\" | where told: \"the call for papers\" | posture: \"Granular per-format consent\" | opt-out: \"opt-out offered\" | mismatch: none | moved: made the pick by the formats genuinely differ\n  must: [format \"Talk\" exactly; posture \"Granular per-format consent\" exactly; the opt_out uses the words \"offered\"]\n- format 2: \"Workshop\" | intent: \"not recorded\" | told: \"not recorded\" | where told: \"the acceptance email\" | posture: \"No recording\" | opt-out: \"not recorded\" | mismatch: none | moved: made the pick by Q7: no recording intended - a legitimate posture, chosen deliberately\n  must: [format \"Workshop\" exactly; posture \"No recording\" exactly; the opt_out uses the words \"not recorded\"]\n- format 3: \"Panel\" | intent: \"recorded and published\" | told: \"recorded and published\" | where told: \"the call for papers\" | posture: \"Granular per-format consent\" | opt-out: \"opt-out offered\" | mismatch: none | moved: made the pick by the formats genuinely differ\n  must: [format \"Panel\" exactly; posture \"Granular per-format consent\" exactly; the opt_out uses the words \"offered\"]\nRecording menu, deleted not demoted: \"Recording on the assumption that silence is consent\" | reason: a published video cannot be unpublished from the copies people already have. PyCon US offers an opt-out for Talks and Charlas and states plainly that you cannot opt out of recording for lightning talks.\nFirst-time speakers (Q8) - asked, never inferred - 2:\n- name: \"Bruno Keller\" | first time: \"yes\" | care: [offer the room: the actual stage, the actual clicker and the actual confidence monitor before the doors open; say what the room will be like: audience size, whether questions happen, who introduces them, the timing signals, what happens if a demo fails; a live briefing: a short call or a session on arrival; the check-in call on 2027-04-13, two to three weeks out; rehearsal, mentors and talk feedback come from event-speaker-coaching, offered to every speaker in the same words]\n  must: [name \"Bruno Keller\" exactly; care says offer the room (the word \"room\"); care names the check-in call (the word \"call\")]\n- name: \"Dana Ruiz\" | first time: \"at this scale\" | care: [offer the room: the actual stage, the actual clicker and the actual confidence monitor before the doors open; say what the room will be like: audience size, whether questions happen, who introduces them, the timing signals, what happens if a demo fails; a live briefing: a short call or a session on arrival; the check-in call on 2027-04-13, two to three weeks out; rehearsal, mentors and talk feedback come from event-speaker-coaching, offered to every speaker in the same words]\n  must: [name \"Dana Ruiz\" exactly; care says offer the room (the word \"room\"); care names the check-in call (the word \"call\")]\nPromised terms (Q3) - in this order, delivered and never renegotiated or added to - 9:\n- speaker: \"All speakers\" | term: \"free ticket\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"All speakers\" and term \"free ticket\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Amara Osei\" | term: \"travel\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Amara Osei\" and term \"travel\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Amara Osei\" | term: \"lodging 2 nights\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Amara Osei\" and term \"lodging 2 nights\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Bruno Keller\" | term: \"travel\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Bruno Keller\" and term \"travel\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Bruno Keller\" | term: \"lodging 2 nights\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Bruno Keller\" and term \"lodging 2 nights\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Elif Kaya\" | term: \"travel\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Elif Kaya\" and term \"travel\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Elif Kaya\" | term: \"lodging 2 nights\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Elif Kaya\" and term \"lodging 2 nights\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Hugo Martins\" | term: \"travel\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Hugo Martins\" and term \"travel\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Hugo Martins\" | term: \"lodging 2 nights\" | where stated: \"the call for papers and the acceptance email\" | status: delivered\n  must: [speaker \"Hugo Martins\" and term \"lodging 2 nights\" exactly; the status uses the word \"delivered\"]\nTravel - 4 travelling, in speaker order:\n- speaker: \"Amara Osei\" | travelling: international | items: [mechanism: the speaker pays and is reimbursed - said in the packet in one sentence; what is covered and what is not, with the cap on each, as promised: travel and lodging; the claim deadline and the payment turnaround, stated and honoured; itinerary: arrival and departure times by 2027-04-20; visa: ask now whether an invitation letter is needed and who signs it - lead times are jurisdiction-specific, none is invented here; retention: delete passport, ticket and payment details on 2027-05-19]\n  must: [speaker \"Amara Osei\" exactly; the items use the word \"reimburse\"; the items use the word \"visa\"]\n- speaker: \"Bruno Keller\" | travelling: domestic | items: [mechanism: the speaker pays and is reimbursed - said in the packet in one sentence; what is covered and what is not, with the cap on each, as promised: travel and lodging; the claim deadline and the payment turnaround, stated and honoured; itinerary: arrival and departure times by 2027-04-20; retention: delete passport, ticket and payment details on 2027-05-19]\n  must: [speaker \"Bruno Keller\" exactly; the items use the word \"reimburse\"]\n- speaker: \"Elif Kaya\" | travelling: domestic | items: [mechanism: the speaker pays and is reimbursed - said in the packet in one sentence; what is covered and what is not, with the cap on each, as promised: travel and lodging; the claim deadline and the payment turnaround, stated and honoured; itinerary: arrival and departure times by 2027-04-20; retention: delete passport, ticket and payment details on 2027-05-19]\n  must: [speaker \"Elif Kaya\" exactly; the items use the word \"reimburse\"]\n- speaker: \"Hugo Martins\" | travelling: domestic | items: [mechanism: the speaker pays and is reimbursed - said in the packet in one sentence; what is covered and what is not, with the cap on each, as promised: travel and lodging; the claim deadline and the payment turnaround, stated and honoured; itinerary: arrival and departure times by 2027-04-20; retention: delete passport, ticket and payment details on 2027-05-19]\n  must: [speaker \"Hugo Martins\" exactly; the items use the word \"reimburse\"]\nOn-site (step 9): green room: yes | green room line: \"the green room\" | A/V: \"a house A/V technician\" | confidence monitor: yes | mixed room: yes\n- day-of: \"Amara Osei\" | slot: \"2027-05-04 09:30\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-04 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day]\n- day-of: \"Bruno Keller\" | slot: \"2027-05-04 11:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-04 before the audience is in\" | green room: \"the green room\" | notes: [first talk - offer the room before the doors open; the host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day]\n- day-of: \"Chen Weyrin\" | slot: \"2027-05-04 14:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-04 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Dana Ruiz\" | slot: \"2027-05-05 09:30\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [first talk at this scale - offer the room before the doors open; the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Elif Kaya\" | slot: \"2027-05-05 11:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day]\n- day-of: \"Farid Haddad\" | slot: \"2027-05-05 14:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Grace Linmoor\" | slot: \"2027-05-04 10:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-04 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Hugo Martins\" | slot: \"2027-05-04 14:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-04 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day]\n- day-of: \"Ingrid Berg\" | slot: \"2027-05-05 10:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Jonas Weber\" | slot: \"2027-05-05 16:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Kemi Adeyemi\" | slot: \"2027-05-05 16:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Lucia Moreno\" | slot: \"2027-05-05 16:00\" | host: \"Marta Silva (marta@lakeshore-codemoot.example)\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-05-05 before the audience is in\" | green room: \"the green room\" | notes: [the host reads the anonymous questions aloud, the most basic first]\nSlide deadline (step 7): 2027-04-27 | consequence: \"the talk runs from your own laptop and no copy is shared with attendees\" | honest none: no | deck collected after the talk: yes\nAfter the event (step 10), in this order:\n- thank-you: 2027-05-08 | individual, from the named contact, one specific thing about the talk; ask nothing yet (within a few days - 3 days, self-set)\n- feedback: 2027-05-19 | what you actually have, anonymous comments in full minus abuse, the host's own read; never with a request (within a week or two)\n- recording link: 2027-06-04 | tell the speaker before it goes live; the direct link to their own session; where else it lives; permission to share it (your own 30-day promise)\n- retention pass: 2027-05-19 | delete travel documents, ID scans and payment details; keep the consent record\n- returning ask: no date | separately and later: ask once, specifically, and record the answer\nPacket must: [title contains \"Lakeshore Codemoot 2027\"; contact contains \"Marta Silva (marta@lakeshore-codemoot.example)\"; what_we_need follows the ladder's order with each last usable date as by; schedule copies each speaker's slot; venue_and_av says \"green room\"; travel_and_expenses names only promised terms; on_the_day names the host and the tech check and says no sales pitch and the anonymous question channel (the word \"anonymous\"); thank_you at most 120 words and says the recording link is \"to be sent when published\"] | packet note must: [say what happens next]\nCarried from the plan: summary: \"Ready to send the packet: Marta Silva is the named contact, every promised term is delivered, and the workshops stay unrecorded as they were told - send it per speaker today.\" | parts matching the page: 3 of 3\nFindings (5):\n[check] visa (travel): Q2: an international speaker - ask early whether a visa invitation letter is needed and who signs it; lead times are jurisdiction-specific, so check the destination's current published requirements rather than assuming.\n[info] stage_just (stage): Q1: acceptance emails just went out. Everything is still changeable: name the contact, then send the packet with the dated ladder.\n[info] same_day (ladder): Q4: two or more materials are due on 2027-03-26 - a deadline landing on a single day.\n[info] mixed_room (room): Q11: a mixed room - brief speakers to define each term on first use and show one concrete example before the abstraction; offer an anonymous question channel and have the host read those questions aloud, starting with the most basic.\n[info] scope (scope): The page starts after acceptance: promised terms are delivered, never renegotiated or added to; it never invents a perk, a fee, a date, a person, a room or a piece of equipment, and never reads identity, gender or experience from a name."
}

Reply:

{
 "task": "packet",
 "packet": {
  "title": "Lakeshore Codemoot 2027 - speaker packet",
  "contact": "Marta Silva (marta@lakeshore-codemoot.example) - replies within two working days",
  "what_we_need": [
   {
    "material": "Confirmation",
    "by": "2027-03-12"
   },
   {
    "material": "Final title and abstract",
    "by": "2027-03-26"
   },
   {
    "material": "Bio",
    "by": "2027-03-26"
   },
   {
    "material": "Recording consent",
    "by": "2027-04-06"
   },
   {
    "material": "Headshot",
    "by": "2027-04-09"
   },
   {
    "material": "A/V requirements",
    "by": "2027-04-13"
   },
   {
    "material": "Accessibility and dietary needs",
    "by": "2027-04-16"
   },
   {
    "material": "Travel and arrival details",
    "by": "2027-04-20"
   },
   {
    "material": "Slides",
    "by": "2027-04-27"
   }
  ],
  "schedule": [
   {
    "speaker": "Amara Osei",
    "slot": "Talk, 2027-05-04 09:30"
   },
   {
    "speaker": "Bruno Keller",
    "slot": "Talk, 2027-05-04 11:00"
   },
   {
    "speaker": "Chen Weyrin",
    "slot": "Talk, 2027-05-04 14:00"
   },
   {
    "speaker": "Dana Ruiz",
    "slot": "Talk, 2027-05-05 09:30"
   },
   {
    "speaker": "Elif Kaya",
    "slot": "Talk, 2027-05-05 11:00"
   },
   {
    "speaker": "Farid Haddad",
    "slot": "Talk, 2027-05-05 14:00"
   },
   {
    "speaker": "Grace Linmoor",
    "slot": "Workshop, 2027-05-04 10:00"
   },
   {
    "speaker": "Hugo Martins",
    "slot": "Workshop, 2027-05-04 14:00"
   },
   {
    "speaker": "Ingrid Berg",
    "slot": "Workshop, 2027-05-05 10:00"
   },
   {
    "speaker": "Jonas Weber",
    "slot": "Panel, 2027-05-05 16:00"
   },
   {
    "speaker": "Kemi Adeyemi",
    "slot": "Panel, 2027-05-05 16:00"
   },
   {
    "speaker": "Lucia Moreno",
    "slot": "Panel, 2027-05-05 16:00"
   }
  ],
  "venue_and_av": "The venue gives a house A/V technician and a confidence monitor. There is a green room - a place to be not-on, not a networking space.",
  "recording": [
   {
    "format": "Talk",
    "policy": "Recorded and published - opt-out offered."
   },
   {
    "format": "Workshop",
    "policy": "Not recorded - not recorded."
   },
   {
    "format": "Panel",
    "policy": "Recorded and published - opt-out offered."
   }
  ],
  "slide_deadline": "Slides are due 2027-04-27. If it slips: the talk runs from your own laptop and no copy is shared with attendees. The deck is collected right after the talk for attendees, so build it knowing that.",
  "travel_and_expenses": "Every speaker has free ticket, as promised. Amara Osei, Bruno Keller, Elif Kaya and Hugo Martins also have travel and lodging 2 nights, as promised: the speaker pays and is reimbursed.",
  "on_the_day": "Your host: Marta Silva (marta@lakeshore-codemoot.example) - they meet you at arrival. The tech check runs on the actual stage equipment at a named time before the audience is in. No commercial demo or sales pitch: the audience leaves with the lesson, not the product. The room is mixed: define each term on first use, and expect questions from the anonymous channel, read aloud by the host.",
  "after_the_talk": "A personal thank-you within a few days, and the feedback we actually have within a week or two."
 },
 "day_of": [
  {
   "speaker": "Amara Osei",
   "host": "Marta Silva (marta@lakeshore-codemoot.example)",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "The host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day."
  },
  {
   "speaker": "Bruno Keller",
   "host": "Marta Silva (marta@lakeshore-codemoot.example)",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "First talk - offer the room before the doors open; the host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day."
  },
  {
   "speaker": "Chen Weyrin",
   "host": "Marta Silva (marta@lakeshore-codemoot.example)",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "The host reads the anonymous questions aloud, the most basic first."
  },
  {
   "speaker": "Dana Ruiz",
   "host": "Marta Silva (marta@lakeshore-codemoot.example)",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "First talk at this scale - offer the room before the doors open; the host reads the anonymous questions aloud, the most basic first."
  },
  {
   "speaker": "Elif Kaya",
   "host": "Marta Silva (marta@lakeshore-codemoot.example)",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "The host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day."
  },
  {
   "speaker": "Farid Haddad",
   "host": "Marta Silva (marta@lakeshore-codemoot.example)",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "The host reads the anonymous questions aloud, the most basic first."
  },
  {
   "speaker": "Grace Linmoor",
   "host": "Marta Silva (marta@lakeshore-codemoot.example)",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "The host reads the anonymous questions aloud, the most basic first."
  },
  {
   "speaker": "Hugo Martins",
   "host": "Marta Silva (marta@lakeshore-codemoot.example)",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "The host reads the anonymous questions aloud, the most basic first; travelling - know the arrival time before the day."
  },
  {
   "speaker": "Ingrid Berg",
   "host": "Marta Silva (marta@lakeshore-codemoot.example)",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "The host reads the anonymous questions aloud, the most basic first."
  },
  {
   "speaker": "Jonas Weber",
   "host": "Marta Silva (marta@lakeshore-codemoot.example)",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "The host reads the anonymous questions aloud, the most basic first."
  },
  {
   "speaker": "Kemi Adeyemi",
   "host": "Marta Silva (marta@lakeshore-codemoot.example)",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "The host reads the anonymous questions aloud, the most basic first."
  },
  {
   "speaker": "Lucia Moreno",
   "host": "Marta Silva (marta@lakeshore-codemoot.example)",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "the green room",
   "notes": "The host reads the anonymous questions aloud, the most basic first."
  }
 ],
 "thank_you": "Thank you for your talk at Lakeshore Codemoot 2027. [One specific thing about the talk - the question it got, the conversation it started.] The recording link is to be sent when published, and you will hear before it goes live. - Marta Silva (marta@lakeshore-codemoot.example)",
 "note": "Show this packet to the organizer, then send it per speaker today and start the dated ladder."
}

The page's check: kept - nothing to flag

A summit next week, two headshots missing - plan

Verdict: run the day; ready: yes; stage: the event is next week; contact: Tom Hallowick and Ana Ruiz; depth: Written speaker packet; cadence: Packet plus two checkpoints; 5 speakers, 8 materials, 2 formats, 1 first-time; 1 fix-level findings.

Input:

{
 "task": "plan",
 "event": "Event: \"Northfield Security Summit 2027\" | dates: 2027-06-10 (1 day) | city: \"Northfield\" | venue: \"the Northfield Conference Centre\" | as of: 2027-06-04\nQ1 sequence position chosen: \"the event is next week\" | acceptance emails sent: 2027-04-20 | days from the as-of date to the event: 6\nQ2 speakers: 5 | session formats: 2 | travelling domestically: 1 | travelling internationally: 1\nQ3 what the plan and the budget line deliver now: [lodging; travel; ticket; dinner] | travel mechanism: \"the event books and pays\"\nQ5 edition: \"a one-off edition\" | who owns the event: \"vendor or user conference\"\nQ6 contact: \"Tom Hallowick and Ana Ruiz\" | response window: \"the same working day\" | contact hours a week: 10 | on-site host: \"the contact\" | money and contracts: \"the events finance desk\"\nQ9 venue: green room: no | substitute: \"a reserved table behind the stage and a locked cupboard for bags\" | A/V: \"a house A/V technician\" | confidence monitor: yes\nQ11 room: \"developers only\"\nQ12 recurring moment promised: no | coach: \"nobody named\"\nQ13 outside the region's main hub: no\nSlides: consequence if the deadline slips: \"nothing - you present from your own laptop\" | deck collected after the talk for attendees: no | days from the event to the recording published: 21 | travel-data deletion date: 2027-06-17",
 "speakers": "Formats (Q7) (2), one per line:\n- format 1: \"Keynote\" | recording intent: \"recorded and published\" | speakers were told: \"recorded and published\" | where told: \"the acceptance email\" | opt-out: \"opt-out offered\"\n- format 2: \"Talk\" | recording intent: \"recorded and published\" | speakers were told: \"recorded and published\" | where told: \"the acceptance email\" | opt-out: \"opt-out offered\"\nSpeakers (5), one per line:\n- speaker 1: \"Oskar Lind\" | format: \"Keynote\" | slot: \"2027-06-10 09:00\" | travelling: domestic | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"; \"travel\"; \"lodging 1 night\"; \"speakers' dinner\"] | where stated: \"the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract; headshot; travel and arrival details; accessibility and dietary needs]\n- speaker 2: \"Priya Desai\" | format: \"Talk\" | slot: \"2027-06-10 10:30\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"; \"speakers' dinner\"] | where stated: \"the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): yes | received: [bio; final title and abstract; accessibility and dietary needs]\n- speaker 3: \"Rui Costa\" | format: \"Talk\" | slot: \"2027-06-10 13:00\" | travelling: international | first time (Q8): \"yes\" | promised (Q3): [\"free ticket\"; \"travel\"; \"lodging 1 night\"; \"speakers' dinner\"] | where stated: \"the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract; headshot; travel and arrival details; accessibility and dietary needs]\n- speaker 4: \"Sara Nyberg\" | format: \"Talk\" | slot: \"2027-06-10 14:30\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"; \"speakers' dinner\"] | where stated: \"the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract; accessibility and dietary needs]\n- speaker 5: \"Theo Brandt\" | format: \"Talk\" | slot: \"2027-06-10 16:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"; \"speakers' dinner\"] | where stated: \"the acceptance email\" | recording: \"opted out\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract; headshot; accessibility and dietary needs]",
 "materials": "Materials (Q4) (8), one per line:\n- material 1: \"Final title and abstract\" | last usable date: 2027-05-10 | feeds: \"programme publication\"\n- material 2: \"Bio\" | last usable date: 2027-05-10 | feeds: \"programme publication\"\n- material 3: \"A/V requirements\" | last usable date: 2027-05-27 | feeds: \"the venue equipment order\"\n- material 4: \"Headshot\" | last usable date: 2027-05-28 | feeds: \"badge print\"\n- material 5: \"Accessibility and dietary needs\" | last usable date: 2027-05-30 | feeds: \"catering lock\"\n- material 6: \"Recording consent\" | last usable date: 2027-05-31 | feeds: \"the camera crew booking\"\n- material 7: \"Travel and arrival details\" | last usable date: 2027-06-03 | feeds: \"the on-site plan\"\n- material 8: \"Slides\" | last usable date: 2027-06-08 | feeds: \"slide upload\"",
 "notes": "",
 "facts": "Verdict: \"run the day\" | ready: yes | fix-level findings: 1\nSelf-set lines: an ask sent 21 days before each last usable date (or at once, when that has passed) | a tight window under 7 days | low contact hours under 2 a week | the thank-you 3 days after the event | the travel-data deletion 7 days after the event unless entered | a summary cap of 40 words | a thank-you cap of 120 words. The skill's own: roughly five speakers before the packet outranks the contact | the first reminder at roughly half the remaining time and the second at the deadline | a logistics note 48 hours out | one week out | a check-in call two to three weeks out | feedback within a week or two (the page uses 14 days). Never invented: a visa lead time, a fee or its figure, a perk nobody promised.\nStage (Q1): \"the event is next week\" | chosen: \"the event is next week\" | the dates say: \"the event is next week\" | consequence: Only the day is still changeable: anything missing is now a communication problem - tell each speaker what happens without it, then send the 48-hour note and the morning-of message.\nContact (step 2): \"Tom Hallowick and Ana Ruiz\" | kind: a named pair | response window: \"the same working day\" | on-site host: \"Tom Hallowick and Ana Ruiz\"\n  contact must: [copy \"Tom Hallowick and Ana Ruiz\" exactly as the name; say one name, one address and one stated response window (the word \"window\")]\nCollection ladder (step 3) - in this order, each pinned to its last usable date, never the event date - 8:\n- material 1: \"Final title and abstract\" | ask by: 2027-06-04 (at once) | first reminder: 2027-05-22 | second reminder: 2027-05-10 | last usable: 2027-05-10 | feeds: \"programme publication\" | speakers still owing: 0 of 5 | passed: yes\n  must: [material \"Final title and abstract\" exactly; ask_by 2027-06-04; last_usable 2027-05-10; feeds \"programme publication\"]\n- material 2: \"Bio\" | ask by: 2027-06-04 (at once) | first reminder: 2027-05-22 | second reminder: 2027-05-10 | last usable: 2027-05-10 | feeds: \"programme publication\" | speakers still owing: 0 of 5 | passed: yes\n  must: [material \"Bio\" exactly; ask_by 2027-06-04; last_usable 2027-05-10; feeds \"programme publication\"]\n- material 3: \"A/V requirements\" | ask by: 2027-06-04 (at once) | first reminder: 2027-05-31 | second reminder: 2027-05-27 | last usable: 2027-05-27 | feeds: \"the venue equipment order\" | speakers still owing: 0 of 5 | passed: yes\n  must: [material \"A/V requirements\" exactly; ask_by 2027-06-04; last_usable 2027-05-27; feeds \"the venue equipment order\"]\n- material 4: \"Headshot\" | ask by: 2027-06-04 (at once) | first reminder: 2027-05-31 | second reminder: 2027-05-28 | last usable: 2027-05-28 | feeds: \"badge print\" | speakers still owing: 2 of 5 | passed: yes\n  must: [material \"Headshot\" exactly; ask_by 2027-06-04; last_usable 2027-05-28; feeds \"badge print\"]\n- material 5: \"Accessibility and dietary needs\" | ask by: 2027-06-04 (at once) | first reminder: 2027-06-01 | second reminder: 2027-05-30 | last usable: 2027-05-30 | feeds: \"catering lock\" | speakers still owing: 0 of 5 | passed: yes\n  must: [material \"Accessibility and dietary needs\" exactly; ask_by 2027-06-04; last_usable 2027-05-30; feeds \"catering lock\"]\n- material 6: \"Recording consent\" | ask by: 2027-06-04 (at once) | first reminder: 2027-06-02 | second reminder: 2027-05-31 | last usable: 2027-05-31 | feeds: \"the camera crew booking\" | speakers still owing: 0 of 5 | passed: yes\n  must: [material \"Recording consent\" exactly; ask_by 2027-06-04; last_usable 2027-05-31; feeds \"the camera crew booking\"]\n- material 7: \"Travel and arrival details\" | ask by: 2027-06-04 (at once) | first reminder: 2027-06-03 | second reminder: 2027-06-03 | last usable: 2027-06-03 | feeds: \"the on-site plan\" | speakers still owing: 0 of 2 | passed: yes\n  must: [material \"Travel and arrival details\" exactly; ask_by 2027-06-04; last_usable 2027-06-03; feeds \"the on-site plan\"]\n- material 8: \"Slides\" | ask by: 2027-06-04 (at once) | first reminder: 2027-06-06 | second reminder: 2027-06-08 | last usable: 2027-06-08 | feeds: \"slide upload\" | speakers still owing: 5 of 5 | passed: no\n  must: [material \"Slides\" exactly; ask_by 2027-06-04; last_usable 2027-06-08; feeds \"slide upload\"]\nStatus grid (one line per speaker; each list names materials):\n- speaker 1: \"Oskar Lind\" | received: [\"Final title and abstract\"; \"Bio\"; \"A/V requirements\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Recording consent\"; \"Travel and arrival details\"] | due: [\"Slides\"] | overdue: [none] | not applicable: [none]\n- speaker 2: \"Priya Desai\" | received: [\"Final title and abstract\"; \"Bio\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Recording consent\"] | due: [\"Slides\"] | overdue: [\"Headshot\"] | not applicable: [\"Travel and arrival details\"]\n- speaker 3: \"Rui Costa\" | received: [\"Final title and abstract\"; \"Bio\"; \"A/V requirements\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Recording consent\"; \"Travel and arrival details\"] | due: [\"Slides\"] | overdue: [none] | not applicable: [none]\n- speaker 4: \"Sara Nyberg\" | received: [\"Final title and abstract\"; \"Bio\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Recording consent\"] | due: [\"Slides\"] | overdue: [\"Headshot\"] | not applicable: [\"Travel and arrival details\"]\n- speaker 5: \"Theo Brandt\" | received: [\"Final title and abstract\"; \"Bio\"; \"A/V requirements\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Recording consent\"] | due: [\"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\nSpeaker-care depth - pick: \"Written speaker packet\"\n- rung 1: \"Written speaker packet\" | moved: made the pick by Q4: a deadline that lands on a single day (2027-05-10); promoted by the vendor pole: the packet and the named contact matter more here, not less (judged)\n- rung 2: \"Named point of contact\"\n- rung 3: \"Linked orientation course\"\n- rung 4: \"Travel and lodging concierge\" | moved: promoted by Q2: an international speaker - and wherever a visa letter is needed\n- below the line, delivered and never ranked: \"Speakers' dinner and gifts\" | reason: Q3: already promised - delivered, never ranked\n- deleted, not demoted: \"Improvised per-speaker care with nothing written down\" | reason: it drops a commitment: nothing outside one person's memory says what was promised\n  depth reason must: [name the interview answer behind the pick; say improvised care with nothing written down is deleted (the word \"deleted\")]\nPre-event cadence - pick: \"Packet plus two checkpoints\"\n- rung 1: \"Packet plus two checkpoints\"\n- rung 2: \"Milestone cadence\"\n- rung 3: \"Single packet at acceptance\"\n- rung 4: \"Per-speaker check-in call\"\n- deleted, not demoted: \"One broadcast thread with every speaker CC'd\" | reason: it leaks each speaker's address to all the others, and a personal deadline addressed to twenty people reads as somebody else's problem\n- notes: Q1: next week - only the 48-hour note and the morning-of message are still ahead. Per speaker, not as one broadcast: move up to the milestone cadence for the speakers Q2 and Q8 flag, and to the check-in call for keynotes and first-time speakers.\n  cadence reason must: [say the cadence runs per speaker, never as one broadcast (the words \"per speaker\")]\nPer-speaker cadence, in speaker order:\n- speaker 1: \"Oskar Lind\" | cadence: \"Per-speaker check-in call\" | because: a keynote | touches: [2027-06-04 confirmation and the packet; 2027-06-08 slide deadline; 2027-06-08 48 hours out; 2027-06-10 the morning of]\n- speaker 2: \"Priya Desai\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-06-04 the packet; 2027-06-08 logistics note, 48 hours out]\n- speaker 3: \"Rui Costa\" | cadence: \"Per-speaker check-in call\" | because: Q8: a first talk; Q2: international travel | touches: [2027-06-04 confirmation and the packet; 2027-06-08 slide deadline; 2027-06-08 48 hours out; 2027-06-10 the morning of]\n- speaker 4: \"Sara Nyberg\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-06-04 the packet; 2027-06-08 logistics note, 48 hours out]\n- speaker 5: \"Theo Brandt\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-06-04 the packet; 2027-06-08 logistics note, 48 hours out]\nRecording (Q7) - one per format, in this order - 2:\n- format 1: \"Keynote\" | intent: \"recorded and published\" | told: \"recorded and published\" | where told: \"the acceptance email\" | posture: \"Consent collected at acceptance\" | opt-out: \"opt-out offered\" | mismatch: none | moved: made the pick by Q7: told in the acceptance email, not the submission form - the only rung that covers invited speakers\n  must: [format \"Keynote\" exactly; posture \"Consent collected at acceptance\" exactly; the opt_out uses the words \"offered\"]\n- format 2: \"Talk\" | intent: \"recorded and published\" | told: \"recorded and published\" | where told: \"the acceptance email\" | posture: \"Granular per-format consent\" | opt-out: \"opt-out offered\" | mismatch: none | moved: made the pick by Q10: employer-restricted material (Priya Desai); an opt-out has to be honoured at the door (Theo Brandt)\n  must: [format \"Talk\" exactly; posture \"Granular per-format consent\" exactly; the opt_out uses the words \"offered\"]\nRecording menu, deleted not demoted: \"Recording on the assumption that silence is consent\" | reason: a published video cannot be unpublished from the copies people already have. PyCon US offers an opt-out for Talks and Charlas and states plainly that you cannot opt out of recording for lightning talks.\nFirst-time speakers (Q8) - asked, never inferred - 1:\n- name: \"Rui Costa\" | first time: \"yes\" | care: [offer the room: the actual stage, the actual clicker and the actual confidence monitor before the doors open; say what the room will be like: audience size, whether questions happen, who introduces them, the timing signals, what happens if a demo fails; a live briefing: a short call or a session on arrival; a check-in call (two to three weeks out has passed - hold it this week); rehearsal, mentors and talk feedback come from event-speaker-coaching, offered to every speaker in the same words]\n  must: [name \"Rui Costa\" exactly; care says offer the room (the word \"room\"); care names the check-in call (the word \"call\")]\nPromised terms (Q3) - in this order, delivered and never renegotiated or added to - 6:\n- speaker: \"All speakers\" | term: \"free ticket\" | where stated: \"the acceptance email\" | status: delivered\n  must: [speaker \"All speakers\" and term \"free ticket\" exactly; the status uses the word \"delivered\"]\n- speaker: \"All speakers\" | term: \"speakers' dinner\" | where stated: \"the acceptance email\" | status: delivered\n  must: [speaker \"All speakers\" and term \"speakers' dinner\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Oskar Lind\" | term: \"travel\" | where stated: \"the acceptance email\" | status: delivered\n  must: [speaker \"Oskar Lind\" and term \"travel\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Oskar Lind\" | term: \"lodging 1 night\" | where stated: \"the acceptance email\" | status: delivered\n  must: [speaker \"Oskar Lind\" and term \"lodging 1 night\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Rui Costa\" | term: \"travel\" | where stated: \"the acceptance email\" | status: delivered\n  must: [speaker \"Rui Costa\" and term \"travel\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Rui Costa\" | term: \"lodging 1 night\" | where stated: \"the acceptance email\" | status: delivered\n  must: [speaker \"Rui Costa\" and term \"lodging 1 night\" exactly; the status uses the word \"delivered\"]\nTravel - 2 travelling, in speaker order:\n- speaker: \"Oskar Lind\" | travelling: domestic | items: [mechanism: the event books and pays - said in the packet in one sentence; what is covered and what is not, with the cap on each, as promised: travel and lodging; itinerary: arrival and departure times by 2027-06-03; retention: delete passport, ticket and payment details on 2027-06-17]\n  must: [speaker \"Oskar Lind\" exactly; the items use the word \"book\"]\n- speaker: \"Rui Costa\" | travelling: international | items: [mechanism: the event books and pays - said in the packet in one sentence; what is covered and what is not, with the cap on each, as promised: travel and lodging; itinerary: arrival and departure times by 2027-06-03; visa: ask now whether an invitation letter is needed and who signs it - lead times are jurisdiction-specific, none is invented here; retention: delete passport, ticket and payment details on 2027-06-17]\n  must: [speaker \"Rui Costa\" exactly; the items use the word \"book\"; the items use the word \"visa\"]\nOn-site (step 9): green room: no | green room line: \"a reserved table behind the stage and a locked cupboard for bags\" | A/V: \"a house A/V technician\" | confidence monitor: yes | mixed room: no\n- day-of: \"Oskar Lind\" | slot: \"2027-06-10 09:00\" | host: \"Tom Hallowick and Ana Ruiz\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-06-10 before the audience is in\" | green room: \"a reserved table behind the stage and a locked cupboard for bags\" | notes: [travelling - know the arrival time before the day]\n- day-of: \"Priya Desai\" | slot: \"2027-06-10 10:30\" | host: \"Tom Hallowick and Ana Ruiz\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-06-10 before the audience is in\" | green room: \"a reserved table behind the stage and a locked cupboard for bags\" | notes: [employer-restricted material - ask before the deck is redistributed]\n- day-of: \"Rui Costa\" | slot: \"2027-06-10 13:00\" | host: \"Tom Hallowick and Ana Ruiz\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-06-10 before the audience is in\" | green room: \"a reserved table behind the stage and a locked cupboard for bags\" | notes: [first talk - offer the room before the doors open; travelling - know the arrival time before the day]\n- day-of: \"Sara Nyberg\" | slot: \"2027-06-10 14:30\" | host: \"Tom Hallowick and Ana Ruiz\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-06-10 before the audience is in\" | green room: \"a reserved table behind the stage and a locked cupboard for bags\" | notes: [none]\n- day-of: \"Theo Brandt\" | slot: \"2027-06-10 16:00\" | host: \"Tom Hallowick and Ana Ruiz\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-06-10 before the audience is in\" | green room: \"a reserved table behind the stage and a locked cupboard for bags\" | notes: [opted out of recording - on the crew's per-session list]\nSlide deadline (step 7): 2027-06-08 | consequence: \"nothing - you present from your own laptop\" | honest none: yes | deck collected after the talk: no\nAfter the event (step 10), in this order:\n- thank-you: 2027-06-13 | individual, from the named contact, one specific thing about the talk; ask nothing yet (within a few days - 3 days, self-set)\n- feedback: 2027-06-24 | what you actually have, anonymous comments in full minus abuse, the host's own read; never with a request (within a week or two)\n- recording link: 2027-07-01 | tell the speaker before it goes live; the direct link to their own session; where else it lives; permission to share it (your own 21-day promise)\n- retention pass: 2027-06-17 | delete travel documents, ID scans and payment details; keep the consent record\nPacket must: [title contains \"Northfield Security Summit 2027\"; contact contains \"Tom Hallowick and Ana Ruiz\"; what_we_need follows the ladder's order with each last usable date as by; schedule copies each speaker's slot; venue_and_av says \"no green room\" and names \"a reserved table behind the stage and a locked cupboard for bags\" exactly; travel_and_expenses names only promised terms; on_the_day names the host and the tech check and says no sales pitch; thank_you at most 120 words and says the recording link is \"to be sent when published\"] | packet note must: [say what happens next]\nFindings (7):\n[fix] overdue_4 (ladder): \"Headshot\": the last usable date 2027-05-28 has passed and 2 speakers have not sent it (Priya Desai and Sara Nyberg) - it is now a communication problem: tell each speaker what happens without it (badge print), and offer what is still possible.\n[check] tight_8 (ladder): \"Slides\": 4 days between the ask and the last usable date - under the 7-day line (self-set); ask today.\n[check] restricted_2 (recording): Q10: \"Priya Desai\" presents employer-restricted material - granular per-format consent for \"Talk\"; ask before the deck is redistributed (the page's reading); route anything legal through \"the events finance desk\".\n[check] visa (travel): Q2: an international speaker - ask early whether a visa invitation letter is needed and who signs it; lead times are jurisdiction-specific, so check the destination's current published requirements rather than assuming.\n[info] stage_nextweek (stage): Q1: the event is next week. Only the day is still changeable: anything missing is now a communication problem - tell each speaker what happens without it, then send the 48-hour note and the morning-of message.\n[info] same_day (ladder): Q4: two or more materials are due on 2027-05-10 - a deadline landing on a single day.\n[info] scope (scope): The page starts after acceptance: promised terms are delivered, never renegotiated or added to; it never invents a perk, a fee, a date, a person, a room or a piece of equipment, and never reads identity, gender or experience from a name."
}

Reply:

{
 "task": "plan",
 "summary": "Run the day: two headshots missed badge print and one speaker's material is employer-restricted - tell each speaker what that means, then send the 48-hour note.",
 "verdict": "run the day",
 "contact": {
  "name": "Tom Hallowick and Ana Ruiz",
  "reason": "One name, one address and one stated response window (the same working day) for every speaker message."
 },
 "ladder": [
  {
   "material": "Final title and abstract",
   "ask_by": "2027-06-04",
   "last_usable": "2027-05-10",
   "feeds": "programme publication"
  },
  {
   "material": "Bio",
   "ask_by": "2027-06-04",
   "last_usable": "2027-05-10",
   "feeds": "programme publication"
  },
  {
   "material": "A/V requirements",
   "ask_by": "2027-06-04",
   "last_usable": "2027-05-27",
   "feeds": "the venue equipment order"
  },
  {
   "material": "Headshot",
   "ask_by": "2027-06-04",
   "last_usable": "2027-05-28",
   "feeds": "badge print"
  },
  {
   "material": "Accessibility and dietary needs",
   "ask_by": "2027-06-04",
   "last_usable": "2027-05-30",
   "feeds": "catering lock"
  },
  {
   "material": "Recording consent",
   "ask_by": "2027-06-04",
   "last_usable": "2027-05-31",
   "feeds": "the camera crew booking"
  },
  {
   "material": "Travel and arrival details",
   "ask_by": "2027-06-04",
   "last_usable": "2027-06-03",
   "feeds": "the on-site plan"
  },
  {
   "material": "Slides",
   "ask_by": "2027-06-04",
   "last_usable": "2027-06-08",
   "feeds": "slide upload"
  }
 ],
 "depth": {
  "pick": "Written speaker packet",
  "reason": "Q4: a deadline that lands on a single day (2027-05-10). Improvised care with nothing written down is deleted: it drops a commitment."
 },
 "cadence": {
  "pick": "Packet plus two checkpoints",
  "reason": "The packet plus two checkpoints is the efficient default, run per speaker: the milestone cadence and the check-in call go to the speakers the page flags, never one broadcast thread."
 },
 "recording": [
  {
   "format": "Keynote",
   "posture": "Consent collected at acceptance",
   "opt_out": "opt-out offered"
  },
  {
   "format": "Talk",
   "posture": "Granular per-format consent",
   "opt_out": "opt-out offered"
  }
 ],
 "first_timers": [
  {
   "name": "Rui Costa",
   "care": "Offer the room before the doors open - the actual stage and clicker - and say what the room will be like; hold a short check-in call this week."
  }
 ],
 "promised": [
  {
   "speaker": "All speakers",
   "term": "free ticket",
   "status": "Delivered as promised, never renegotiated."
  },
  {
   "speaker": "All speakers",
   "term": "speakers' dinner",
   "status": "Delivered as promised, never renegotiated."
  },
  {
   "speaker": "Oskar Lind",
   "term": "travel",
   "status": "Delivered as promised, never renegotiated."
  },
  {
   "speaker": "Oskar Lind",
   "term": "lodging 1 night",
   "status": "Delivered as promised, never renegotiated."
  },
  {
   "speaker": "Rui Costa",
   "term": "travel",
   "status": "Delivered as promised, never renegotiated."
  },
  {
   "speaker": "Rui Costa",
   "term": "lodging 1 night",
   "status": "Delivered as promised, never renegotiated."
  }
 ],
 "travel": [
  {
   "speaker": "Oskar Lind",
   "items": [
    "mechanism: the event books and pays - said in the packet in one sentence",
    "what is covered and what is not, with the cap on each, as promised: travel and lodging",
    "itinerary: arrival and departure times by 2027-06-03",
    "retention: delete passport, ticket and payment details on 2027-06-17"
   ]
  },
  {
   "speaker": "Rui Costa",
   "items": [
    "mechanism: the event books and pays - said in the packet in one sentence",
    "what is covered and what is not, with the cap on each, as promised: travel and lodging",
    "itinerary: arrival and departure times by 2027-06-03",
    "visa: ask now whether an invitation letter is needed and who signs it - lead times are jurisdiction-specific, none is invented here",
    "retention: delete passport, ticket and payment details on 2027-06-17"
   ]
  }
 ],
 "caveats": [
  "\"Headshot\": the last usable date 2027-05-28 has passed and 2 speakers have not sent it (Priya Desai and Sara Nyberg) - it is now a communication problem: tell each speaker what happens without it (badge print), and offer what is still possible.",
  "\"Slides\": 4 days between the ask and the last usable date - under the 7-day line (self-set); ask today.",
  "\"Priya Desai\" presents employer-restricted material - granular per-format consent for \"Talk\"; ask before the deck is redistributed (the page's reading); route anything legal through \"the events finance desk\".",
  "an international speaker - ask early whether a visa invitation letter is needed and who signs it; lead times are jurisdiction-specific, so check the destination's current published requirements rather than assuming."
 ]
}

The page's check: kept - nothing to flag

A summit next week, two headshots missing - packet

Verdict: run the day; ready: yes; stage: the event is next week; contact: Tom Hallowick and Ana Ruiz; depth: Written speaker packet; cadence: Packet plus two checkpoints; 5 speakers, 8 materials, 2 formats, 1 first-time; 1 fix-level findings.

Input:

{
 "task": "packet",
 "event": "Event: \"Northfield Security Summit 2027\" | dates: 2027-06-10 (1 day) | city: \"Northfield\" | venue: \"the Northfield Conference Centre\" | as of: 2027-06-04\nQ1 sequence position chosen: \"the event is next week\" | acceptance emails sent: 2027-04-20 | days from the as-of date to the event: 6\nQ2 speakers: 5 | session formats: 2 | travelling domestically: 1 | travelling internationally: 1\nQ3 what the plan and the budget line deliver now: [lodging; travel; ticket; dinner] | travel mechanism: \"the event books and pays\"\nQ5 edition: \"a one-off edition\" | who owns the event: \"vendor or user conference\"\nQ6 contact: \"Tom Hallowick and Ana Ruiz\" | response window: \"the same working day\" | contact hours a week: 10 | on-site host: \"the contact\" | money and contracts: \"the events finance desk\"\nQ9 venue: green room: no | substitute: \"a reserved table behind the stage and a locked cupboard for bags\" | A/V: \"a house A/V technician\" | confidence monitor: yes\nQ11 room: \"developers only\"\nQ12 recurring moment promised: no | coach: \"nobody named\"\nQ13 outside the region's main hub: no\nSlides: consequence if the deadline slips: \"nothing - you present from your own laptop\" | deck collected after the talk for attendees: no | days from the event to the recording published: 21 | travel-data deletion date: 2027-06-17",
 "speakers": "Formats (Q7) (2), one per line:\n- format 1: \"Keynote\" | recording intent: \"recorded and published\" | speakers were told: \"recorded and published\" | where told: \"the acceptance email\" | opt-out: \"opt-out offered\"\n- format 2: \"Talk\" | recording intent: \"recorded and published\" | speakers were told: \"recorded and published\" | where told: \"the acceptance email\" | opt-out: \"opt-out offered\"\nSpeakers (5), one per line:\n- speaker 1: \"Oskar Lind\" | format: \"Keynote\" | slot: \"2027-06-10 09:00\" | travelling: domestic | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"; \"travel\"; \"lodging 1 night\"; \"speakers' dinner\"] | where stated: \"the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract; headshot; travel and arrival details; accessibility and dietary needs]\n- speaker 2: \"Priya Desai\" | format: \"Talk\" | slot: \"2027-06-10 10:30\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"; \"speakers' dinner\"] | where stated: \"the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): yes | received: [bio; final title and abstract; accessibility and dietary needs]\n- speaker 3: \"Rui Costa\" | format: \"Talk\" | slot: \"2027-06-10 13:00\" | travelling: international | first time (Q8): \"yes\" | promised (Q3): [\"free ticket\"; \"travel\"; \"lodging 1 night\"; \"speakers' dinner\"] | where stated: \"the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract; headshot; travel and arrival details; accessibility and dietary needs]\n- speaker 4: \"Sara Nyberg\" | format: \"Talk\" | slot: \"2027-06-10 14:30\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"; \"speakers' dinner\"] | where stated: \"the acceptance email\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract; accessibility and dietary needs]\n- speaker 5: \"Theo Brandt\" | format: \"Talk\" | slot: \"2027-06-10 16:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free ticket\"; \"speakers' dinner\"] | where stated: \"the acceptance email\" | recording: \"opted out\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract; headshot; accessibility and dietary needs]",
 "materials": "Materials (Q4) (8), one per line:\n- material 1: \"Final title and abstract\" | last usable date: 2027-05-10 | feeds: \"programme publication\"\n- material 2: \"Bio\" | last usable date: 2027-05-10 | feeds: \"programme publication\"\n- material 3: \"A/V requirements\" | last usable date: 2027-05-27 | feeds: \"the venue equipment order\"\n- material 4: \"Headshot\" | last usable date: 2027-05-28 | feeds: \"badge print\"\n- material 5: \"Accessibility and dietary needs\" | last usable date: 2027-05-30 | feeds: \"catering lock\"\n- material 6: \"Recording consent\" | last usable date: 2027-05-31 | feeds: \"the camera crew booking\"\n- material 7: \"Travel and arrival details\" | last usable date: 2027-06-03 | feeds: \"the on-site plan\"\n- material 8: \"Slides\" | last usable date: 2027-06-08 | feeds: \"slide upload\"",
 "notes": "",
 "facts": "Verdict: \"run the day\" | ready: yes | fix-level findings: 1\nSelf-set lines: an ask sent 21 days before each last usable date (or at once, when that has passed) | a tight window under 7 days | low contact hours under 2 a week | the thank-you 3 days after the event | the travel-data deletion 7 days after the event unless entered | a summary cap of 40 words | a thank-you cap of 120 words. The skill's own: roughly five speakers before the packet outranks the contact | the first reminder at roughly half the remaining time and the second at the deadline | a logistics note 48 hours out | one week out | a check-in call two to three weeks out | feedback within a week or two (the page uses 14 days). Never invented: a visa lead time, a fee or its figure, a perk nobody promised.\nStage (Q1): \"the event is next week\" | chosen: \"the event is next week\" | the dates say: \"the event is next week\" | consequence: Only the day is still changeable: anything missing is now a communication problem - tell each speaker what happens without it, then send the 48-hour note and the morning-of message.\nContact (step 2): \"Tom Hallowick and Ana Ruiz\" | kind: a named pair | response window: \"the same working day\" | on-site host: \"Tom Hallowick and Ana Ruiz\"\n  contact must: [copy \"Tom Hallowick and Ana Ruiz\" exactly as the name; say one name, one address and one stated response window (the word \"window\")]\nCollection ladder (step 3) - in this order, each pinned to its last usable date, never the event date - 8:\n- material 1: \"Final title and abstract\" | ask by: 2027-06-04 (at once) | first reminder: 2027-05-22 | second reminder: 2027-05-10 | last usable: 2027-05-10 | feeds: \"programme publication\" | speakers still owing: 0 of 5 | passed: yes\n  must: [material \"Final title and abstract\" exactly; ask_by 2027-06-04; last_usable 2027-05-10; feeds \"programme publication\"]\n- material 2: \"Bio\" | ask by: 2027-06-04 (at once) | first reminder: 2027-05-22 | second reminder: 2027-05-10 | last usable: 2027-05-10 | feeds: \"programme publication\" | speakers still owing: 0 of 5 | passed: yes\n  must: [material \"Bio\" exactly; ask_by 2027-06-04; last_usable 2027-05-10; feeds \"programme publication\"]\n- material 3: \"A/V requirements\" | ask by: 2027-06-04 (at once) | first reminder: 2027-05-31 | second reminder: 2027-05-27 | last usable: 2027-05-27 | feeds: \"the venue equipment order\" | speakers still owing: 0 of 5 | passed: yes\n  must: [material \"A/V requirements\" exactly; ask_by 2027-06-04; last_usable 2027-05-27; feeds \"the venue equipment order\"]\n- material 4: \"Headshot\" | ask by: 2027-06-04 (at once) | first reminder: 2027-05-31 | second reminder: 2027-05-28 | last usable: 2027-05-28 | feeds: \"badge print\" | speakers still owing: 2 of 5 | passed: yes\n  must: [material \"Headshot\" exactly; ask_by 2027-06-04; last_usable 2027-05-28; feeds \"badge print\"]\n- material 5: \"Accessibility and dietary needs\" | ask by: 2027-06-04 (at once) | first reminder: 2027-06-01 | second reminder: 2027-05-30 | last usable: 2027-05-30 | feeds: \"catering lock\" | speakers still owing: 0 of 5 | passed: yes\n  must: [material \"Accessibility and dietary needs\" exactly; ask_by 2027-06-04; last_usable 2027-05-30; feeds \"catering lock\"]\n- material 6: \"Recording consent\" | ask by: 2027-06-04 (at once) | first reminder: 2027-06-02 | second reminder: 2027-05-31 | last usable: 2027-05-31 | feeds: \"the camera crew booking\" | speakers still owing: 0 of 5 | passed: yes\n  must: [material \"Recording consent\" exactly; ask_by 2027-06-04; last_usable 2027-05-31; feeds \"the camera crew booking\"]\n- material 7: \"Travel and arrival details\" | ask by: 2027-06-04 (at once) | first reminder: 2027-06-03 | second reminder: 2027-06-03 | last usable: 2027-06-03 | feeds: \"the on-site plan\" | speakers still owing: 0 of 2 | passed: yes\n  must: [material \"Travel and arrival details\" exactly; ask_by 2027-06-04; last_usable 2027-06-03; feeds \"the on-site plan\"]\n- material 8: \"Slides\" | ask by: 2027-06-04 (at once) | first reminder: 2027-06-06 | second reminder: 2027-06-08 | last usable: 2027-06-08 | feeds: \"slide upload\" | speakers still owing: 5 of 5 | passed: no\n  must: [material \"Slides\" exactly; ask_by 2027-06-04; last_usable 2027-06-08; feeds \"slide upload\"]\nStatus grid (one line per speaker; each list names materials):\n- speaker 1: \"Oskar Lind\" | received: [\"Final title and abstract\"; \"Bio\"; \"A/V requirements\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Recording consent\"; \"Travel and arrival details\"] | due: [\"Slides\"] | overdue: [none] | not applicable: [none]\n- speaker 2: \"Priya Desai\" | received: [\"Final title and abstract\"; \"Bio\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Recording consent\"] | due: [\"Slides\"] | overdue: [\"Headshot\"] | not applicable: [\"Travel and arrival details\"]\n- speaker 3: \"Rui Costa\" | received: [\"Final title and abstract\"; \"Bio\"; \"A/V requirements\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Recording consent\"; \"Travel and arrival details\"] | due: [\"Slides\"] | overdue: [none] | not applicable: [none]\n- speaker 4: \"Sara Nyberg\" | received: [\"Final title and abstract\"; \"Bio\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Recording consent\"] | due: [\"Slides\"] | overdue: [\"Headshot\"] | not applicable: [\"Travel and arrival details\"]\n- speaker 5: \"Theo Brandt\" | received: [\"Final title and abstract\"; \"Bio\"; \"A/V requirements\"; \"Headshot\"; \"Accessibility and dietary needs\"; \"Recording consent\"] | due: [\"Slides\"] | overdue: [none] | not applicable: [\"Travel and arrival details\"]\nSpeaker-care depth - pick: \"Written speaker packet\"\n- rung 1: \"Written speaker packet\" | moved: made the pick by Q4: a deadline that lands on a single day (2027-05-10); promoted by the vendor pole: the packet and the named contact matter more here, not less (judged)\n- rung 2: \"Named point of contact\"\n- rung 3: \"Linked orientation course\"\n- rung 4: \"Travel and lodging concierge\" | moved: promoted by Q2: an international speaker - and wherever a visa letter is needed\n- below the line, delivered and never ranked: \"Speakers' dinner and gifts\" | reason: Q3: already promised - delivered, never ranked\n- deleted, not demoted: \"Improvised per-speaker care with nothing written down\" | reason: it drops a commitment: nothing outside one person's memory says what was promised\n  depth reason must: [name the interview answer behind the pick; say improvised care with nothing written down is deleted (the word \"deleted\")]\nPre-event cadence - pick: \"Packet plus two checkpoints\"\n- rung 1: \"Packet plus two checkpoints\"\n- rung 2: \"Milestone cadence\"\n- rung 3: \"Single packet at acceptance\"\n- rung 4: \"Per-speaker check-in call\"\n- deleted, not demoted: \"One broadcast thread with every speaker CC'd\" | reason: it leaks each speaker's address to all the others, and a personal deadline addressed to twenty people reads as somebody else's problem\n- notes: Q1: next week - only the 48-hour note and the morning-of message are still ahead. Per speaker, not as one broadcast: move up to the milestone cadence for the speakers Q2 and Q8 flag, and to the check-in call for keynotes and first-time speakers.\n  cadence reason must: [say the cadence runs per speaker, never as one broadcast (the words \"per speaker\")]\nPer-speaker cadence, in speaker order:\n- speaker 1: \"Oskar Lind\" | cadence: \"Per-speaker check-in call\" | because: a keynote | touches: [2027-06-04 confirmation and the packet; 2027-06-08 slide deadline; 2027-06-08 48 hours out; 2027-06-10 the morning of]\n- speaker 2: \"Priya Desai\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-06-04 the packet; 2027-06-08 logistics note, 48 hours out]\n- speaker 3: \"Rui Costa\" | cadence: \"Per-speaker check-in call\" | because: Q8: a first talk; Q2: international travel | touches: [2027-06-04 confirmation and the packet; 2027-06-08 slide deadline; 2027-06-08 48 hours out; 2027-06-10 the morning of]\n- speaker 4: \"Sara Nyberg\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-06-04 the packet; 2027-06-08 logistics note, 48 hours out]\n- speaker 5: \"Theo Brandt\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-06-04 the packet; 2027-06-08 logistics note, 48 hours out]\nRecording (Q7) - one per format, in this order - 2:\n- format 1: \"Keynote\" | intent: \"recorded and published\" | told: \"recorded and published\" | where told: \"the acceptance email\" | posture: \"Consent collected at acceptance\" | opt-out: \"opt-out offered\" | mismatch: none | moved: made the pick by Q7: told in the acceptance email, not the submission form - the only rung that covers invited speakers\n  must: [format \"Keynote\" exactly; posture \"Consent collected at acceptance\" exactly; the opt_out uses the words \"offered\"]\n- format 2: \"Talk\" | intent: \"recorded and published\" | told: \"recorded and published\" | where told: \"the acceptance email\" | posture: \"Granular per-format consent\" | opt-out: \"opt-out offered\" | mismatch: none | moved: made the pick by Q10: employer-restricted material (Priya Desai); an opt-out has to be honoured at the door (Theo Brandt)\n  must: [format \"Talk\" exactly; posture \"Granular per-format consent\" exactly; the opt_out uses the words \"offered\"]\nRecording menu, deleted not demoted: \"Recording on the assumption that silence is consent\" | reason: a published video cannot be unpublished from the copies people already have. PyCon US offers an opt-out for Talks and Charlas and states plainly that you cannot opt out of recording for lightning talks.\nFirst-time speakers (Q8) - asked, never inferred - 1:\n- name: \"Rui Costa\" | first time: \"yes\" | care: [offer the room: the actual stage, the actual clicker and the actual confidence monitor before the doors open; say what the room will be like: audience size, whether questions happen, who introduces them, the timing signals, what happens if a demo fails; a live briefing: a short call or a session on arrival; a check-in call (two to three weeks out has passed - hold it this week); rehearsal, mentors and talk feedback come from event-speaker-coaching, offered to every speaker in the same words]\n  must: [name \"Rui Costa\" exactly; care says offer the room (the word \"room\"); care names the check-in call (the word \"call\")]\nPromised terms (Q3) - in this order, delivered and never renegotiated or added to - 6:\n- speaker: \"All speakers\" | term: \"free ticket\" | where stated: \"the acceptance email\" | status: delivered\n  must: [speaker \"All speakers\" and term \"free ticket\" exactly; the status uses the word \"delivered\"]\n- speaker: \"All speakers\" | term: \"speakers' dinner\" | where stated: \"the acceptance email\" | status: delivered\n  must: [speaker \"All speakers\" and term \"speakers' dinner\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Oskar Lind\" | term: \"travel\" | where stated: \"the acceptance email\" | status: delivered\n  must: [speaker \"Oskar Lind\" and term \"travel\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Oskar Lind\" | term: \"lodging 1 night\" | where stated: \"the acceptance email\" | status: delivered\n  must: [speaker \"Oskar Lind\" and term \"lodging 1 night\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Rui Costa\" | term: \"travel\" | where stated: \"the acceptance email\" | status: delivered\n  must: [speaker \"Rui Costa\" and term \"travel\" exactly; the status uses the word \"delivered\"]\n- speaker: \"Rui Costa\" | term: \"lodging 1 night\" | where stated: \"the acceptance email\" | status: delivered\n  must: [speaker \"Rui Costa\" and term \"lodging 1 night\" exactly; the status uses the word \"delivered\"]\nTravel - 2 travelling, in speaker order:\n- speaker: \"Oskar Lind\" | travelling: domestic | items: [mechanism: the event books and pays - said in the packet in one sentence; what is covered and what is not, with the cap on each, as promised: travel and lodging; itinerary: arrival and departure times by 2027-06-03; retention: delete passport, ticket and payment details on 2027-06-17]\n  must: [speaker \"Oskar Lind\" exactly; the items use the word \"book\"]\n- speaker: \"Rui Costa\" | travelling: international | items: [mechanism: the event books and pays - said in the packet in one sentence; what is covered and what is not, with the cap on each, as promised: travel and lodging; itinerary: arrival and departure times by 2027-06-03; visa: ask now whether an invitation letter is needed and who signs it - lead times are jurisdiction-specific, none is invented here; retention: delete passport, ticket and payment details on 2027-06-17]\n  must: [speaker \"Rui Costa\" exactly; the items use the word \"book\"; the items use the word \"visa\"]\nOn-site (step 9): green room: no | green room line: \"a reserved table behind the stage and a locked cupboard for bags\" | A/V: \"a house A/V technician\" | confidence monitor: yes | mixed room: no\n- day-of: \"Oskar Lind\" | slot: \"2027-06-10 09:00\" | host: \"Tom Hallowick and Ana Ruiz\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-06-10 before the audience is in\" | green room: \"a reserved table behind the stage and a locked cupboard for bags\" | notes: [travelling - know the arrival time before the day]\n- day-of: \"Priya Desai\" | slot: \"2027-06-10 10:30\" | host: \"Tom Hallowick and Ana Ruiz\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-06-10 before the audience is in\" | green room: \"a reserved table behind the stage and a locked cupboard for bags\" | notes: [employer-restricted material - ask before the deck is redistributed]\n- day-of: \"Rui Costa\" | slot: \"2027-06-10 13:00\" | host: \"Tom Hallowick and Ana Ruiz\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-06-10 before the audience is in\" | green room: \"a reserved table behind the stage and a locked cupboard for bags\" | notes: [first talk - offer the room before the doors open; travelling - know the arrival time before the day]\n- day-of: \"Sara Nyberg\" | slot: \"2027-06-10 14:30\" | host: \"Tom Hallowick and Ana Ruiz\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-06-10 before the audience is in\" | green room: \"a reserved table behind the stage and a locked cupboard for bags\" | notes: [none]\n- day-of: \"Theo Brandt\" | slot: \"2027-06-10 16:00\" | host: \"Tom Hallowick and Ana Ruiz\" | tech check: \"on the actual stage equipment with a house A/V technician, at a named time on 2027-06-10 before the audience is in\" | green room: \"a reserved table behind the stage and a locked cupboard for bags\" | notes: [opted out of recording - on the crew's per-session list]\nSlide deadline (step 7): 2027-06-08 | consequence: \"nothing - you present from your own laptop\" | honest none: yes | deck collected after the talk: no\nAfter the event (step 10), in this order:\n- thank-you: 2027-06-13 | individual, from the named contact, one specific thing about the talk; ask nothing yet (within a few days - 3 days, self-set)\n- feedback: 2027-06-24 | what you actually have, anonymous comments in full minus abuse, the host's own read; never with a request (within a week or two)\n- recording link: 2027-07-01 | tell the speaker before it goes live; the direct link to their own session; where else it lives; permission to share it (your own 21-day promise)\n- retention pass: 2027-06-17 | delete travel documents, ID scans and payment details; keep the consent record\nPacket must: [title contains \"Northfield Security Summit 2027\"; contact contains \"Tom Hallowick and Ana Ruiz\"; what_we_need follows the ladder's order with each last usable date as by; schedule copies each speaker's slot; venue_and_av says \"no green room\" and names \"a reserved table behind the stage and a locked cupboard for bags\" exactly; travel_and_expenses names only promised terms; on_the_day names the host and the tech check and says no sales pitch; thank_you at most 120 words and says the recording link is \"to be sent when published\"] | packet note must: [say what happens next]\nCarried from the plan: summary: \"Run the day: two headshots missed badge print and one speaker's material is employer-restricted - tell each speaker what that means, then send the 48-hour note.\" | parts matching the page: 3 of 3\nFindings (7):\n[fix] overdue_4 (ladder): \"Headshot\": the last usable date 2027-05-28 has passed and 2 speakers have not sent it (Priya Desai and Sara Nyberg) - it is now a communication problem: tell each speaker what happens without it (badge print), and offer what is still possible.\n[check] tight_8 (ladder): \"Slides\": 4 days between the ask and the last usable date - under the 7-day line (self-set); ask today.\n[check] restricted_2 (recording): Q10: \"Priya Desai\" presents employer-restricted material - granular per-format consent for \"Talk\"; ask before the deck is redistributed (the page's reading); route anything legal through \"the events finance desk\".\n[check] visa (travel): Q2: an international speaker - ask early whether a visa invitation letter is needed and who signs it; lead times are jurisdiction-specific, so check the destination's current published requirements rather than assuming.\n[info] stage_nextweek (stage): Q1: the event is next week. Only the day is still changeable: anything missing is now a communication problem - tell each speaker what happens without it, then send the 48-hour note and the morning-of message.\n[info] same_day (ladder): Q4: two or more materials are due on 2027-05-10 - a deadline landing on a single day.\n[info] scope (scope): The page starts after acceptance: promised terms are delivered, never renegotiated or added to; it never invents a perk, a fee, a date, a person, a room or a piece of equipment, and never reads identity, gender or experience from a name."
}

Reply:

{
 "task": "packet",
 "packet": {
  "title": "Northfield Security Summit 2027 - speaker packet",
  "contact": "Tom Hallowick and Ana Ruiz - replies within the same working day",
  "what_we_need": [
   {
    "material": "Final title and abstract",
    "by": "2027-05-10"
   },
   {
    "material": "Bio",
    "by": "2027-05-10"
   },
   {
    "material": "A/V requirements",
    "by": "2027-05-27"
   },
   {
    "material": "Headshot",
    "by": "2027-05-28"
   },
   {
    "material": "Accessibility and dietary needs",
    "by": "2027-05-30"
   },
   {
    "material": "Recording consent",
    "by": "2027-05-31"
   },
   {
    "material": "Travel and arrival details",
    "by": "2027-06-03"
   },
   {
    "material": "Slides",
    "by": "2027-06-08"
   }
  ],
  "schedule": [
   {
    "speaker": "Oskar Lind",
    "slot": "Keynote, 2027-06-10 09:00"
   },
   {
    "speaker": "Priya Desai",
    "slot": "Talk, 2027-06-10 10:30"
   },
   {
    "speaker": "Rui Costa",
    "slot": "Talk, 2027-06-10 13:00"
   },
   {
    "speaker": "Sara Nyberg",
    "slot": "Talk, 2027-06-10 14:30"
   },
   {
    "speaker": "Theo Brandt",
    "slot": "Talk, 2027-06-10 16:00"
   }
  ],
  "venue_and_av": "The venue gives a house A/V technician and a confidence monitor. There is no green room: a reserved table behind the stage and a locked cupboard for bags.",
  "recording": [
   {
    "format": "Keynote",
    "policy": "Recorded and published - opt-out offered."
   },
   {
    "format": "Talk",
    "policy": "Recorded and published - opt-out offered."
   }
  ],
  "slide_deadline": "Slides are due 2027-06-08. If it slips: nothing - you present from your own laptop.",
  "travel_and_expenses": "Every speaker has free ticket and speakers' dinner, as promised. Oskar Lind and Rui Costa also have travel and lodging 1 night, as promised: the event books and pays.",
  "on_the_day": "Your host: Tom Hallowick and Ana Ruiz - they meet you at arrival. The tech check runs on the actual stage equipment at a named time before the audience is in. No commercial demo or sales pitch: the audience leaves with the lesson, not the product.",
  "after_the_talk": "A personal thank-you within a few days, and the feedback we actually have within a week or two."
 },
 "day_of": [
  {
   "speaker": "Oskar Lind",
   "host": "Tom Hallowick and Ana Ruiz",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "a reserved table behind the stage and a locked cupboard for bags",
   "notes": "Travelling - know the arrival time before the day."
  },
  {
   "speaker": "Priya Desai",
   "host": "Tom Hallowick and Ana Ruiz",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "a reserved table behind the stage and a locked cupboard for bags",
   "notes": "Employer-restricted material - ask before the deck is redistributed."
  },
  {
   "speaker": "Rui Costa",
   "host": "Tom Hallowick and Ana Ruiz",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "a reserved table behind the stage and a locked cupboard for bags",
   "notes": "First talk - offer the room before the doors open; travelling - know the arrival time before the day."
  },
  {
   "speaker": "Sara Nyberg",
   "host": "Tom Hallowick and Ana Ruiz",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "a reserved table behind the stage and a locked cupboard for bags",
   "notes": "None."
  },
  {
   "speaker": "Theo Brandt",
   "host": "Tom Hallowick and Ana Ruiz",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "a reserved table behind the stage and a locked cupboard for bags",
   "notes": "Opted out of recording - on the crew's per-session list."
  }
 ],
 "thank_you": "Thank you for your talk at Northfield Security Summit 2027. [One specific thing about the talk - the question it got, the conversation it started.] The recording link is to be sent when published, and you will hear before it goes live. - Tom Hallowick and Ana Ruiz",
 "note": "Send each speaker the 48-hour note with this packet, and tell Priya Desai and Sara Nyberg what happens without the headshot that fed badge print."
}

The page's check: kept - nothing to flag

A small meetup, three local speakers - plan

Verdict: ready to send the packet; ready: yes; stage: acceptance emails just went out; contact: Lena Fischer (lena@brookside-js.example); depth: Written speaker packet; cadence: Packet plus two checkpoints; 3 speakers, 7 materials, 2 formats, 1 first-time; 0 fix-level findings.

Input:

{
 "task": "plan",
 "event": "Event: \"Brookside JS Meetup - April 2027\" | dates: 2027-04-22 (1 day) | city: \"Brookside\" | venue: \"the Brookside Library hall\" | as of: 2027-03-10\nQ1 sequence position chosen: \"acceptance emails just went out\" | acceptance emails sent: 2027-03-08 | days from the as-of date to the event: 43\nQ2 speakers: 3 | session formats: 2 | travelling domestically: 0 | travelling internationally: 0\nQ3 what the plan and the budget line deliver now: [ticket] | travel mechanism: \"not decided\"\nQ5 edition: \"a one-off edition\" | who owns the event: \"community-run event\"\nQ6 contact: \"Lena Fischer (lena@brookside-js.example)\" | response window: \"48 hours\" | contact hours a week: 3 | on-site host: \"the contact\" | money and contracts: \"nobody named\"\nQ9 venue: green room: no | substitute: \"a quiet corner by the coat rack, with a chair and water\" | A/V: \"a volunteer with an adapter\" | confidence monitor: no\nQ11 room: \"developers alongside non-technical attendees\"\nQ12 recurring moment promised: no | coach: \"nobody named\"\nQ13 outside the region's main hub: no\nSlides: consequence if the deadline slips: \"nothing - there is no upload, you present from your own laptop\" | deck collected after the talk for attendees: no | days from the event to the recording published: 14 | travel-data deletion date: not set",
 "speakers": "Formats (Q7) (2), one per line:\n- format 1: \"Talk\" | recording intent: \"recorded and published\" | speakers were told: \"recorded and published\" | where told: \"the call for papers\" | opt-out: \"opt-out offered\"\n- format 2: \"Lightning talk\" | recording intent: \"recorded and published\" | speakers were told: \"recorded and published\" | where told: \"the call for papers\" | opt-out: \"no opt-out\"\nSpeakers (3), one per line:\n- speaker 1: \"Mia Svensson\" | format: \"Talk\" | slot: \"2027-04-22 19:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free entry\"] | where stated: \"the call for papers\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract]\n- speaker 2: \"Nadia Rahman\" | format: \"Talk\" | slot: \"2027-04-22 19:40\" | travelling: no | first time (Q8): \"yes\" | promised (Q3): [\"free entry\"] | where stated: \"the call for papers\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [bio]\n- speaker 3: \"Owen Price\" | format: \"Lightning talk\" | slot: \"2027-04-22 20:20\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free entry\"] | where stated: \"the call for papers\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract; headshot]",
 "materials": "Materials (Q4) (7), one per line:\n- material 1: \"Final title and abstract\" | last usable date: 2027-04-01 | feeds: \"the meetup page\"\n- material 2: \"Bio\" | last usable date: 2027-04-01 | feeds: \"the meetup page\"\n- material 3: \"Headshot\" | last usable date: 2027-04-05 | feeds: \"the meetup page and the social post\"\n- material 4: \"Recording consent\" | last usable date: 2027-04-08 | feeds: \"the volunteer camera booking\"\n- material 5: \"A/V requirements\" | last usable date: 2027-04-12 | feeds: \"the venue equipment order\"\n- material 6: \"Accessibility and dietary needs\" | last usable date: 2027-04-15 | feeds: \"the pizza order\"\n- material 7: \"Slides\" | last usable date: 2027-04-20 | feeds: \"the volunteer's laptop check\"",
 "notes": "",
 "facts": "Verdict: \"ready to send the packet\" | ready: yes | fix-level findings: 0\nSelf-set lines: an ask sent 21 days before each last usable date (or at once, when that has passed) | a tight window under 7 days | low contact hours under 2 a week | the thank-you 3 days after the event | the travel-data deletion 7 days after the event unless entered | a summary cap of 40 words | a thank-you cap of 120 words. The skill's own: roughly five speakers before the packet outranks the contact | the first reminder at roughly half the remaining time and the second at the deadline | a logistics note 48 hours out | one week out | a check-in call two to three weeks out | feedback within a week or two (the page uses 14 days). Never invented: a visa lead time, a fee or its figure, a perk nobody promised.\nStage (Q1): \"acceptance emails just went out\" | chosen: \"acceptance emails just went out\" | the dates say: \"acceptance emails just went out\" | consequence: Everything is still changeable: name the contact, then send the packet with the dated ladder.\nContact (step 2): \"Lena Fischer (lena@brookside-js.example)\" | kind: a named person | response window: \"48 hours\" | on-site host: \"Lena Fischer (lena@brookside-js.example)\"\n  contact must: [copy \"Lena Fischer (lena@brookside-js.example)\" exactly as the name; say one name, one address and one stated response window (the word \"window\")]\nCollection ladder (step 3) - in this order, each pinned to its last usable date, never the event date - 7:\n- material 1: \"Final title and abstract\" | ask by: 2027-03-11 | first reminder: 2027-03-21 | second reminder: 2027-04-01 | last usable: 2027-04-01 | feeds: \"the meetup page\" | speakers still owing: 1 of 3 | passed: no\n  must: [material \"Final title and abstract\" exactly; ask_by 2027-03-11; last_usable 2027-04-01; feeds \"the meetup page\"]\n- material 2: \"Bio\" | ask by: 2027-03-11 | first reminder: 2027-03-21 | second reminder: 2027-04-01 | last usable: 2027-04-01 | feeds: \"the meetup page\" | speakers still owing: 0 of 3 | passed: no\n  must: [material \"Bio\" exactly; ask_by 2027-03-11; last_usable 2027-04-01; feeds \"the meetup page\"]\n- material 3: \"Headshot\" | ask by: 2027-03-15 | first reminder: 2027-03-25 | second reminder: 2027-04-05 | last usable: 2027-04-05 | feeds: \"the meetup page and the social post\" | speakers still owing: 2 of 3 | passed: no\n  must: [material \"Headshot\" exactly; ask_by 2027-03-15; last_usable 2027-04-05; feeds \"the meetup page and the social post\"]\n- material 4: \"Recording consent\" | ask by: 2027-03-18 | first reminder: 2027-03-28 | second reminder: 2027-04-08 | last usable: 2027-04-08 | feeds: \"the volunteer camera booking\" | speakers still owing: 1 of 3 | passed: no\n  must: [material \"Recording consent\" exactly; ask_by 2027-03-18; last_usable 2027-04-08; feeds \"the volunteer camera booking\"]\n- material 5: \"A/V requirements\" | ask by: 2027-03-22 | first reminder: 2027-04-01 | second reminder: 2027-04-12 | last usable: 2027-04-12 | feeds: \"the venue equipment order\" | speakers still owing: 1 of 3 | passed: no\n  must: [material \"A/V requirements\" exactly; ask_by 2027-03-22; last_usable 2027-04-12; feeds \"the venue equipment order\"]\n- material 6: \"Accessibility and dietary needs\" | ask by: 2027-03-25 | first reminder: 2027-04-04 | second reminder: 2027-04-15 | last usable: 2027-04-15 | feeds: \"the pizza order\" | speakers still owing: 3 of 3 | passed: no\n  must: [material \"Accessibility and dietary needs\" exactly; ask_by 2027-03-25; last_usable 2027-04-15; feeds \"the pizza order\"]\n- material 7: \"Slides\" | ask by: 2027-03-30 | first reminder: 2027-04-09 | second reminder: 2027-04-20 | last usable: 2027-04-20 | feeds: \"the volunteer's laptop check\" | speakers still owing: 3 of 3 | passed: no\n  must: [material \"Slides\" exactly; ask_by 2027-03-30; last_usable 2027-04-20; feeds \"the volunteer's laptop check\"]\nStatus grid (one line per speaker; each list names materials):\n- speaker 1: \"Mia Svensson\" | received: [\"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"A/V requirements\"] | due: [\"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [none]\n- speaker 2: \"Nadia Rahman\" | received: [\"Bio\"] | due: [\"Final title and abstract\"; \"Headshot\"; \"Recording consent\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [none]\n- speaker 3: \"Owen Price\" | received: [\"Final title and abstract\"; \"Bio\"; \"Headshot\"; \"Recording consent\"; \"A/V requirements\"] | due: [\"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [none]\nSpeaker-care depth - pick: \"Written speaker packet\"\n- rung 1: \"Written speaker packet\" | moved: made the pick by Q4: a deadline that lands on a single day (2027-04-01)\n- rung 2: \"Named point of contact\"\n- rung 3: \"Linked orientation course\"\n- rung 4: \"Speakers' dinner and gifts\" | moved: demoted by Q6: no budget line for speaker expenses - a drink after the last session does most of the same work\n- rung 5: \"Travel and lodging concierge\" | moved: demoted by Q6: no budget line for speaker expenses\n- deleted, not demoted: \"Improvised per-speaker care with nothing written down\" | reason: it drops a commitment: nothing outside one person's memory says what was promised\n  depth reason must: [name the interview answer behind the pick; say improvised care with nothing written down is deleted (the word \"deleted\")]\nPre-event cadence - pick: \"Packet plus two checkpoints\"\n- rung 1: \"Packet plus two checkpoints\"\n- rung 2: \"Milestone cadence\"\n- rung 3: \"Single packet at acceptance\"\n- rung 4: \"Per-speaker check-in call\"\n- deleted, not demoted: \"One broadcast thread with every speaker CC'd\" | reason: it leaks each speaker's address to all the others, and a personal deadline addressed to twenty people reads as somebody else's problem\n- notes: Per speaker, not as one broadcast: move up to the milestone cadence for the speakers Q2 and Q8 flag, and to the check-in call for keynotes and first-time speakers.\n  cadence reason must: [say the cadence runs per speaker, never as one broadcast (the words \"per speaker\")]\nPer-speaker cadence, in speaker order:\n- speaker 1: \"Mia Svensson\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-10 the packet; 2027-04-05 materials reminder; 2027-04-20 logistics note, 48 hours out]\n- speaker 2: \"Nadia Rahman\" | cadence: \"Per-speaker check-in call\" | because: Q8: a first talk; A/V needs not known yet (the page's reading) | touches: [2027-03-10 confirmation and the packet; 2027-04-01 materials due; 2027-04-01 check-in call, two to three weeks out; 2027-04-15 one week out; 2027-04-20 slide deadline; 2027-04-20 48 hours out; 2027-04-22 the morning of]\n- speaker 3: \"Owen Price\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-10 the packet; 2027-04-15 materials reminder; 2027-04-20 logistics note, 48 hours out]\nRecording (Q7) - one per format, in this order - 2:\n- format 1: \"Talk\" | intent: \"recorded and published\" | told: \"recorded and published\" | where told: \"the call for papers\" | posture: \"Consent bundled into submission\" | opt-out: \"opt-out offered\" | mismatch: none | moved: promoted by Q7: told in the call for papers - the form already exists\n  must: [format \"Talk\" exactly; posture \"Consent bundled into submission\" exactly; the opt_out uses the words \"offered\"]\n- format 2: \"Lightning talk\" | intent: \"recorded and published\" | told: \"recorded and published\" | where told: \"the call for papers\" | posture: \"Consent bundled into submission\" | opt-out: \"no opt-out - one continuous recorded block, stated in advance\" | mismatch: none | moved: promoted by Q7: told in the call for papers - the form already exists\n  must: [format \"Lightning talk\" exactly; posture \"Consent bundled into submission\" exactly; the opt_out uses the words \"no opt-out\"]\nRecording menu, deleted not demoted: \"Recording on the assumption that silence is consent\" | reason: a published video cannot be unpublished from the copies people already have. PyCon US offers an opt-out for Talks and Charlas and states plainly that you cannot opt out of recording for lightning talks.\nFirst-time speakers (Q8) - asked, never inferred - 1:\n- name: \"Nadia Rahman\" | first time: \"yes\" | care: [offer the room: the actual stage, the actual clicker (there is no confidence monitor - say so) before the doors open; say what the room will be like: audience size, whether questions happen, who introduces them, the timing signals, what happens if a demo fails; a live briefing: a short call or a session on arrival; the check-in call on 2027-04-01, two to three weeks out; rehearsal, mentors and talk feedback come from event-speaker-coaching, offered to every speaker in the same words]\n  must: [name \"Nadia Rahman\" exactly; care says offer the room (the word \"room\"); care names the check-in call (the word \"call\")]\nPromised terms (Q3) - in this order, delivered and never renegotiated or added to - 1:\n- speaker: \"All speakers\" | term: \"free entry\" | where stated: \"the call for papers\" | status: delivered\n  must: [speaker \"All speakers\" and term \"free entry\" exactly; the status uses the word \"delivered\"]\nTravel - 0 travelling: none - an empty list\nOn-site (step 9): green room: no | green room line: \"a quiet corner by the coat rack, with a chair and water\" | A/V: \"a volunteer with an adapter\" | confidence monitor: no | mixed room: yes\n- day-of: \"Mia Svensson\" | slot: \"2027-04-22 19:00\" | host: \"Lena Fischer (lena@brookside-js.example)\" | tech check: \"on the actual stage equipment with a volunteer with an adapter, at a named time on 2027-04-22 before the audience is in\" | green room: \"a quiet corner by the coat rack, with a chair and water\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Nadia Rahman\" | slot: \"2027-04-22 19:40\" | host: \"Lena Fischer (lena@brookside-js.example)\" | tech check: \"on the actual stage equipment with a volunteer with an adapter, at a named time on 2027-04-22 before the audience is in\" | green room: \"a quiet corner by the coat rack, with a chair and water\" | notes: [first talk - offer the room before the doors open; the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Owen Price\" | slot: \"2027-04-22 20:20\" | host: \"Lena Fischer (lena@brookside-js.example)\" | tech check: \"on the actual stage equipment with a volunteer with an adapter, at a named time on 2027-04-22 before the audience is in\" | green room: \"a quiet corner by the coat rack, with a chair and water\" | notes: [the host reads the anonymous questions aloud, the most basic first]\nSlide deadline (step 7): 2027-04-20 | consequence: \"nothing - there is no upload, you present from your own laptop\" | honest none: yes | deck collected after the talk: no\nAfter the event (step 10), in this order:\n- thank-you: 2027-04-25 | individual, from the named contact, one specific thing about the talk; ask nothing yet (within a few days - 3 days, self-set)\n- feedback: 2027-05-06 | what you actually have, anonymous comments in full minus abuse, the host's own read; never with a request (within a week or two)\n- recording link: 2027-05-06 | tell the speaker before it goes live; the direct link to their own session; where else it lives; permission to share it (your own 14-day promise)\nPacket must: [title contains \"Brookside JS Meetup - April 2027\"; contact contains \"Lena Fischer (lena@brookside-js.example)\"; what_we_need follows the ladder's order with each last usable date as by; schedule copies each speaker's slot; venue_and_av says \"no green room\" and names \"a quiet corner by the coat rack, with a chair and water\" exactly; travel_and_expenses names only promised terms; on_the_day names the host and the tech check and says no sales pitch and the anonymous question channel (the word \"anonymous\"); thank_you at most 120 words and says the recording link is \"to be sent when published\"] | packet note must: [say what happens next]\nFindings (6):\n[info] stage_just (stage): Q1: acceptance emails just went out. Everything is still changeable: name the contact, then send the packet with the dated ladder.\n[info] same_day (ladder): Q4: two or more materials are due on 2027-04-01 - a deadline landing on a single day.\n[info] mixed_room (room): Q11: a mixed room - brief speakers to define each term on first use and show one concrete example before the abstraction; offer an anonymous question channel and have the host read those questions aloud, starting with the most basic.\n[info] no_monitor (onsite): Q9: no confidence monitor - say so in the packet, so nobody plans on one.\n[info] av_volunteer (onsite): Q9: a volunteer with an adapter, not a house technician - the tech check on the actual stage matters more.\n[info] scope (scope): The page starts after acceptance: promised terms are delivered, never renegotiated or added to; it never invents a perk, a fee, a date, a person, a room or a piece of equipment, and never reads identity, gender or experience from a name."
}

Reply:

{
 "task": "plan",
 "summary": "Ready to send the packet: Lena Fischer is the named contact, the lightning talk's no opt-out was stated in the call, and the quiet corner stands in for a green room.",
 "verdict": "ready to send the packet",
 "contact": {
  "name": "Lena Fischer (lena@brookside-js.example)",
  "reason": "One name, one address and one stated response window (48 hours) for every speaker message."
 },
 "ladder": [
  {
   "material": "Final title and abstract",
   "ask_by": "2027-03-11",
   "last_usable": "2027-04-01",
   "feeds": "the meetup page"
  },
  {
   "material": "Bio",
   "ask_by": "2027-03-11",
   "last_usable": "2027-04-01",
   "feeds": "the meetup page"
  },
  {
   "material": "Headshot",
   "ask_by": "2027-03-15",
   "last_usable": "2027-04-05",
   "feeds": "the meetup page and the social post"
  },
  {
   "material": "Recording consent",
   "ask_by": "2027-03-18",
   "last_usable": "2027-04-08",
   "feeds": "the volunteer camera booking"
  },
  {
   "material": "A/V requirements",
   "ask_by": "2027-03-22",
   "last_usable": "2027-04-12",
   "feeds": "the venue equipment order"
  },
  {
   "material": "Accessibility and dietary needs",
   "ask_by": "2027-03-25",
   "last_usable": "2027-04-15",
   "feeds": "the pizza order"
  },
  {
   "material": "Slides",
   "ask_by": "2027-03-30",
   "last_usable": "2027-04-20",
   "feeds": "the volunteer's laptop check"
  }
 ],
 "depth": {
  "pick": "Written speaker packet",
  "reason": "Q4: a deadline that lands on a single day (2027-04-01). Improvised care with nothing written down is deleted: it drops a commitment."
 },
 "cadence": {
  "pick": "Packet plus two checkpoints",
  "reason": "The packet plus two checkpoints is the efficient default, run per speaker: the milestone cadence and the check-in call go to the speakers the page flags, never one broadcast thread."
 },
 "recording": [
  {
   "format": "Talk",
   "posture": "Consent bundled into submission",
   "opt_out": "opt-out offered"
  },
  {
   "format": "Lightning talk",
   "posture": "Consent bundled into submission",
   "opt_out": "no opt-out - one continuous recorded block, stated in advance"
  }
 ],
 "first_timers": [
  {
   "name": "Nadia Rahman",
   "care": "Offer the room before the doors open - the actual stage and clicker - and say what the room will be like; hold the check-in call on 2027-04-01."
  }
 ],
 "promised": [
  {
   "speaker": "All speakers",
   "term": "free entry",
   "status": "Delivered as promised, never renegotiated."
  }
 ],
 "travel": [],
 "caveats": []
}

The page's check: kept - nothing to flag

A small meetup, three local speakers - packet

Verdict: ready to send the packet; ready: yes; stage: acceptance emails just went out; contact: Lena Fischer (lena@brookside-js.example); depth: Written speaker packet; cadence: Packet plus two checkpoints; 3 speakers, 7 materials, 2 formats, 1 first-time; 0 fix-level findings.

Input:

{
 "task": "packet",
 "event": "Event: \"Brookside JS Meetup - April 2027\" | dates: 2027-04-22 (1 day) | city: \"Brookside\" | venue: \"the Brookside Library hall\" | as of: 2027-03-10\nQ1 sequence position chosen: \"acceptance emails just went out\" | acceptance emails sent: 2027-03-08 | days from the as-of date to the event: 43\nQ2 speakers: 3 | session formats: 2 | travelling domestically: 0 | travelling internationally: 0\nQ3 what the plan and the budget line deliver now: [ticket] | travel mechanism: \"not decided\"\nQ5 edition: \"a one-off edition\" | who owns the event: \"community-run event\"\nQ6 contact: \"Lena Fischer (lena@brookside-js.example)\" | response window: \"48 hours\" | contact hours a week: 3 | on-site host: \"the contact\" | money and contracts: \"nobody named\"\nQ9 venue: green room: no | substitute: \"a quiet corner by the coat rack, with a chair and water\" | A/V: \"a volunteer with an adapter\" | confidence monitor: no\nQ11 room: \"developers alongside non-technical attendees\"\nQ12 recurring moment promised: no | coach: \"nobody named\"\nQ13 outside the region's main hub: no\nSlides: consequence if the deadline slips: \"nothing - there is no upload, you present from your own laptop\" | deck collected after the talk for attendees: no | days from the event to the recording published: 14 | travel-data deletion date: not set",
 "speakers": "Formats (Q7) (2), one per line:\n- format 1: \"Talk\" | recording intent: \"recorded and published\" | speakers were told: \"recorded and published\" | where told: \"the call for papers\" | opt-out: \"opt-out offered\"\n- format 2: \"Lightning talk\" | recording intent: \"recorded and published\" | speakers were told: \"recorded and published\" | where told: \"the call for papers\" | opt-out: \"no opt-out\"\nSpeakers (3), one per line:\n- speaker 1: \"Mia Svensson\" | format: \"Talk\" | slot: \"2027-04-22 19:00\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free entry\"] | where stated: \"the call for papers\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract]\n- speaker 2: \"Nadia Rahman\" | format: \"Talk\" | slot: \"2027-04-22 19:40\" | travelling: no | first time (Q8): \"yes\" | promised (Q3): [\"free entry\"] | where stated: \"the call for papers\" | recording: \"not asked\" | A/V needs known: no | employer-restricted material (Q10): no | received: [bio]\n- speaker 3: \"Owen Price\" | format: \"Lightning talk\" | slot: \"2027-04-22 20:20\" | travelling: no | first time (Q8): \"no\" | promised (Q3): [\"free entry\"] | where stated: \"the call for papers\" | recording: \"agreed\" | A/V needs known: yes | employer-restricted material (Q10): no | received: [bio; final title and abstract; headshot]",
 "materials": "Materials (Q4) (7), one per line:\n- material 1: \"Final title and abstract\" | last usable date: 2027-04-01 | feeds: \"the meetup page\"\n- material 2: \"Bio\" | last usable date: 2027-04-01 | feeds: \"the meetup page\"\n- material 3: \"Headshot\" | last usable date: 2027-04-05 | feeds: \"the meetup page and the social post\"\n- material 4: \"Recording consent\" | last usable date: 2027-04-08 | feeds: \"the volunteer camera booking\"\n- material 5: \"A/V requirements\" | last usable date: 2027-04-12 | feeds: \"the venue equipment order\"\n- material 6: \"Accessibility and dietary needs\" | last usable date: 2027-04-15 | feeds: \"the pizza order\"\n- material 7: \"Slides\" | last usable date: 2027-04-20 | feeds: \"the volunteer's laptop check\"",
 "notes": "",
 "facts": "Verdict: \"ready to send the packet\" | ready: yes | fix-level findings: 0\nSelf-set lines: an ask sent 21 days before each last usable date (or at once, when that has passed) | a tight window under 7 days | low contact hours under 2 a week | the thank-you 3 days after the event | the travel-data deletion 7 days after the event unless entered | a summary cap of 40 words | a thank-you cap of 120 words. The skill's own: roughly five speakers before the packet outranks the contact | the first reminder at roughly half the remaining time and the second at the deadline | a logistics note 48 hours out | one week out | a check-in call two to three weeks out | feedback within a week or two (the page uses 14 days). Never invented: a visa lead time, a fee or its figure, a perk nobody promised.\nStage (Q1): \"acceptance emails just went out\" | chosen: \"acceptance emails just went out\" | the dates say: \"acceptance emails just went out\" | consequence: Everything is still changeable: name the contact, then send the packet with the dated ladder.\nContact (step 2): \"Lena Fischer (lena@brookside-js.example)\" | kind: a named person | response window: \"48 hours\" | on-site host: \"Lena Fischer (lena@brookside-js.example)\"\n  contact must: [copy \"Lena Fischer (lena@brookside-js.example)\" exactly as the name; say one name, one address and one stated response window (the word \"window\")]\nCollection ladder (step 3) - in this order, each pinned to its last usable date, never the event date - 7:\n- material 1: \"Final title and abstract\" | ask by: 2027-03-11 | first reminder: 2027-03-21 | second reminder: 2027-04-01 | last usable: 2027-04-01 | feeds: \"the meetup page\" | speakers still owing: 1 of 3 | passed: no\n  must: [material \"Final title and abstract\" exactly; ask_by 2027-03-11; last_usable 2027-04-01; feeds \"the meetup page\"]\n- material 2: \"Bio\" | ask by: 2027-03-11 | first reminder: 2027-03-21 | second reminder: 2027-04-01 | last usable: 2027-04-01 | feeds: \"the meetup page\" | speakers still owing: 0 of 3 | passed: no\n  must: [material \"Bio\" exactly; ask_by 2027-03-11; last_usable 2027-04-01; feeds \"the meetup page\"]\n- material 3: \"Headshot\" | ask by: 2027-03-15 | first reminder: 2027-03-25 | second reminder: 2027-04-05 | last usable: 2027-04-05 | feeds: \"the meetup page and the social post\" | speakers still owing: 2 of 3 | passed: no\n  must: [material \"Headshot\" exactly; ask_by 2027-03-15; last_usable 2027-04-05; feeds \"the meetup page and the social post\"]\n- material 4: \"Recording consent\" | ask by: 2027-03-18 | first reminder: 2027-03-28 | second reminder: 2027-04-08 | last usable: 2027-04-08 | feeds: \"the volunteer camera booking\" | speakers still owing: 1 of 3 | passed: no\n  must: [material \"Recording consent\" exactly; ask_by 2027-03-18; last_usable 2027-04-08; feeds \"the volunteer camera booking\"]\n- material 5: \"A/V requirements\" | ask by: 2027-03-22 | first reminder: 2027-04-01 | second reminder: 2027-04-12 | last usable: 2027-04-12 | feeds: \"the venue equipment order\" | speakers still owing: 1 of 3 | passed: no\n  must: [material \"A/V requirements\" exactly; ask_by 2027-03-22; last_usable 2027-04-12; feeds \"the venue equipment order\"]\n- material 6: \"Accessibility and dietary needs\" | ask by: 2027-03-25 | first reminder: 2027-04-04 | second reminder: 2027-04-15 | last usable: 2027-04-15 | feeds: \"the pizza order\" | speakers still owing: 3 of 3 | passed: no\n  must: [material \"Accessibility and dietary needs\" exactly; ask_by 2027-03-25; last_usable 2027-04-15; feeds \"the pizza order\"]\n- material 7: \"Slides\" | ask by: 2027-03-30 | first reminder: 2027-04-09 | second reminder: 2027-04-20 | last usable: 2027-04-20 | feeds: \"the volunteer's laptop check\" | speakers still owing: 3 of 3 | passed: no\n  must: [material \"Slides\" exactly; ask_by 2027-03-30; last_usable 2027-04-20; feeds \"the volunteer's laptop check\"]\nStatus grid (one line per speaker; each list names materials):\n- speaker 1: \"Mia Svensson\" | received: [\"Final title and abstract\"; \"Bio\"; \"Recording consent\"; \"A/V requirements\"] | due: [\"Headshot\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [none]\n- speaker 2: \"Nadia Rahman\" | received: [\"Bio\"] | due: [\"Final title and abstract\"; \"Headshot\"; \"Recording consent\"; \"A/V requirements\"; \"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [none]\n- speaker 3: \"Owen Price\" | received: [\"Final title and abstract\"; \"Bio\"; \"Headshot\"; \"Recording consent\"; \"A/V requirements\"] | due: [\"Accessibility and dietary needs\"; \"Slides\"] | overdue: [none] | not applicable: [none]\nSpeaker-care depth - pick: \"Written speaker packet\"\n- rung 1: \"Written speaker packet\" | moved: made the pick by Q4: a deadline that lands on a single day (2027-04-01)\n- rung 2: \"Named point of contact\"\n- rung 3: \"Linked orientation course\"\n- rung 4: \"Speakers' dinner and gifts\" | moved: demoted by Q6: no budget line for speaker expenses - a drink after the last session does most of the same work\n- rung 5: \"Travel and lodging concierge\" | moved: demoted by Q6: no budget line for speaker expenses\n- deleted, not demoted: \"Improvised per-speaker care with nothing written down\" | reason: it drops a commitment: nothing outside one person's memory says what was promised\n  depth reason must: [name the interview answer behind the pick; say improvised care with nothing written down is deleted (the word \"deleted\")]\nPre-event cadence - pick: \"Packet plus two checkpoints\"\n- rung 1: \"Packet plus two checkpoints\"\n- rung 2: \"Milestone cadence\"\n- rung 3: \"Single packet at acceptance\"\n- rung 4: \"Per-speaker check-in call\"\n- deleted, not demoted: \"One broadcast thread with every speaker CC'd\" | reason: it leaks each speaker's address to all the others, and a personal deadline addressed to twenty people reads as somebody else's problem\n- notes: Per speaker, not as one broadcast: move up to the milestone cadence for the speakers Q2 and Q8 flag, and to the check-in call for keynotes and first-time speakers.\n  cadence reason must: [say the cadence runs per speaker, never as one broadcast (the words \"per speaker\")]\nPer-speaker cadence, in speaker order:\n- speaker 1: \"Mia Svensson\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-10 the packet; 2027-04-05 materials reminder; 2027-04-20 logistics note, 48 hours out]\n- speaker 2: \"Nadia Rahman\" | cadence: \"Per-speaker check-in call\" | because: Q8: a first talk; A/V needs not known yet (the page's reading) | touches: [2027-03-10 confirmation and the packet; 2027-04-01 materials due; 2027-04-01 check-in call, two to three weeks out; 2027-04-15 one week out; 2027-04-20 slide deadline; 2027-04-20 48 hours out; 2027-04-22 the morning of]\n- speaker 3: \"Owen Price\" | cadence: \"Packet plus two checkpoints\" | because: the default | touches: [2027-03-10 the packet; 2027-04-15 materials reminder; 2027-04-20 logistics note, 48 hours out]\nRecording (Q7) - one per format, in this order - 2:\n- format 1: \"Talk\" | intent: \"recorded and published\" | told: \"recorded and published\" | where told: \"the call for papers\" | posture: \"Consent bundled into submission\" | opt-out: \"opt-out offered\" | mismatch: none | moved: promoted by Q7: told in the call for papers - the form already exists\n  must: [format \"Talk\" exactly; posture \"Consent bundled into submission\" exactly; the opt_out uses the words \"offered\"]\n- format 2: \"Lightning talk\" | intent: \"recorded and published\" | told: \"recorded and published\" | where told: \"the call for papers\" | posture: \"Consent bundled into submission\" | opt-out: \"no opt-out - one continuous recorded block, stated in advance\" | mismatch: none | moved: promoted by Q7: told in the call for papers - the form already exists\n  must: [format \"Lightning talk\" exactly; posture \"Consent bundled into submission\" exactly; the opt_out uses the words \"no opt-out\"]\nRecording menu, deleted not demoted: \"Recording on the assumption that silence is consent\" | reason: a published video cannot be unpublished from the copies people already have. PyCon US offers an opt-out for Talks and Charlas and states plainly that you cannot opt out of recording for lightning talks.\nFirst-time speakers (Q8) - asked, never inferred - 1:\n- name: \"Nadia Rahman\" | first time: \"yes\" | care: [offer the room: the actual stage, the actual clicker (there is no confidence monitor - say so) before the doors open; say what the room will be like: audience size, whether questions happen, who introduces them, the timing signals, what happens if a demo fails; a live briefing: a short call or a session on arrival; the check-in call on 2027-04-01, two to three weeks out; rehearsal, mentors and talk feedback come from event-speaker-coaching, offered to every speaker in the same words]\n  must: [name \"Nadia Rahman\" exactly; care says offer the room (the word \"room\"); care names the check-in call (the word \"call\")]\nPromised terms (Q3) - in this order, delivered and never renegotiated or added to - 1:\n- speaker: \"All speakers\" | term: \"free entry\" | where stated: \"the call for papers\" | status: delivered\n  must: [speaker \"All speakers\" and term \"free entry\" exactly; the status uses the word \"delivered\"]\nTravel - 0 travelling: none - an empty list\nOn-site (step 9): green room: no | green room line: \"a quiet corner by the coat rack, with a chair and water\" | A/V: \"a volunteer with an adapter\" | confidence monitor: no | mixed room: yes\n- day-of: \"Mia Svensson\" | slot: \"2027-04-22 19:00\" | host: \"Lena Fischer (lena@brookside-js.example)\" | tech check: \"on the actual stage equipment with a volunteer with an adapter, at a named time on 2027-04-22 before the audience is in\" | green room: \"a quiet corner by the coat rack, with a chair and water\" | notes: [the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Nadia Rahman\" | slot: \"2027-04-22 19:40\" | host: \"Lena Fischer (lena@brookside-js.example)\" | tech check: \"on the actual stage equipment with a volunteer with an adapter, at a named time on 2027-04-22 before the audience is in\" | green room: \"a quiet corner by the coat rack, with a chair and water\" | notes: [first talk - offer the room before the doors open; the host reads the anonymous questions aloud, the most basic first]\n- day-of: \"Owen Price\" | slot: \"2027-04-22 20:20\" | host: \"Lena Fischer (lena@brookside-js.example)\" | tech check: \"on the actual stage equipment with a volunteer with an adapter, at a named time on 2027-04-22 before the audience is in\" | green room: \"a quiet corner by the coat rack, with a chair and water\" | notes: [the host reads the anonymous questions aloud, the most basic first]\nSlide deadline (step 7): 2027-04-20 | consequence: \"nothing - there is no upload, you present from your own laptop\" | honest none: yes | deck collected after the talk: no\nAfter the event (step 10), in this order:\n- thank-you: 2027-04-25 | individual, from the named contact, one specific thing about the talk; ask nothing yet (within a few days - 3 days, self-set)\n- feedback: 2027-05-06 | what you actually have, anonymous comments in full minus abuse, the host's own read; never with a request (within a week or two)\n- recording link: 2027-05-06 | tell the speaker before it goes live; the direct link to their own session; where else it lives; permission to share it (your own 14-day promise)\nPacket must: [title contains \"Brookside JS Meetup - April 2027\"; contact contains \"Lena Fischer (lena@brookside-js.example)\"; what_we_need follows the ladder's order with each last usable date as by; schedule copies each speaker's slot; venue_and_av says \"no green room\" and names \"a quiet corner by the coat rack, with a chair and water\" exactly; travel_and_expenses names only promised terms; on_the_day names the host and the tech check and says no sales pitch and the anonymous question channel (the word \"anonymous\"); thank_you at most 120 words and says the recording link is \"to be sent when published\"] | packet note must: [say what happens next]\nCarried from the plan: summary: \"Ready to send the packet: Lena Fischer is the named contact, the lightning talk's no opt-out was stated in the call, and the quiet corner stands in for a green room.\" | parts matching the page: 3 of 3\nFindings (6):\n[info] stage_just (stage): Q1: acceptance emails just went out. Everything is still changeable: name the contact, then send the packet with the dated ladder.\n[info] same_day (ladder): Q4: two or more materials are due on 2027-04-01 - a deadline landing on a single day.\n[info] mixed_room (room): Q11: a mixed room - brief speakers to define each term on first use and show one concrete example before the abstraction; offer an anonymous question channel and have the host read those questions aloud, starting with the most basic.\n[info] no_monitor (onsite): Q9: no confidence monitor - say so in the packet, so nobody plans on one.\n[info] av_volunteer (onsite): Q9: a volunteer with an adapter, not a house technician - the tech check on the actual stage matters more.\n[info] scope (scope): The page starts after acceptance: promised terms are delivered, never renegotiated or added to; it never invents a perk, a fee, a date, a person, a room or a piece of equipment, and never reads identity, gender or experience from a name."
}

Reply:

{
 "task": "packet",
 "packet": {
  "title": "Brookside JS Meetup - April 2027 - speaker packet",
  "contact": "Lena Fischer (lena@brookside-js.example) - replies within 48 hours",
  "what_we_need": [
   {
    "material": "Final title and abstract",
    "by": "2027-04-01"
   },
   {
    "material": "Bio",
    "by": "2027-04-01"
   },
   {
    "material": "Headshot",
    "by": "2027-04-05"
   },
   {
    "material": "Recording consent",
    "by": "2027-04-08"
   },
   {
    "material": "A/V requirements",
    "by": "2027-04-12"
   },
   {
    "material": "Accessibility and dietary needs",
    "by": "2027-04-15"
   },
   {
    "material": "Slides",
    "by": "2027-04-20"
   }
  ],
  "schedule": [
   {
    "speaker": "Mia Svensson",
    "slot": "Talk, 2027-04-22 19:00"
   },
   {
    "speaker": "Nadia Rahman",
    "slot": "Talk, 2027-04-22 19:40"
   },
   {
    "speaker": "Owen Price",
    "slot": "Lightning talk, 2027-04-22 20:20"
   }
  ],
  "venue_and_av": "The venue gives a volunteer with an adapter and no confidence monitor. There is no green room: a quiet corner by the coat rack, with a chair and water.",
  "recording": [
   {
    "format": "Talk",
    "policy": "Recorded and published - opt-out offered."
   },
   {
    "format": "Lightning talk",
    "policy": "Recorded and published - no opt-out - one continuous recorded block, stated in advance."
   }
  ],
  "slide_deadline": "Slides are due 2027-04-20. If it slips: nothing - there is no upload, you present from your own laptop.",
  "travel_and_expenses": "Every speaker has free entry, as promised. Travel and lodging are not covered.",
  "on_the_day": "Your host: Lena Fischer (lena@brookside-js.example) - they meet you at arrival. The tech check runs on the actual stage equipment at a named time before the audience is in. No commercial demo or sales pitch: the audience leaves with the lesson, not the product. The room is mixed: define each term on first use, and expect questions from the anonymous channel, read aloud by the host.",
  "after_the_talk": "A personal thank-you within a few days, and the feedback we actually have within a week or two."
 },
 "day_of": [
  {
   "speaker": "Mia Svensson",
   "host": "Lena Fischer (lena@brookside-js.example)",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "a quiet corner by the coat rack, with a chair and water",
   "notes": "The host reads the anonymous questions aloud, the most basic first."
  },
  {
   "speaker": "Nadia Rahman",
   "host": "Lena Fischer (lena@brookside-js.example)",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "a quiet corner by the coat rack, with a chair and water",
   "notes": "First talk - offer the room before the doors open; the host reads the anonymous questions aloud, the most basic first."
  },
  {
   "speaker": "Owen Price",
   "host": "Lena Fischer (lena@brookside-js.example)",
   "tech_check": "the actual stage equipment, at a named time before the audience is in",
   "green_room": "a quiet corner by the coat rack, with a chair and water",
   "notes": "The host reads the anonymous questions aloud, the most basic first."
  }
 ],
 "thank_you": "Thank you for your talk at Brookside JS Meetup - April 2027. [One specific thing about the talk - the question it got, the conversation it started.] The recording link is to be sent when published, and you will hear before it goes live. - Lena Fischer (lena@brookside-js.example)",
 "note": "Show this packet to the organizer, then send it per speaker today."
}

The page's check: kept - nothing to flag

The free day-of sheet for the meetup sample

# Brookside JS Meetup - April 2027 - day-of tech check and green-room sheet

_Host: Lena Fischer (lena@brookside-js.example). A/V: a volunteer with an adapter. Confidence monitor: no. Green room: a quiet corner by the coat rack, with a chair and water._

| Speaker | Slot | Host | Tech check | Green room | Notes |
|---|---|---|---|---|---|
| Mia Svensson | 2027-04-22 19:00 | Lena Fischer (lena@brookside-js.example) | on the actual stage equipment with a volunteer with an adapter, at a named time on 2027-04-22 before the audience is in | a quiet corner by the coat rack, with a chair and water | the host reads the anonymous questions aloud, the most basic first |
| Nadia Rahman | 2027-04-22 19:40 | Lena Fischer (lena@brookside-js.example) | on the actual stage equipment with a volunteer with an adapter, at a named time on 2027-04-22 before the audience is in | a quiet corner by the coat rack, with a chair and water | first talk - offer the room before the doors open; the host reads the anonymous questions aloud, the most basic first |
| Owen Price | 2027-04-22 20:20 | Lena Fischer (lena@brookside-js.example) | on the actual stage equipment with a volunteer with an adapter, at a named time on 2027-04-22 before the audience is in | a quiet corner by the coat rack, with a chair and water | the host reads the anonymous questions aloud, the most basic first |

## The tech check, on the actual stage

1. Connect the speaker's own machine to the real projector and confirm resolution and aspect ratio.
2. Test the microphone they will use, at speaking volume, with the room's gain.
3. Play any audio through the room's system.
4. Run the demo's riskiest moment, not the whole demo.
5. Show the clicker, the confidence monitor and the timing signals (there is no confidence monitor).
6. Point at the exit, the water, and who will be in the room if something breaks.
7. Agree what happens if the demo fails live.

Made with Speaker Care - https://speaker-care.skillsafe.ai/

Build the input yourself

Load the engine in node (global.window = global; require("./carekit.js"); require("./carereply.js")), then:

const K = CareKit, R = CareReply;
const f = K.form({ name: "My Meetup 2027", start: "2027-05-20", city: "Ourtown", asOf: "2027-03-01", acceptedOn: "2027-02-28", delivers: "ticket",
  contact: "A. Organizer (a@example.org)", window: "two days", formats: "Talk | recorded and published | recorded and published | the call for papers | offered",
  speakers: "A. Speaker | Talk | 2027-05-20 19:00 | no | no | free entry | the call for papers | agreed | yes | no | bio",
  materials: "Bio | 2027-04-20 | the meetup page\nSlides | 2027-05-18 | the venue laptop" });
// f.stage, f.contact, f.ladder, f.grid, f.depth, f.cadence, f.recording, f.firsts, f.promised, f.travel, f.dayOf, f.post, f.verdict, f.findings
K.ladderCsv(f); K.ics(f); K.gridCsv(f); K.dayOfMd(f)   // the free exports
const b = K.buildInput(f, "plan");                      // or "packet"
const wire = K.toWire(b.input);                         // POST this to /estimate and /run
// then: const reply = R.normalize(R.parseReply(job.output.output), "plan");
// R.check(reply, b)                                    // {status: kept or flagged, notes}
// R.carryText(reply)                                   // the lines the packet lane carries - set them as the carry field

Get a token for the steps below from /tokens.html.

Step 1 — a tiny client helper

One function that sends JSON and unwraps the response. Paste a personal token from /tokens.html, or leave it empty and mint a guest token in step 2.

BASE="https://api.skillsafe.ai/v1/app-api"
TOKEN="YOUR_TOKEN"   # from https://speaker-care.skillsafe.ai/tokens.html
api() { # api METHOD PATH [JSON-BODY]
  curl -s -X "$1" "$BASE$2" -H "Content-Type: application/json" \
    ${TOKEN:+-H "Authorization: Bearer $TOKEN"} ${3:+--data "$3"}
}

Step 2 — a token

A guest token is enough for /me and /estimate. A run is metered, so it needs a personal token: sign in on /tokens.html and copy it from there.

# a guest token (enough for /me and /estimate); a run needs your personal token from /tokens.html
TOKEN=$(curl -s -X POST "$BASE/guest" -H "Content-Type: application/json" -d '{"slug":"speaker-care"}' | jq -r '.data.token')

Step 3 — GET /me

Who the token is (subject_type: user or guest) and the credit balance.

api GET /me | jq '.data | {subject_type, credits}' 

Step 4 — POST /estimate

Free. The body is the run input itself, the bare object (never wrapped in {"input": ...}). hold_credits is a reservation, not the price; min_credits is what the balance must cover; model_alias reads gpt-terra.

# input.json: the run input object - {"task": "plan", "event": "Event: ... | dates: ... | venue: ...", "speakers": "Formats (Q7) (3) ... Speakers (12) ...", "materials": "Materials (Q4) (9) ...", "notes": "", "facts": "Verdict: ..."}
# - see the input table
api POST /estimate "$(cat input.json)" | jq '.data | {hold_credits, min_credits, model, model_alias, markup_bps, warnings}' 

Step 5 — POST /run, then poll the job

Send an Idempotency-Key built from the lane and the input: a retry with the same key never bills twice. The page uses speaker-care:<task>:<inputHash>:a<attempt> - the lane is part of the key - and its one automatic reformat retry is a new attempt number, named in the page as one extra run. A plan carries summary, verdict, contact, ladder, depth, cadence, recording, first_timers, promised, travel and caveats; a packet carries packet, day_of, thank_you and note. The code below prints the headline of either.

KEY="speaker-care:plan:$(shasum -a 256 input.json | cut -c1-16):a1"
JOB=$(curl -s -X POST "$BASE/run" -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" \
  -H "Idempotency-Key: $KEY" --data @input.json | jq -r '.data.job_id')
while :; do
  J=$(api GET "/jobs/$JOB"); S=$(echo "$J" | jq -r '.data.status')
  case "$S" in succeeded|failed|cancelled) break;; esac; sleep 2
done
echo "$J" | jq -r '.data.output.output' > reply.json   # one JSON object, the reply contract
echo "$J" | jq '.data | {charged_credits, truncated}'
jq -r '.verdict // .note, .summary // empty' reply.json
jq -r '.ladder[]? | "\(.material): ask \(.ask_by), last usable \(.last_usable)"' reply.json   # a plan; a packet has .packet and .day_of

Step 6 — POST /run-stream

The same run as Server-Sent Events, with the same input.json. Browsers receive progress ticks rather than text deltas; the final done event carries the reply.

# Server-Sent Events: tick/delta events while the job runs, then a final event with the job
curl -N -s -X POST "$BASE/run-stream" -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" \
  -H "Idempotency-Key: speaker-care:plan:$(shasum -a 256 input.json | cut -c1-16):a1" --data @input.json