Team Rewards

Introduction

Team Rewards is an extension of the Rewards module in Brainy HR. It lets you do three things that the original rewards system did not support:

  1. Group employees into named teams — for a project, a department, an office, or any ad-hoc roster;
  2. Award points to an entire team in one action, instead of charging each member individually;
  3. Let employees pool their personal points to buy a group-priced award together (for example, six teammates each chipping in 100 points for a 600-point spa voucher).

The feature sits on top of the existing per-employee ledger. Every team-driven movement still produces a regular row in each employee's personal Rewards History — the "team" is just a tool that makes granting and redeeming faster and fairer.

Table of contents

  1. Concepts — Team, Cheer Up Team, Pool Redemption
  2. Enabling the feature
  3. Creating a team
  4. Quick-fill from Department or Office
  5. Cheering up a team (awarding points)
  6. Distribution modes — Each vs Split
  7. Pool redemption — group purchases
  8. Pool lifecycle — accept, decline, cancel, approve
  9. Pool Spend Report — monitoring
  10. What each role sees
  11. Interaction with the existing Rewards module
  12. Frequently asked questions

Each section below is prefixed with its number, so you can scroll or use Ctrl+F to jump to the part you want.


1. Concepts — Team, Cheer Up Team, Pool Redemption

Team Rewards is built from three independent pieces. You can use any of them on its own — they just compose well when used together.

Team

A Team is a named group of employees with one captain and any number of members. The captain is the person responsible for the team; they still earn and spend points individually like everyone else. Teams are explicit records, not derived from your org chart — they live as their own list under Settings → Rewards → Team Rewards. You can reorganize the company at any time without breaking historical rewards.

Cheer Up Team

Cheer Up Team is the admin action for "the team finished a great project — give them all a bonus". Behind the scenes it writes one EARN row per participant in the standard Rewards ledger, so the points become each member's personal property immediately. Two distribution modes are supported (see Section 6 — Distribution modes below).

Pool Redemption

Pool Redemption is the employee-initiated flow for joint purchases. One employee starts a redemption with a list of contributors and how much each will chip in. Other contributors must accept their invitation. When the total accepted contributions reach the award price, the request enters the normal review queue. On approval, points are debited from each contributor individually.

What employees normally see

Regular employees do not see the team list, the Cheer-Up-Team modal, or the captain/member structure — the Team Rewards tab is admin-only. The only places a team becomes visible to a regular employee are:

  • The "You have pool invitations awaiting your response" banner on Rewards → Redeem My Points;
  • The Pool Spend Report, for users with the History permission;
  • The "Pre-fill contributors from a team" dropdown in the Redeem modal, which only lists teams the user personally belongs to.

2. Enabling the feature

The Team Rewards feature is off by default for existing companies. An admin with the Settings / Rewards permission turns it on:

  1. Open Settings → Rewards;
  2. On the General tab, find the Team Rewards toggle (the helper text reads "Enable rewarding entire teams at once. Admins can create teams, charge points to all members, and let employees pool their points to redeem group-priced awards together.");
  3. Switch it to Enable and click Save Settings.

The page reloads and a new Team Rewards tab appears in the tab strip. The "Cheer Up Team" button becomes available on the new tab. The "Redeem with a group" toggle becomes available to every employee in the Redeem modal.

If you ever turn the toggle off, the tab and the "Cheer Up Team" button disappear, but any existing teams stay in the database and existing pool requests continue through their normal lifecycle. The feature is purely additive — switching it off does not corrupt anything that already exists.


3. Creating a team

Teams are managed under Settings → Rewards → Team Rewards. To create one:

  1. Click Add New Team;
  2. Enter a Team Name (for example, "Project Alpha" or "Marketing Department");
  3. Pick a Team Captain from the auto-complete (only one captain per team);
  4. Pick the Team Members from the same auto-complete — add as many as you need. The captain is not added to the members list automatically; the system tracks them separately;
  5. Click Submit.

The new team appears in the grid below. From the Actions dropdown next to each team you can Edit or Delete.

What gets stored

The system stores the captain's employee id, the team name, and a list of member employee ids — frozen at the time of creation. Member rows are stored separately from the captain so the structure remains clean even if the captain leaves the company.


