# Demo talk imports Sample files for the conference talk uploader (`/p//e//talks`). They all describe the same one-day, two-room schedule (Main Hall + Workshop Room) so you can compare formats. To try them: open an event you own → **Set up as conference** (set the timezone to **America/New_York** to match the JSON's offsets) → upload a file → check the preview → save. Each file maps to the same six talks, keyed by a stable `id`, so re-uploading any of them **updates in place** instead of creating duplicates. | File | Shows off | |------|-----------| | `talks.csv` | Standard headers (auto-mapped), quoted fields with commas, `Name ` speakers, an `info` (Lunch) row. Times are wall-clock in the conference timezone. | | `talks-alt-headers.csv` | Different column names (`slug`, `day`, `time`, `mins`, `track`, `kind`, `presenters`) that still auto-detect; 12-hour times (`9:00 AM`); **duration** in minutes instead of an end time. | | `talks.yaml` | A `talks:` list with **native speaker arrays** — both `{name, handle}` objects and plain name strings. | | `talks.json` | An array of objects with **full ISO datetimes** (explicit `-04:00` offset, so no timezone conversion needed) and array speakers. | | `siam-ls26.csv` | A real, large program — the 2026 SIAM Conference on the Life Sciences (175 sessions, 5 days, ~25 rooms). A good stress test of the multi-room grid. Generated by `siam-ls26.ts` (`bun run scripts/demo-talks/siam-ls26.ts`), which maps SIAM session types onto the grid vocabulary and uses session codes (MS2, IP1, …) as upsert ids. Set the conference timezone to the venue's zone when uploading. | ## Field notes - **Times** — CSV/YAML use wall-clock `date` + `start`/`end` (or `duration`), interpreted in the conference timezone. JSON uses absolute ISO instants with an offset. The parser is tolerant: `09:00`, `9:00 AM`, `0900`, and `2026-09-01 09:00` all work. - **Speakers** — in CSV, one column separated by `;`, with an optional `` that becomes a Bluesky link. In JSON/YAML, a real array of strings and/or `{ name, handle }` objects. - **id** — any stable string; it's turned into a deterministic, conference-scoped record key so updates are idempotent. Drop the `id` column to always create new. - **room** — `none` (or blank) marks a full-width row like a break; it won't get its own column in the grid.