Docs
On this page

HRPulsar Features

HRPulsar is an open source platform for talent and competency management. This page describes what each module does in the current release. For installation see Getting Started; to run it on your own servers see the Self-Hosted Guide.


Employee Management

Employee Profiles

A central record for every person in the company: position, division, hire date, status, and avatar.

  • Two ways to add an employee: send an email invitation (the card is created when the person accepts) or create a card manually for an existing user
  • Status lifecycle: active, on leave, inactive, terminated. Inactive and terminated accounts lose access immediately, and the employee is notified by email
  • The profile header shows five summary tiles: Status, Tenure, Assessments, Goals progress, and Last assessment. Tile counts respect role visibility, so employees never see drafts hidden from them
  • Goals progress averages completion across the employee's open development plans; a hint next to the tile explains the formula
  • Edit rights follow the role matrix: admins and HR edit any record, division managers edit only employees in their own subtree, the employee role is read-only
  • Assigning someone as a division manager or deputy upgrades their role automatically; removing the assignment asks for confirmation before the downgrade
  • The card header repeats the same issue badges the directory shows for that person, so opening a profile says what is wrong before any tab is clicked
  • An actions menu on the header starts anything that is about this person — a development plan, an assessment, a career event — on the screen that owns the flow, with the employee already filled in

Employee Directory

A filterable directory of everyone in the workspace.

  • Columns: name and email, division, position, specialization and grade, status
  • Multi-select filters for divisions, statuses, positions, specializations, grades, and issues. Selections persist in the URL, so a filtered view can be bookmarked or shared
  • An Issues column names what is wrong with each person — no active account, incomplete profile, overdue or stalled assessment, competence gap with no development plan, overdue plan, no assessment in the last six months — and the Issues filter narrows the list to one of them
  • Search runs on the server and matches first name, last name, full name, and email across all pages
  • Managers see only the divisions they manage in the filter; admins and HR see the full tree
  • An edit dialog changes name, position, division, and status in one step, with the usual scope guards

Employee Events

A timeline of milestones and changes through an employee's career.

  • Event types: hire, position change, division change, termination, compensation change, certification earned, assessment complete, development plan complete, exam complete, grade change
  • Events are recorded automatically on position, division, compensation, and status changes, with old and new values side by side
  • Filter by event type; custom events with free-text descriptions are supported

Employment History

Two blocks on the profile cover work history inside and outside the company.

  • Current employment tracks division and position spells in this organization. Start date is required, end date is optional, and each record shows the elapsed duration. New records prefill from the employee card
  • Previous employment records jobs at other companies: company, position, dates, and responsibilities. Dates are validated so the start never lands after the end

Education

Formal education records: universities, colleges, degrees.

  • Institution, degree type, and field of study, with start and end dates (ongoing education supported)
  • Degree types: Secondary, Vocational, Bachelor, Master, PhD, Doctorate

Courses & Certifications

Training courses and professional certifications.

  • Course title, provider, completion and expiry dates, and a certificate URL for verification
  • Expired certificates are highlighted in the list
  • Each course can be linked to the competences it develops, picked from the same competence tree used in assessments

Salary & Compensation

Compensation history per employee: salaries, bonuses, and allowances.

  • Amounts are stored in minor units with an ISO currency code
  • Effective date plus an optional end date for time-bound records, with free-text notes
  • Every change writes an employee event automatically
  • Admins and HR see all records; division managers see records inside their own subtree only
  • Compensation analytics: average salary by division and totals by type

Competence Snapshot

A snapshot of the employee's competence profile in two blocks.

  • Current position competences: a tree of every competence the employee's position requires, with the score from the latest completed assessment at the required level. A dash renders when no assessment has reached that level yet
  • Other competences: everything the employee was assessed on at a different level than the position requires, so results above or below the requirement stay visible
  • Every row opens a per-level score breakdown from the latest completed assessment
  • Score chips are color-coded: green at 75% and above, yellow from 50 to 74%, red below 50%
  • A competence scored below the passing bar of its assessment is labelled as a gap, in the same wording the directory and the dashboard use
  • A "Create development plan" action sits on the block, prefilled with the employee and the specialization and grade of their position. When the employee is already at the three-plan cap the action opens the newest active plan instead and says why

Organizational Structure

Company Profile

  • Industry classification, company size, website, and description
  • Company logo upload (PNG, JPEG, SVG, WebP, up to 5 MB) with drag-and-drop or import from a public URL
  • Activity fields (business sectors) picked from a configurable dictionary
  • The logo and profile appear on the public company page

Divisions

Hierarchical organizational units: departments, teams, offices.

  • Unlimited nesting depth with an expand/collapse tree view
  • A manager and a deputy manager per division; the division manager becomes the default assessment reviewer for its employees
  • List visibility follows the same scope everywhere: admins see the whole workspace, managers see their subtree, employees see their own records
  • The division page shows specializations with employee counts per plate, plus an employee list with combinable filters by specialization, position, and grade. Plates cover both the specializations mapped to the division and the ones its people actually hold
  • Divisions with children report on their whole subtree by default — plates, filters and the employee list include nested departments, and an "Include sub-divisions" switch narrows everything back to the division itself
  • An "Add employee" dialog attaches existing employees or creates new ones without leaving the page, with a confirmation step when someone is pulled from another division

Positions

