Governance reports
The four board-performance reports — attendance compliance, term & expiry forecast, decision velocity, and committee activity — what each number means, exactly how it's worked out, and where the underlying record is only an approximation.
What's on the Reports page?
Open Reports from the navigation. It's a read-only view of how your board is performing against its own governance expectations, in four tabs:
- Attendance — every member's meeting attendance and RSVP response rate, and who is falling below the board's attendance expectation.
- Terms & expiry — which seats need renewing or refilling, and which incumbents have reached their term limit and so can't simply be renewed.
- Decision velocity — how many decisions the board recorded, month by month, and how long each took to reach.
- Committees — how active each committee has been: meetings held, decisions recorded, documents filed.
Nothing on this page is a separate tally kept alongside your records. Every figure is derived, at the moment you load the page, from the meetings, RSVPs, roll calls, recorded decisions, seats, terms and committees the board already keeps. If you correct a roll call, the report changes.
Who can see these reports?
Board Admins and Chairs only. Everyone else — directors, the treasurer, a staff liaison, and observers — sees no Reports link in the navigation, and visiting the URL directly shows the "you don't have access to this" page.
That's deliberate, and it's about the Attendance report specifically: it names individual directors and prints each one's attendance and RSVP response rate. Who may read that about their colleagues is a confidentiality decision, not a convenience one. It is withheld even from the read-only Observer role, because that role is also how a prospective member is given a look at the board — and a candidate shouldn't be able to read every sitting director's attendance record.
If you want a member to see their own participation history, that already lives on their profile (Members → the member → Attendance), which is a different surface with a different audience.
The date range
Every tab has the same From / To date range above the table, and both dates are always filled in — so you can always see the window the numbers describe rather than having to guess at "probably everything". Change either date and the report reloads; the range lives in the page's address, so you can bookmark a window or send someone a link to exactly the slice you're looking at. Clear returns to the tab's default.
The defaults differ by tab, on purpose, because two of these questions point in opposite directions in time:
- Attendance, Decision velocity and Committees look backwards — they answer "how has this board behaved?" — so they default to this year to date.
- Terms & expiry looks forwards — it answers "what needs filling next, this year?" — so it defaults to today through the end of this year.
"This year" means your board's own fiscal / term year — set once, on
Board settings → Board profile → Fiscal / term year starts — not the
calendar year, if your board has changed it from the default. A board on a
July–June year sees, say, Jul 1, 2026 – Jun 30, 2027, and the report says
so on screen ("This is the board's fiscal year, which starts in July") so it
never reads as an unexplained date. A board that has never touched the
setting (or set it to January) sees exactly the calendar year — Jan 1–Dec 31 for the retrospective reports, today through Dec 31 for the forecast —
with no note, because there is nothing to explain.
Because of that, switching tabs deliberately does not drag your range across: a backward-looking window applied to a forecast would produce an empty table every time. Each tab arrives on its own sensible window.
Dates are read as whole calendar days in your board's own timezone (Board settings → Board profile → Timezone) — including "today", so the default window rolls over at your board's own midnight, not a server's.
How do I export a report?
Select Export CSV above any report to download it as a spreadsheet-ready
file. The export always covers the whole report as it is on screen — the
same date range, the same rows, in the same order — so you can drop it straight
into a board book or a compliance pack. The filename records the range
(for example attendance-report-2025-08-12_2026-08-12-2026-08-12.csv), so a
folder of exports stays self-describing.
Cells are written in plain language, not internal codes: members and committees are named, dates are formatted, and anything unmeasurable reads "No data" rather than being left blank (a blank cell is too easily read as a zero).
Attendance compliance — how each number is worked out
Each row is one board member.
Attendance is meetings attended ÷ meetings you were eligible for, shown as
a percentage with both counts printed (80% (4 of 5)), plus a bar that is purely
a restatement of the same figure.
The denominator is narrower than "every meeting that happened", in three ways that all exist to avoid blaming someone unfairly:
- Only meetings with a roll call recorded count. If nobody took attendance at a meeting, it contributes nothing — for anyone. An un-recorded meeting can never quietly become an absence on someone's record.
- Only meetings you were on the roster for. Board-wide meetings count for everyone; a committee's meeting counts only for that committee's members.
- Only meetings inside your own membership window. A member who joined in March has no attendance obligation for January's meeting.
"Attended" means present or remote — joining by video is attending. Cancelled meetings never count.
RSVP response is meetings you responded to ÷ meetings you were eligible for, over the same eligible set. Any answer counts as a response — yes, no, or maybe. Only silence is a miss.
Current streak counts back from the member's most recent eligible,
roll-called meeting and stops at the first absence. A streak of 0 means they
missed their most recent meeting; "No data" means there is nothing recorded
to count.
Compliance compares the attendance percentage against the board's expectation — 75% — and reads Meets expectation, Below expectation, or No data. Each is spelled out in words and paired with its own icon shape, so it's readable in grayscale and to anyone who can't distinguish the colours.
The board figures above the table (board attendance, board RSVP response) are pooled, not averaged: every member's eligible meetings and attended meetings are added up and the rate taken once at the end. That means a member with nothing eligible adds nothing and can't skew the board's number — which an average of percentages would let them do.
Two things this report deliberately does not do
It never reports 0% for "nothing to measure". A member with no eligible, roll-called meetings in the range reads "No data", and their compliance is No data, never Below expectation. A brand-new director, or any member of a board that hasn't recorded a roll call yet, must not appear to never show up.
It doesn't subtract a leave of absence. This is the report's one real approximation, and it's worth understanding before you act on a low number. The board record stores each member's current status plus when their row was created and last changed — it keeps no history of status changes. So the report reconstructs a single best-effort membership window per member:
- a currently serving member (active or on leave) is treated as eligible from when their record was created onwards;
- a member who has left (resigned, removed, emeritus, past) is treated as eligible up to when their record was last changed — a good proxy for their departure if nobody edited the row afterwards, and wrong if someone did;
- a member who has never been seated (prospective, nominated, invited) has no window at all, so every rate reads "No data".
The practical consequence: a period of approved leave inside the range is not removed from that member's denominator, so their attendance percentage will read lower than the board would judge it. Read a low figure as a prompt to look, not as a finding. (Adding a real status history is a change to what the platform records, not to how this report calculates — the reporting layer is already built to accept multiple eligibility windows with gaps, so the fix will land here for free once that history exists.)
Task completion is not on this report. The underlying task records carry a status but no completion date, so there is no honest way to say which tasks were completed in the window — rather than show an "all time" figure inside a dated report, it's left out.
Terms & expiry forecast — how each number is worked out
This report uses exactly the same seat and term rules as the Succession page — it's the same forecast, over a window you choose, and exportable. If the two pages ever disagree, that's a bug in one place, not a difference of opinion.
Each row is one finding, named in words and paired with its own icon:
- Term expiring — a current term whose end date falls inside your window. Days remaining is counted from the start of the range, not from today, so a forecast reads the same whenever it's run. Open-ended terms (no end date) never appear.
- Term-limited incumbent — a currently-serving member who has served as many terms on that seat as the seat's limit allows, counting historical and current terms. They can't be renewed, so the seat needs a successor. Seats with no term limit never appear.
- Open seat — a seat short a holder right now: an uncapped seat with nobody in it, or a capacity-N seat with fewer than N current holders (the row shows "1 of 2 filled").
Seats needing attention at the top counts distinct seats, not findings — a seat that is both expiring and held by a term-limited member counts once. It always answers "how many seats", never "how many rows".
A note on the window: only the expiring rows are genuinely ranged. Term-limited incumbents and open seats are the board's position as it stands at the window's start — the record keeps no history of when a seat fell vacant, so "which seats were open during March" isn't a question it can answer.
Decision velocity — how each number is worked out
A decision here means exactly what it means on the Decisions register: a motion that was carried or failed and had its result recorded. A motion still open, or withdrawn before a vote, was never put to a decision and is counted nowhere. Written-consent rounds — decisions taken between meetings — count, because they are decisions.
Time to decide is measured from when the motion was opened to when its result was recorded, in days to one decimal place. A motion opened and decided in the same meeting is a fraction of a day; a written-consent round left open for its full signature window is several.
The headline figure is the median, not the average, and both are shown. One motion left open over a summer recess would drag an average badly while telling you nothing about the board's usual pace; the median ignores it. The slowest decision is shown alongside so that outlier is still visible rather than hidden.
Each row is one calendar month that had at least one decision. Months with no decisions are left out rather than shown as zero rows — this report answers "when did the board decide things", and empty months would pad a short window without telling you anything (the gaps are visible in the month column itself).
About the bars: the bars in the "Decisions recorded" column are drawn relative to the busiest month in your window. When there's only one month of data, there is nothing to compare against — so no bars are drawn at all, and the table says so. A single full-width bar reading as "the maximum" when it's merely "the only one" would be worse than no bar.
Committee activity — how each number is worked out
Each row is one active committee (archived committees are left out).
- Meetings held — the committee's own non-cancelled meetings that started inside the window.
- Decisions recorded — motions decided inside the window at the committee's meetings. A motion belongs to a meeting, and a meeting belongs to a committee, so a committee's decisions are its meetings' decisions — there's no separate "committee" stamp on a motion that could drift out of step.
- Documents added — documents filed to the committee inside the window.
- Current members — the committee's roster today. This one is not ranged: the record keeps no history of when someone joined or left a committee, so it reads the same for every window.
A committee with none of the first three appears anyway, marked "No activity in this range" in words. A dormant committee is exactly what a governance reviewer is looking for; hiding its row would hide the finding.
The same bar rule applies as on Decision velocity: bars in "Meetings held" are relative to the busiest committee, and are not drawn at all when there's nothing to compare against.
Reading the visualisations without seeing them
Every bar on these reports is decoration. The number it represents is always
printed as text in the same cell — including both sides of a rate (80% (4 of 5)) — and the tables carry captions explaining what the bars restate and when
they are deliberately absent. Screen-reader users get the complete report from
the table alone; nothing is conveyed by a bar's length, and nothing is conveyed
by colour alone (every status is a word plus an icon shape first, and a colour
only third). The CSV export contains the same strings the table shows.
Audit log
The board's append-only record of governance events — what it records, who can see it, and the history-starts-later caveat.
How do I search my board?
Find meetings, decisions, minutes, documents, tasks, members, discussions, committees, projects, and surveys from one search box or the ⌘K command palette — plus its quick actions and recent items.