Skip to content

Honest comparison

Board portal vs a spreadsheet decision log

A spreadsheet decision log is a real governance practice, and a disciplined secretary with one can be ahead of many boards using software. Its weakness is that every row is typed after the fact, by one person, and nothing checks it against the meeting where the decision happened.

Every Prepared Board statement on this page is quoted from /facts and /agent-facts.json (as of 2026-10-10). This page does not name or make claims about any commercial vendor.

Who a spreadsheet decision log is genuinely fine for

  • Boards with a disciplined secretary who already maintains a decision register and reviews it at each meeting.
  • Boards that take a handful of decisions a year and want a portable, plain-table record.
  • Boards that want the best possible exit story: a spreadsheet is already an export.

If that describes your board, you may not need a board decision operating system yet. The rest of this page is for when it stops being true.

Where it breaks

  • Who voted, and how. A 'Vote' column says passed or failed; individual ballots and the motion's mover and seconder are rarely kept.
  • Who recused, on which decision. A 'Recused' column is free text that nothing enforces, so a blank can mean no recusal or simply not filled in.
  • Evidence at close. Evidence is a link in a cell. Links move or lose permissions, and nothing tells you the link went stale.
  • Quorum count. Quorum is a yes/no someone typed, not a count computed from who was present against the board's seat requirement.
  • Which pack directors read. The log is separate from the packet, so a row cannot tell you what the directors read before the vote.
  • Exit: taking the record with you. Exit is genuinely strong — but only for what someone remembered to type.

Feature by feature

The Prepared Board column quotes only what agent-facts.json says it does today, and names the not-live limit that applies.

CriterionA spreadsheet decision logPrepared Board (from agent-facts.json)
Who voted, and howA result column; individual ballots usually absent.

“A signed-in board can run meetings, decisions, votes, motions, a consent agenda, minutes”

“If that decision stores Decision.outcome ADOPTED or DEFEATED (the same tokens as a certified VoteSession.result), the closed-record line says the vote was adopted or defeated.”

Who recused, on which decisionA free-text column; blank is ambiguous.

“If that decision has a conflict still stored as RECUSED, the closed-record line names who recused.”

“A closed decision with no RECUSED conflict does not get a recusal clause.”

Evidence at closeA link in a cell; can rot silently.

“the latest closed decision with evidence on the decision record”

“It lists each closed decision with its resolution text, its outcome monitors (target, metric, status, due date, and last report), its revisit date, its follow-up actions done, open, or overdue, and its closure evidence, and says so when any of these is missing.”

Quorum countA typed yes/no.

“On a meeting with attendance marked, the meeting header shows whether the seat count was met: Present or Remote versus the seats required by that board's quorum settings.”

“The line says this is a count, not a legal opinion.”

Not live: ASPA is not implemented. Quorum is a seat count from board settings plus Present or Remote attendance. It is not a statutory opinion, and there is no ASPA written-consent engine.

Which pack directors readNot connected to the packet.

“the last sealed meeting, the current pack”

“A published pack can be opened from a public /pack link without an account.”

agent-facts.json does not claim a per-pack version history or a diff between pack versions, so this page does not either.

Follow-through after the votePossible with extra columns (owner, due date, status) if someone keeps them current.

“It does not judge whether a target was met, because no stored field records that; it shows the last report as written.”

Not live: No bank, treasury, or payment account is connected. Prepared does not move money or show a live balance.

Not live: There is no live filing feed to the IRS, a Secretary of State, county registry, or town clerk, and no Form 990 or state-charity e-file. /app/filings-window is a board-declared board-review window with an in-app attestation that the board reviewed a board copy — not IRS or state acceptance. Calendar filing rows remain reminders. Documents in a pack are board copies, not proof a filing was accepted.

Sign-in and accessWhatever the file's sharing settings allow; edits to past rows depend on the revision history your spreadsheet tool keeps.

“Demo sign-in is email and password through NextAuth credentials.”

Not live: WebAuthn passkeys are not production-live. Ceremony code may be wired, but a live passkey still requires WEBAUTHN_LIVE, which the demo does not turn on.

Not live: SSO (SAML and OIDC) is built but not production-live. Enterprise SSO via WorkOS (Sign in with SSO by email domain, mapped to existing board memberships, never granting admin, audited) turns on only once production WorkOS credentials are connected and an email domain is mapped; the demo has neither. The older self-hosted handshake still requires SSO_LIVE, which the demo does not turn on.

Not live: SCIM directory sync is not production-live. A directory handler may be wired, but live provisioning still requires SCIM_LIVE, which the demo does not turn on.

Not live: The onboarding checklist row labeled portal access verified (MFA) is a checkbox the board marks; it does not inspect accounts. Two-factor sign-in itself is live (authenticator app, optional per member, can be required per board by the chair).

Handing the record to an outside agentEasy to paste into an agent — it is already a table.

“A published pack can be fetched as plain-text markdown for outside agents at /pack/{token}/agent”

“Prepared does not call any AI model or push data to agents. A director can also connect their own AI assistant to the read-only MCP server / agent API (OAuth sign-in or a personal access token) when the chair allows it (/agents/connect).”

Exit: taking the record with youStrong: the file is the record.