Structured job positions linked to grades, specializations, and divisions.

  • Lifecycle status per position: active, on hold, frozen, closed. Closed positions are read-only until reopened
  • Headcount planning with a filled/plan indicator and a drill-down list of assigned employees. Each row surfaces the person's highest-priority alert: inactive account, incomplete profile, overdue assessment, assessment awaiting approval, or a plan awaiting review
  • The position page shows the resolved competence matrix as a compact tree with required skill levels, plus a deep link to configure the matrix
  • Positions can be generated with AI from a text brief, with a mandatory draft review before anything is saved
  • A dedicated admin view lists employees without a position for bulk assignment
  • The catalogue is readable workspace-wide, but a rank-and-file employee sees it without the grade, specialization, matrix and salary columns — the page hides them rather than showing a column of dashes, and it decides from the viewer's role and the workspace switch, not from whatever rows the current page happens to hold

Specializations

Each specialization is a full profile, not just a dictionary entry.

  • List view with grade count, position count, headcount, and an Active/Inactive status matching the dictionary; detail page with Grades and Positions tabs
  • Per grade: description, requirements, and a salary range in the installation currency (BILLING_CURRENCY, USD by default), shown to admins, HR and managers
  • The competence matrix editor is a competence-by-grade table with per-cell skill levels, a heat-map tint by level, indicator tooltips, and warnings on competences that lack indicators or materials
  • Matrix consistency is guaranteed: a higher grade never requires a lower level than the grade below it, both in the editor and on the server
  • A matrix can be generated with AI from a structured brief (responsibilities, tasks, KPIs, requirements) plus uploaded files (PDF, DOCX, XLSX, RTF, TXT). The result opens in a review screen where every suggestion can be edited or dropped before saving

Competency Framework

The competence library: groups, competences, indicators, and learning materials.

  • Hierarchical groups with two origins: built-in (system-wide) and custom (workspace-specific)
  • Indicators per competence with skill levels and weights; learning materials with a typed format and comments
  • Materials can be overridden per specialization: hide a base material for one audience or show an extra one only there. Development plans pick up these overrides automatically
  • Explicit publish/unpublish workflow, plus visibility toggles per group and competence
  • Custom skill levels per workspace; built-in levels stay locked
  • Deactivation is guarded: an element used in a matrix, employee card, assessment, plan, or talent card cannot be silently removed, and usage checks show where anything is referenced
  • Drag-and-drop reorganization of the tree with referential integrity checks
  • A per-competence audit log records every publish, move, activation, and deletion with actor and timestamp
  • The competence page groups indicators and materials by skill level, with editable indicator weights and drag-and-drop ordering

Grade System

Career progression paths built from specializations and grades.

  • Grades within specializations (for example Junior, Middle, Senior) linked to competence requirements through grade chains
  • A passing score per grade (75% by default) used as the reference threshold in assessments
  • Grade chains feed assessment criteria, grade recommendations, and career planning

Dictionaries

Reference data shared across the platform: specializations, grades, skill levels, material types.

  • Built-in and custom entries with sort ordering and active/inactive status
  • Built-in entries can be switched on or off per workspace; their titles stay fixed
  • Deleting a custom entry that is referenced elsewhere is blocked with a clear message

Recruitment

First Hiring Cycle

  • A non-blocking banner walks a new workspace through the first cycle: create a vacancy, add a candidate, schedule an interview, run the AI analysis, generate a report. Steps advance automatically as the work happens
  • Demo data seeds a sample vacancy with candidates and cleans itself up after 14 days

Vacancies

  • Structured vacancy fields: position, specializations, grades, division, salary, KPIs, requirements, responsibilities, conditions
  • Selects cascade from the company library — position constrains specializations, specializations constrain grades — and both the competence profile and the salary range prefill from the matching grade matrix
  • Every vacancy has a hiring manager, defaulting to the creator; any active member of the company can be named, whatever role they hold
  • Lifecycle: edit, archive with a 90-day retention window, restore, or permanently delete a draft without candidates
  • Parallel edits are protected: a stale save is rejected instead of silently overwriting someone else's change
  • Per-vacancy attachments (documents, spreadsheets, presentations, images; 25 MB each, up to 10) feed context into AI generation

Competency Profiles

  • Generate a vacancy's competence profile with AI from the description, tasks, and attachments; a clarification note passes straight into the prompt
  • The review screen supports keep/drop per competence, inline edits to names, indicators, and interview questions, and shows previously saved rows as locked
  • Nothing writes to the profile until the recruiter saves the reviewed selection
  • Alongside the generated profile, competences can be picked straight from the company library through the same group tree the assessments use; those are the ones the internal match is scored against, and they are listed on the section

Candidate Pipeline

  • Add candidates by hand (name plus email or phone) or by bulk resume upload: up to 50 PDF and DOCX files at once, parsed by an LLM into structured data
  • Duplicate emails are caught before import with a link-or-create choice per file
  • The candidate page carries contact details, the parsed resume with per-section inline editing, files, and every vacancy application with its scores
  • Funnel stages ship with a 9-stage default (new through hired, rejected, withdrew) and can be customized per workspace or per vacancy; stage changes into a terminal state ask for confirmation
  • The vacancy table shows last position, experience, current stage, and the two assessments side by side: how much of the vacancy profile the manager scored and how much the AI scored, each as a percentage so the two are directly comparable. The AI verdict comes with the reason for it in the row itself, not only behind a popover
  • A candidate nobody has assessed yet says so — "not assessed yet", with the reason in a tooltip — instead of an unexplained dash. Rows where the manager and the AI disagree carry a count of the competences they disagree on, and one definition of "disagree" is used everywhere: the workspace divergence threshold, applied per competence
  • Candidates who already work here are marked as such wherever candidates are read — the global list, the vacancy table (with the row tinted), and the candidate page — so an internal applicant is never mistaken for an outside one

