{{ toast }}

{{ boardEmptyTitle }}

{{ boardEmptyBody }}

{{ silo.name }}
{{ silo.matchedCount }} candidates touching this silo
{{ silo.filledCount }} filled·{{ silo.assignedCount }} assigned·{{ silo.openCount }} open
{{ role.orderBadge }} {{ role.title }} {{ role.assignedName }} {{ role.statusLabel }} {{ role.matchCount }} matches
+ Add New Role
Add silo
{{ selectedRole.orderBadge }} {{ selectedRole.siloName }}

{{ selectedRole.title }}

FILLED
{{ selectedRole.lockLabel }}

{{ selectedRole.description }}

{{ cf.label }} — {{ cf.value }}
Matched to this role
{{ cand.initials }}
{{ it.text }} {{ it.text }} {{ it.labelText }}{{ it.fieldText }}{{ it.fieldText }} {{ line.tag }} {{ line.label }}
{{ it.text }}
{{ it.text }}
{{ it.labelText }}{{ it.fieldText }}
{{ it.fieldText }}
{{ line.tag }} {{ line.label }}
{{ it.text }}
{{ it.text }}
{{ it.labelText }}{{ it.fieldText }}
{{ it.fieldText }}
{{ line.tag }}{{ line.label }}
{{ cand.overflowLabel }}
{{ it.text }}
{{ it.text }}
{{ it.labelText }}{{ it.fieldText }}
{{ it.fieldText }}
{{ line.tag }}{{ line.label }}
No candidates matched yet.
Recommended in Previous Roles
{{ cand.initials }}
{{ it.text }} {{ it.text }} {{ it.labelText }}{{ it.fieldText }}{{ it.fieldText }} {{ line.tag }} {{ line.label }}
{{ it.text }}
{{ it.text }}
{{ it.labelText }}{{ it.fieldText }}
{{ it.fieldText }}
{{ line.tag }} {{ line.label }}
{{ it.text }}
{{ it.text }}
{{ it.labelText }}{{ it.fieldText }}
{{ it.fieldText }}
{{ line.tag }}{{ line.label }}
{{ cand.overflowLabel }}
{{ it.text }}
{{ it.text }}
{{ it.labelText }}{{ it.fieldText }}
{{ it.fieldText }}
{{ line.tag }}{{ line.label }}
Other candidates
{{ cand.initials }}
{{ it.text }} {{ it.text }} {{ it.labelText }}{{ it.fieldText }}{{ it.fieldText }} {{ line.tag }} {{ line.label }}
{{ it.text }}
{{ it.text }}
{{ it.labelText }}{{ it.fieldText }}
{{ it.fieldText }}
{{ line.tag }} {{ line.label }}
{{ it.text }}
{{ it.text }}
{{ it.labelText }}{{ it.fieldText }}
{{ it.fieldText }}
{{ line.tag }}{{ line.label }}
{{ cand.overflowLabel }}
{{ it.text }}
{{ it.text }}
{{ it.labelText }}{{ it.fieldText }}
{{ it.fieldText }}
{{ line.tag }}{{ line.label }}
{{ selectedRole.othersEmptyLabel }}
Selection order
{{ row.orderBadge }}
{{ row.siloName }} {{ row.title }}
{{ row.description }} {{ row.detailLine }}
{{ row.assignedName }} {{ row.statusLabel }}
Nothing matches yet. Drop a filter and try again.
All {{ viewAll.candidateLabel }}
{{ viewAll.countLabel }}
Search these fields
Ranges
{{ nr.label }} to
{{ row.initials }}
{{ it.nameText }} {{ it.tagText }} {{ it.labelText }}{{ it.fieldText }}{{ it.fieldText }} {{ line.label }}
{{ it.nameText }}
{{ it.tagText }}
{{ it.labelText }}{{ it.fieldText }}
{{ it.fieldText }}
{{ line.label }}
{{ it.nameText }}
{{ it.tagText }}
{{ it.labelText }}{{ it.fieldText }}
{{ it.fieldText }}
{{ line.label }}
{{ it.nameText }}
{{ it.tagText }}
{{ it.labelText }}{{ it.fieldText }}
{{ it.fieldText }}
{{ line.label }}
{{ viewAll.moreRowsLabel }}
Nothing matches yet. Drop a filter and try again.
{{ candidateModal.heading }}
{{ candidateModal.initials }}
{{ candidateModal.photoNote }}
Recommend for roles
{{ candidateModal.selectedRoleCount }}
Nothing matches. Clear the search to see every role.
{{ grp.name }}
Export to Excel
{{ exporter.subtitle }}
Perspective
{{ p.title }}
{{ p.desc }}
Scope
{{ exporter.siloLabel }}
{{ s.label }}({{ s.count }})
Status to include
{{ s.label }}({{ s.count }})
Sheet layout
Columns
Click to toggle · drag to reorder
{{ c.label }}
Formatting
File name
Summary
{{ s.value }}{{ s.label }}
Sheets to generate
{{ n }}
{{ exporter.warning }}
Selection Board

Sign in

{{ loginScreen.resolvedUrl }}
{{ loginScreen.error }}
{{ loginScreen.status }}
{{ loginScreen.methodToggleLabel }}

