# Type '@', open the tool menu, filter it by typing, and commit an inline app chip Manual DaVinci Resolve / Fusion construction guide generated from the recipe. It is not a tested .drp. The accompanying Remotion project (recipe.json) is the executable definition; the numbers below are copied from it. Neither construction establishes source fidelity: this is an original vector approximation of an inspected editing moment. ## Source and clock Reference: OpenAI's "How to Build a Personalized Meal Planner with ChatGPT Work" (t64oZKCdG8Q), published 2026-08-27. Source interval [1612, 1648) on the 24000/1001 fps master: 36 frames, 1.501500 s. Local frame 0 = source frame 1612. Create a 1920x1080 progressive timeline at 24000/1001 fps and a Fusion composition exactly 36 frames long. Keep integer frames; do not round the frame rate. Background field: #151a2b. Export silent H.264 yuv420p to match the intended playback container. ## Observation In the left chat pane a composer is typed quickly: 'Can y' at ~f2, 'Can you build' at ~f6, and the moment '@' lands (~f10) a white menu card pops above the composer listing generic actions (Add, Files and folders, Goal, Plan mode, ...). Typing 'insta' (~f11-14) swaps it for a shorter, filtered list of matching apps with the first row highlighted. At ~f18 the highlighted app becomes a green inline chip in the composer and the menu vanishes; ' grocery list?' is typed after the chip by ~f30 and holds. The right pane's orange grocery checklist is static. ## Mechanism Mention trigger: a typed '@' opens a command menu, further characters filter it, and selecting converts the typed token into a persistent inline chip. ## Phases (local frames) - 0: Typing begins - 10: '@' opens the generic menu - 14: Menu filters to matching apps - 18: Selection becomes an inline chip; menu closes - 30: Trailing words typed - 36: End ## Layer inventory (absolute 1920x1080 top-left pixels, back to front) - group [group] at (8, 57) size 882x1023 - rect [rect] at (8, 57) size 882x1023 radius 12 fill #ffffff - rect [rect] at (8, 57) size 882x56 fill #f1f1f1 - ellipse [ellipse] at (22, 77) size 14x14 fill #ff5f57 - ellipse [ellipse] at (44, 77) size 14x14 fill #febc2e - ellipse [ellipse] at (66, 77) size 14x14 fill #28c840 - text [text] at (98, 72) text "Plan the weekly meals" 17px weight 400 #444444 - text [text] at (630, 72) - rect [rect] at (32, 137) size 834x70 radius 12 fill #ffffff stroke #e2e2e2 1.5px - rect [rect] at (48, 153) size 38x38 radius 8 fill #2f5fb3 - text [text] at (100, 149) text "Penny's Plates" 16px weight 600 #222222 - text [text] at (100, 173) text "Only visible to you" 14px weight 400 #888888 - rect [rect] at (708, 157) size 130x32 radius 16 fill #111111 - text [text] at (708, 164) size 130x0 text "Share" 14px weight 600 #ffffff - rect [rect] at (32, 957) size 834x92 radius 20 fill #ffffff stroke #d9d9d9 1.5px - text [text] at (52, 977) text "Can you build the @" 20px weight 400 #222222 reveal chars frames 0-10 visible [0, 10) - text [text] at (52, 977) text "Can you build the @cart" 20px weight 400 #222222 reveal chars frames -3-15 visible [10, 18) - text [text] at (52, 977) text "Can you build the" 20px weight 400 #222222 visible [18, 36) - rect [rect] at (238, 975) size 24x24 radius 6 fill #2e9d3a visible [18, 36) - text [text] at (270, 977) text "Cartly" 20px weight 600 #2e9d3a visible [18, 36) - text [text] at (344, 977) text " grocery list?" 20px weight 400 #222222 reveal chars frames 18-30 visible [18, 36) - text [text] at (52, 1015) text "+" 22px weight 400 #555555 - text [text] at (88, 1017) text "Custom" 15px weight 400 #777777 - text [text] at (670, 1017) text "5.6 Sol Medium" 15px weight 400 #777777 - ellipse [ellipse] at (822, 1009) size 30x30 fill #111111 - group [group] at (32, 617) size 700x330 visible [10, 14) - rect [rect] at (32, 617) size 700x330 radius 14 fill #ffffff stroke #e2e2e2 1px - text [text] at (80, 633) text "Add" 17px weight 400 #888888 - text [text] at (80, 677) text "Files and folders" 17px weight 600 #222222 - text [text] at (80, 721) text "Goal" 17px weight 600 #222222 - text [text] at (80, 765) text "Plan mode" 17px weight 600 #222222 - text [text] at (80, 809) text "Record a skill" 17px weight 600 #222222 - text [text] at (80, 853) text "Plugins" 17px weight 600 #222222 - text [text] at (80, 897) text "Sites" 17px weight 600 #222222 - rect [rect] at (44, 671) size 24x24 radius 6 fill #eeeeee - rect [rect] at (44, 715) size 24x24 radius 6 fill #eeeeee - rect [rect] at (44, 759) size 24x24 radius 6 fill #eeeeee - rect [rect] at (44, 803) size 24x24 radius 6 fill #eeeeee - rect [rect] at (44, 847) size 24x24 radius 6 fill #eeeeee - rect [rect] at (44, 891) size 24x24 radius 6 fill #eeeeee - group [group] at (32, 707) size 700x240 visible [14, 18) - rect [rect] at (32, 707) size 700x240 radius 14 fill #ffffff stroke #e2e2e2 1px - rect [rect] at (40, 715) size 684x40 radius 8 fill #f1f1f1 - rect [rect] at (52, 723) size 24x24 radius 6 fill #2e9d3a - text [text] at (88, 723) text "Cartly" 17px weight 600 #222222 - text [text] at (88, 767) text "Cart Helper" 17px weight 600 #222222 - text [text] at (88, 811) text "Card Designer" 17px weight 600 #222222 - text [text] at (88, 855) text "Carbon Tracker" 17px weight 600 #222222 - text [text] at (88, 899) text "Cargo Planner" 17px weight 600 #222222 - rect [rect] at (52, 767) size 24x24 radius 6 fill #eeeeee - rect [rect] at (52, 811) size 24x24 radius 6 fill #eeeeee - rect [rect] at (52, 855) size 24x24 radius 6 fill #eeeeee - rect [rect] at (52, 899) size 24x24 radius 6 fill #eeeeee - text [text] at (242, 725) text "Groceries and more delivered" 15px weight 400 #888888 - group [group] at (1086, 57) size 720x1023 - rect [rect] at (1086, 57) size 720x1023 radius 12 fill #ffffff - group [group] at (1086, 113) size 720x967 - rect [rect] at (1086, 113) size 720x967 fill #f7efd6 - text [text] at (1116, 143) text "This week's grocery list" 40px weight 800 #111111 - line [line] at (1086, 113) stroke #111111 3px - rect [rect] at (1116, 223) size 660x900 radius 12 fill #f0803a stroke #111111 3px - rect [rect] at (1126, 209) size 110x32 radius 4 fill #ffffff stroke #111111 2px - text [text] at (1126, 216) size 110x0 text "PRODUCE" 14px weight 800 #111111 - rect [rect] at (1146, 273) size 24x24 radius 4 fill #ffffff stroke #111111 2px - rect [rect] at (1146, 321) size 24x24 radius 4 fill #ffffff stroke #111111 2px - rect [rect] at (1146, 369) size 24x24 radius 4 fill #ffffff stroke #111111 2px - rect [rect] at (1146, 417) size 24x24 radius 4 fill #ffffff stroke #111111 2px - rect [rect] at (1146, 465) size 24x24 radius 4 fill #ffffff stroke #111111 2px - rect [rect] at (1146, 513) size 24x24 radius 4 fill #ffffff stroke #111111 2px - rect [rect] at (1146, 561) size 24x24 radius 4 fill #ffffff stroke #111111 2px - rect [rect] at (1146, 609) size 24x24 radius 4 fill #ffffff stroke #111111 2px - rect [rect] at (1146, 657) size 24x24 radius 4 fill #ffffff stroke #111111 2px - rect [rect] at (1146, 705) size 24x24 radius 4 fill #ffffff stroke #111111 2px - rect [rect] at (1146, 753) size 24x24 radius 4 fill #ffffff stroke #111111 2px - rect [rect] at (1146, 801) size 24x24 radius 4 fill #ffffff stroke #111111 2px - rect [rect] at (1146, 849) size 24x24 radius 4 fill #ffffff stroke #111111 2px - rect [rect] at (1146, 897) size 24x24 radius 4 fill #ffffff stroke #111111 2px - text [text] at (1186, 273) text "Bananas" 18px weight 600 #111111 - text [text] at (1186, 321) text "Pears" 18px weight 600 #111111 - text [text] at (1186, 369) text "Blueberries" 18px weight 600 #111111 - text [text] at (1186, 417) text "Strawberries" 18px weight 600 #111111 - text [text] at (1186, 465) text "Peaches" 18px weight 600 #111111 - text [text] at (1186, 513) text "Avocados" 18px weight 600 #111111 - text [text] at (1186, 561) text "Cucumbers" 18px weight 600 #111111 - text [text] at (1186, 609) text "Zucchini" 18px weight 600 #111111 - text [text] at (1186, 657) text "Broccoli" 18px weight 600 #111111 - text [text] at (1186, 705) text "Sweet potatoes" 18px weight 600 #111111 - text [text] at (1186, 753) text "Butternut squash" 18px weight 600 #111111 - text [text] at (1186, 801) text "Cauliflower" 18px weight 600 #111111 - text [text] at (1186, 849) text "Spinach" 18px weight 600 #111111 - text [text] at (1186, 897) text "Lemons" 18px weight 600 #111111 - rect [rect] at (1086, 57) size 720x56 fill #f1f1f1 - ellipse [ellipse] at (1100, 77) size 14x14 fill #ff5f57 - ellipse [ellipse] at (1122, 77) size 14x14 fill #febc2e - ellipse [ellipse] at (1144, 77) size 14x14 fill #28c840 - text [text] at (1176, 72) text "Penny's Plates" 17px weight 400 #444444 - text [text] at (1546, 72) text "penny-plates.site" 15px weight 400 #777777 ## Construction steps 1. Timeline 1920x1080 at 23.976 fps; Fusion comp 36 frames. Local 0 = master frame 1612. 2. Layout as the split-pane example: chat window plate at (8,57) 882 wide, site window at (1086,57) 720 wide with a static orange checklist card. 3. Composer 834x92 at y=900 inside the chat pane; Text+ 20px Write On 'Can you build the @' frames 0-10, then a second Text+ 'Can you build the @cart' visible frames 10-18 whose Write On adds the last 4 characters between 11 and 15. 4. Menu A: 700x330 white card with shadow at (24,560) visible frames 10-13, seven 17px rows; Menu B: 700x240 card at (24,650) visible frames 14-17 with the first row highlighted #f1f1f1 and a green 24px app square. 5. From frame 18: static prefix text, a 24px #2e9d3a chip square at x=230 with the 20px green app label at x=262, then Write On ' grocery list?' from x=336 over frames 18-30 with caret. 6. Easy mistake: the menu must swap content instantly on filter (no crossfade) and disappear on the same frame the chip appears. ## Content variants Default copy: - listHead: This week's grocery list - app: Cartly - typedA: Can you build the @ - typedB: Can you build the @cart - prefix: Can you build the - typedC: grocery list? Adaptation changes: - listHead: Weekend shopping list - app: Cartly - typedA: Please send the @ - typedB: Please send the @cart - prefix: Please send the - typedC: order today? ## Limits Easing names map to Fusion spline shapes: linear = linear, in/out/inOut = ease curves on the same frames, hold = step, spring/overshoot = slight overshoot past the target before settling. Text reveal frames give the first and last unit; distribute characters/words evenly between them. Cursor click rings last 14 frames. Vector illustration is an approximation of layout and motion, not the product UI or recovered production assets.