Internal Candidates

  • Before hiring outside, the vacancy offers to look inside: one action posts the requisition to the internal talent market as a vacancy card, carrying its required competences across
  • The talent market's own competence matcher then fills the shortlist, and the vacancy shows those employees with their percentage match next to the external pipeline. There is no second matcher and no second copy of the requirements — the card is the vacancy's twin, and the link leads to it
  • Posting needs required competences picked from the company library: the AI-generated profile describes a candidate in prose, while the internal match is scored against library competences and assessment results
  • The card is created as a draft, so nothing is announced to employees until someone publishes it from the talent market
  • Internal matching is part of the employment relationship — it reads competence and assessment data the employer already holds for its own staffing decisions (legitimate interest), so it needs no separate employee consent. A per-vacancy switch lets the recruiter who owns a requisition keep a sensitive one out of the internal search; it is on by default and off means the vacancy cannot be posted to the talent market at all
  • Changing a vacancy's required competences updates the card it was posted to and re-runs the match, so the internal shortlist never answers a question the requisition stopped asking. Employees added to the card by hand who do not clear the bar are labelled as such instead of showing an empty score

Interview Questions

  • Question sets per candidate and vacancy, generated from the resume and the competence profile, with manual editing throughout
  • Questions can be added two ways: a custom question written by hand, or generated from the vacancy's competency indicators — pick competences from a searchable tree and each becomes a question carrying the competence's indicators, follow-up questions, and rationale
  • Every question shows its goal, priority, and the profile competence it probes, so coverage gaps are visible at a glance
  • Sets evolve across rounds: covered topics are marked (by hand or from the transcript) so the next round skips answered ground, and blind spots from prior analyses become probes
  • Only the first set is written from the resume alone. A new set is created for a specific assessment round — an existing one or the next interview, opened from the dialog — and built on a completed interview, so a round can never end up with two sets or none. The generation reads the earlier transcripts, AI analyses, and unanswered blind spots, and goes deeper where the evidence was thin rather than repeating what was already answered
  • The vacancy's Questions tab collects every candidate's latest set in one place, filtered by candidate and by any combination of the vacancy's competences
  • PDF export in compact, full, and card layouts

Manager Assessments

  • Workspace-defined assessment scales (2–10 weighted levels); each vacancy freezes its scale on the first score
  • Assessment rounds per candidate (pre-interview, numbered interviews, final) with a separate sheet per evaluator, always listed in hiring order
  • Several colleagues can score the same round: add an evaluator and they get their own sheet plus an email invitation with a direct link. Each writes only their own row, and a colleague's sheet stays hidden until you submit yours, so nobody anchors on someone else's answers. Pre-interview rounds keep a single evaluator
  • Round lifecycle from the tab menu: complete, reopen, archive, restore. Completing freezes the round — sheets turn read-only and the external links stop working. An archived round keeps every score but drops out of the candidate's average and is marked as excluded; it accepts no further writes either, from the hiring team or from an external evaluator whose link is still open
  • Indicator-level and competence-level scoring with autosave and a completion marker. Scoring a competence's indicators derives its overall score; setting the overall by hand instead clears the indicator answers, so the two never contradict each other
  • The round header carries the round's average score — the mean across every evaluator and competence, alongside its position on the scale's weights — and shows an em dash until the first score lands. While you are still scoring the round yourself, it counts only the sheets you may already read, so the header cannot hand you a colleague's number before you submit
  • Each competence shows its own cross-evaluator average, highlighted with a warning and a breakdown tooltip when evaluators differ by the scale's divergence threshold or more. External evaluators count toward these averages once they submit; a sheet whose invitation is revoked or declined stops counting
  • External evaluators join through secure token links with expiry, no account needed. The public evaluation page shows the resume and question list next to the scoring sheet and keeps the platform itself closed off. PDF resumes render inline; Word and text resumes are shown as an extracted preview, and the file is only downloaded when the evaluator asks for it
  • Recruiters track invite status (pending, opened, in progress, submitted, expired) and act on each invitation from its own menu — resend the same link, revoke it, or read the submitted evaluation in a read-only panel — revoking an invitation that was already filled in keeps that evaluation readable and marks it as no longer counted toward the round score. Resending the same invitation is throttled for a few minutes, and every invitation email counts against an hourly ceiling per recipient address, so neither a repeated click nor a stream of new invitations can flood an evaluator's inbox. Both limits are deployment-tunable
  • The vacancy's Assessments tab expands into a full-screen canvas: a candidates-by-competences matrix with manager and AI scores side by side, view and round switches, divergence-only and no-score filters, a cell-details footer, per-candidate totals, and XLSX/CSV export