4. Quick-fill from Department or Office

Inside the create / edit modal there is a Quick-fill from section with two dropdowns: Department and Office. This is the fastest way to build a team that already corresponds to an existing org unit.

  1. Pick a department (or an office) from one of the dropdowns;
  2. Click Apply;
  3. All current members of that department or office are added to the team's members list;
  4. You can still edit afterwards — add, remove, change captain — to fine-tune.

It is a snapshot, not a live link

Quick-fill copies the current membership of the selected department/office into the team roster. It is not a live binding — if a new person joins the department tomorrow, they will not automatically appear in this team.

This is intentional:

  • It keeps team membership stable for historical accuracy (your reports from six months ago still make sense);
  • It lets you build mixed teams: "most of marketing, plus two designers, but not the intern";
  • It avoids surprises — admins know that "Cheer Up Team" charges exactly the people they see in the team detail, regardless of org chart changes since the team was created.

If you want to refresh a team to match a department's current state, edit the team and click Apply again — the system overwrites the previous member list.


5. Cheering up a team (awarding points)

"Cheer Up Team" is the admin flow for "the team finished a great project — give them all a bonus". It is reached from the same place where you manage teams: Settings → Rewards → Team Rewards.

  1. Click Cheer Up Team;
  2. In the modal:
    • Chose Team — multi-select. You can charge several teams in one go;
    • Distribution — pick one of the two modes described in Section 6 — Distribution modes below;
    • Currency Label — the number of points;
    • Reason / Note — optional, but recommended. This text appears in every member's personal history (for example, "Awarded to team Project Alpha — Q4 launch success").
  3. Click Submit.

The system writes one EARN row per participant per team into the Rewards ledger. Each member's personal balance increases immediately, and they can spend the points on awards as normal. The points carry the Team Award badge (blue) in personal history.

What the members see

Each member sees a new entry in their personal Rewards History:

  • A +X amount with the Team Award badge;
  • The comment you entered, or the default "Awarded to team {team name}".

The points are now part of their individual balance and can be redeemed freely — for any award, alone or as part of a pool.


6. Distribution modes — Each vs Split

When you submit Cheer Up Team you must pick one of two distribution modes.

Each (default)

Every participant gets the amount below.

Example. A 6-person team, amount = 100 → each of the 6 members gets +100 points. Total awarded = 600.

Best for "this is the per-person bonus" cases where you want the same amount regardless of how big the team is.

Split (equal split)

Split the amount equally across participants. Remainder goes to the captain.

Example. A 6-person team, amount = 600 → each member gets +100. Total awarded = 600.

If the amount does not divide evenly (say 100 split between 3 people = 33.33…), the captain absorbs the leftover cent so the total comes out exact. This guarantees the company spends exactly what was entered.

Best for a fixed budget that should be split fairly.

Choosing the right mode

Scenario
Use
"100 points to each engineer for shipping on time."
Each
"This project has a 2 000-point budget — split it across the team."
Split
"Same fixed quarterly bonus per member regardless of team size."
Each
"Anniversary gift: 500 points for the whole team to share."
Split

7. Pool redemption — group purchases

Pool redemption is the employee-facing flow for jointly buying an award that no single contributor could (or wants to) afford alone. The canonical example is a spa voucher for six people priced at 600 points: each teammate chips in 100 points from their personal balance, the request is approved, and the system debits each contributor individually.

The system supports two redemption modes per award:

  • Single — one employee pays the full price from their own balance (the original behavior, still works exactly like before);
  • Pooled — multiple employees split the price across themselves.

You choose the mode in the Redeem modal — there is no separate "group" award.

Initiator's flow

  1. Open Rewards → Redeem My Points;
  2. Click Redeem on the desired award. The Redeem modal opens;
  3. Toggle on Redeem with a group (split the price across multiple contributors);
  4. From the Pre-fill contributors from a team dropdown, pick one of your teams and click Apply. Every team participant (captain + members, including you) appears in the contributor table, pre-filled with the price divided equally; the rounding remainder goes to the captain. The Sum counter must equal the award price exactly;
  5. Fine-tune if needed:
    • Edit the amount in any row;
    • Remove a row with the × button;
    • Add any company employee via Add contributor — not just team members.
  6. Pick a Manager (reviewer) — same as a regular redemption;
  7. Click Redeem.

