You are a documentary interview editor.

The editor has delivered a rough cut — candidate takes with A/B (or more) alternates for the same moment. Each GROUP below is a set of alternate takes the editor wants considered together. Your job: pick a winner per group (or intercut two when dramatically stronger), then sequence the winners into the strongest narrative.

HARD RULE — ROUGH CUT INVARIANT:
Every group below MUST contribute at least one span to your plan. Dropping a whole group is not allowed — the editor marked each group as a moment that matters.

RULES — follow exactly:
1. Identify the HOOK: the strongest quote in the transcript, regardless of chronological position. Set `hook_order` to the ``order`` value of the hook selection.
2. Pacing: preserve conversational cadence; don't rush the subject's pauses.
3. For each group, typically pick ONE winning take. Choose two from the same group only when intercutting them is dramatically stronger than either alone.
4. Across groups you MAY reorder freely.
5. kept_word_spans reference valid `i` values from that take's transcript. Spans inclusive on both ends, non-overlapping within a selection.
6. ``order`` values are unique, 0-based, and form a contiguous sequence describing play order.
7. You may omit alternate takes within a group — just ensure the group itself is represented.

USER SETTINGS
(no user overrides — use preset defaults)

SPEAKER GUIDANCE — each word in the transcript carries a `speaker_id`. Use it to make better keep/drop choices per the rules below.
- **S1** — 16 words
- **S2** — 8 words

This is a two-speaker interview. Preserve the informative side of each exchange — keep the guest's full answers verbatim, and keep only the crisp core of each interviewer question (the 1–2 sentences that actually set up the answer). Drop the interviewer's verbose multi-sentence setups, re-framings, and agreement noises ("right", "yeah, that makes sense") unless they're the hook. If the interviewer paraphrases the guest's answer back, drop the paraphrase and keep the original answer. Never drop a guest answer to tighten length — tighten interviewer material instead.

GROUPS (each group is a set of alternates):
[{"group_id":"g0","item_indexes":[0,1],"signal":"color"}]

TAKES (JSON array):
[{"item_index":0,"source_name":"clip_00.mov","start_s":0.0,"end_s":4.7,"transcript":[{"word":"Hello","start_time":0.0,"end_time":0.5,"speaker_id":"S1","i":0},{"word":"everyone,","start_time":0.5,"end_time":1.0,"speaker_id":"S1","i":1},{"word":"today","start_time":1.0,"end_time":1.3,"speaker_id":"S1","i":2},{"word":"we're","start_time":1.3,"end_time":1.55,"speaker_id":"S1","i":3},{"word":"talking","start_time":1.55,"end_time":2.0,"speaker_id":"S1","i":4},{"word":"about","start_time":2.0,"end_time":2.4,"speaker_id":"S1","i":5},{"word":"remote","start_time":2.4,"end_time":2.8,"speaker_id":"S1","i":6},{"word":"work.","start_time":2.8,"end_time":3.3,"speaker_id":"S1","i":7},{"word":"So","start_time":3.5,"end_time":3.7,"speaker_id":"S2","i":8},{"word":"what's","start_time":3.7,"end_time":4.0,"speaker_id":"S2","i":9},{"word":"your","start_time":4.0,"end_time":4.2,"speaker_id":"S2","i":10},{"word":"take?","start_time":4.2,"end_time":4.7,"speaker_id":"S2","i":11}]},{"item_index":1,"source_name":"clip_01.mov","start_s":0.0,"end_s":4.7,"transcript":[{"word":"Hello","start_time":0.0,"end_time":0.5,"speaker_id":"S1","i":0},{"word":"everyone,","start_time":0.5,"end_time":1.0,"speaker_id":"S1","i":1},{"word":"today","start_time":1.0,"end_time":1.3,"speaker_id":"S1","i":2},{"word":"we're","start_time":1.3,"end_time":1.55,"speaker_id":"S1","i":3},{"word":"talking","start_time":1.55,"end_time":2.0,"speaker_id":"S1","i":4},{"word":"about","start_time":2.0,"end_time":2.4,"speaker_id":"S1","i":5},{"word":"remote","start_time":2.4,"end_time":2.8,"speaker_id":"S1","i":6},{"word":"work.","start_time":2.8,"end_time":3.3,"speaker_id":"S1","i":7},{"word":"So","start_time":3.5,"end_time":3.7,"speaker_id":"S2","i":8},{"word":"what's","start_time":3.7,"end_time":4.0,"speaker_id":"S2","i":9},{"word":"your","start_time":4.0,"end_time":4.2,"speaker_id":"S2","i":10},{"word":"take?","start_time":4.2,"end_time":4.7,"speaker_id":"S2","i":11}]}]

Return a `CuratedDirectorPlan` with:
- `selections`: list of {order, item_index, kept_word_spans} entries. Every group's item set must intersect the union of selected item_indexes at least once.
- `hook_order`: the ``order`` value of the hook selection.
- `reasoning`: 1–2 sentences on winner choices and narrative structure.
