Paper Talk: End-to-End Conference Talk Pipeline
Workflow: from a completed paper to a conference-ready talk artifact —
slide outline, Beamer source, editable PPTX, speaker notes, full talk
script, polished visuals, and assurance checks.
Pipeline target: $ARGUMENTS
Assurance Ladder
The skill takes an explicit
argument; default is
.
| Level | Phases run | Use when |
|---|
| 0 → 1 → 2 → 5 → 6 | Internal practice talk; quick first-pass deck |
| (default) | 0 → 1 → 2 → 3 → 5 → 6 | Lab seminar, workshop, default conference talk |
| (or ) | 0 → 1 → 2 → 3 → 4 → 5 → 6 | Top-venue oral / spotlight where slide claims are scrutinised; or anonymous submission |
Phase 4 (assurance checks) is opt-in via
— assurance: conference-ready
.
The lower levels skip claim / citation / anonymity audits, which is correct
when content has already been audited at the paper-writing stage.
Hard Invariants
These are non-negotiable across all phases:
- Original paper is read-only. This workflow consumes the paper directory; it never modifies or other paper artifacts.
- Original deck is preserved. produces a baseline deck; writes a versioned copy. The original Beamer + PPTX are never overwritten.
- Speaker notes are byte-stable. Polish must not change content. Phase 4 verifies this.
- No new content anywhere in the pipeline. All slide text, speaker notes, talk script, Q&A answers, claims, numbers, citations, URLs, author names, affiliations, anonymity placeholders, and experiment results must be either paper-grounded (extracted from artefacts) or explicitly user-provided. The pipeline never invents content during outline, build, polish, audit, or export. Phase-4 anonymity scan + claim audit verify this end-to-end.
- No slide reordering. Add / drop / reorder requires explicit user flags.
- Cross-model independence. Per-page Codex calls in use fresh threads (no ). See
../shared-references/reviewer-independence.md
.
- Anonymity fail-closed. If any audit (or any Codex fix proposal) would replace a placeholder with a real title / count / URL, the workflow halts and surfaces the proposal for human review. See
../shared-references/experiment-integrity.md
.
- Style references are guidance, not text source. A PDF or preset informs visual weight and structural rhythm; never copy prose, examples, slide titles, or speaker-note text from the reference.
- Final report cannot be unless required audits pass. Phase 6 verifies and downgrades verdict if audits fail.
- is invariant across all levels for any Codex call invoked by sub-skills.
Constants
- PAPER_DIR = — Source paper directory. Override via positional argument.
- OUTPUT_DIR = — Where the deck artefacts live.
- STATE_DIR = — Workflow state, audit logs, final report.
- TALK_TYPE = — Default talk format. Inherited by .
- TALK_MINUTES = 15 — Default duration. Inherited by .
- VENUE = — Default venue (used by color schemes when is not passed).
- ASPECT_RATIO = — Inherited by .
- STYLE_PRESET — if not passed; and venue presets supported by .
- REFERENCE_VISUAL — Required when . The Beamer compile of this talk is an acceptable self-reference; an external academic talk PDF is preferred when the user wants visual alignment beyond defaults.
- AUTO_PROCEED = false — Each major phase pauses for user approval. Set only when explicitly requested.
Inputs
Discovered from
and the project directory:
- — compiled paper ( + ). The paper must already be in good shape; this workflow does not write the paper.
- — section sources for content extraction.
- — figures available for slide reuse.
- (optional) — pre-existing outline (resume mode); skips Phase 1 generation.
- (optional) — visual anchor for . If absent and the assurance level requires polish, the workflow uses the Beamer self-compile as reference.
- (optional) , , , — see Constants.
Output Layout
File names match
's emit contract — this workflow is a
non-renaming consumer.
slides/
├── SLIDE_OUTLINE.md # Phase-1 outline (claim-first per slide)
├── main.tex # Beamer source (from /paper-slides)
├── main.pdf # compiled Beamer
├── presentation.pptx # editable PPTX (from /paper-slides; emit name fixed by /paper-slides)
├── presentation_pre_polish.pptx # snapshot before /slides-polish
├── presentation_polished.pptx # /slides-polish output (when assurance ≥ polished)
├── presentation_polished.pdf # rendered (LibreOffice or user-export)
├── speaker_notes.md # per-slide notes (from /paper-slides)
├── TALK_SCRIPT.md # full word-for-word talk script + Q&A (from /paper-slides)
└── assets/ # per-slide PNG previews
.aris/paper-talk/
├── PIPELINE_STATE.json # phase pointer, status, timestamps
├── FINAL_REPORT.md # human-readable summary at end
├── audit-input/ # Phase-4 staging copies of slide text + notes + script (so /paper-claim-audit and /citation-audit can run on slide content as a synthetic "paper")
│ ├── main.tex # \input{sections/slide_text.tex} \input{sections/notes.tex} \input{sections/script.tex}
│ ├── sections/
│ │ ├── slide_text.tex # all visible slide bullets/titles/callouts as \section{Slide K}
│ │ ├── notes.tex # speaker_notes.md → LaTeX, one \section per slide
│ │ └── script.tex # TALK_SCRIPT.md → LaTeX, one \section per slide
│ ├── references.bib → ../../../paper/references.bib # symlink to source paper bib for /citation-audit
│ ├── results/ → ../../../paper/results/ # symlink — claim audit needs real evidence
│ └── figures/ → ../../../paper/figures/ # symlink — citation audit may reference figure captions
└── audits/
├── slide_claim_audit.json # 6-state verdict per claim (PASS/WARN/FAIL/NOT_APPLICABLE/BLOCKED/ERROR)
├── citation_audit.json # citation existence / metadata
├── anonymity_scan.json # placeholder discipline check
└── export_integrity.json # page-count / aspect / blank-slide / notes-preserved
The audit JSON files follow the shared 6-state schema; see
../shared-references/assurance-contract.md
.
Workflow
Phase 0: Setup
- Validate paper directory:
ls $PAPER_DIR/main.tex $PAPER_DIR/main.pdf
. If absent → halt and ask user to point to the compiled paper.
- Check prerequisites:
- LaTeX:
which xelatex pdflatex latexmk
- PPTX rendering: (LibreOffice headless) — required for Phase 4 export integrity check; otherwise prompt user to export PDF manually.
- PDF tools: (poppler) — required for PNG rendering.
- Codex MCP availability.
- python-pptx ().
- Resolve overrides from : , , , , , .
- State init: write
.aris/paper-talk/PIPELINE_STATE.json
with , timestamp, all resolved overrides.
- Resume mode: if exists and shows recent in-progress work, prompt the user — resume from last phase or start fresh.
Phase 1: Slide Outline (Checkpoint)
Goal: produce or accept a
that the user signs off
on before any deck-building happens.
If
already exists, present its summary (slide
count, time budget, claim-per-slide map) to the user and ask:
"Use existing outline (Y/n)? Modify? Regenerate?"
Otherwise, delegate to
Phase-1 only (content extraction +
slide outline generation).
writes the outline into its own
state; we adopt it as
.
The outline must contain, per slide:
- A claim-first title (states the slide's point, not the topic).
- One main idea per slide.
- Bullet content (sentence fragments, not paragraphs).
- Figure / equation / callout note.
- Time budget (seconds).
- Transition cue.
- Speaker note seed (1-3 sentences; expanded in Phase 2).
Checkpoint: present the outline. Default behavior: pause for user
approval. Set
only when the user is explicitly
running unattended.
Phase 2: Build Baseline Deck
Invoke
to generate Beamer source + PPTX from the approved
outline.
/paper-slides "<paper-dir>" — talk_type: <T> — minutes: <N> — venue: <V> — aspect: 16:9 — notes: true
Forward
if the user originally passed it (writer-side; the
reviewer-side polish in Phase 3 must NOT see it — see invariant 8).
produces (emit names fixed by
):
- + (Beamer)
- (editable PPTX)
After return: verify the four artefacts exist. If any missing, halt with a
diagnostic. Do not rename outputs — downstream phases bind to these
exact paths.
Phase 3: Visual Polish (when assurance ≥ polished)
Invoke
against the freshly generated PPTX, with a
reference. If the user passed
, use that. Otherwise, use the
Beamer compile (
) as the visual reference — the Beamer is
the design intent for the same talk, so it is the correct anchor when no
external reference is available.
/slides-polish "slides/presentation.pptx" — reference: slides/main.pdf — style: <preset> — effort: <effort>
After return: verify
slides/presentation_polished.pptx
exists; if
rendering tools are available, also verify
slides/presentation_polished.pdf
.
The polish phase is read-only on content (see Hard Invariants). If
emits a
verdict because a Codex fix proposal
would alter content, surface that block to the user and halt rather than
overriding.
Phase 4: Assurance Checks (when assurance == conference-ready)
Skip when
assurance ∈ {draft, polished}
.
and
expect a paper-shaped input
(
+
+
) and emit
JSON under
. Slides have a different shape, so this phase first
stages slide artefacts into a synthetic paper directory, then invokes
the audits against that synthetic input. Verdicts are written under
using the shared 6-state schema (
,
,
,
,
,
) — see
../shared-references/assurance-contract.md
.
4.0 Staging adapter
The staged "paper" mirrors
and
's
expected layout:
at the root that
s
,
plus a
file and
+
symlinks.
.aris/paper-talk/audit-input/
├── main.tex
│ # contains: \input{sections/slide_text.tex}
│ # \input{sections/notes.tex}
│ # \input{sections/script.tex}
│ # \bibliography{references}
├── sections/
│ ├── slide_text.tex # one \section{Slide K — <title>} per slide; visible bullets, titles, callout text, in-slide \cite{...}
│ ├── notes.tex # speaker_notes.md converted to LaTeX, one \section per slide
│ └── script.tex # TALK_SCRIPT.md converted to LaTeX, one \section per slide
├── references.bib → ../../../paper/references.bib # symlink to source paper bib (or copy if symlink not allowed)
├── results/ → ../../../paper/results/ # symlink — claim audit needs real evidence
└── figures/ → ../../../paper/figures/ # symlink — citation audit may reference figure captions
If the source paper uses a different bib name (e.g.,
),
mirror the actual file. If multiple bibs are used, link them all.
The staged "paper" exists only for the duration of Phase 4 and is removed
in Phase 6 unless the user passes
.
4.1 Slide claim audit
Invoke
against the staged input. Scope is
slide
text + speaker notes + full talk script — talks often smuggle
unsupported claims into spoken parts that the visible bullets don't show.
/paper-claim-audit ".aris/paper-talk/audit-input"
The audit emits
audit-input/PAPER_CLAIM_AUDIT.json
with the shared
6-state schema. Move it to
.aris/paper-talk/audits/slide_claim_audit.json
and de-stage the path
prefix so the verdicts cite slide K rather than synthetic-paper sections.
A
or
verdict on any claim downgrades the Phase-6 final
verdict from
to
.
4.2 Citation audit
Invoke
over the staged input. Verify any
in
slides + notes + script via DBLP / CrossRef; flag fabricated entries.
/citation-audit ".aris/paper-talk/audit-input"
Output →
.aris/paper-talk/audits/citation_audit.json
(6-state).
4.3 Anonymity scan
When the talk is for an anonymous-submission venue or the user passed
, scan
slides + notes + script for:
- Real paper titles where placeholders should be (,
Withheld for anonymous review
, etc.).
- Real author names beyond the talk's own author block.
- Real submission counts.
- Real URLs that would deanonymize.
Output →
.aris/paper-talk/audits/anonymity_scan.json
(6-state). Any
(real-content leak) blocks
.
Phase 5: Final Export + Integrity
Resolve the final PPTX path:
FINAL_PPTX = slides/presentation_polished.pptx if Phase 3 ran
= slides/presentation.pptx if assurance == draft (Phase 3 skipped)
Then:
- Recompile Beamer cleanly:
cd slides && latexmk -pdf -xelatex main.tex
(or for non-CJK). Confirm page count matches outline slide count.
- Render → PDF via
soffice --headless --convert-to pdf <FINAL_PPTX> -outdir slides/
. If unavailable, prompt user.
- Export integrity check →
.aris/paper-talk/audits/export_integrity.json
(6-state):
- PPTX-PDF page count == Beamer-PDF page count.
- Aspect ratio == declared (16:9 default).
- No fully-blank slide.
- Speaker notes preserved on every slide that had them in the baseline. When Phase 3 ran, sha256 match against
presentation_pre_polish.pptx
's notes; when Phase 3 skipped, against 's own notes (no-op).
- Embedded fonts are appropriate for projector use (e.g., Calibri / Helvetica Neue / PingFang SC for Chinese).
If any integrity check fails, downgrade the Phase-6 verdict and surface
specifics to the user.
Phase 6: Final Report
Write
.aris/paper-talk/FINAL_REPORT.md
with:
- Verdict: | | (downgraded if audits failed).
- Artefact paths: Beamer source / PDF, baseline PPTX, polished PPTX, polished PDF, notes, script.
- Slide count, time budget vs target.
- Audit summary (one line per audit run + PASS / WARN / FAIL).
- Open warnings: any unresolved Codex polish notes the user should review by hand.
- Next steps: e.g., "drop in real QR images on slide N", "verify HF Daily Papers screenshot", "rehearse to confirm 25-min budget".
A final
verdict requires:
- Phases 0-5 all completed without halt.
- All Phase-4 audit JSONs returned (or when the
audit's content detector did not match — e.g., no citations on slides).
Any , , , or downgrades the verdict.
- Phase-5 export integrity returned .
- No anonymity-scan when anonymous submission is declared.
Otherwise the report emits the highest passing level (
or
) and itemises why
was not granted, citing the
specific audit JSON and the failing verdict line.
Effort Levels
See
../shared-references/effort-contract.md
.
| Behavior |
|---|
| Forwarded to sub-skills. runs in (BLOCKERS only). Phase 4 still runs at the requested assurance level — controls depth, never audit gating (see ../shared-references/assurance-contract.md
). |
| (default) | Standard pipeline. runs . |
| runs (per-page review on every slide). Phase-4 audits read all artefacts in full. |
| runs (second polish round). Phase-4 audits include extended assurance checks; final report adds an executive summary. |
and
are
independent axes. The user may legally
combine
effort: lite, assurance: conference-ready
to mean "fast pipeline,
but every audit must emit a verdict before finalisation."
Parameter Pass-Through
/paper-talk "paper/" — talk_type: oral — minutes: 25 — assurance: conference-ready \
— reference: ./refs/why_rf_2025.pdf — style: why-rf — effort: max
Forwarded to:
- (Phase 2): , , , , , , if writer-side.
- (Phase 3): polished pptx target, , , .
- (Phase 4.1): scoped to slide deck artefacts (not paper).
- (Phase 4.2): scoped to slide-deck-only citations.
- Anonymity scan (Phase 4.3): inline tool, no external skill.
When NOT to Use
- The paper is not yet compiled or claims are not stable. Run first.
- The user wants a poster, not a talk. Use .
- The user already has a finished deck and only needs visual polish. Use directly — would needlessly rebuild.
- The talk content is unrelated to a paper (general lecture, demo). The orchestration assumes a paper-grounded talk; for ad-hoc decks, use directly with manual outline.
Prior Skill Relationship
- Composes , , , .
- Does not call by default — that is upstream intellectual stress-test, not deck QA. Users who want talk-story stress-test before slide build can run first.
- Sister workflow to (paper) and (poster).
Empirical Origin
This workflow generalises a 30+ iteration polish run on a Chinese-spoken
academic conference talk (May 2026). The convergent learning was that talk
preparation has the same shape as paper preparation — plan, build, polish,
audit, export, report — and benefits from the same assurance ladder. The
per-page Codex polish pass (Phase 3) is the single most expensive but
highest-value step, and is hidden behind the
default so users
get it without thinking about it.