User guide
This guide is the same as CHIPS's built-in Help (the ? button).
Getting started
For: Everyone
CHIPS — Collaborative Heuristic for Iterative Planning and Story-pointing — is a web application for estimating user stories together, in real time, from any browser. Nothing needs installing on anyone's device.
There are three kinds of people:
| Role | Needs an account? | Can… |
|---|---|---|
| Team member | No — joins with a link | vote, add notes, sort stories on an affinity board, choose display settings |
| Scrum master | Yes | everything a team member can, plus create projects and rooms, add and import stories, run the voting, record sessions, download results, see history, use Jira |
| Administrator | Yes | everything, in every project, plus users, sign-in providers, access tokens, site settings and the activity log |
If you are a team member: open the link your scrum master sent, type your name and press Join room. That's it — see For team members.
If you are a scrum master:
- Sign in on the welcome page (your administrator gives you an account, or you Create account if self-registration is on). The very first time, the administrator sets CHIPS up — see Setting up CHIPS.
- On Projects, press New project, then type a room name and press Create room.
- Press Copy link and send the link to your team.
- Add user stories at the bottom of the room (or Import them).
- Press Start on a story — everyone picks a card — press Reveal cards — Save estimate.
flowchart TD
A([Scrum master signs in]) --> B[Create or open a project]
B --> C[Create a room and choose its rules]
C --> F[Add user stories: type them, upload a CSV file or import from Jira]
F --> D[Share the room link]
D --> E([Team members open the link and type their name])
E --> G{How to estimate?}
G -->|one story at a time| H[Pick a technique: planning poker, Fibonacci, t-shirt or three-point]
H --> J[Everyone votes in secret]
J --> K[Scrum master reveals the cards]
K --> L{Agreement?}
L -->|no: discuss| J
L -->|yes| M[Record the final estimate]
G -->|many stories at once| I[Affinity board: the team sorts stories into size columns]
I --> M
M --> N{More stories?}
N -->|yes| G
N -->|no| O[End the session]
O --> P[History, CSV download and recording playback]
M -.->|optional| Q[Update Jira: story points, assignee, priority, versions, labels]Every button describes what it does when you hold the mouse over it.
Setting up CHIPS
For: Administrators
After CHIPS is installed, the welcome page shows Set up CHIPS. Setting up is done once, by the person who installed it, in six steps:
- Setup code. So that nobody else can take over a new installation, the wizard asks for a one-time
code. The installer prints it; it is also in the server log (
sudo journalctl -u scrum-poker,docker compose logs app, on WindowsC:\ProgramData\CHIPS\logs\chips.log). On the server,python -m scrumpoker.manage setup-codemakes a new one (Linux:sudo /opt/scrum-poker/deploy/setup-code.sh; Windows:deploy\windows\setup-code.ps1in an elevated PowerShell). A code is valid for 24 hours and stops working after 10 wrong tries. The step then shows checks of the server: the database, the site secret, HTTPS, secure cookies and the integrity of the installation. - License agreement. Read and accept it for your organisation.
- Administrator. Username, display name, email and password (long, not a common password, not containing the username).
- Installation options. Organisation name, the public address people use (for share links), the default time zone, the language (American or British English spelling), whether administrators must use two-factor sign-in, whether anyone may create an account, password length, how long a sign-in lasts, people per room, the default technique, how long the activity log is kept, and whether the REST API and Jira are available.
- License key (optional). Without one, CHIPS runs as the Community edition.
- Review and install. Nothing is saved before this step; then everything is saved at once and you are signed in as the administrator.
Everything can be changed later under Admin → Settings, which also shows the checks again.
Security and two-factor sign-in
For: Scrum masters and administrators
Two-factor sign-in
Account → Two-factor sign-in → Set up: scan the QR code with an authenticator app (Microsoft Authenticator, Google Authenticator, 1Password, Authy …) and enter the 6-digit code it shows. From then on, signing in asks for your password and then a code from the app.
You also get 10 recovery codes. Each signs you in once if you do not have your phone — keep them in a
password manager or printed. New recovery codes replaces them. If you lose both, an administrator can
turn two-factor sign-in off for you (Admin → Users, or manage reset-2fa NAME on the server).
Administrators can make two-factor sign-in required for administrators (Admin → Settings). An administrator without it can still sign in, but administration stays locked until it is set up.
Wrong passwords
After 5 wrong passwords within 15 minutes an account is locked for a minute, then longer with every
further wrong try (at most an hour). Even the right password waits. An administrator can unlock it at
once (Admin → Users → Unlock, or manage unlock NAME). Many wrong passwords from one network address
block that address the same way.
How CHIPS protects itself
- Passwords are stored as salted scrypt hashes; sessions, invitation codes, access tokens and recovery codes only as hashes; Jira tokens, OAuth secrets and two-factor keys encrypted with the site secret.
- CHIPS does not start without a long
STORAGE_SECRET. - Pages are sent with a strict content security policy, cannot be framed by other sites, and are not cached. Behind HTTPS, cookies are sent over HTTPS only.
- Error pages show a reference number instead of technical details; the details go to the server log.
- Customer builds are compiled and signed. If files are changed, CHIPS notices and switches off licensed features (see Editions and licensing).
- Every sign-in, failed sign-in, lock and security change is in the activity log.
How CHIPS works (flowcharts)
For: Everyone
These flowcharts show how CHIPS operates. Solid arrows are the usual path; dotted arrows are optional.
The whole process
flowchart TD
A([Scrum master signs in]) --> B[Create or open a project]
B --> C[Create a room and choose its rules]
C --> F[Add user stories: type them, upload a CSV file or import from Jira]
F --> D[Share the room link]
D --> E([Team members open the link and type their name])
E --> G{How to estimate?}
G -->|one story at a time| H[Pick a technique: planning poker, Fibonacci, t-shirt or three-point]
H --> J[Everyone votes in secret]
J --> K[Scrum master reveals the cards]
K --> L{Agreement?}
L -->|no: discuss| J
L -->|yes| M[Record the final estimate]
G -->|many stories at once| I[Affinity board: the team sorts stories into size columns]
I --> M
M --> N{More stories?}
N -->|yes| G
N -->|no| O[End the session]
O --> P[History, CSV download and recording playback]
M -.->|optional| Q[Update Jira: story points, assignee, priority, versions, labels]One estimating round
Votes stay secret until the scrum master reveals them — not even the scrum master sees other people's cards before that.
flowchart TD
S[Story in the backlog] -->|Start| V[Voting: cards face down]
V -->|each person picks a card or gives three numbers| V
V -->|Reveal, or automatically when everyone has voted| R[Revealed: cards, statistics and a suggestion]
R -->|Vote again| V
R -->|Save estimate| D[Estimated]
D -->|Vote again| V
D -.->|Update Jira| J[(Jira issue)]The affinity board
flowchart TD
A[Scrum master opens an affinity board and picks the columns] --> B[Every story without an estimate starts in Not sorted yet]
B --> C[Anyone in the room moves stories into size columns]
C -->|everyone sees each move at once| C
C --> D{Scrum master decides}
D -->|Accept board| E[Each sorted story gets its column as final estimate]
D -->|Close without saving| F[Nothing changes; the board stays in the history]Updating Jira
flowchart TD
A[Update Jira] --> B{Which stories?}
B -->|this story| T[The story]
B -->|the room| R[All Jira stories in the room]
B -->|JQL query| Q[Issues found in Jira, paired with stories by key]
T --> F[Choose the fields to send]
R --> F
Q --> F
F --> P[Preview: what will be sent, and what not and why]
P --> U[Update Jira]
U --> X[Result per issue: updated, partly updated or failed]How the parts fit together
Everyone uses a browser; the CHIPS server shows the pages, applies the rules and pushes every change to everyone in the room at once. Everything is kept in a PostgreSQL database.
flowchart LR
subgraph devices [Any device with a web browser - nothing to install]
P1[Scrum masters and administrators]
P2[Team members]
end
P1 --> APP
P2 --> APP
APP[CHIPS server - pages, rules, live updates] --> DB[(PostgreSQL database)]
APP -->|personal access token| JIRA[Jira]
APP -->|OAuth 2.0 / OpenID Connect| IDP[Your sign-in provider]
S[Scripts and tools] -->|REST API with an access token| APPFor team members
For: Team members
Joining
Open the link the scrum master sent you, type your name and press Join room — or Join as watcher to only observe (you see everything but do not vote, add notes or react). Your browser remembers you for that room, so you can close the tab and come back. If the scrum master added you by name, they sent you a personal link instead — it signs you straight in; don't share it.
Voting
When the scrum master starts a story, pick a card. You can change it until the cards are revealed; click your card again to take it back. The table shows who has voted, but nobody — not even the scrum master — sees the cards before Reveal.
- ? is the pass card: you abstain. It counts as having voted, but is left out of the average, the consensus and the outliers. ☕ means "I need a break" (if the room uses them).
- A countdown shows when the room has a timer; when it runs out the cards may be revealed.
- Anonymous voting: after the reveal the cards are shown without names — nobody, not even the scrum master, sees who voted what (you still see your own card).
- Three-point estimation: instead of a card, enter three numbers — optimistic, most likely and pessimistic — and press Submit. You see your own PERT estimate at once.
After the reveal everyone sees the cards, the distribution, the average, median and whether there is a consensus — unless the scrum master hides the results, in which case you only see who voted. Cards far from the rest are ringed in red: if yours is, the team would like to hear why.
Reactions
During the discussion, the emoji buttons under the story (👍 🎉 🤔 …) show a reaction next to your name for a few seconds.
The affinity board
Sometimes the scrum master opens an affinity board to size many stories quickly. Every story starts in Not sorted yet. Move stories with ◀ (smaller) and ▶ (larger), or ⋯ to pick a column. Everyone sees each move at once; talk it through and move stories again if needed.
Notes
Anyone can add a note to a story — under the current story, or with the notes button of a story in the backlog. You can delete your own notes.
Display
The palette button in the header sets dark mode, colours, text size and your time zone — see Display settings.
If the room shows ● Recording, the scrum master is recording the session for playback later.
Projects and rooms
For: Scrum masters
A project groups the rooms of one team or product; a room is where estimating happens (up to 30 people, scrum master included). Rooms and their history belong to the project's scrum master; administrators can manage every project.
Projects page
- New project — name and describe it. The pencil renames it; the archive button hides it (and its rooms) without deleting anything.
- Create room — under the project, with the technique for the first vote.
- Show archived — see archived projects and rooms, and restore them.
Inviting people
- Copy link shares the room link; anyone with it can join while Open to new members is on.
- Add a user creates a seat and a personal link for one person.
- The ⋮ menu next to a person makes them a moderator, a team member or a watcher, or removes them at once (their link stops working). To keep them out, also lock the room (the padlock above the story) or Issue new share link under Rules & sizing.
- See Running a session for moderators, watchers, the timer and more.
Rules & sizing
| Setting | What it does |
|---|---|
| Technique for the next vote | planning poker, Fibonacci scale, t-shirt sizing, custom deck or three-point estimation |
| Card values, numbers, sizes | each technique's scale (presets included) |
| Custom deck | a name and 2–30 cards of your own — numbers, words or emoji; Save as my deck keeps it for your other rooms |
| Three-point unit | points, hours, days… |
| Affinity board columns | t-shirt sizes, Fibonacci numbers or planning poker cards |
| ? and ☕ cards | the pass card (abstain) and "need a break" |
| Scrum master votes too, Moderators vote too | whether you (and moderators) get a card as well |
| People may join as watchers | offers Join as watcher on the invitation page |
| Allow new members to join | turns the share link on or off (off = locked) |
| Reveal automatically | reveal as soon as everyone has voted |
| Anonymous voting | revealed cards are shown without names, to everyone |
| Hide the results | team members see who voted but never the values or estimates |
| Timer per vote | a countdown for every vote (0 = none), and whether to reveal when time is up |
| Suggested estimate from | mean, median, most common card, or the mean without the highest and lowest vote |
| Highlight outliers | ring votes this many cards away from the median after the reveal |
| Suggest splitting at | after a reveal at or above this estimate, offer a quick split |
| Send final estimates of Jira stories to Jira | send each saved estimate to Jira at once |
| Maximum users | lower than 30 if you like |
Estimating a story
For: Scrum masters
flowchart TD
S[Story in the backlog] -->|Start| V[Voting: cards face down]
V -->|each person picks a card or gives three numbers| V
V -->|Reveal, or automatically when everyone has voted| R[Revealed: cards, statistics and a suggestion]
R -->|Vote again| V
R -->|Save estimate| D[Estimated]
D -->|Vote again| V
D -.->|Update Jira| J[(Jira issue)]- Start a story (the ▶ button in the backlog, or Start: … above). The Technique selector above the story chooses how; switching it during a vote starts the vote again the new way.
- Everyone votes; the table and the team list show who has voted.
- Reveal cards (or let the room reveal itself when everyone has voted — Rules & sizing).
- Read the result: distribution, average, median, range, consensus, passes, outliers (ringed in red, with "ask them to explain") and a suggested estimate — the card closest to the room's averaging rule (Rules & sizing → Suggested estimate from: the mean, the median, the most common card, or the mean without the highest and lowest vote; ties go to the larger card; automatic = the mean for numbers and the most common card for sizes and words).
- Choose the final estimate (the suggestion is pre-selected; you can type another) and Save estimate — or Vote again for a new round after discussing the highest and lowest cards.
- Next story moves on.
Hide results (switch above the story): team members see who voted, but no values, statistics or final estimates; you still see everything. Anonymous, the padlock (lock the room) and the Timer are next to it — see Running a session. Too big? Quick split… turns the story into an epic with smaller stories — see Epics and quick split.
Every round is kept in the history, including rounds that were voted again.
Running a session
For: Scrum masters
Moderators
Anyone in the room can run the session for you: the ⋮ menu next to their name → Make moderator. A moderator can start votes, reveal, use the timer, record final estimates, edit the backlog and rules, lock the room, hide results and remove team members and watchers — without a CHIPS account. Only the scrum master appoints or removes moderators. Whether moderators also vote is a rule (Moderators vote too).
Watchers
Watchers see the whole session but do not vote, add notes or react — for stakeholders, new team members or a product owner who only listens. People choose Join as watcher on the invitation page, or you switch someone with ⋮ → Make watcher (and back with Make team member). Watchers never count as missing votes.
Timer
Timer above the cards gives everyone 30 seconds to 5 minutes; +30 s adds time and the crossed clock stops it. A timer for every vote is set under Rules & sizing → Timer per vote, which also decides whether the cards are revealed when the time is up (otherwise everyone just sees "Time is up").
Lock, remove, hide
- The padlock above the story locks the room: the share link stops accepting new people (people already in stay). Click it again to unlock.
- ⋮ → Remove from the room kicks someone out at once.
- Hide results keeps the revealed values and statistics from the team.
Anonymous voting
With Anonymous on, the revealed cards are shown without names — to everyone, the scrum master included — and the history, downloads and recordings do not say who voted what either. Turning it off later never reveals the names of a round that was anonymous.
Pass card and outliers
The ? card means pass: the person abstains. It counts as a vote for "everyone has voted" but not in the statistics. After the reveal, votes at least two cards (configurable) away from the median are outliers: ringed in red, with a note to ask those people to explain — a quick way to surface what others may have missed.
Reactions
Everyone except watchers can send emoji reactions during the discussion; they appear next to the person's name and in a short feed for about ten seconds.
Epics and quick split
For: Scrum masters
Big pieces of work are easier to estimate in two steps — trunk-based estimation:
- Estimate the trunk. Add the work as an Epic (tick Epic when adding, or change the type in the edit dialog) and vote on it like any story. Its estimate is a rough size of the whole.
- Split it. Quick split… (next to Save estimate, or the split button in the backlog) opens a dialog with ready-made splits you can edit line by line:
- Equal parts — part 1, part 2, …;
- SPIDR — spike, paths, interfaces, data, rules;
- Workflow steps — first, middle and last step, notifications;
- Create / Read / Update / Delete;
- My own list.
The new stories go right after the epic and keep its priority, versions and labels. With Vote on the first new story now the next vote starts at once. 3. Estimate the parts. The backlog shows them under the epic with how many are estimated and their total next to the epic's own estimate — so you see at a glance whether the trunk estimate held.
A story that is still a story can be split too: it becomes an epic. Under Rules & sizing → Suggest
splitting at, choose an estimate (e.g. 13, or XL): after a reveal at or above it, CHIPS suggests a
quick split. The REST API can split as well: POST /api/v1/rooms/{room}/stories/{story}/split.
Sprint capacity
For: Scrum masters
Sprint planning in CHIPS: each person's working days in the sprint, a minimum and maximum of story points they can take on, and the points actually assigned to them — in red when it is more than their maximum.
The team list
Each project has a team list (Projects → the people button on the project, or Team list in a room's capacity panel). For each person:
- Name — as they join rooms and as stories are assigned (matched without regard to capitals).
- Seniority — junior, mid-level, senior or lead; Analytics uses it to check whether estimates follow the most senior person.
- Working days per sprint — empty means the project's usual number (10 unless changed).
- Minimum and maximum points — empty means the defaults below.
Defaults: one story point is one working day. So the maximum is working days × points per day (10 days → 10 points) and the minimum is half the maximum (10 days → 5 points). Change story points per working day on the team page if your team's points mean something else (e.g. 2 points per day).
In a room, Add everyone in this room puts the team members and moderators who are not on the list yet onto it.
A room is a sprint
The Sprint capacity panel next to the people in a room shows, for everyone on the team list:
- assigned / maximum points — the final estimates (numbers) of the room's stories whose assignee is that person; an epic that was split counts through its stories, not twice;
- the colour: red when over the maximum (with a warning sign), orange when under the minimum, green in between; and a bar for the load;
- working days, minimum, maximum and how many stories.
Below: the total against the team's capacity, points not assigned to anyone, assignees who are not on the team list, and estimates that are not numbers (t-shirt sizes are not counted).
The scrum master (or a moderator) can set sprint dates (the calendar button; CHIPS counts the working days, Monday to Friday) and click a person to change their working days or limits for this sprint only — e.g. someone on holiday for three days. Use the team list removes the sprint's values again.
Assign stories in the story's Edit dialog; the assignee field suggests the names on the team list. When the scrum master hides story point values from the team, the capacity panel is hidden from the team too.
Delivery
For Analytics, a story can also record its delivery: when work started and was done, defects found, times reopened (rework) and sprints carried over — under Edit → Delivery, or read from Jira with Delivery from Jira (started = the first move out of To Do, done = the resolution date, reopened = moves from a done status back to an open one, defects = linked or sub-task bugs, carried over = sprints in the Sprint field minus one).
Analytics
For: Scrum masters and administrators
Analytics (in the header, or the chart button on a project) is part of the Enterprise edition. Choose the project, the period (the last 90 days, 6 months, 12 months or all time) and, for the forecast, a date. Every table can be downloaded as CSV.
People are matched by name across the project's rooms, the team list and assignees. Votes from anonymous rounds are never attributed to anyone — they count only in team figures such as spread. ? (pass) and ☕ are not estimates.
Estimators
- Above, on or below the final estimate — each person's first vote on a story (before discussion) against the estimate the team chose; the average difference in cards and a tendency (estimates high, estimates low, close to the team).
- Highest and lowest — how often a person had the highest or the lowest vote, in rounds with at least three voters who did not all agree.
- Passes and notes written.
Velocity
Each room is a sprint: planned points (estimated in the room) and delivered points (stories done — by the sprint's end date if it has one), the ratio, and the team's capacity and utilisation from the capacity panel. Contribution by person adds up the delivered points of the stories each person owned (the assignee) and their share of the team's velocity.
Agreement
The spread of first-round votes per story (cards between the lowest and the highest vote; for three-point estimates, the variation), how often the team agreed at once, how often it voted again, by technique, and the most divergent stories first — the ones the team understood differently.
Anchoring
Do estimates converge toward the first person to comment (the first note after the reveal) or the most senior voter (from the team list)? For each story CHIPS takes the middle of the first, pre-discussion votes and the final estimate, and measures how far the estimate moved toward that person's first vote (100% = all the way) compared with how far it moved toward everyone else's. A difference of 15 points or more over at least five stories reads estimates converge toward this person. Influence by person shows the same pull for everyone, how often their first vote became the final estimate, and how often they commented first. Re-votes show how much the spread shrank after discussion.
Quality
For delivered stories: defects per story and per 10 points, the share reopened (rework) and the share carried over to a later sprint, and the median cycle time — by owner (assignee) and by estimator (stories whose final estimate was that person's first vote). They are signals for a conversation, not a score.
Forecast
A Monte Carlo forecast: 10,000 simulated futures, each week drawing a random week of real throughput from the last 12 weeks, until the remaining stories (or points) are done. It shows the dates by which 50%, 70%, 85% and 95% of the futures finished, the distribution, and the chance that everything is done by your date.
Points vs time
Whether story points predict cycle time (started → done): the Spearman correlation (order of sizes against order of durations), Pearson and R², a scatter chart with a trend line, cycle time by size (box plot), and whose first votes predict duration best.
More
Trends by sprint — the median story size and days per point (size drift or point inflation); epics — the trunk estimate against the sum of their stories; estimation effort — minutes per round and rounds per story.
Delivery data comes from Edit → Delivery on a story or from Delivery from Jira (on this page for the
whole project, or in a room) — see Sprint capacity. The REST API has the whole
report: GET /api/v1/projects/{id}/analytics?period=180.
The demo area
For: Scrum masters and administrators
Projects → Demo (or /demo) makes a ready-made project, CHIPS demo, in a few seconds. There is one
demo per installation; every scrum master and administrator can open, use, reset and remove it.
What is in it
- The room Demo · Sprint 12 planning — the sprint being planned now. It is one of your edition's active rooms (Community allows five), so the demo needs one free room.
- People: Sam (scrum master), Morgan (moderator), Wes (a watcher — the product owner) and five team members, Ann, Bob, Cat, Dan and Eve, all on the project's team list with seniority and working days.
- 19 user stories (with keys DEMO-101 …) and an epic, Checkout redesign, split into four stories. Twelve stories are estimated — with votes, notes and some second rounds — and assigned; some are in progress or done; the rest wait in the backlog. One revealed round is left on the table, with an outlier to discuss. Ann has more points than her maximum, so the capacity panel shows red.
- Three earlier sprints (9, 10 and 11) as archived rooms: they do not use active rooms, and give the analytics their history — velocity, delivery, defects and carry-over.
What each edition adds, shown with the demo
- Analytics (Enterprise) — the demo project's analytics are shown in every edition: Dan tends to estimate high, Cat low, and estimates drift toward Ann, the lead.
- Recording and playback (Team, Enterprise) — the first stories of the demo sprint were recorded; play them back in any edition.
- Activity log (Enterprise download) — every step of the demo sprint was logged; the demo page shows the latest entries and downloads the demo's part as CSV.
- REST API (Team, Enterprise) — example requests and what the API answers for the demo room.
- Jira (Team, Enterprise) and single sign-on (Enterprise) — explained, with a preview.
Reset throws away whatever was done in the demo and makes it again; Remove deletes it and frees its room. The people are invented; everything else was made with the same rules as real rooms.
Estimation techniques
For: Scrum masters
Choose the technique story by story with the Technique selector — one session can mix all six.
| Technique | How | Result |
|---|---|---|
| Planning poker | secret cards 0 ½ 1 2 3 5 8 13 20 40 100 (configurable) |
average, median, suggestion |
| Fibonacci scale | secret cards 0 1 2 3 5 8 13 21 34 55 89 (configurable) |
as planning poker |
| T-shirt sizing | secret sizes XS S M L XL XXL (configurable) |
the most common size |
| Custom deck | your own cards: numbers, words or emoji (e.g. hours, Low/Medium/High, 🐜 … 🐘) | numbers: average and suggestion; otherwise the most common card |
| Three-point | each person gives optimistic, most likely, pessimistic | PERT estimate and likely range |
| Affinity | the team sorts many stories into size columns at once | each column becomes an estimate |
Custom decks
Under Rules & sizing → Custom deck give the deck a name and its cards, smallest first (presets: hours, days, fist of five, risk, animals). Save as my deck keeps it for your other rooms; My decks fills it in again. The pass (?) and break (☕) cards are added as for every deck. Affinity boards can use the custom deck as their columns.
Three-point estimation
Each person's estimate is (O + 4M + P) / 6. The team's estimate uses the averages of everyone's three numbers; the standard deviation (P − O) / 6 gives the likely range (estimate ± 2σ). The final estimate offers the PERT estimate, rounded up, and the top of the range.
Affinity estimation
Press Affinity estimation and choose the columns. While the board is open, no single story is voted on; ending the session closes the board without saving. With values hidden, team members see Size 1 · smallest … instead of the values.
flowchart TD
A[Scrum master opens an affinity board and picks the columns] --> B[Every story without an estimate starts in Not sorted yet]
B --> C[Anyone in the room moves stories into size columns]
C -->|everyone sees each move at once| C
C --> D{Scrum master decides}
D -->|Accept board| E[Each sorted story gets its column as final estimate]
D -->|Close without saving| F[Nothing changes; the board stays in the history]User stories and attributes
For: Scrum masters
Adding stories
- Type a key (optional, e.g.
ABC-123), a title and details (Markdown) and press Add. - Add several at once — one title per line.
- Import — from a CSV file or from Jira.
Editing and attributes
The pencil button of a story edits its title, key and details, and its attributes:
- Assignee — for Jira stories, Find in Jira lists the people who can be assigned the issue; picking one ties the story to that Jira user ("✓ Jira user").
- Priority — Highest … Lowest, or Jira's priorities (type your own if needed).
- Fix versions and Affects versions — several each; Jira's versions are offered when connected.
- Labels — type a label and press Enter; no spaces.
Everyone sees the attributes on the story and in the backlog; they go into history and downloads, and you can send them to Jira.
Removing
The delete button removes a story from the backlog; if it was voted on or has notes, its history is kept.
Notes
Anyone can add notes; authors and the scrum master can delete them. Notes appear for everyone at once.
Uploading and downloading (CSV)
For: Scrum masters
Upload stories
Import → Upload a CSV file. The file needs a header row and at most 10 columns (500 stories, 1 MB). Columns are recognised by their headers — you can change the mapping in the preview:
| Becomes | Headers recognised |
|---|---|
| Title (required) | Summary, Title, User story, Story, Name, Subject |
| Key | Issue key, Key, JIRA ID, Jira, Issue ID, Ticket, ID |
| Description | Description, Details, Acceptance criteria, Body, Notes |
| Attributes | Assignee, Priority, Fix Version/s, Affects Version/s, Labels |
| Anything else | kept as extra fields shown with the story |
Stories whose key is already in the room can be skipped. A Jira CSV export works as it is.
Download results
Download results → This session or All stories in this room, or any session from History. One row per story: key, title, attributes, technique, final estimate, votes of the last round, statistics and notes. The file opens correctly in Excel (UTF-8), and text that would run as a spreadsheet formula is made harmless.
Jira
For: Scrum masters
Connect
On Account → Jira connections:
- Jira Data Center / Server / Service Management — a personal access token (your Jira profile → Personal Access Tokens).
- Jira Cloud — an API token from id.atlassian.com, with your account's email.
The token is checked against Jira and stored encrypted. Your administrator may limit which Jira servers can be used.
Import
Import → Import from Jira, type a JQL query (e.g. project = ABC AND sprint in openSprints()),
Preview, Import. Issues become stories with their key (linked to Jira), summary, description,
assignee, priority, versions and labels.
Update Jira
Update Jira above the backlog, or a story's cloud button:
flowchart TD
A[Update Jira] --> B{Which stories?}
B -->|this story| T[The story]
B -->|the room| R[All Jira stories in the room]
B -->|JQL query| Q[Issues found in Jira, paired with stories by key]
T --> F[Choose the fields to send]
R --> F
Q --> F
F --> P[Preview: what will be sent, and what not and why]
P --> U[Update Jira]
U --> X[Result per issue: updated, partly updated or failed]- Which stories — this story; all Jira stories in the room; or the issues a JQL query finds (paired with the room's stories by key).
- Which fields — story points, assignee, priority, fix versions, affected versions, labels.
- Empty values are not sent unless you tick Also clear fields in Jira that are empty here.
- If Jira refuses a field (e.g. an unknown version), the other fields are still sent.
- The cloud button of each story turns green when the issue is up to date, red with the reason if not.
Story points must be numbers: t-shirt sizes are not sent. With Send final estimates of Jira stories to Jira on (Rules & sizing), each saved estimate goes to Jira at once.
Recording and playback
For: Scrum masters
Press Record in the room. Every step is captured — stories started, who voted, reveals, estimates, notes, affinity moves, people joining and leaving — with how the room looked afterwards. Everyone in the room sees ● Recording. Press the stop button to finish; ending the session or archiving the room also stops it.
Find recordings under History (and on each session's page). The player has:
- play / pause, previous and next step, start and end, and a timeline slider;
- speeds from 1× to 16×, and Skip pauses (long waits last at most 2 seconds);
- the list of steps — click one to jump to it.
Votes stay face down until the moment they were revealed, exactly as in the room. Recordings can be renamed, deleted or downloaded (JSON). Only the room's scrum master and administrators can see them.
Sessions and history
For: Scrum masters
A session starts with the first vote in a room and ends when you press the stop button next to the session name, or after a long pause (8 hours by default). Every round is kept: who voted what, the statistics, the final estimates, the technique, the notes and any affinity boards.
History lists sessions (yours; administrators can see everyone's) with filters by project and room, and the room's recordings. Open a session to see every round, rename it or download its results. Values hidden from the team during a session are shown here, because only the room's scrum master and administrators can open the history.
Removing a story or archiving a room keeps its history; only an administrator can delete a room or project permanently.
Display settings
For: Everyone
Press the palette button in the header (also in the user menu and on the Account page):
- Theme — follow your device, light or dark.
- Accent colour — eight colours.
- Text size — small, normal, large, larger.
- Time zone — dates and times on the pages (downloads are always in UTC).
- Compact spacing and Reduce motion.
Changes show at once; Save keeps them, Cancel goes back. Team members' settings are remembered in their browser; scrum masters' and administrators' settings are saved with their account and follow them to other devices.
Administration
For: Administrators
Admin (administrators only) has these tabs:
- Users — add people (with a password, or without one if they sign in through a provider), change roles, disable accounts, set passwords, sign someone out everywhere, delete accounts. There is always at least one active administrator.
- Projects & rooms — every project and room: rename, hand over to another user, archive or restore, open any room (you act as its scrum master), delete permanently.
- Sessions — the latest sessions everywhere.
- Sign-in providers — OAuth 2.0 / OpenID Connect (Signing in).
- Access tokens — every personal access token, with revoke.
- Activity log — see Activity log.
- Settings — the security and installation checks; organisation name, public address, default time zone and language (American or British English); self-registration, password sign-in, two-factor sign-in for administrators, password length, how long a sign-in lasts; users per room, session pause, default technique; REST API and Jira on or off, allowed Jira servers; log retention and room activity logging.
Users show badges for two-factor sign-in and locked accounts; the buttons next to them unlock an account or turn two-factor sign-in off (for someone who lost their phone).
On the server, python -m scrumpoker.manage can also create users, reset passwords, change roles, list
users, show the version, truncate the log, make a setup code (setup-code), unlock accounts
(unlock NAME), turn off two-factor sign-in (reset-2fa NAME) and run the checks (security-check) —
useful when nobody can sign in.
Activity log
For: Administrators
Everything CHIPS does on someone's behalf is logged: sign-ins (and failed attempts), administration, projects, rooms, stories, voting, notes, imports, Jira, sign-in providers, access tokens, recordings, and the software's own start, stop and errors. Each entry has the time, level, category, who did it, their IP address, the room and the details.
Never logged: passwords, tokens and vote values — the log says that someone voted, not what.
Admin → Activity log: search (text, person, room, IP), filter by category, level and dates, open an entry for its details, page through with Newer / Older, Download CSV.
Truncate log… deletes all entries, entries older than a number of days, or entries before a date. The truncation itself is always recorded. Automatic retention (90 days by default) and whether to log room activity are under Admin → Settings.
Editions and licensing
For: Administrators
CHIPS comes in three editions. Without a license key it runs as Community — free, with limits. A license key from the vendor unlocks Team or Enterprise.
| Community | Team | Enterprise | |
|---|---|---|---|
| Scrum master and administrator accounts (seats) | 3 | as licensed (10 by default) | as licensed |
| Active rooms | 5 | unlimited | unlimited |
| People per room | 30 | 30 | 30 |
| All estimation techniques, CSV, history, notes, help, display settings | ✓ | ✓ | ✓ |
| Jira integration | — | ✓ | ✓ |
| Recording and playback | — | ✓ | ✓ |
| REST API and personal access tokens | — | ✓ | ✓ |
| OAuth 2.0 / OpenID Connect sign-in | — | — | ✓ |
| Activity log download and REST access | — | — | ✓ |
| Analytics: estimators, velocity, anchoring, quality, forecasts | — | — | ✓ |
| Support | community | standard | priority |
Team members who join rooms by link never use a seat. The activity log itself is always kept and viewable by administrators.
Installing a license key
Admin → License: paste the key (it starts with CHIPS1.) and press Install key. The page shows
the edition, the licensee, the expiry, the seats and rooms in use, and the installation ID — the
vendor can bind a key to it so it works only on this installation. On the server you can also run
python -m scrumpoker.manage license install KEY (or license show).
Keys are checked offline with a digital signature: CHIPS never contacts a license server and sends no usage data. A key cannot be edited — changing it breaks the signature.
Expiry
Thirty days before a key expires, administrators see a reminder. After the expiry date everything keeps working for a 14-day grace period; then CHIPS runs as the Community edition until a renewed key is installed. No data is ever deleted: limits only stop adding accounts or rooms, and features of a higher edition stop being usable — existing rooms, stories, history and recordings stay.
When a limit is reached
Creating one more account or room beyond the edition's limit is refused with an explanation; disable an account, archive a room, or install a key with more seats. Using a feature of a higher edition shows which edition it needs.
Protected builds
The packages customers install contain CHIPS compiled to native code, without its source, and a list of every file signed by the vendor. When CHIPS starts it checks that list; if a file was changed, removed or added, it runs as the Community edition, tells administrators that the installation was modified and writes this in the activity log. Reinstalling from the original package fixes it; no data is lost. Admin → Settings → Security and installation checks shows the result.
The license agreement the first administrator accepted, and the third-party notices, are under Legal.
Signing in, OAuth and access tokens
For: Scrum masters and administrators
Signing in
Scrum masters and administrators sign in with a username and password, or with their organisation's account (Sign in with … on the start page) if an administrator set up a provider. Team members never need an account.
OAuth 2.0 / OpenID Connect (administrators)
Admin → Sign-in providers → Add: Google, Microsoft Entra ID, GitHub, Atlassian, any OpenID Connect provider or any OAuth 2.0 provider. Register CHIPS with the provider using the redirect URI shown, enter the client ID and secret, and choose whether a first sign-in creates an account and which email domains are allowed. People can also link a provider to their account on the Account page.
Personal access tokens
Account → Personal access tokens → Create: a token for scripts and tools, read-only or read and
write, with an expiry. It is shown once — copy it. Use it like a Jira PAT:
Authorization: Bearer spk_…. Revoke it on the same page.
REST API
For: Developers
The REST API is at /api/v1; interactive documentation at /api/v1/docs. Authenticate
with a personal access token:
TOKEN=spk_…
curl -H "Authorization: Bearer $TOKEN" https://chips.example.com/api/v1/projects
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: text/csv" --data-binary @stories.csv \
https://chips.example.com/api/v1/rooms/ROOM_ID/stories/csv
curl -H "Authorization: Bearer $TOKEN" -o results.csv https://chips.example.com/api/v1/rooms/ROOM_ID/results
Projects, rooms, stories (add, change, attributes), notes, sessions and results, recordings, Jira
preview and update, and for administrators users and the activity log. Permissions are the same as on
the pages; read-only tokens can only read. GET /api/v1/health shows the version.
Troubleshooting and FAQ
For: Everyone
I can't join the room. The link may be old (the scrum master issued a new one), the room may be closed to new members, or full (30 people). Ask the scrum master for a new link.
"You were removed from this room." The scrum master removed you; ask them to add you again.
I don't see the cards' values after the reveal. The scrum master is hiding story point values.
"The database is unavailable — retrying…" CHIPS can't reach its database; it keeps retrying. Tell your administrator if it lasts.
My screen doesn't update. Changes appear at once; if not, reload the page. Very old browsers are not supported.
Jira says the token is not accepted. Create a new personal access token (or Cloud API token) and add the connection again on the Account page. Jira Cloud needs the email address of the token's account.
A fix version is refused by Jira. The version must exist in the issue's project; pick one from the list Jira offers in the story's edit dialog.
Dates show the wrong time. Set your time zone in Display settings.
Nobody can sign in any more. On the server: python -m scrumpoker.manage reset-password NAME or
create-admin NAME (see the README).
"Too many failed sign-ins." Wait the minutes shown, or ask an administrator to unlock the account.
I lost the phone with my authenticator app. Sign in with a recovery code, or ask an administrator to turn two-factor sign-in off for you, then set it up again.
Where is the setup code? In the installer's output and the server log; on the server
python -m scrumpoker.manage setup-code makes a new one (Setting up CHIPS).
"This installation of CHIPS has been modified." Files of the installation were changed or added. Reinstall CHIPS from the original package; your data is not affected.
Which version is this? See About CHIPS.
About CHIPS
For: Everyone
CHIPS 1.7.0 — released 2026-10-28. Made by EEZEEZEE.
CHIPS stands for Collaborative Heuristic for Iterative Planning and Story-pointing: a team estimating together (collaborative), using quick rules of thumb such as planning poker, t-shirt sizes and affinity sorting (heuristic), sprint after sprint (iterative), to plan work and give user stories their points (planning and story-pointing).
Built with Python, NiceGUI, FastAPI and PostgreSQL. Versions follow semantic versioning (MAJOR.MINOR.PATCH); the database has its own schema version, shown under Admin → Settings.
What's new in 1.7.0
- A demo area in every edition: a ready-made project with a scrum master, a moderator, a watcher and five team members, 19 user stories and a split epic, three earlier sprints, a recording and the activity log — and its analytics, shown in the Community and Team editions too.
1.6.0
- Sprint capacity: a team list with working days per person, minimum and maximum story points (1 point = 1 day by default), and a capacity panel in each room that turns red when someone has more than their maximum. Stories record delivery: started, done, defects, rework, carry-over.
- Analytics (Enterprise): estimator behaviour, highest and lowest estimators, velocity contribution, agreement, anchoring and influence, quality by owner, Monte Carlo forecasts and points versus cycle time.
1.5.0
- American or British English: the administrator chooses which spelling menus, messages and help use, in the setup wizard or under Admin → Settings.
- CHIPS is made by EEZEEZEE, shown on the welcome page.
Earlier releases
- Moderators and watchers, kicking and locking, hiding results and anonymous voting (Running a session).
- Custom decks, the pass card, a voting timer, outlier highlighting, averaging rules and emoji reactions.
- Epics with trunk estimates and quick split (Epics and quick split).
- CHIPS can be hosted on Windows (11, Server 2022 / 2025) as well as Linux and macOS.
- A welcome page with the full name, and a setup wizard protected by a one-time setup code.
- Two-factor sign-in, locking after repeated wrong passwords, a password policy and security checks.
- Compiled, signed customer builds that detect changes.
The license agreement and third-party notices are under Legal.