Interviews & AI Analysis

  • Schedule interviews directly from the candidate page: vacancy, assessment round, title, date and time, duration, several interviewers, recording type, and notes. New cards appear at the top of the list
  • The interviewers assigned to a future interview are emailed the candidate's name, the vacancy, and the local date and time
  • Each row links to the interview by its title and shows its round, the date it was added, its status, and a menu to edit or archive it
  • Archiving hides an interview behind a "Show archived" filter and keeps it restorable for 90 days; the round link is released and the AI scores it produced are marked as coming from an archived source. After the window closes the recording is deleted and the record stays for audit
  • The interview page opens on its title, the vacancy and round it belongs to, a Details block (candidate, type, status, added, date and time, duration, interviewers) and a Notes block — with inline editing where it still makes sense
  • Upload audio (mp3, wav, m4a) and video (mp4, webm, mov, avi) up to 500 MB, or text transcripts up to 10 MB, several files at once
  • Uploads are chunked and resumable: pause, resume, retry, and continue after a browser reload
  • The interview's recording type follows the file that is uploaded; when it contradicts the type chosen at scheduling, the recruiter is asked to confirm the switch first
  • Consent capture with magic-link signing runs before any upload
  • Transcription through pluggable providers — Deepgram, Whisper, AssemblyAI and Yandex SpeechKit, three of them with speaker separation; the recording is transcribed in the tenant's content language, or in the language the provider detects when none is set, and every configured key joins one fallback chain, so a provider that refuses the request passes the interview to the next one instead of failing it; an in-app player covers audio and video with speed control and keyboard shortcuts
  • The recording is prepared before it is sent out: the video track is dropped and the audio re-encoded, so an hour of interview travels as a few megabytes instead of half a gigabyte, and a recording still above a provider's request-size limit is split into overlapping parts and stitched back into one transcript
  • When the provider that transcribed the interview does not separate speakers, the turns are split into interviewer and candidate from the transcript itself, so the analysis still knows whose words it is scoring
  • The analysis pipeline reports data completeness, competence scores, blind spots, process findings, red flags, and a verdict
  • The analysis, its questions, the generated competency profile and the candidate reports are written in the workspace's content language whatever language the interview was conducted in; a workspace that never opened the setting falls back to the language the vacancy was created in, and opening the settings page does not count as answering
  • Two modes: resume-only (a fast pre-screen that never returns "recommended") and full (interview-anchored, with citations from the transcript). A prior resume-only run upgrades to full for the price difference
  • Progress renders stage by stage with a cancel option; resume citations click through to the matching resume section, and the quoted fragments are marked in the parsed resume and click back to their citation
  • The analysis card spells out, in words, where the manager and the AI disagreed — which competence, both scores, and which way the AI leaned — or says that the two agree, or that no manager has scored the candidate yet, so the AI verdict is never the only voice on the page
  • The platform flags an analysis that no longer matches its inputs — a re-parsed resume, edited vacancy competences, a run past 30 days, or an interview transcript the analysis never saw — and offers the re-run that fixes it. A stale baseline also closes the discounted upgrade, so a full analysis is never built on findings that have moved
  • The candidates table reports whether an analysis is running right now, derived from the data rather than from the last run
  • Where a manager's scores and the AI's disagree by the workspace threshold, the candidates table counts those competences and names them on hover — including the ones scored in an assessment round or judged by a resume-only analysis — and opens the canvas filtered to exactly those cells
  • Everyone the analysis concerns gets an email when it finishes or fails, naming the candidate and linking straight to the result
  • Bulk analyze queues a resume-only run for every candidate that has a parsed resume but no verdict yet
  • Hiring managers see reframed process findings rather than raw red flags; access is role-aware throughout

Hiring Reports

  • Consolidated XLSX reports generated in the background: a summary ranking sheet, a competence matrix of candidates against the profile, a detail sheet per candidate, and a data-completeness sheet
  • The Generate dialog picks the candidate set (all active, finalists only, or a custom selection), which of the four sheets to include, and the audience
  • An audience switch keeps recruiter-only findings out of the hiring manager's copy
  • A report list with filters and download links valid for 24 hours
  • Workspace logo branding in the top-left corner of every sheet

Recruitment Settings

  • A single settings hub for scales, AI and speech-to-text providers, branding, retention, roles, and templates
  • Bring your own keys for LLM and transcription providers (Anthropic, OpenAI, Gemini, Azure, Yandex, GigaChat, Whisper, Deepgram, AssemblyAI, Yandex SpeechKit, faster-whisper); keys are encrypted at rest and never returned in full
  • Retention windows per data type with a warning on legally short values

Audit & Compliance

  • An append-only audit log of every mutating action with change diffs, IP, and user agent, browsable with filters
  • GDPR export gathers everything about a person into one JSON document with a 7-day download link
  • GDPR erasure replaces personal data with redaction markers across resumes, transcripts, and consents while preserving the audit trail

Assessments

Assessment Types

  • Self, 180-degree, and 360-degree assessments
  • Participant roles: self, manager, peer, subordinate
  • Competence-based evaluation with configurable indicators and weighted answer scales

Evaluation Criteria

What to evaluate is chosen in a dedicated panel, on single and mass assessments alike.

  • Three modes: the employee's current position, a target specialization and grade, or hand-picked competences
  • Target position mode pulls competences and levels from the grade ladder; "All grades" takes the highest level per competence
  • Hand-picked mode opens a tree picker with group-level checkboxes and search
  • The skill level per competence stays editable; on mass assessments, criteria propagate to every active child

Answer Scales

  • A default scale ships out of the box; workspaces can create their own
  • The scale builder validates that percent levels cover 0–100 without gaps, orders options by drag-and-drop, and supports an optional "Don't know" answer that is excluded from scoring
  • The scale is frozen into the assessment at launch, so editing a scale never changes a running assessment

