Collections
Collections are the heart of how teams use Catalog. They’re named, ordered groupings of shows — a pitch list, a quarterly plan, a vetting batch, a category sample — and they’re the unit of sharing, insights, proposals, and most other actions.
Scopes
Every collection lives in exactly one of two scopes. Choosing the right one upfront saves a lot of “who can see this?” confusion later.
Organization scope
- Stored on an org id (
organization_idset). - Visible to every member of that org. New members joining the org immediately see every org-scoped collection.
- Editable by the creator, anyone the creator shared edit access with, and admins.
- Folder tree is per-org. Each org has its own independent folder hierarchy.
- URL —
/<orgSlug>/collections/<slug>or/<orgSlug>/collections/folder/<folder>/<slug>. - Best for shared team work product: pitch lists, quarterly plans, vetting batches, anything the team needs to find.
Personal scope
- Stored on a user id (
created_byset,organization_idis null). - Visible to only the creator (and admins, who can read everything).
- Editable by only the creator.
- Folder tree is per-user. Your personal folders follow you across every workspace.
- URL —
/personal/collections/<slug>or/personal/collections/folder/<folder>/<slug>. - Best for drafts, scratch lists, “interesting shows” piles, anything you don’t want teammates to see yet.
Switching scopes later
Use the Transfer action on a collection’s action menu to move it between scopes. The Transfer modal previews who’ll gain and lose access before you commit:
- Personal → Organization — exposes the collection to everyone in the target org.
- Organization → Personal — restricts it to you, revoking every share and removing it from everyone else’s sidebar.
- Organization → other Organization — only available to admins; moves between orgs.
Transferring a shared collection prompts a confirmation explaining that the existing recipients will lose access.
How shares interact with scope
| Scenario | What happens |
|---|---|
| Org collection, you share with a non-member by email | They see it under “Shared with me” via the token. The org’s full membership still sees it normally. |
| Personal collection, you share with someone | They see it under “Shared with me”. Nobody else can. |
| Personal collection, you transfer to Organization | Existing shares stay; org members now also see it. |
| Org collection, you transfer to Personal | All shares are revoked. Org members no longer see it. |
The takeaway: scope governs the default audience; shares add specific recipients on top.
Where to find them
| Surface | What it shows |
|---|---|
| Left sidebar | The active org’s collections + folders, plus your personal collections + favorites + recently visited. |
/collections (unified tree) | Cross-org, all-scopes view in a single tree. |
/<orgSlug>/collections | Just this org’s collections in tree form. |
/personal/collections | Your personal scope. |
/shared/collections | Collections others have shared with you. |
/browse/recent | Recently opened collections. |
Unified collections tree at /collections.
Tree with org folders, personal folders, and shared collections under labeled virtual roots.
Screenshot pending
Creating
There are three places to start a new collection:
- Sidebar ”+” button next to the Collections heading.
- Floating action bar when shows are selected — “Add to Collection → + New collection”.
- Spotlight (⌘K) → “Create new collection”.
The create modal asks for:
- Name (required)
- Description (optional, short)
- Scope — Organization (default in an org workspace) or Personal
- Folder — pick an existing folder or leave at the root
Create collection modal.
Mantine modal with name, description, scope radio, folder picker.
Screenshot pending
Slugs are generated from the name automatically with collision avoidance (q1-pitches, q1-pitches-2, …).
Folders
Collections can be nested into a folder hierarchy. Folders are scoped just like collections (separately for org and personal), and they support drag-and-drop reordering.
To create a folder:
- Sidebar ”+” → New folder, or
- Drag a collection on top of another to create a folder containing both (the modal will ask for the folder name).
To rearrange:
- Drag a collection or folder up/down within its parent to reorder.
- Drag onto a folder to move it inside.
- Drag onto the parent root to lift it out.
Dragging a collection between folders.
Tree view with one collection being dragged, drop targets highlighted.
Screenshot pending
URL form for folder views: /<orgSlug>/collections/folder/<path> and /personal/collections/folder/<path>.
Per-collection actions
Right-click a collection in the tree (or use the kebab menu on the row) to open its action menu:
| Action | What it does |
|---|---|
| Open | Load the collection’s shows in the grid. |
| Insights | Open the Insights drawer. |
| Duplicate | Make a copy (“Copy of …”) preserving all show links. |
| Share | Open the Share modal. |
| Rename | Change the name and/or description. Slug stays the same. |
| Move / transfer | Change scope (Personal ↔ Organization) or owning org. |
| Create Vetting | Deep-link to the external vetting tool, pre-filled with show names. |
| Request Proposal | PPN org only. Deep-links to the Orders app where proposals actually live — Catalog just hands off the collection ID. |
| Delete | Soft-deletes. Recovery requires an admin restore (see admin guide). |
Actions respect permissions — share/rename/delete only appear on collections you own (or as admin).
Collection action menu (right-click).
Mantine Menu with the actions above. Delete is at the bottom in red.
Screenshot pending
Adding & removing shows
From the shows grid:
- Select one or more rows with the row checkboxes.
- Add to Collection in the floating action bar → pick a collection.
- To remove: open a collection, select rows, click Remove from Collection.
From within a collection’s detail view, the Suggestions card (see AI suggestions) offers AI-recommended additions you can add one at a time or in bulk.
Shows can belong to many collections at once. Adding to a second collection does not remove from the first — they’re independent links.
Reordering inside a collection
Drag the row drag handle (left of the row checkbox) to reorder shows inside a collection. The order is persisted on the collection_show junction and reflects in the share view.
Dragging a row to reorder within a collection.
Hand cursor on the drag handle, blue insertion line between rows.
Screenshot pending
Duplicate, transfer, delete
- Duplicate — creates
Copy of <name>with the same scope/folder, copying every show link. Tags, share recipients, and insights state are not copied. - Transfer — move a collection between Personal ↔ Organization scope, or between orgs you have admin rights in. A confirm modal reviews who will gain/lose access.
- Delete — soft-deletes. The collection disappears from the tree immediately but remains in the database. Restoration is an admin task.
Transfer collection modal.
Radio group for target scope, org picker, summary of access changes ('5 share recipients will lose access').
Screenshot pending
Recently visited & favorites
Two helpers in the sidebar surface collections without searching:
- Recently Visited — auto-tracks the last few collections you opened, scoped to the active workspace. Right-click to remove an entry.
- Favorites — star a collection (in the tree or the detail header) to pin it. Cross-org.
The dedicated /browse/recent page shows the same recently-visited list with full collection cards (artwork mosaic, show count, description).
Edge cases & gotchas
- Deleting while viewing — if you delete the collection you’re currently viewing, Catalog redirects you to home and shows a toast.
- Collection deleted by someone else — if another user deletes a collection you’re viewing, Catalog detects this on next render and redirects with an “unavailable” toast.
- Slug collisions within a scope auto-suffix (
q1-pitches-2). Slugs across scopes can collide (e.g. a personalq1-pitchesand an orgq1-pitches) — URLs disambiguate them via the scope prefix. - External collections — opening a favorite at someone else’s personal collection works; Catalog does a second-chance fetch when the slug isn’t in your local list.
- Empty collection — viewing an empty collection shows a friendly empty state with prompts to add shows or open AI suggestions.