Enter your code

If an account exists for {{ loginScreen.email }}, a 6-digit code was sent.

{{ loginScreen.error }}
Start over {{ loginScreen.resendLabel }}
{{ st.num }} {{ st.label }}

Configure email

Optional here, but without SMTP no one can log in — OTP codes have nowhere to send. You can add it later in Settings.

Setting up…
{{ wizardScreen.wizardError }}
No SMTP configured — nobody can log in until you set it up in Settings.
{{ col }}

Board structure

Creating collections is a schema change, so it needs the database superuser once. Held in memory only.
Checking…
{{ wizardScreen.wizardError }}
Superuser verified
{{ wizardScreen.yamlFileName }} — {{ wizardScreen.yamlCounts.fields }} candidate fields, {{ wizardScreen.yamlCounts.roleFields }} role fields, {{ wizardScreen.yamlCounts.silos }} silos, {{ wizardScreen.yamlCounts.roles }} roles
{{ wizardScreen.yamlFileName }} failed validation:
{{ err }}
Use the sample structure file instead
Candidate fields
{{ f.label }} {{ f.type }}
Role fields

These are built in automatically:

{{ af.label }}
{{ f.label }} {{ f.type }}

Review

Board name — {{ wizardScreen.wizardBoardName }}
{{ wizardScreen.reviewFieldCount }} candidate fields
{{ wizardScreen.reviewSiloCount }} silos
{{ wizardScreen.reviewRoleCount }} roles
Loaded from {{ wizardScreen.yamlFileName }}.
Silos and roles are added in the next step.

Load data

Optional. Skip to add records by hand later.

{{ row.label }} {{ row.status }}
Silos (manual)
{{ s.name }}
Roles (manual)

Add a silo above before adding roles.

{{ r.siloName }} {{ r.title }}
Candidates (manual)
{{ c.full_name }} {{ c.summary }}

Finish

The superuser account you verified — {{ wizardScreen.suEmailForAdmin }} — becomes the board's first admin. No separate admin account is created.

The superuser account you verify on the Board structure step becomes the board's first admin. No separate admin account is created.

{{ wizardScreen.wizardError }}
Import {{ csvImportModal.kindLabel }} — {{ csvImportModal.fileName }}

Map each column to a field. Unmapped columns are ignored.

{{ col.header }}
{{ csvImportModal.toCreate }} to create{{ csvImportModal.toUpdate }} to update{{ csvImportModal.toSkip }} to skip
{{ row.rowIndex }} {{ row.summary }} {{ row.action }} {{ row.reason }}

{{ csvImportModal.result.created }} created, {{ csvImportModal.result.updated }} updated, {{ csvImportModal.result.skipped }} skipped.

Row {{ err.row }}: {{ err.reason }}
{{ candidateDetailModal.initials }}

{{ candidateDetailModal.name }}

{{ f.label }} {{ f.value }}
Roles
{{ line.tag }}{{ line.label }}
{{ t.label }}
General
Labels
{{ row.key }}
Fields
Adding or removing a field changes the database schema. Sign in as a database superuser to apply changes live.
{{ settingsModal.suError }}
Signed in as database superuser.
{{ settingsModal.candidateFieldsHeading }}
{{ f.label }} {{ f.type }}
{{ settingsModal.roleFieldsHeading }}
{{ af.label }}
{{ f.label }} {{ f.type }}
Candidate card

Drag a field into a zone to place it, or into Hidden to drop it. This layout applies to every user's board.

Start from
{{ z.title }} {{ z.note }}
{{ it.label }}
Drop a field here
Photo
Text size {{ settingsModal.cardDesigner.textScaleLabel }}
Preview
{{ settingsModal.cardDesigner.sample.initials }}
{{ it.text }} {{ it.text }} {{ it.labelText }}{{ it.fieldText }}{{ it.fieldText }} {{ line.label }}
{{ it.text }}
{{ it.text }}
{{ it.labelText }}{{ it.fieldText }}
{{ it.fieldText }}
{{ line.tag }} {{ line.label }}
{{ it.text }}
{{ it.text }}
{{ it.labelText }}{{ it.fieldText }}
{{ it.fieldText }}
{{ line.tag }} {{ line.label }}
{{ it.labelText }}{{ it.fieldText }}
{{ it.fieldText }}
{{ it.text }}
{{ it.text }}
{{ line.tag }} {{ line.label }}
Users
{{ u.email }}
Columns: email, admin
Security
Backend

Point this board at a real PocketBase instance. Same-origin (via the Caddy proxy in the deploy files) needs no extra config — just /api.

Connected — live data
{{ settingsModal.pbError }}
Import
{{ row.label }}
Export

One CSV per collection, in the same column shape Import expects — a plain backup of the whole database. For a formatted candidate spreadsheet use Export to Excel from the top bar.

{{ row.label }} · {{ row.count }}
Reset board

Deletes all silos, roles, candidates, matches, and decisions. Board name and field definitions are kept. Type the board name to confirm.

Silo properties
Add Role — {{ addRoleModal.siloName }}
Add Silo
Remove field?
Remove "{{ fieldDeleteConfirm.label }}" from the candidate profile? It will no longer appear on the candidate form or card. This can't be undone.