Taking a Survey

  • Surveys open in a side panel with room for full question text and per-option labels
  • Every answer saves automatically; comments save on a short debounce
  • Closing the panel keeps the draft, and reopening restores it, so partial progress survives navigation

Assessment Lifecycle

  • Status flow: Draft → Sent → In progress → On review → Done, with Cancelled reachable from any state
  • The first submitted answer moves the assessment to In progress automatically; review starts when every participant finishes, or earlier by hand once at least one participant is done
  • Deadline tracking with email reminders; past dates are rejected at creation and at launch
  • Sending is refused when the selected evaluation criteria resolve to zero indicators, so an assessment can never go out with an empty questionnaire
  • Each employee can have at most 3 active assessments. Mass launches skip employees at the cap and report how many were created
  • Participants get an email when the assessment goes live, when it completes, and when it is cancelled after launch

Results & Calibration

  • Scores aggregate per role: indicator answers average within a role, roll up to skill levels using indicator weights, then to a per-competence percent, and the final score is the mean across roles. "Don't know" answers never count
  • Each competence shows a percent, a resolved level from the scale, and a per-level breakdown. Percents render as colour-coded chips — green from 75%, yellow from 50%, red below — with a muted dash when there is no result
  • The overall score is the mean of per-competence percents and appears next to the results once the assessment completes
  • Reviewers can calibrate: override per-question totals while the assessment is locked for participants. Calibrated values are marked, survive recomputes, and can be reverted in one step. While the lock is on, participants still see their Take / Evaluate actions, greyed out with a tooltip explaining that the questionnaire is closed
  • A detailed results view for reviewers shows per-role answers and comments for every indicator
  • Employees see their own results when the assessment is done; peers and subordinates never see results of assessments they only participated in

Passing Score & Grade Recommendation

  • A configurable passing score (default 75%) on position-based assessments, locked once the assessment leaves Draft
  • On completion the platform computes a match percent per grade and recommends the highest grade that clears the threshold; if none does, it shows the closest grade marked as not confirmed
  • The recommendation renders as a card with progress bars per grade, and the mass assessment summary lists the recommended grade per employee

Mass Assessments

Run one campaign across many employees.

  • Campaign-level type, scale, deadline, and criteria applied to every child assessment
  • Unified tracking, per-employee recommendations, and score analytics: ranking, distribution, completed versus total
  • Copy a previous round (criteria, participants, settings) and compare rounds over time

Campaign analytics

Once at least one child assessment is done, the campaign page adds an Analytics block built from the completed children only — cancelled and in-flight ones never move the numbers.

  • Growth zones and Top competences: the ten weakest competences at or below 75%, and everything above it, averaged across the employees who have a value for each
  • Employees at risk (below 50%) and Top performers (above 75%) as avatar plates that open a sheet listing each person with their division, result, and a jump to their assessment
  • Detailed results, filtered by division, specialization, competence, and employee: an average match level gauge plus either a per-employee results table (current positions) or a competence matrix crossing competences with employees, with an average column and per-column jumps into each assessment
  • On "all grades" campaigns the average shows per grade, a second matrix crosses grades with employees, and the best-matching grade is highlighted throughout
  • Summary: the average match per grade as a bar chart, and the competence tree carrying the campaign's average result per competence

Employees answered entirely with "Don't know" stay visible in the matrices but never enter an average.

External Reviewers

Collect feedback from people outside the system.

  • Unique shareable links per reviewer, no login required, with a configurable expiry (30 days by default)
  • Responses aggregate with internal participants; admins see who was invited, but individual external scores stay anonymous

Development Plans

Personal Development Plans

Structured growth plans tied to assessment results.

  • At most 3 active plans per employee; the platform blocks a fourth until one finishes
  • Each plan links to a development specialization and grade, prefilled from the employee's position. Plan items are then seeded from the competences that pair requires, with materials capped at the target skill level
  • Status flow: Draft → Sent → In progress → On review → Done, with Returned and Cancelled. The first item the owner ticks moves the plan to In progress automatically
  • Only the plan owner ticks items off; a ticked item locks so accidental clicks cannot undo real progress. Reviewers and admins keep full control during review
  • A plan cannot be sent until every item has at least one material
  • During review the employee sees a frozen snapshot of the items while the reviewer keeps editing live
  • Past-due deadlines are highlighted in red in the list and on the plan page
  • The assigned employee gets an email when the plan is sent; deadline reminders follow

Plan Items & Materials

  • Items link to specific competences or stand alone
  • Materials carry a title, format (course, book, article, video, practice), link or attached file, and estimated study time
  • Items and materials reorder by hand; completed items become read-only until unchecked during review
  • Progress recomputes whenever items are added, removed, or toggled

Plan Comments

  • Comments at the plan, item, or material level with file attachments; images render inline
  • A threaded discussion between the employee and the reviewer lives next to the work itself

Plan History & Versioning

  • The platform snapshots the full plan state on every key transition: sent, review, returned, done
  • Any version can be viewed or restored later

Exams

Exam Management

Knowledge testing with configurable questions and pass criteria.

  • Single choice, multiple choice, and essay questions, with images, weights, and ordering
  • Questions are editable while the exam is in Draft and lock at launch
  • Status flow mirrors assessments: Draft → Sent → In progress → Completed, with Cancelled available until the exam terminates
  • Launch validates at least one question, at least one assigned employee, and a future deadline