If the sum does not match the price, the form is rejected with an inline error and the modal stays open. No request is created.

On success, the system creates a single award request with status "Collecting contributions". The initiator is auto-accepted (their contribution is locked in immediately). Every other contributor receives an invitation they must accept.

No points debited yet

Pool redemption does not debit points at creation. Points only move when the reviewer finally approves the request. Until then, all balances stay intact.


8. Pool lifecycle — accept, decline, cancel, approve

A pooled request progresses through four possible state transitions before it reaches a final outcome. The lifecycle is intentionally similar to a regular award request, so reviewers and admins do not need to learn a new flow.

Accepting an invitation

Each invited contributor sees a notification banner on Rewards → Redeem My Points:

🧑‍🤝‍🧑 You have pool invitations awaiting your response
Spa Voucher — your share: 100 BitCoins
[Accept] [Decline]

Clicking Accept:

  • Re-checks that the contributor's balance currently covers their share — if not, the accept fails with a clear error and the invitation stays open;
  • Locks the contribution in;
  • Updates the running total on the request.

Declining an invitation

Clicking Decline marks the contributor as declined. The request is not cancelled — the initiator is expected to react (see "Cancelling a pool" below). There is no penalty for declining.

Auto-transition to review

The moment the total accepted contributions reach the award price, the request automatically flips to status "Pending review". From that point on it behaves exactly like a normal single-employee award request: it appears in the reviewer's grid; the reviewer clicks Approve or Reject.

Cancelling a pool

If a contributor declines, ignores the invitation, or is no longer available, the initiator can cancel the entire pool while it is still in "Collecting contributions". Cancellation transitions the request to Cancelled, no points are moved (since none were debited yet), and the initiator can create a fresh pool with a different roster.

Approval and final debit

When the reviewer approves a pooled request, the system:

  1. Re-checks every contributor's balance one more time — to catch the rare case where someone spent their share elsewhere between accept and approve;
  2. Writes one SPEND row per contributor with the Pool Spend badge (yellow), debiting each personal balance by their share;
  3. Marks the request Approved.

If anyone's balance has dropped below their share by the moment of approval, the approval fails loudly. The reviewer sees a clear error, the request stays in Pending review, and they can retry after the contributor tops up their balance. No partial debit ever happens — either every contributor is charged, or none are.

Rejection

If the reviewer rejects a pooled request, the request becomes Rejected and no points are debited. The initiator can submit a new request with corrections.


9. Pool Spend Report — monitoring

A dedicated page lists every pooled redemption in the company so HR or management can see what is in flight and what has been delivered.

  1. Open Rewards → History;
  2. Click the Pool Spend Report button in the top-right corner of the page header;
  3. You land on /rewards/report/pool.

Top KPI cards

Card
Meaning
Total pooled requests
Lifetime count of every pooled request, regardless of status.
Collecting contributions
Pools that are still waiting on at least one contributor to accept.
Total value approved
Sum of the prices of approved or completed pooled requests.
Accepted contributions
Total points locked into pools — whether already spent or still pending review.

Per-request cards

Below the KPIs every pooled request is listed as its own card:

  • Award name and a status badge (Collecting / Pending review / Approved / Rejected / Completed / Cancelled);
  • Initiator's name and the creation date;
  • Running total in the format Sum: X / Y BitCoins;
  • Per-contributor table — name, amount, response status (Invited / Accepted / Declined / Spent), and the response timestamp.

The Status filter in the card header narrows the list to a single status — useful for "show me everything still collecting" or "show me everything we cancelled this quarter".

Permission

The report respects the same Rewards / View History permission as the main Rewards History page. Anyone who can view the company-wide history can view this report.


10. What each role sees

