Contents

Chapter 1

Customization Guide — ADR Template System

Adapt the ADR system to your team's decision-making culture and organizational structure.


ADR Format Variations

Minimal ADR (for small teams)

If the full template feels heavy, use the Lightweight Decision Record template. It has four sections:

1. Context — What's the situation?

2. Decision — What did we decide?

3. Consequences — What happens as a result?

4. Status — Proposed / Accepted / Superseded

Extended ADR (for regulated environments)

Add these properties to the Decisions database:

  • Compliance Impact (Multi-select) — GDPR, SOC2, HIPAA, PCI-DSS
  • Risk Level (Select) — Low, Medium, High, Critical
  • Approval Signatures (Relation → Stakeholders, multi) — Required approvers
  • Expiration Date (Date) — When this decision must be re-evaluated
  • Alternatives Considered (Text) — Detailed comparison of options

RFC-Style (for open-source or distributed teams)

Add a discussion-oriented workflow:

  • RFC Status (Select) — Draft → Open for Comment → Final Comment Period → Accepted/Rejected
  • Discussion Link (URL) — GitHub Discussion, Google Doc, or Notion comments
  • Comment Period Ends (Date)
  • Objections Raised (Text)
  • Resolution (Text)

Status Workflow Customization

Default Lifecycle

Proposed → Accepted → (optionally) Superseded or Deprecated

With Rejection Path

Draft → Proposed → Under Review → Accepted / Rejected
                                 ↓
                           Superseded / Deprecated

With Experimentation

Proposed → Experiment → Accepted / Rejected

Add an "Experiment" status for decisions that need validation through a proof of concept before full commitment.


Category Taxonomy

The default categories cover common architectural domains. Customize based on your organization:

For a Backend-Heavy Team

Remove: Frontend

Add: Caching Strategy, Authentication, Data Pipeline, Performance

For a Full-Stack Product Team

Keep all defaults

Add: UX Architecture, State Management, Design System, Analytics

For a Platform/Infrastructure Team

Focus on: Infrastructure, Data Storage, Security, Observability, Networking

Add: Cost Optimization, Compliance, Disaster Recovery


Review Cadence Options

Quarterly Reviews (default)

  • Review all "Accepted" decisions older than 6 months
  • Set Review Date = Date Decided + 6 months
  • Batch review in a 1-hour meeting per quarter

Continuous Review

  • Set Review Date = Date Decided + 3 months for critical decisions
  • Review one ADR per week in team standup (5 minutes)
  • Rotate reviewer responsibility across team members

Event-Triggered Review

Instead of calendar-based reviews, review decisions when:

  • A related incident occurs
  • A new team member questions the decision
  • The technology landscape changes significantly
  • The team scales past a threshold (e.g., 5 → 15 engineers)

Integrating with Development Workflow

Git Repository Sync

Maintain a docs/adr/ directory in your main repo with lightweight markdown copies of each ADR. Use Notion as the source of truth and export to git periodically.

Pull Request Integration

Add a PR template checklist item:

- [ ] Does this change relate to any existing ADR? If so, link it.
- [ ] Does this change require a new ADR? If so, create one before merging.

Architecture Review Board

If you have a formal review board:

1. Add a "Review Board" status between "Proposed" and "Accepted"

2. Add a "Board Meeting Date" property

3. Create a "Pending Board Review" view filtered to this status


Numbering Schemes

Sequential (default)

ADR-001, ADR-002, ADR-003...

Simple and clear. Works for small to medium teams.

Year-Prefixed

ADR-2025-001, ADR-2025-002, ADR-2026-001...

Better for teams that write many ADRs — year prefix helps with chronological context.

Category-Prefixed

INFRA-001, API-002, SEC-003...

Useful when different teams own different categories and want independent numbering.


Team Adoption Tips

Getting Buy-In

  • Start with one high-impact decision that the team already debated
  • Write the ADR retroactively and show how it would have helped
  • Keep the first 5 ADRs lightweight — show value before adding process

Avoiding ADR Fatigue

  • Not every decision needs an ADR — only decisions that are hard to reverse or frequently questioned
  • Keep ADRs short (1 page max for the Lightweight template)
  • Make writing ADRs part of the decision process, not a separate documentation step

