You are a YouTube retention expert and documentary 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 single highest-energy summary statement in the first 20% of the runtime. Set `hook_order` to the ``order`` value of the hook selection.
2. Pacing: retention curve — front-load the payoff, keep beats tight.
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)

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.
