The Familiar Scenario

Monday morning, 10:34 AM. A developer asks you:

“Why did we decide to change the authentication approach on the user permissions feature?”

You know you had this discussion. But where?

Attempt 1: Discord

Attempt 2: Notion

Attempt 3: Linear

Attempt 4: Slack (maybe?)

30 minutes later: You give up.

Final answer:

“Honestly, I don’t remember. We’ll ask Sarah.”

Sarah is on vacation.


The Problem with Dispersed Communication

Here’s how most tech teams communicate today:

The Modern Tool Stack

Notion: Documentation and specs

Linear: Issue tracking and tasks

Discord: Synchronous discussions

Slack (or Teams): Team communication

GitHub: Code reviews

Email: Formalities and important decisions


What Actually Happens

Let’s follow a feature from conception to delivery and see where context gets lost.

Week 1: Design

Monday: Initial discussion in Discord

@alex: We should add rate limiting to the API
@marie: Good idea. Per user or per endpoint?
@alex: Per user. Otherwise a single user can DDoS an endpoint.
@thomas: What about webhooks? How do we rate limit those?
@marie: Good point. Maybe per IP for webhooks?

Important decision made. Captured: nowhere.

Wednesday: Spec written in Notion

# Feature: API Rate Limiting

## Objective
Implement rate limiting to protect the API from abuse.

## Specifications
- 1000 requests/hour per authenticated user
- 100 requests/hour per IP for webhooks
- Return HTTP 429 when limit exceeded

The what is documented. The why (user vs endpoint, IP for webhooks): gone.

Friday: Issues created in Linear

[API-045] Implement rate limiting middleware
[API-046] Add Redis cache for counters
[API-047] Create admin endpoints for limit monitoring

The link between the Discord discussion and these issues: non-existent.


Week 2: Development

Monday: Developer question in Discord

@dev1: Why do we rate limit per user instead of per endpoint?
@alex: (not online)
@marie: (in meeting)

Dev1 waits 2 hours. Eventually decides alone.

Wednesday: Approach change discussed in a Slack DM

@marie → @alex: Webhook rate limiting per IP doesn't work well,
multiple clients behind the same CDN proxy
@alex: Ok, what do we switch to then?
@marie: Dedicated token for webhooks with separate limit?
@alex: Good. Go.

Major architecture decision. Captured: in a DM that will disappear in 3 months.

Friday: Change reflected… nowhere

Result: Code and documentation diverge. No one knows what’s the source of truth.


Week 3: Review and Questions

Monday: Code review on GitHub

PR #234: Implement rate limiting middleware

@reviewer: Why do we rate limit by dedicated token for webhooks?
@dev1: That was Marie's decision, I think?
@marie: Yes, because IPs are problematic with CDNs.
@reviewer: Ok, but where is that documented?
@dev1: 🤷

The justification exists… in people’s individual memories.

Wednesday: New person joins the team

@newbie: I read the rate limiting spec. Question:
why do we handle webhooks differently?

[30 minutes of discussion to reconstruct context]

Onboarding cost explodes. Each newbie has to relearn the dispersed context.


Week 4: Delivery and Aftermath

Monday: Feature is deployed

Tuesday: Stakeholder question

@cto: Why did we change the rate limiting approach
from the initial spec?

[No one remembers exactly. We reconstruct by
questioning 3 people.]

The Hidden Costs of Dispersed Communication

1. Context Dies Silently

The Problem: Each tool captures a fragment of context. No one has the complete picture.

Consequences:

Real Cost: A team of 8 people spends 5-8 hours/week searching for lost context.

Over a year: 320 hours = 8 weeks of productivity lost just searching.


2. Synchronization Becomes Impossible

The Problem: When discussions are dispersed, teams work with different versions of the truth.

Real Scenario:

Result: Four versions of the truth coexist. No one knows which is correct.


3. New People Are Lost

The Problem: Onboarding requires reconstructing context from 6 different sources.

Typical Onboarding Process:

New Dev: "How does the rate limiting architecture work?"