Assigning & Taking Exams

  • Employees are assigned through a searchable picker filtered by name, email, division, or position
  • The exam opens in a side panel; answers save automatically and a closed panel resumes from the draft
  • The answer key is never exposed while taking the exam
  • The submit button stays disabled until every question is answered; after submitting, the employee sees the earned score and a read-only review with correct answers highlighted
  • When the last participant finishes, the exam completes automatically

Pass Mark & Results

  • One pass mark per exam: a minimum percent or absolute points, optionally scoped to a grade or specialization
  • Automatic pass/fail per participant, with scores, timestamps, and links back to the employee profile

Question Import

  • Bulk import from Excel with a downloadable template
  • Up to 6 answer options per question, weights, and Markdown in question text
  • Duplicate detection against existing questions and row-level error reporting

Talent Market

Talent Cards

An internal job board for open positions and project opportunities.

  • Three card types, explained where they are used: Vacancy — an open position to fill; Talent — a bench for a role that is not open yet; Project — a time-boxed piece of work people join while keeping their position. The type is an organizing label: matching, statuses and appointment work the same on all three
  • Each card carries a start date, an optional end date, and a rich description
  • Status flow: Draft → Published → Completed or Cancelled. A card publishes only when it has at least one required competence and one candidate
  • Published cards freeze their requirements; edits require unpublishing

Requirements & Matching

  • Required specializations: rows of specialization, grade, and an optional minimum of years of experience
  • Required competences: rows of competence and skill level. Picking a specialization prefills its competences from the grade ladder
  • A match threshold per card (50–100%) controls how strict the competence matcher is
  • The candidate pool fills automatically: an employee qualifies on work experience at matching positions and on assessment results for the required competences. Results from higher-level assessments project down to the required level. An assessment that was run without a target level counts against every required level of that competence
  • The match cell shows competence and experience scores as separate chips plus how many required competences the employee actually clears. The whole cell opens a breakdown that names the verdict — met, or how many competences sit below the card's bar — and lists the required-versus-current numbers per row

Candidate Pool

  • Candidate statuses: matched, not matched, appointed. Manual nominees and appointed candidates survive automatic recomputes
  • Employees on a published card can react to express interest; their manager gets an email, and reactions break ties in the ranking
  • A development plan can be built straight from the breakdown: its items are exactly the required competences the candidate is short on, with the learning materials for each, and the plan is linked from the candidate row. Appointment and the plan are independent — a candidate can be appointed and then work the plan, or finish the plan and be appointed afterwards
  • Appointment asks for confirmation, so a stray click cannot pin a candidate
  • Emails go out on every lifecycle event: publish, being added to a live card, appointment, completion, cancellation, and removal from a published card
  • Regular employees see only published cards and cards where they are a candidate; all write controls stay hidden
  • A vacancy card can also come from recruitment: posting a requisition to the talent market creates one with the vacancy's required competences already on it (see Recruitment → Internal Candidates)

AI Features

Competence Generation

Generate competence structures with an LLM and review everything before it lands in the library.

  • Four scopes: a whole competence base from scratch, an extension of one group, indicators for a single competence, and a competence-by-grade matrix for a specialization
  • Every run starts from a confirmation dialog that shows exactly which data the model will read: specializations, divisions, company description, existing items. Each item can be excluded, and a free-text note refines the brief
  • Results open in a review tree with cascade checkboxes: existing items are locked, new suggestions are editable and selectable. Nothing is saved without an explicit apply
  • Refine a result with follow-up notes or regenerate from the same brief; the session history links refinements together
  • Apply is idempotent, so a retried request never creates duplicates. New competences can land published or as drafts
  • One active session per user; sessions survive navigation and page reloads, and a persistent banner links back to any generation in flight
  • Learning materials can also be generated per skill level, with the same context controls and review step

AI Settings

Per-workspace configuration that applies to every AI call.

  • Effort tiers: fast, balanced (default), and thorough, each mapping to a model and a retry budget; a custom tier opens model, temperature, and retry controls
  • Models come from a managed allow list, so only vetted models can be selected
  • A content language setting (English or German) controls the language the AI generates competences, indicators, positions, learning materials, development plans, and recruitment analyses in — independent of the interface language. The workspace is only recorded as having answered once someone saves the page; reading it leaves the choice open, so a workspace that never set one keeps falling back per feature
  • A company context field (up to 2000 characters) is appended to every prompt
  • Supported providers: Anthropic, OpenAI, Google Gemini, YandexGPT (Yandex Foundation Models), and any OpenAI-compatible server (Ollama, vLLM, LM Studio) via a custom endpoint URL
  • The provider selector offers only providers with working credentials: a platform-wide key, a workspace key (bring your own key), or a configured local endpoint — workspace credentials take priority over platform keys in every AI call
  • The model list refreshes itself: a daily background sweep asks each configured provider for its current models, so newly released model versions appear without a redeploy; models a provider retires are never silently removed

Platform

Authentication & Security

  • Email and password registration with email verification; self-hosted installs get a self-serve registration page that creates the workspace and admin account
  • JWT access tokens (30 minutes) with refresh tokens (7 days), password reset by email, and rate-limited verification resend without email enumeration
  • Installations without an email provider still work: accounts verify automatically at registration
  • Invitation sign-ups skip verification, since the invitation itself proves ownership of the address