Measuring ADR Effectiveness

Track these metrics over time:

  • How often are old decisions questioned? (Should decrease as ADR library grows)
  • How many decisions are superseded within 6 months? (High rate suggests insufficient evaluation)
  • How many ADRs have outstanding reviews? (Track review compliance)
Chapter 2

Import Guide — ADR Template System

Step-by-step instructions for setting up the ADR system in Notion. Allow 15 minutes.


Step 1: Import Decision Categories

Import first — decisions reference categories.

1. Create "Table - Full page" titled "Decision Categories"

2. Merge with CSV → select databases/decision_categories.csv

Column Types

ColumnTypeNotes
CategoryTitle
DescriptionText
Example DecisionsText
Decision CountNumber(Will become a rollup later)

Step 2: Import Stakeholders

1. Create "Table - Full page" titled "Stakeholders"

2. Merge with CSV → select databases/stakeholders.csv

Column Types

ColumnTypeNotes
NameTitle
RoleText
TeamSelectPlatform=blue, Infrastructure=purple, Product=green, Security=red, Engineering=gray
Involvement TypeSelectProposer=blue, Reviewer=yellow, Approver=red, Contributor=green, Stakeholder=gray
Decisions ParticipatedNumber
EmailEmail
NotesText

Step 3: Import Decisions Database

This is the core ADR database.

1. Create "Table - Full page" titled "Architecture Decisions"

2. Merge with CSV → select databases/decisions.csv

Column Types

ColumnTypeNotes
ADR IDTitleFormat: ADR-NNN
TitleText
StatusSelectAccepted=green, Proposed=blue, Superseded=orange, Deprecated=red, Rejected=gray
CategoryRelationLink to Decision Categories
Date ProposedDate
Date DecidedDate
Proposed ByRelationLink to Stakeholders
Decided ByText
SupersedesRelationSelf-relation to Decisions (the old decision this one replaces)
Superseded ByRelationSelf-relation to Decisions (the new decision that replaces this one)
Related DecisionsRelationSelf-relation to Decisions (other related ADRs)
Context SummaryText
Decision SummaryText
ConsequencesText
Review DateDate
TagsMulti-select

Create Views

1. Full Log — Table sorted by ADR ID ascending

2. Board by Status — Board grouped by Status

3. By Category — Table grouped by Category relation

4. Active Only — Table filtered to Status = "Accepted" or "Proposed"

5. Needs Review — Table filtered to Review Date is on or before Today

6. Search View — Table with no filters, use Notion's search to find decisions


Step 4: Import Review Log

1. Create "Table - Full page" titled "Decision Reviews"

2. Merge with CSV → select databases/review_log.csv

Column Types

ColumnTypeNotes
Review IDTitleFormat: REV-NNN
Decision IDRelationLink to Decisions database
Review DateDate
ReviewerRelationLink to Stakeholders
OutcomeSelectConfirmed=green, Confirmed with Notes=yellow, Superseded=orange, Deprecated=red
Review NotesText
Changes MadeText

Step 5: Set Up Relations

On Decisions Database

  • Category → Decision Categories (many-to-one)
  • Proposed By → Stakeholders
  • Supersedes → Decisions (self-relation)
  • Superseded By → Decisions (self-relation)
  • Related Decisions → Decisions (self-relation, multi)

On Review Log

  • Decision ID → Decisions
  • Reviewer → Stakeholders

On Decision Categories

  • Replace the "Decision Count" number with a Rollup from the Decisions relation → Count all

On Stakeholders

  • Replace "Decisions Participated" with a Rollup from Decisions → Count all

Step 6: Create Pages

Copy markdown from pages/ into Notion:

1. ADR Indexpages/adr-index.md

2. How to Write an ADRpages/how-to-write-an-adr.md

3. Decision Review Processpages/decision-review-process.md


Troubleshooting

Self-relations not working: Notion supports self-relations. Create the relation on the Decisions database and point it back to the same Decisions database.

Tags not importing as multi-select: Change the column type to Multi-select after import. Edit entries to split semicolon-separated values into individual tags.

Architecture Decision Records v1.0.0 — Free Preview