Role
What they can do
Admin (Settings / Rewards)
Enable the feature, create / edit / delete teams, charge points via Cheer Up Team, see the Pool Spend Report.
Employee (Rewards / Basic Access)
Initiate a pool, accept/decline incoming invitations, see their personal Rewards History with Team Award and Pool Spend badges, redeem awards individually or as part of a pool.
Reviewer (Rewards / Manage Requests)
Approve or reject pool requests once they reach Pending review. The action is identical to approving a single-employee request — the reviewer does not have to learn a new flow.
History viewer (Rewards / View History)
See the Pool Spend Report and the per-employee balances filtered by point type (including the new Team Award and Pool Spend categories).

11. Interaction with the existing Rewards module

Team Rewards is purely additive. None of the original Rewards behavior changed:

  • Single-employee redemption still works exactly as before — just leave the Redeem with a group toggle off in the Redeem modal;
  • The "Cheer Up Employees" (Shared Points) flow is independent and untouched;
  • Awards, custom rules, simple earning rules, the cron, the history grid — all unchanged;
  • Existing rewards permissions (Settings / Rewards, Rewards / Basic Access, Rewards / Manage Requests, Rewards / View History, Rewards / View Balance) gate the new pages the same way they gated the old ones.

Two new ledger categories

The personal Rewards History now uses two additional badges in addition to the original Shared / Company Basic / Claimed / Redeemed / Survey:

Badge
What it means
Sign
Team Award (blue)
The admin used Cheer Up Team to award you points as part of a team.
+
Pool Spend (yellow)
You participated in a pool whose request has been approved — your share has been debited.

Both categories are filterable on the Balance and History pages, exactly like the existing categories.


12. Frequently asked questions

Q. Can a person be in more than one team?
A. Yes, with no limit. The same employee can be a member of many teams, and can be the captain of multiple teams at the same time.

Q. I removed someone from a team. Does that take back the points I gave them previously?
A. No. Once points are awarded, they belong to the employee personally. Removing them from the team only affects future Cheer-Up-Team charges.

Q. I deleted a team. What happens to the historical awards?
A. Historical entries stay in every member's personal history. They keep their Team Award badge and the comment that identifies the team by name. The team itself is removed from the team list, but the history rows are untouched.

Q. Can I edit a pool after I have initiated it?
A. Not directly — once the invitations are sent, the contributor list is frozen for that pool. If you need a different mix of people or amounts, cancel the pool and create a new one. Since no points have been debited yet, this is safe.

Q. What if one of the contributors spends their own points elsewhere before the pool is approved?
A. The system re-checks every contributor's balance at three moments: when the pool is created, when each contributor clicks Accept, and again when the reviewer finally clicks Approve. If anyone's balance has dropped below their share at the last check, the approval fails with a clear error and the request stays in Pending review. The contributor can top up, then the reviewer can retry. Partial debits never happen.

Q. Can I redeem an award with my own points plus one other person, not a full team?
A. Yes. The team pre-fill button is just a convenience. You can manually add any two or more employees from your company and split the price however you want. The minimum is two contributors.

Q. I want to award the same number of points to a whole department once a quarter. How?
A. Create a team called e.g. "Engineering Department" and quick-fill it from the department. From then on, just hit Cheer Up Team on that team each quarter. If headcount changes, edit the team and apply the quick-fill again to refresh the roster.

Q. Does the captain get extra privileges?
A. Currently no — the captain is just a label and the receiver of the rounding remainder in Split mode. Future versions may give the captain admin privileges over their own team (for example, the ability to initiate pools using a team budget). For now, they are functionally another team member.

Q. My team has thirty people but the spa voucher only fits six. What do I do?
A. Pick the six contributors manually in the Redeem modal — don't use the team pre-fill in this case. Alternatively, pre-fill from the team and delete the rows you don't need. The contributor list is fully editable before submitting.

Q. The Team Rewards tab does not appear in Settings → Rewards. What is wrong?
A. Two checks: (1) confirm the parent Rewards Module toggle is on — Team Rewards depends on it; (2) confirm the Team Rewards toggle on the General tab is on and saved. If the toggle does not persist after saving, your installation may not have the latest database migrations — ask your administrator.

Q. Why are Team Award rows yellow on some pages and blue on others?
A. They are blue on the History and Balance pages (the badge color we use for "earned from team"). The yellow badge belongs to Pool Spend rows, which represent the negative side — points debited because you participated in a group purchase that got approved. Two distinct categories, two different colors.