# Invite Tiers > A card-sorting board for an event's guest list - a wedding, a milestone birthday, a dinner, a child's party. Every invitation is a sticky-note card; you drag cards (or send them with number keys) into ordered tiers such as "A - must invite", "B - if there's room", "Waitlist" and "Not this time". Each tier carries rules that are checked live in the browser, and a metered reviewer reads the sort, names the tensions and proposes card moves that you accept one by one. URL: https://invite-tiers.skillsafe.ai/ API tutorial: https://invite-tiers.skillsafe.ai/api.html Derived from: the event-planner skill by @travisjneuman (https://skillsafe.ai/skill/@travisjneuman/event-planner) - attendee management, seated versus standing venue capacity, per-head budgets with a contingency - applied to sorting a guest list into tiers. ## What runs free in the browser - Cards: name on the invitation, seats (1-12), side (for a two-sided event), group (family, uni, work...), tags (immediate, kids, plus-one, travelling...), extra cost, likelihood of coming (0-100%), a note. - Tier rules: a seat cap; an invitation cap; a budget at the per-head price plus extras; "cumulative" so the seat cap and budget count this tier plus every tier above it (how a venue's seated capacity works across an A and a B list); tags every card of which must sit in the tier; tags the tier refuses. - Pairs: "together" (same tier) and "not both" (invite one of the two). - Live sums per tier: invitations, seats, expected headcount (seats x likelihood), cost. Broken rules are shown as red tape on the tier and on the card. - Coverage: invited seats per side with shares and an imbalance flag; groups with cards but nobody invited. - Drag and drop between tiers and within one (rank), multi-select and bulk move, number keys 1-9 to tier N and 0 to the pile, Alt+arrows to reorder, undo and redo, shuffle back to the pile, a bottom sheet on phones. - Paste or drop a list or CSV; export a CSV of every card with its tier and rank, a printable one-page summary, JSON and Markdown. ## The review (metered, needs a SkillSafe account) Two tasks over one prompt, chosen by the `task` field: - `review` - the first look: every broken rule is raised as a tension, then misfits (a card whose fields contradict its tier or the brief), split pairs, empty tiers and balance; plus up to ten concrete moves (card -> tier, or a swap) and questions only the hosts can answer. - `recheck` - after you moved things: every earlier tension is sorted into resolved or still open against the board as it is now, new tensions get fresh ids, dismissed moves are not repeated. The model never does arithmetic: it is sent the sums, the rules and the broken rules. The page then reconciles the reply: card ids and tiers must exist, every move is re-checked against the rules before it is drawn on the board as a ghost card, a move that would break a rule is marked "would break: ...", rule tensions are matched against the board's real violations, and any broken rule the reply never raised is listed. Output contract (one JSON object): `{task, headline, tensions:[{id, kind: rule|misfit|split|empty|balance|other, tier, cards, severity, text}], moves:[{id, card, to, swap_with, reason, fixes}], questions:[...], recheck:{resolved, still_open, note}}`. ## History One record per board in the user's own SkillSafe collection (`boards`), mirrored in the browser; a second look updates the same record.