A ledger nobody updates
is not a ledger.
Decisions get made in a pull request thread, a ticket, a doc. Quick Capture turns the sentence on your screen into a governed decision record without a second tab, then brings the approvals back to you in the same place.
Included with DecisionLedger. Chrome and Chromium browsers, installed from a link your administrator shares.
Highlight, capture, done
The decision was already written. It just was not recorded.
Watch a sentence buried in a pull request thread become a governed decision record, tagged to its source, without anyone opening a second tab.
We are going with the queue-backed writer. Postgres LISTEN/NOTIFY will not hold at our fan-out, and the team accepts the extra operational surface.
Every decision system dies at the same place
Not at analysis, and not at reporting. At capture. The gap between where a decision is made and where it is supposed to be recorded is where the whole discipline quietly fails.
The decision is made in another tool
In a pull request thread, a ticket comment, a doc, a message. By the time anyone would open the ledger to write it down, the moment and the wording are both gone.
Logging it costs a context switch
A new tab, a form, and retyping something that is already on the screen. That cost is small, it is paid many times a day, and it is why governance backlogs exist.
So the record is written later, or never
What survives is a summary reconstructed from memory at quarter end, with no source, no evidence, and no owner attached to it.
The popup
File on the left, unblock on the right
One surface behind the toolbar icon. Capture the decision on the page you are reading, and clear the queue that is waiting on you, without either one hiding behind a tab.
DecisionLedger Quick Capture
TitleRecent captures
Governance Review Required: advance decision
An agent attempted to advance a decision that is held at a governance gate.
6m ago
Governance Review Required: advance decision
An agent attempted to advance a decision that is held at a governance gate.
11m ago
PR held for review
acme/platform #4488, rate limit keyed on token
18m ago
Open all notifications
Governance Review: advance decision
HIGH
Governance Review: advance decision
HIGH
acme/platform #4488, rate limit keyed on token
HIGH RISK · code merge gate
A re-creation of the extension popup, not a screenshot.
Capture where it happens
The capture has to be cheaper than not capturing. Six ways this one gets under that bar.
Capture from the page you are already on
Highlight the sentence that is actually the decision. The form opens with it already filled in.
- The page title becomes the proposed decision title, and your selected text becomes the description
- Set category, decision type, priority, and visibility before it is filed
- Tags through a pill input, with the source tag applied for you
- Recent captures are listed in the popup, so you can see what you have already filed
- The source URL is carried into the record, so the decision points back at the thread it came from
It knows what tool you are in
The extension reads the host and tags the record accordingly, so the ledger stays sorted by where work actually happens.
- GitHub, Jira, Linear, Slack, Notion, and email in Gmail or Outlook are recognized automatically
- The matching source tag is applied and the originating link is embedded in the record
- Everything else still captures cleanly with the default extension tag
Source recognition works from the page address and the text you selected. The extension does not read or extract message history from any of these tools.
Two faster ways in
For the times when even opening a popup is friction.
- Ctrl+Shift+D on Windows or Cmd+Shift+D on Mac captures the current page instantly
- Type dl followed by your text in the address bar to file a decision without touching the page
- Both paths tag the record with how it was captured, so you can audit intake later
Draft it from the page with AI
When the decision is buried in a long thread rather than in one clean sentence.
- Reads your selection, or the main body of the article when nothing is selected
- Proposes a title, a description, a decision type, and an urgency level
- Applies the suggestion into the form, where you correct it before filing
Attach the proof while you have it
The evidence is on screen right now. It will not be in six months.
- Send your highlighted selection to an existing decision as an evidence document
- The source address is written into the attachment, so the quote keeps its provenance
- It lands in the same document store as every other piece of evidence on that record
It does not lose your capture
Planes, hotel wifi, a VPN that just dropped.
- A failed capture is queued locally and retried automatically about once a minute
- You get a notification when the queue drains, so you know the record actually landed
- A capture the server rejects as invalid is dropped rather than retried forever
It is not only an inbox for capture
The same toolbar icon is where the work comes back. Approvals, prior art, and a real model run, all without opening the platform.
The queue comes to you
Approvals do not stall because the approver forgot to log in. They stall because nobody told them.
- Desktop notifications for decisions, approvals, and mentions, each with a link that opens the exact item
- An unread count on the toolbar icon, cleared when you open the popup
- One merged queue in the popup: approval workflow requests and pull requests held at the code merge gate
- Approve or reject inline, or approve everything shown at once
- Rejecting a held pull request asks for the reason, which is written to the record
Approve from the notification itself
The buttons are on the desktop notification. The browser does not even have to come to the front.
- Approve and Reject are actions on the notification, not links to a page with more clicking behind it
- The action posts straight to the approval record, with the same authorization as the web app
- This covers merge gate holds, which is the queue most likely to be blocking someone else's work
Run a model on what you highlighted
For the decisions where an opinion is not good enough and a quick number would settle it.
- Right click a selection and run a risk assessment or a cost benefit analysis on it
- Inputs are extracted from the text and validated against the model's real schema
- The run executes through the normal path, so it produces a real run id, not a chat answer
- The result arrives as a notification with the headline number and a link into the full run
Check before you decide it twice
Most bad decisions are not new. They contradict one somebody already made and nobody could find.
- Semantic search across the ledger from the popup, ranked by match strength
- The toolbar badges when decisions already reference the page you are on
- Those decisions are listed in the popup under the page you are viewing
- A configurable domain list can raise a prompt when you land somewhere that usually warrants a record first
Written to survive a security review
Browser extensions are the last thing a security team wants to approve, and they are right to be suspicious. Here is exactly what this one can reach.
Two hosts, and nothing else
Host permissions are pinned to your DecisionLedger API and its sign-in domain. The extension has no standing access to any other site you visit.
Sign-in through your own identity provider
Authorization code flow with PKCE against your hosted login. The extension never sees a password and holds no client secret. Credentials are collected by the identity provider, not by the extension.
Tokens held the careful way
The refresh token is stored locally and the access token lives in session storage, which is memory only and does not survive a browser restart.
No third party push infrastructure
Notifications are fetched by polling your own tenant on a schedule, not delivered through an external push service. No decision content passes through a vendor in the middle.
Manifest V3, reviewed and unlisted
Built on the current extension platform and distributed unlisted, so it is installed by a link your admin shares rather than found by anyone browsing the store.
Reads a page only when you ask
Page content is read on demand when you invoke the extension, through an injected read of your selection. There is no always-on content script watching what you browse.
No personal data is collected for our own use and nothing is sold to third parties. A page title, a page address, and the text you selected are sent to your own DecisionLedger tenant, and only at the moment you click capture.
The whole surface
The short version of everything above, for the part of the evaluation that is a checklist.
Highlight to capture
Selection becomes the description
Omnibox capture
Type dl in the address bar
Keyboard shortcut
Ctrl+Shift+D or Cmd+Shift+D
Source aware tagging
GitHub, Jira, Linear, Slack, Notion, email
AI draft from page
Title, type, and urgency proposed
Selection as evidence
Attached with its source address
Desktop notifications
Deep links and an unread badge
Inline approvals
Including code merge gate holds
Models on a selection
Risk assessment and cost benefit
Semantic search
Find the prior decision before you repeat it
Page aware badge
Shows decisions that reference this page
Offline capture queue
Retried automatically until it lands
How your team gets it
Included with DecisionLedger at no extra cost. Distributed unlisted rather than published to the public store, so an install is a deliberate act by your administrator.
Your admin shares the install link
The extension is distributed unlisted, so it is not something an employee finds and installs on their own. Your administrator sends the link to the people who should have it.
Sign in with your normal account
The same identity provider and the same credentials as the web app, including your existing multi-factor setup. Nothing separate to provision.
It updates itself
New versions roll out through the store automatically, so nobody has to be asked to upgrade and no version drifts behind.
