How we work
Async by default
Section titled “Async by default”Most work happens in writing — PRs, issues, docs, Slack threads. Default to async. Pull a meeting only when a decision needs live negotiation.
The meetings we do have
Section titled “The meetings we do have”| Cadence | Meeting | Purpose |
|---|---|---|
| Weekly | Eng standup (30 min, Monday) | Week plan, blockers |
| Weekly | GTM sync (30 min, Tuesday) | Deal pipeline, customer escalations |
| Bi-weekly | Product review (60 min) | Roadmap, priorities |
| Monthly | All-hands (60 min) | Numbers, plans, hiring |
Decision records
Section titled “Decision records”Non-trivial technical decisions go into docs/src/content/docs/decisions/ in the internal docs repo as an ADR. Template:
# ADR NNN — <title>
**Status:** proposed | accepted | superseded by ADR-XXX**Date:** YYYY-MM-DD**Deciders:** @handle, @handle
## ContextWhy are we making this choice now? What are the forces in play?
## DecisionWhat we're doing.
## ConsequencesWhat gets easier. What gets harder. What we're betting on.PR etiquette
Section titled “PR etiquette”- One logical change per PR
- Description explains why, not what
- Test plan in the description
- Request review from the
CODEOWNERSentry - Merge with squash and merge, never rebase merge
| Channel | Use for |
|---|---|
#eng | Engineering discussion |
#ops | Deploy notifications, pager alerts |
#incidents | Active incidents only |
#gtm | Customer conversations, deal flow |
#random | Memes, birthdays, life |
On-call
Section titled “On-call”See On-call rotation. Tl;dr — one primary, one secondary, 1-week shifts, handoff every Monday.