Mentor: "Ok, first read the Notion spec. Then search for
'rate limiting' in Discord, #engineering channel.
Also look at PR #234 on GitHub. Oh, and ask Marie
why we changed the webhooks approach - I think she
mentioned it in Slack but I can't remember where."

New Dev: "... Ok."

Typical onboarding time for a medium feature: 3-5 days.

Why? Because the context isn’t accessible - it’s dispersed and buried.


4. Decisions Are Not Traceable

The Problem: Impossible to answer “Why did we make that choice?” three months later.

Questions Without Answers:

Standard Answer: “I think we discussed it, but I can’t find where.”

Consequence:


5. Documentation Lies

The Problem: Documentation (Notion, Confluence) gets out of sync with actual code.

What Happens:

  1. A decision is made in Discord
  2. Code is modified to reflect the decision
  3. Notion spec is never updated
  4. 3 months later, someone reads the spec and implements… the wrong thing

Real Example: A team spent 2 weeks reimplementing a feature according to a stale Notion spec - because no one knew the approach had changed in a Slack thread 4 months earlier.


Why This Happens: The Anatomy of Dispersion

Reason 1: Each Tool Optimizes For One Use Case

Notion → Long-form documentation

Linear → Task tracking

Discord → Fast communication

Result: Each tool does one thing well, but none connects work to context.

Dispersed Communication


Reason 2: Discussions Live in the Moment

The Problem: Chat tools (Discord, Slack) optimize for the present. The past disappears.

Lifecycle of a Discord Discussion:

Result: Context has a 7-day lifespan.


Reason 3: No One Has Time to Synchronize

The Theory: “After every important decision, we’ll update the Notion spec and add a comment in the Linear issue.”

The Reality:

[Decision made in Discord at 4:47 PM on a Friday]

@alex: "I'll update the spec Monday."

[Monday 9 AM]

@alex: (8 new Slack messages, 3 meetings, 2 urgent issues)
"Damn, I forgot to update the spec."

[The spec is never updated.]

Why? Because manually synchronizing between tools isn’t a natural workflow.

People don’t forget out of laziness - they forget because the system doesn’t support synchronization.


The Sinra Approach: Centralize Context Where the Work Happens

The Principle: One Source of Truth

Instead of scattering discussions across 6 tools, Sinra centralizes all context in the same place as the work.

How? Via commentary.


Commentary: Discussions Tied to Work

What is it? Commentary is a rich discussion space attached to each issue and feature in Sinra.

Features:

Key Difference: Discussions don’t float in Discord - they live with the work.

Centralized Commentary


Anatomy of a Feature With Centralized Commentary

Let’s revisit the rate limiting feature, this time with Sinra.

Week 1: Design

Step 1: Create the “API Rate Limiting” feature in Sinra

Step 2: Discuss directly in the feature’s commentary

@alex: Should we rate limit per user or per endpoint?

@marie: Per user. Otherwise a single malicious user can DDoS
a critical endpoint and impact everyone.

@thomas: What about webhooks? How do we rate limit those?

@alex: Webhooks are called by our clients from
their servers. Per user doesn't work here.

@marie: Per IP then?

@thomas: Be careful, many clients are behind CDNs
(Cloudflare, etc.). A single IP can represent 100+ clients.

@marie: Ok, dedicated token for webhooks then. Each client
gets a webhook token with separate limit. That solves the CDN problem.

@alex: ✅ Perfect. I'll summarize in the description.

Result:


Week 2: Development

Step 3: Create issues under the feature

Step 4: Technical discussions in issue commentary

[Issue API-045: Implement rate limiting middleware]

@dev1: Starting the implementation. Question: what key
do we use in Redis for storing counters?

@alex: Use `rate_limit:{user_id}:{hour_timestamp}`
for users. For webhooks: `rate_limit:webhook:{token}:{hour_timestamp}`.

@dev1: 2 hour TTL on keys?

@alex: Yes, plenty sufficient. And saves RAM.

@dev1: ✅ Thanks, here we go.

Result:


Week 3: Approach Change

Step 5: Discovery of an issue with the IP-based approach

[Feature: API Rate Limiting - Commentary]

