---
name: reinvent-shortlist
description: Turn 2,200 sessions into a ranked, explained shortlist to favorite in the catalog. The research-phase workhorse — use before times are published, when the user says "what should I go to", "narrow this down", "which sessions matter for me", or wants their favorites reviewed.
---

# Build a re:Invent shortlist

Output is a tiered list the user can act on this week: must-see, strong,
maybe — each with the reason it ranked there.

## Run it

> **Where to run these.** Every command below needs the planner repo on the
> Python path. If there is no `reinvent/` directory in the current working
> directory, you are not in it — resolve this skill's own base directory (printed
> when the skill loaded, and usually a symlink), then go two levels up: that is
> the repo root. `cd` there first, or call `<repo>/bin/reinvent <command>` by
> absolute path, which works from anywhere. Do not tell the user to install
> anything; there are no dependencies.

```bash
python3 -m reinvent sync                                    # if the snapshot is stale
python3 -m reinvent shortlist --profile profiles/<name>.json
```

Useful knobs:

| Flag | Why |
| --- | --- |
| `--limit 40` | How long the list is. 40 is right for a first pass; 15 for a focused ask |
| `--per-topic-cap 4` | Stops one topic swallowing the list. Raise it when the user genuinely wants one area only |
| `--must-cap 15` | Size of the must-see bucket |
| `--topic`, `--area`, `--service`, `--level`, `--type` | Narrow the pool before ranking, e.g. "just security" |
| `--no-sponsored` | Drop vendor-sponsored content |
| `--out shortlists/<name>.md` | Save it; the user will want to re-read it on the plane |

Then **read the output before you present it.** You are the second opinion, not
a pipe.

## What to say when you present it

Lead with the shape, not the list: how many must-sees, which topics dominate,
and one thing that looks off. Then the list. Then the single next action.

Three specific things worth calling out:

- **Interactive vs replayable.** Workshops, builders' sessions, chalk talks and
  labs cannot be watched later and fill up first — those are the ones to
  favorite now. Breakout sessions are usually posted to YouTube; they are the
  cheapest thing to drop.
- **Laptop-required sessions** need a laptop and a real time commitment. Flag
  them if the user said they would not carry one.
- **Concentration.** If 15 of 20 picks are one topic, say so and ask whether
  that is the intent. Sometimes it is; often it means a weight is too high.

## Iterating with the user

This is a conversation, not a report. Expect two or three rounds.

| They say | Do |
| --- | --- |
| "too much AI" | Lower that topic weight in the profile, or `--exclude` the term, and re-run |
| "why is this one here?" | `python3 -m reinvent explain <CODE> --profile <p>` |
| "nothing here about X" | `python3 -m reinvent search X` — if the catalog has nothing, say so plainly; more waves are coming |
| "I already favorited these" | Use `--code` to score their existing list and tell them which ones are weak |
| "give me only the hands-on stuff" | `--type Workshop --type "Builders' session"` |

## Optional deep pass: research session quality in parallel

Scoring only knows catalog metadata. It cannot tell you that a session billed
400-level presents at 200, that it is a repeat of last year whose recording is
already on YouTube, or that a technical-sounding title is a sponsor pitch. That
judgement needs the web, and it fans out cleanly.

Offer this when the stakes are high — a first-timer, a long trip, or reservations
approaching — and when the list is longer than about 20 sessions.

```bash
python3 -m reinvent shortlist --profile profiles/<name>.json --limit 60 --json > /tmp/candidates.json
```

Split those candidates into 4–6 **disjoint** slices of ~10–12 codes and dispatch
one agent per slice **in a single message** so they run concurrently. Ask each,
per session code, for:

- do the speakers have a track record that justifies the slot?
- is this a repeat of a prior year, and if so is the recording already online?
- does the abstract match its claimed level?
- does it read like a sponsor pitch wearing a technical title?

Require a source URL per claim and `unknown` where there is none. Tell each agent
explicitly that it may **not** introduce session codes — it judges the ones you
handed it. A code absent from the local snapshot does not exist.

Then merge and act: drop the pitches, demote repeats whose recording exists,
promote strong speakers, and if a pattern emerges adjust the profile weights and
re-run. Report what the research *changed*, not that you did research.

Full discipline, including when not to bother, is in
[`docs/parallel-research.md`](../../docs/parallel-research.md).

Do **not** fan out the scoring itself. One `shortlist` run already scores every
session against the profile in well under a second; splitting it is slower and
gives inconsistent weights.

## Reviewing a list the user already made

Genuinely useful and often requested. Take their codes and score them:

```bash
python3 -m reinvent shortlist --profile profiles/<name>.json \
  --code ANT319 --code SEC301 --code NET313 --limit 50 --min-score -99
```

`--min-score -99` keeps low scorers visible so you can name the weak picks
instead of silently dropping them. Report: which of their picks are strong,
which score near zero and why, and what they are missing.

## The funnel, if they are starting from zero

The approach that works, from people who do this every year: filter wide into a
draft list of ~100 sessions, then cut hard down to **4 a day**. Do not try to
arrive at the final list in one pass — the first pass is deliberately generous,
and `--limit 40` with a loose `--min-score` is the tool's version of that.

## The close

Finish with the favorite list the CLI prints — the block of codes under
"Favorite list", along with the catalog URL printed above it:

<https://registration.awsevents.com/flow/awsevents/reinvent2026/eventcatalog/page/eventcatalog>

Tell them concretely: open that page, sign in to their re:Invent account, paste
one code at a time into the search box, and star the result. Do not assume they
know which catalog you mean or where the favorite control is — say it. Favoriting
is free, reversible, and the only thing that makes the booking phase fast.

**Say plainly that favoriting is not reserving.** A favorite is a bookmark; only
the Reserve button holds a seat, and reservations open separately in the fall.
People show up to full rooms holding nothing but a favorite. When that day comes,
route to `reinvent-reserve`.

Do not claim you have reserved anything. You have not.
