Swipe and shortlist
Swipe through candidates, shortlist the best, and send a note your AI agent drafts for you.
Copies a short instruction with your private download link. Paste it into your agent: it downloads the whole skill (the source code, the setup steps and the mistakes we already made for you) and builds the screen.
Works with
What it does
Matching apps (hiring, dating, co-founder search, deal flow) need a deck that feels alive: cards that tilt and shimmer, swipes that commit with a flick, stamps that tell you what will happen before you let go, and a way to act on a card without leaving the deck. This skill ships that whole loop as one drop-in screen:
- Deck — three stacked cards; the ones behind rise a slot as you drag the top one away. Right = shortlist, left = pass, up = reach out, tap = details. Quick flicks count via
predictedEndTranslation. "Shortlist" / "Pass" / "Contact" stamps fade in with drag distance; haptics fire on swipe and when you cross the threshold. - Holographic foil — the top card gets green/white interference bands, a narrow glint and twinkling sparkles that drift with the drag offset, the device gyroscope (CoreMotion) and time, plus a flowing foil rim. Both are Metal
layerEffects (SWShortlistFoil.metal), the same shaders the source app ships. - Card — full-bleed portrait (or a monogram fallback), availability pill with a live pulse, animated match ring, name + verified seal, headline, location / years / salary, horizontally scrolling skill tags, and a four-tile insight strip (Signal grade, Looking %, Vibe styles + score, Heat flames).
- Action row — undo (last pass), pass, a big brand "reach out" button, shortlist heart, info. Liquid Glass circles on iOS 26, material before that.
- Toast — a top glass capsule: "Shortlisted Lena Moreau", "Request sent to …"; auto-hides after 2.6 s. Pass
onToastto route these to your app's own toast instead (e.g. one pinned under the status bar, above your navigation bar). - Reach-out sheet — "Reach out to <name>", "For which role?" chips (preselects the candidate's suggested role), and three ways to write: *Write it with <agent>* (your async drafting closure — an LLM call — returns the note, the sheet types it out word by word under "<agent> is writing…", then it becomes editable with a x/400 counter and Rewrite), *Write my own*, *Use the default message*. Send request is disabled while drafting, when empty, or over 400 characters.
The brand, backend and persistence are stripped: candidates and roles come in through init, every action goes out through a closure.
What you get
- ✓1,577 lines of source code, ready to paste
- ✓Architecture
- ✓Dependencies
- ✓Implementation
- ✓Integration Checklist
- ✓Common Customizations
- ✓Known Pitfalls