@marie: Problem with rate limiting per IP for webhooks.
We have 3 clients behind the same Cloudflare IP complaining
about unfair rate limiting.

@alex: Ah, the scenario Thomas mentioned. Ok, we
switch to dedicated webhook token as discussed.

@dev1: I'll update the implementation. What changes
concretely?

@marie: Instead of rate limit per IP, each webhook client
gets a unique token with separate limit. That isolates clients.

@dev1: ✅ Got it. I'll create an issue for that.

New issue created:

[API-048] Implement dedicated token for webhooks

Description (auto-generated from commentary):
Replace IP-based rate limiting with a dedicated token system
for webhooks. Reason: multiple clients may share the same IP
through CDN, causing unfair rate limits.

Approach: Generate unique webhook token per client with
separately configured limit.

Reference discussion: [Link to feature commentary]

Result:


Week 4: Review and Onboarding

Step 6: Code review

[PR #234: Implement rate limiting middleware]

@reviewer: Why do we rate limit by token for webhooks
and by user for normal API?

@dev1: [Link to API Rate Limiting feature commentary]
All the reasoning is there, weeks 1-2.

@reviewer: Ah perfect, I see it. Approved.

Step 7: New team member

[Feature: API Rate Limiting - Commentary]

@newbie: Hi, just arrived. Trying to understand
rate limiting. Question: why token for webhooks?

@marie: Read the commentary above, we have the full initial
discussion + approach change with justification.

@newbie: Perfect, super clear. Thanks!

[Time elapsed: 5 minutes.]

The Three Benefits of Centralization

1. Context Is Preserved

Before (Dispersed Communication):

After (Sinra Commentary):

Result: Future you can understand why, not just what.


2. Decisions Are Traceable

Question: “Why do we use webhook tokens instead of rate limiting by IP?”

Before: 30 minutes searching across 4 tools, asking 2 people, hoping someone remembers.

After: Open the “API Rate Limiting” feature, read the commentary. 2 minutes.

Advantages:


3. Synchronization Is Automatic

Before (Manual Workflow):

  1. Discuss in Discord
  2. Make a decision
  3. “I’ll update the Notion spec”
  4. Forget
  5. Desynchronization

After (Natural Workflow):

  1. Discuss in feature commentary
  2. Make a decision
  3. ✅ Already synchronized (no steps 3-5)

Why does this work? Because discussion and documentation are in the same place.

You don’t synchronize - you discuss in the work’s context.

Centralized Workflow


Real Example: CloudBridge (SaaS Infrastructure)

CloudBridge (12-person team, cloud infrastructure platform)

Note: CloudBridge is a real company that we anonymized under a fictional name to protect their privacy.

Before Sinra: Dispersed Communication

Tool stack:

Problems Encountered:

Revealing Incident: A dev reimplemented a feature wrong according to a stale Notion spec. The real approach had been decided in a Slack thread 4 months earlier, but:

Time lost: 3 weeks of wasted development.


After Sinra: Centralized Commentary

Workflow:

Results (After 3 Months):

Lead Developer Quote:

“Before, I spent 30% of my time figuring out why we made a choice. Now I open the feature, read the commentary, I have my answer in 2 minutes. It changes everything.”

Product Manager Quote:

“No more ‘I think we talked about it in Discord but can’t find where’. Everything is there, with context. I can onboard new people by showing them 3-4 key features and they get it all.”

Before After Sinra


Notion + Linear + Discord vs. Sinra: Comparison

Aspect Multi-Tool Stack Sinra with Commentary
Initial discussion Discord (#engineering) Feature commentary
Decisions captured Forgotten or dispersed Preserved in commentary
Synchronization Manual (often forgotten) Automatic (same place)
Search context 4-6 tools to dig through 1 tool, 1 place
Search time 6-8h/week <1h/week
Onboarding new person 1-2 weeks 2-3 days
Stale documentation Frequent Impossible (no external docs)
Decision traceability
Real-time visibility ❌ (dispersed) ✅ (centralized)

The Five Signs Your Communication Is Dispersed

Sign 1: “I Think We Talked About It But Can’t Find It”

If this phrase comes up several times a week, your context is fragmented.

Sign 2: Onboarding Takes 2+ Weeks

If new people spend their first week “reading Notion docs, searching Discord, and asking 100 questions”, your context isn’t accessible.

Sign 3: You Restart the Same Debates Every 6 Months

“Why did we choose PostgreSQL again?” (for the 3rd time)

If historical decisions aren’t traceable, you waste time re-debating.

Sign 4: Your Documentation Lies

If Notion spec says one thing but the code does another, your tools aren’t synchronized.

Sign 5: You Say “We Should Update the Docs”

If you regularly end discussions with “I’ll update the docs” (but never do), your synchronization workflow is broken.


How to Implement Centralization in Sinra

Step 1: Create Features for Your Features

Instead of separate Notion specs, each feature becomes a feature in Sinra.

Example:


Step 2: Discuss in Commentary, Not Discord

Simple Rule:

Why? Discord = synchronous, ephemeral, not tied to work Commentary = asynchronous, permanent, tied to work

Note: Discord remains useful for social, urgent, random stuff. But not for technical decisions.


Step 3: Capture Decisions in Commentary

When you make an important decision:

Bad Example:

“We’ll use Redis.”

Good Example:

“We’ll use Redis for rate limiting counters because:

  1. Need automatic TTL (expires after 2h)
  2. Need performance (<10ms latency)
  3. Don’t need persistence (ok if reboot) Alternatives considered: PostgreSQL (too slow), in-memory (not shared between servers).”

Result: Future you (or a colleague) understands why Redis, not just that we use Redis.


When you create a PR, link it to the Sinra issue.

In PR description:

Implements webhook rate limiting with dedicated token.

Context and decisions: [Link to API Rate Limiting feature]

Result: Reviewers have complete context without searching.


Step 5: Onboard by Showing Commentary

When a new person joins, instead of “read 40 Notion docs”, show 5-6 key features and say:

“Read the commentary in these features. You’ll understand how we work, how we make decisions, and why we made the architectural choices.”

Onboarding time: Reduced by 70%.


Common Objections (And Answers)

Objection 1: “But Discord is faster for real-time discussion”

Answer: Yes, Discord is faster in the moment. But important discussions need durability, not speed.

Compromise:

If it’s important enough to impact code, it’s important enough to be in Sinra.


Objection 2: “Linear/GitHub comments work fine for us”

Answer: Linear/GitHub comments are good for status tracking (“Blocker”, “Ready for review”).

They’re poor for rich context:

Sinra commentary provides a rich discussion space integrated into work structure.


Objection 3: “Our team loves Discord, we don’t want to change”

Answer: Keep Discord for social, jokes, quick questions.

But capture important decisions in Sinra.

Hybrid Workflow:

  1. Quick discussion in Discord
  2. Summary + decision in Sinra commentary
  3. Link Discord → Sinra for traceability

Time required: 2 minutes to summarize. Saves 30 minutes of future searching.


Objection 4: “That’s One More Tool to Learn”

Answer: No, it’s 5 fewer tools.

Before:

After:

Result: Fewer tools, not more.


The Cultural Shift: From Dispersion to Centralization

Moving to Sinra commentary requires a habit change:

Old Habit (Dispersed Communication)

New Habit (Centralization)

What helps the shift:


Action Items: Centralize Your Communication

  1. Identify your next 3 features. Create features in Sinra.
  2. Move technical discussions to commentary. Stop losing context in Discord.
  3. Capture important decisions. Write the why, not just the what.
  4. Link everything. PRs → Issues → Features. Context must be accessible.
  5. Onboard by showing commentary. New people learn by reading, not asking 100 questions.

The Key Point

Dispersed communication kills context.

When your discussions are in Discord, your specs in Notion, and your issues in Linear, no one has the complete picture.

The result:

Sinra centralizes everything in the same place as the work.

Discussions, decisions, issues, features, releases - one source of truth.

Your future self will thank you.


Ready to stop searching for your context across 6 different tools? Start a free Sinra trial →

Discover project management where discussions live with the work, not buried in Discord channels.