“An Owner, Admin, or Chair can download the organization's full board record as a ZIP from /app/export”

“Document bodies, evaluation responses, secrets, pack/sponsor link tokens and token hashes, and other organizations' rows are not included;”

What is not live in Prepared Board

Verbatim from agent-facts.json notLive. Weigh these before you switch.

  • WebAuthn passkeys are not production-live. Ceremony code may be wired, but a live passkey still requires WEBAUTHN_LIVE, which the demo does not turn on.
  • SSO (SAML and OIDC) is built but not production-live. Enterprise SSO via WorkOS (Sign in with SSO by email domain, mapped to existing board memberships, never granting admin, audited) turns on only once production WorkOS credentials are connected and an email domain is mapped; the demo has neither. The older self-hosted handshake still requires SSO_LIVE, which the demo does not turn on.
  • SCIM directory sync is not production-live. A directory handler may be wired, but live provisioning still requires SCIM_LIVE, which the demo does not turn on.
  • Stripe billing is built but not live. Checkout, the customer portal, signed webhooks, and plan gating turn on only once production Stripe credentials are connected; until then billing pages say Billing not live yet — contact sales, plans are not enforced, and nothing is charged. Seat meters are not built.
  • ASPA is not implemented. Quorum is a seat count from board settings plus Present or Remote attendance. It is not a statutory opinion, and there is no ASPA written-consent engine.
  • Prepared does not quote, bind, or broker D&O insurance and is not carrier-connected. /app/do-insurance is a board-declared binder/policy-date tracker with an in-app board-review attestation only — not an insurance application, not coverage advice, and not a verified coverage amount. An annual director questionnaire tracker at /app/questionnaires can record board-declared checklist attestations in-app.
  • No bank, treasury, or payment account is connected. Prepared does not move money or show a live balance.
  • There is no live filing feed to the IRS, a Secretary of State, county registry, or town clerk, and no Form 990 or state-charity e-file. /app/filings-window is a board-declared board-review window with an in-app attestation that the board reviewed a board copy — not IRS or state acceptance. Calendar filing rows remain reminders. Documents in a pack are board copies, not proof a filing was accepted.
  • Outbound email is not live in the demo. Delivery is reported only after a configured provider (Resend or Postmark) returns HTTP 2xx. Without those credentials, no send is claimed.
  • There is no Clear evaluation response action. A director can Retract a response. Clearing is not a product path.
  • The onboarding checklist row labeled portal access verified (MFA) is a checkbox the board marks; it does not inspect accounts. Two-factor sign-in itself is live (authenticator app, optional per member, can be required per board by the chair).
  • Customer-managed encryption keys (BYOK) are not live.
  • No independent security audit or certification yet.
  • Prepared does not auto-delete or auto-purge documents. /app/document-retention is a board-declared category schedule with an in-app Adopted / board-reviewed attestation only — template aid, not legal counsel, and not a compliance determination.
  • A paid recruiter tier (higher contact limits / commercial shortlists) is planned, not live. Billing checkout is built but not live until production credentials are connected.
  • Newsletter confirmation and issue send are not live — no email provider is connected. Signups stay PENDING; Approved issues are not emailed.
  • Uploaded files are not antivirus-scanned. PDFs pass strict structural validation (no encryption, JavaScript, embedded files, launch or form-submit actions) before storage; that is not a malware scan. Upload only files from sources you trust.
  • Database point-in-time restore covers the last 6 hours only; there is no longer-term or off-provider database backup yet, and uploaded files have no point-in-time restore.

How to switch, and how to leave

Switching from a spreadsheet decision log

  1. Open the matching demo board below and compare its closed decision to a row in your log.
  2. Keep your spreadsheet as the historical register; start recording new decisions, votes, and recusals in Prepared from your next meeting.
  3. Carry open decisions and open actions forward by hand, with their revisit and due dates.
  4. agent-facts.json does not claim a bulk importer, so plan to carry open decisions and open actions forward by hand rather than expecting an automatic import.

Leaving Prepared Board

An Owner, Admin, or Chair downloads the full board record from /app/export as a ZIP (format prepared-board-record-export-v1). Leaving Prepared lists every table included and everything that is not — document bodies, for example, are not in the export.

Questions

Is a spreadsheet decision log a bad practice?
No. It is a good practice, and better than nothing. Its limits are that rows are typed after the fact, recusal and quorum are free text, and the log is not connected to the packet the board read.
What does Prepared Board add over a spreadsheet?
Per agent-facts.json: votes and motions recorded on the decision, recusal stored on the decision (the closed-record line names who recused), a seat count from attendance labeled as a count, and Decision outcomes listing closure evidence and follow-up actions, saying so when any is missing.
Can I get my data back out as tables?
Yes. The /app/export ZIP includes CSV files and a record.json. /leaving-prepared lists the tables and what is not included.

Try a board like yours

Piscataqua Harbor Trust has the closest analogue to a decision-log row: the spring easement decision is sealed with a recusal on the closed record, and the fall overlook is in deliberation.

Open Piscataqua Harbor Trust from Try a board (no password typed), or read its published pack first: /sample-decision. Open first: Fall Board — Badgers Island overlook.

Other comparisons: Email and a shared drive · A paper board book · Vs board portals (category) · How to choose a board portal · Free decision templates