What a line manager sees

For everyone

A line manager gets a scoped version of the same workspace an HR Admin sees: same dashboards, same pages, but the data is bounded to their reporting tree. This is a deliberate departure from the way many platforms ship — where managers receive a workspace-wide view that does not match their position.

The scoping rule, in short

When the user's role has the My reporting line data scope (the seeded Line Manager role does), the server computes their "team scope" automatically:

  • Direct reports (level 1, via Person.managerId).
  • Indirect reports (levels 2 through 6).
  • The manager themselves, included in scope.

This rule is enforced on every Develop and Grow API: assigning assessments, editing growth plans, ranking role matches, gap analysis, recommendations. Any attempt to read or write a person outside the scope returns a 403 with a bilingual error message.

What a line manager sees vs an HR Admin

SurfaceHR AdminLine Manager
Home /appWorkspace-wide(same layout)
/app/grow — growth-plan countsWorkspace-wideTheir tree only, with "(your team)" labels
/app/grow/my-teamDirect reports + "View workspace-wide" linkDirect reports only
/app/develop — pending, completed, by typeWorkspace-wideTheir tree only
/app/peopleAll employees and candidatesTheir reporting tree only
/app/grow/successionAll candidates for any critical roleOnly candidates inside their tree
/app/grow/plans/[personId], assessment answers, case-study reviewAnyoneOnly people in their tree (others show not found)
/app/data-editor — People sheetAll peopleTheir tree only, read-only (the Line Manager role can't save here; a custom reporting-line role that can save is refused for anyone outside its tree)
/app/settings/*AvailableNot in sidebar

The "My team" page

A "My team" link appears in the sidebar under Grow for both HR Admins and line managers. The page at /app/grow/my-team is a snapshot of the manager's direct reports (level 1) as cards showing:

  • Person name and current role.
  • Match score for their target role (if set), with a coloured progress ring.
  • Succession-readiness chip (Ready now / Emerging / Gap / Not ready).
  • Growth-plan status (Active n/m milestones or No plan).
  • Top three competencies with levels.

Clicking a card opens the full profile at /app/people/[personId].

"My team" vs the scoped /people table

Both are bounded by the manager's scope, but:

  • My team — level-1 reports only, oriented toward readiness and development, summary-card layout.
  • /people — full reporting tree (levels 1-6), table view with sort and filter.

Use the first for daily focus, the second for a wider review.

What if the management relationships are not set?

If HR has not set managerId on any person record, a line manager's scope is empty (it contains only themselves). Their dashboards will look bare. To fix it:

  1. Open /app/people.
  2. Open the person's profile.
  3. Set their manager in the "Line manager" field.

Every person whose managerId is updated immediately enters their manager's scope.

Exceptions — when scoping does not apply

  • Employee portal /me — every user, manager or not, sees their own profile in full regardless of scope.
  • Assessment template library — readable by both line managers and HR, since it is configuration, not person data.
  • /app/hire — does not apply manager scoping in this release; restricting requisitions to assigned managers is on the v0.6 watch list.

How to test this

Take a manager with a two-level reporting chain, for example:

هدى (manager)
 ├── منال (direct report)
 │     └── محمد (indirect report — level 2)
 └── عبدالعزيز (direct report)

Sign in as هدى to see a four-person scope (herself + two direct + one level-2). Open /app/grow/my-team to see only her direct reports (منال and عبدالعزيز). Open /app/people to see the full tree.