Roles & Access Control

  • Built-in roles: Admin (full access), HR (people operations across the workspace), Manager (team assessments, plans, and data), Recruiter and Hiring manager (hiring), Employee (own profile and assigned tasks)
  • Every account carries a role — Employee is the baseline nobody drops below — and an admin changes a colleague's role from their card; the role is shown in the employee list and can be filtered on
  • Guard rails on the change: you cannot change your own role, demote the last administrator of the workspace, or take Manager away from someone who still leads a division. Each change is recorded on the employee's timeline
  • Who may invite whom follows the same ladder: admins invite any role, HR everything below admin, managers only employees
  • The same scope rules apply across every list in the product: admins see the workspace, managers see their subtree, employees see their own records
  • The sidebar only offers what the role can actually open: hiring and the talent market stay out of a rank-and-file employee's menu, and the controls on the company page appear for the roles the API accepts
  • A read-only Roles page in the Admin area lists every role of the workspace with what it can actually do and how many people hold it — the descriptions follow the gates the product enforces, not a permission table nothing reads. The count opens the employee list filtered by that role
  • The Admin area (dictionaries, invitations, data import, roles, AI settings) is reserved for admins: the whole sidebar group is hidden for everyone else, and opening one of its links directly shows an error and returns the user to the dashboard
  • Every action in the Admin area is admin-only on the API too, so a hidden section is never merely hidden (reference data stays readable across the product, as the rest of the app depends on it)
  • Reading is scoped as tightly as writing: hiring data (candidates, resumes, interviews, reports) is reserved for the roles that do hiring, and the sections under an employee card — competences, timeline, education, employment history, compensation — open only for the person themselves, their division manager, and admins
  • Everyone can still look a colleague up: the employee list is a company directory for rank-and-file staff, showing name, job title and department with no HR data attached. Grades appear there only if the workspace switches them on
  • The positions catalogue answers to the same switch: a rank-and-file employee browses positions, divisions and headcounts, but a position's grade and specialization arrive only when the workspace has switched grades on — otherwise the directory and the catalogue together would rebuild the grade the directory withholds. Filtering by grade or specialization is closed for them too, since a filter answers the same question the column would
  • Recruiters and hiring managers always see a position's grade and specialization: a requisition cannot be raised without them
  • Salary ranges are a separate line and a shorter one: positions and specialization grades show them to admins, HR and managers only — not to recruiters, and not to anyone else whatever the grade switch says
  • The same holds wherever else a list of people appears — the employees on a position or a specialization, and the headcount drill-down: colleagues see the directory columns there too, not hire dates, employment status or HR alerts
  • "My profile" in the header menu and on the dashboard opens the person's own card in full — the directory view is only what colleagues see of each other
  • Inside hiring, a division manager sees their own department: a vacancy opens for them when it belongs to a division they manage, names them as its hiring manager, or was created by them — and candidates, resumes, interviews and reports inherit that same boundary. Admins, HR and recruiters keep the whole workspace
  • Writing follows the same boundary as reading: a division manager creates and edits assessments and development plans for their own people, publishes and staffs their own department's talent cards, and sees analytics and assessment exports that cover their subtree rather than the company
  • The shared catalogues — competences, indicators, materials, answer scales, and a specialization's grade ladder and matrices — are workspace-wide, so editing them belongs to admins and HR. Everyone else keeps reading and using them; positions are the exception, staying with the division manager for their own subtree

Product Feedback

  • A "?" button in the app header opens a short form: rate the product with a thumb up or down and leave a suggestion, in the user's interface language
  • Nothing is stored in the workspace — the submission is forwarded to the operator's notification channel when one is configured, and simply accepted when it is not

Multi-Tenancy

  • Complete data isolation between organizations; self-hosted mode runs a single workspace
  • One email can belong to several organizations: login shows an organization picker, and a header switcher changes workspaces without re-entering the password

File Storage

  • S3-compatible storage (MinIO, Cloudflare R2, AWS S3) with tenant-isolated paths and presigned URLs
  • Used for avatars, logos, plan attachments, and exam question images

Interface

  • Full dark mode: light, dark, or system preference, persisted across sessions
  • Responsive layout tested on phone, tablet, and desktop sizes
  • Global search on Cmd+K / Ctrl+K across employees, assessments, plans, and exams
  • Every section reachable from the sidebar carries a question mark next to its page heading explaining what the section is for and what belongs in it
  • Interface languages: English and German ship with the product; the deployment configures the offered languages, the onboarding wizard records the workspace default, and every member can pick a personal language in their profile or the header language switcher; the wizard also sets the AI content language separately
  • Backend error messages follow the interface language too, and every error carries a stable machine-readable code; adding a community language is a translation-catalog pull request — see the contributing guide
  • Outbound email arrives in the recipient's language — their personal preference, else the workspace default — for both built-in templates and database notification templates, falling back to English where a translation is missing
  • Built-in reference data follows the interface language too: shipped grades, specializations, competence types, skill levels, assessment statuses and types, and the default answer scale translate with the UI, while entries your team creates always display exactly as typed
  • Enum-valued fields — employee event types, development-plan material formats — show a translated label while the stored value stays the code, and a value the catalog does not know still renders as it is rather than disappearing

Waitlist

  • A public signup endpoint for collecting interest before launch or during a private beta, idempotent by email and rate-limited
  • Captures the interest type (self-hosted, cloud, or both), role, and company, and sends a branded confirmation email

