Collection examples
Four worked collections — employee benefits, technologies, certifications, and learning resources — with their fields, sample CSV rows, dashboard setup, API shape, and SDK rendering code.
A
JA collection is a reusable set of structured entries that many profiles or jobs can point at. You define the collection's fields once — a summary, a category, a website, an uploaded file — then add entries such as Annual leave or TypeScript. A profile or job selects entries by reference, so editing one entry updates every place that selected it. Each selection can also carry its own typed details, so a shared entry stays shared while a company or candidate records what is specific to them.
Collections live in three places. The dashboard is where you create collections, add entries, import CSV files, and connect a collection to the company profile, talent profile, or job form. The public API and the Board SDK return the resolved entries on company, talent, and job responses, and expose the active choices for filters. Cavuno-hosted boards do not render collection fields — an AI-builder site or your own custom frontend does, which is why each example below ends with SDK code and a prompt you can paste into the AI website builder.
Employee benefits
Why
Every company on the board describes the same handful of benefits in slightly different words, which makes them impossible to compare or filter. Hold one Annual leave entry with a neutral description, then let each company attach its own allowance and wording. The same collection powers a "Benefits" section on job pages.
Fields
| Field | Type | Required | Notes |
|---|---|---|---|
summary | Long text | Yes | Set as the default description, so a selection renders without extra copy |
category | Single select | No | time_off, health, money, learning — stored as the option key |
policy_url | URL | No | Your own explainer page for the benefit |
Every entry also has the built-in name. Add per-selection details on the profile field, not here: days_per_year (Number) and notes (Short text) belong to the company that selected the entry.
Sample entries
Open the collection, choose Import CSV, match name to the entry name, external_id to the external ID, and the rest to their collection fields. Re-importing the same external_id updates that entry instead of creating a second one.
Connect it
- Open Settings → Company profile → Custom fields → Add field.
- Choose Collection reference, label it
Employee benefits, and check the derived keybenefits. - Select the Employee benefits collection, choose Multiple, and set Maximum selections — an operator-defined maximum, up to 100. It defaults to 100 and stays editable later.
- Set
summaryas the description attribute and turn on Allow title and description changes so a company can say "Flexible annual leave" in its own words. - Add Details per selection:
days_per_year(Number) andnotes(Short text). - Leave Show on public profile on and Profile owner can edit on, so approved company members maintain their own benefits.
- Save, then repeat in Settings → Job form → Custom fields → Add field → Collection reference with the same collection if job pages should list benefits too. Set Default description to
summaryand, under What each job can change, turn on Allow title and description changes so one job can word a benefit its own way.
What the API returns
A company detail response carries one resolved object per selected entry in objectReferences:
title and description are already resolved: they hold the override when the company set one and the collection default otherwise. titleOverride and descriptionOverride are present only when the company replaced the shared wording.
Render it with the SDK
Ask the AI builder
Add a "Benefits" section to the company profile page. Read
objectReferencesfrom the company detail response and keep the selections whosefieldKeyisbenefits. Render each one as a card with itstitle, itsdescription, itslogoUrlwhen present, and a "25 days" style pill built fromvalues.days_per_yearwhen that number is set. Keep the order the API returns and hide the section when there are no benefits.
Word a benefit for one job
A job that offers unlimited leave can still select the shared Annual leave entry, so it filters with every other job, and show it as Unlimited PTO. In the dashboard job form, select Annual leave, press its edit button, set Title to Unlimited PTO and Description to "Take the time you need, with a two-week minimum.", then choose Apply changes and save the job. Restore defaults clears both boxes.
Through the API, send the same wording as collectionOverrides next to collectionValues, on the operator job endpoints or on an approved employer's company job endpoints:
The job response then resolves the entry to that wording, while name keeps the shared entry name:
An entry without its own wording returns its name as title, the summary value as description, and null for both overrides. On an update, leave collectionOverrides out to keep the stored wording, or send [] to restore every default.
Technologies
Why
A shared technology list gives every company and candidate the same spelling and the same logo, and it gives the board a filter that actually matches. One entry holds the logo, so no frontend keeps a second technology-to-logo map.
Fields
| Field | Type | Required | Notes |
|---|---|---|---|
logo | Image | No | Marked as the logo: in Collection settings, open its row menu and choose Use as logo |
website | URL | No | The technology's official site |
category | Single select | No | language, framework, database, platform |
The entry name is the display name and the image in the logo field is the icon. Put the per-profile nuance on the profile field: years (Number) for companies, proficiency (Single select) for candidates.
Sample entries
Images cannot be imported, so upload each logo in the entry editor after the import. Use a square SVG or PNG so it reads well as a small chip.
Connect it
- Open Settings → Company profile → Custom fields → Add field → Collection reference.
- Label it
Technologies, keytechnologies, and select the Technologies collection. - Choose Multiple, set Maximum selections to 12 so a stack list stays readable, add the per-selection detail
years(Number), and keep Show on public profile and Profile owner can edit on. - Save, then open Settings → Talent profile and add the same field with key
technologies, Multiple, and a per-selection detailproficiency(Single select). - Keep both public: a private field is excluded from public responses and cannot be used as a filter.
What the API returns
Render it with the SDK
The talent directory takes the same clause shape:
Filter options come from board.profileFields.retrieve('company') (or 'candidate'), which returns only public definitions. Submit the record id from choices, never the display name. Follow nextCursor to load more choices.
Ask the AI builder
Build a technology filter for the company directory. Load the options with
board.profileFields.choices('company', 'technologies', { search, limit: 20 }), follownextCursorwhen the user scrolls, and show each option'snamewith itslogoUrl. When options are selected, pass theiridvalues toboard.companies.searchasobjectReferences: [{ key: 'technologies', recordIds }]. On the company profile, render thetechnologiesselections as logo chips with the years fromvalues.years.
Certifications
Why
Candidates hold the same certification with different issuers, different dates, and sometimes more than one award of it. A shared entry keeps the certification's name and awarding body accurate, while repeatable details record each award the candidate actually holds.
Fields
| Field | Type | Required | Notes |
|---|---|---|---|
summary | Long text | Yes | Default description for the entry |
awarding_body | Short text | Yes | The organisation that grants the certification |
verification_url | URL | No | Where an employer can verify a credential |
Issuer and expiry date are not collection fields. They differ per candidate and per award, so they belong in Repeatable details on the profile field.
Sample entries
Connect it
- Open Settings → Talent profile → Custom fields → Add field → Collection reference.
- Label it
Certifications, keycertifications, and select the Certifications collection. - Choose Multiple, leave Maximum selections at 20, and add Repeatable details:
issuer(Short text, required) andexpiry_date(Date). - Leave Show on public profile and Profile owner can edit on. The candidate maintains the list and it appears on the public talent profile.
- For an operator-verified variant, add a second collection-reference field — label
Verified certifications, keyverified_certifications, the same collection — with Show on public profile off and Profile owner can edit off. Only your team can set it and it never reaches a public response.
Visibility and owner editing are independent. A private field is omitted from public profiles, public API responses, and filters, but the operator still sees it in the dashboard.
What the API returns
verified_certifications is absent from this response because the field is private.
Render it with the SDK
The signed-in candidate edits the same data through board.me.profile.retrieveObjectReferences() and board.me.profile.updateObjectReferences({ selections }). Each repeatable row needs a stable key that starts with a letter — reuse it when editing the same award.
Ask the AI builder
On the talent profile page, add a "Certifications" list built from the
objectReferencesentries whosefieldKeyiscertifications. For each selection, showtitleandattributes.awarding_body, then one row per item inentrieswithvalues.issuerand a formattedvalues.expiry_date. Mark a row as expired when the date is in the past. Do not invent a verified badge — the verification field is private and never appears in the response.
Learning resources
Why
Showing a candidate's learning track needs more than a name: a cover image, a formatted overview, a downloadable syllabus, and a link to the technology it teaches. One collection can hold all four, and a reference field ties it back to Technologies so the two stay in sync.
Fields
| Field | Type | Required | Notes |
|---|---|---|---|
summary | Long text | Yes | Default description; keeps cards readable without the rich text |
cover | Image | No | Uploaded, returned as file metadata with a URL |
overview | Rich text | No | Sanitised HTML, up to 20,000 characters after unsupported markup is removed |
syllabus | File | No | Uploaded document, up to 10 MB |
technology | Collection reference | No | Single reference to a Technologies entry |
Sample entries
The CSV carries only name, external_id, and summary. Image, file, and collection reference columns are rejected by the importer, so upload the cover and syllabus and pick the technology on each entry after the import finishes.
Connect it
- Create the Learning resources collection in Settings → Collections and add the five fields above. Set
technologyto reference the Technologies collection with Single selection. - Import the CSV, then open each entry to upload its cover and syllabus and pick its technology.
- Open Settings → Talent profile → Custom fields → Add field → Collection reference.
- Label it
Learning track, keylearning_track, select the Learning resources collection, and choose Single. - Keep Show on public profile and Profile owner can edit on so candidates pick their own track.
What the API returns
An Image or File attribute is a single metadata object; an Image gallery attribute is an array of them. references is keyed by the reference field's key and always holds an array, even for a single selection.
Render it with the SDK
Ask the AI builder
On the talent profile, add a "Learning track" panel from the single
objectReferencesselection whosefieldKeyislearning_track. Use the returnedattributes.cover.urlfor the image,titleanddescriptionfor the header,attributes.overviewas already-sanitised HTML, andattributes.syllabus.urlfor a download link labelled withattributes.syllabus.name. Show the linked technology fromreferences.technology[0].name. Render nothing for any part the response omits.
Limits and tips
- A profile type supports up to 50 collection-reference fields, and a collection can hold its own fields plus references to other collections. One account can hold up to 100 collections.
- A Single field stores one entry. A Multiple field's ceiling is an operator-defined maximum, up to 100 entries, set with Maximum selections and editable later. One profile stores at most 500 collection selections in total and at most 100 repeatable detail rows per selection. A job form accepts up to 20 collection fields, and one job stores at most 500 selections across them.
- Rich text is sanitised on write and capped at 20,000 characters after unsupported markup is removed. Short text is capped at 200 characters and long text at 2,000.
- Image galleries hold up to 10 images, and any single upload is limited to 10 MB. CSV files are limited to 8 MB in the dashboard; the background import API accepts payloads up to 10 MB.
- Entry names are capped at 160 characters and external IDs at 200. Give every row an external ID so a re-import updates instead of duplicating.
- Archiving an entry keeps the selection stored on the profiles that already chose it, so an owner can save their profile without losing it, but the entry stops appearing in new choices, in resolved API responses, and in filters. An archived choice used as a filter returns
invalid_filter. - Collection keys and saved field types are immutable. Pick a key that describes the data rather than today's wording, because labels can change later and keys cannot.
- Import the text, number, date, select, and URL columns from CSV; add image, file, and reference values on each entry afterwards.
- Filters accept at most 10 clauses per array and 10 values per clause, and only public fields and active public entries can be filtered. Always send record IDs from
board.profileFields.choicesorboard.jobs.collectionChoices, never display names.