Self-Hosted Deployment

  • Docker Compose deployment with PostgreSQL, Redis, MinIO, and Caddy for automatic SSL
  • White-label branding: installation name, logos, accent color, and favicon set through environment variables, for the web UI and outgoing emails alike
  • Theme presets: switch the whole UI (surfaces, accent, charts, sidebar, corner radius, light and dark mode) to a curated look with one variable
  • Custom sign-in background: a solid color or a full-bleed cover image on the login and registration pages
  • See the Self-Hosted Guide for the full walkthrough

Public API

REST API (v1)

Programmatic access for integrations and automation.

  • API key authentication, generated per workspace in settings
  • All endpoints live under /v1/ with a rate limit of 60 requests per minute per key and validated pagination
  • Read endpoints for employees, assessments, divisions, specializations, grades, and reference dictionaries
  • Reference dictionaries are read by type — an unknown type is rejected with a 400 that lists the accepted types, so a typo in an integration fails loudly instead of returning an empty page
  • Batch operations create or update up to 100 resources per call — employees, divisions, specializations, grades, assessments, and exams — with per-item error reporting and partial success
  • An OpenAPI specification at /v1/openapi.json works with any API client or code generator

Monitoring & Observability

For teams running HRPulsar on their own infrastructure.

  • A Prometheus metrics endpoint with request counts, latency histograms, and in-progress gauges, with path normalization to keep label cardinality under control
  • Structured JSON logs with a request ID on every entry and an X-Request-ID response header for correlation
  • Optional Sentry error tracking for backend and frontend, with personal data stripped from events before they leave the server
  • Health endpoints for load balancers and Kubernetes: a full check covering the database, Redis, and S3, plus a lightweight readiness probe

Onboarding Wizard

A first-login wizard for newly registered organizations.

  • Shows automatically while the workspace has no employees and setup is not finished; skippable on every step
  • Four steps: company info, first divisions, team invitations, and a look at the built-in competence library
  • The invitation step asks for a name next to each address (invitations require one) and reports exactly which invitations went out and which failed, instead of moving on silently

User Invitations

  • Invite colleagues by email with a pre-assigned role, division, and position; accepting creates the user account and the employee card in one step
  • Invitation links expire after 7 days; an inviter can never grant a role above their own
  • Bulk invite up to 100 people at once; the response lists every address that could not be invited together with the reason
  • A management page tracks all invitations with status filters (pending, accepted, cancelled, expired), resend and cancel actions, and inline editing of pending invites; the page and the registry API behind it are admin-only
  • Changing the email on a pending invite issues a fresh link, resets the expiry, and disables the old link
  • The accept page introduces itself from the invitation: the invited address is shown read-only and the name entered by the inviter is split into first and last name, both still editable

Notifications

In-App Notifications

  • A bell icon with an unread count and a notification list
  • Covers assessments, development plans, exams, and approaching deadlines
  • Mark as read individually or in bulk

Real-Time Updates

  • A single WebSocket connection per user pushes new notifications, AI generation status changes, and background task updates without a page refresh
  • Polling backs up the socket, so a dropped connection never strands the interface on a stale state

Email Notifications

  • Branded HTML templates, white-label ready, with a responsive layout
  • Templates cover verification, password reset, invitations, assessments, plans, exams, certificate expiry, deadline reminders, and external reviews
  • Delivery through the Resend API (cloud) or SMTP (self-hosted), sent in the background so the interface never waits on mail

Email Delivery Tracking

  • Every outbound email is logged with its status: sent, delivered, bounced, complained, failed
  • Automatic retries on failure and a webhook for real-time delivery updates
  • Admins can browse the log with status and recipient filters

Notification Preferences

  • Per-user settings by event type and channel (email and in-app independently)
  • Everything is on by default; disabled channels are skipped silently

Analytics & Dashboards

  • A management dashboard built around the development loop — assess, find gaps, develop, close: four clickable stages show assessment coverage, employees scoring below their grade bar, open development plans, and gaps confirmed closed by a re-assessment in the last quarter
  • An action queue that turns detected problems into next steps: employees below the bar with no development plan, overdue plans, plans stuck in review, and falling assessment coverage — each row deep-links into the module that fixes it
  • Every tile and queue row opens the list already filtered to the people it counted, so the number on the dashboard and the rows on the page always match; the names listed under a finding link straight to the person's card
  • The gaps stage only turns red when nobody is working on the gap — gaps that already have an open development plan read as amber, and a red chip on the tile counts the ones still without a plan
  • Every stage of the loop, the action queue and the assessment-cycle card carry a question mark that explains exactly what the number counts, including the time windows and the passing bar behind it
  • Dashboard figures follow the reader's scope: a division manager sees their own subtree, not the whole company
  • A personal dashboard for employees: my loop stages (latest assessment, my gaps, my active plan, confirmed closures), a personal to-do queue (pending surveys, returned or overdue plans, gaps without a plan), strengths with rare-skill highlights, growth direction to the next grade, and an assessment-score sparkline
  • An on-demand AI summary of the loop state — one click explains what is going on and what to do first; employees get a coach-style personal summary on their own dashboard (cached per data state)
  • Active assessment cycle progress at a glance
  • Reports: assessment score distributions, competence heatmaps, and division comparisons
  • Assessment export to XLSX, generated in the background with a download link when ready
  • Long-running operations (imports, exports, AI generation) report their status through a single task-tracking mechanism

Data Import

  • Bulk employee import from Excel: email, name, position, hire date, work experience, education, courses
  • Dictionary import: specializations, grades, skill levels
  • Drag-and-drop upload, validation with row-level errors, and background processing with progress tracking