[{"data":1,"prerenderedAt":370},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fru\u002Flifestyle\u002Ftool-stack-operasyonel-disiplin":13},{"i18nKey":4,"paths":5},"lifestyle-004-2026-07",{"de":6,"en":7,"es":8,"fr":9,"it":10,"ru":11,"tr":12},"\u002Fde\u002Flifestyle\u002Ftool-stack-partnership","\u002Fen\u002Flifestyle\u002Ftool-stack-anatomy-operational-discipline","\u002Fes\u002Flifestyle\u002Ftech-stack-partnership-2026","\u002Ffr\u002Flifestyle\u002Ftool-stack-partnership","\u002Fit\u002Flifestyle\u002Ftech-stack-partnership","\u002Fru\u002Flifestyle\u002Ftool-stack-operasyonel-disiplin","\u002Ftr\u002Flifestyle\u002Ftool-stack-2026-roibasede-gunluk-operasyonun-anatomisi",{"_path":11,"_dir":14,"_draft":15,"_partial":15,"_locale":16,"title":17,"description":18,"publishedAt":19,"modifiedAt":19,"category":14,"i18nKey":4,"tags":20,"readingTime":26,"author":27,"body":28,"_type":364,"_id":365,"_source":366,"_file":367,"_stem":368,"_extension":369},"lifestyle",false,"","Tool Stack 2026: The Anatomy of Daily Operations at Roibase","Linear sprint velocity, Notion docs hierarchy, async-first Slack — 12-person team with meeting-free weeks and measurable workflow discipline","2026-07-27",[21,22,23,24,25],"tool-stack","async-workflow","linear","notion","operational-discipline",8,"Roibase",{"type":29,"children":30,"toc":349},"root",[31,39,46,51,56,61,68,73,79,108,121,126,131,137,157,162,167,173,225,231,265,270,275,291,297,302,307,312,318,323,328,333,339,344],{"type":32,"tag":33,"props":34,"children":35},"element","p",{},[36],{"type":37,"value":38},"text","Tool stack articles typically end with \"we use X and it's great.\" This one is different — it shows the integration patterns, numerical criteria, and tradeoffs behind operational discipline that has evolved over 8 years at Roibase. Linear sprint velocity climbed from 1.2 to 2.8, Notion docs hierarchy underwent 3 iterations, Slack async response time dropped from 4 hours to 45 minutes. This shift came not from tool selection but from systemic design — binding tools to team culture.",{"type":32,"tag":40,"props":41,"children":43},"h2",{"id":42},"linear-not-sprint-velocity-but-context-switch-cost",[44],{"type":37,"value":45},"Linear: Not Sprint Velocity, but Context Switch Cost",{"type":32,"tag":33,"props":47,"children":48},{},[49],{"type":37,"value":50},"When we migrated from Jira to Linear in 2024, speed wasn't the objective — reducing context switch cost was. In Jira, an issue's lifecycle meant 9 screen transitions, 3 dropdown menus, 2 manual webhook triggers. In Linear, the same lifecycle is 2 keyboard shortcuts and 1 drag-drop. The difference isn't time, it's attention economy — a developer doesn't spend 30 seconds thinking \"where do I write this field?\" but instead 3 seconds reflexively finishing the task.",{"type":32,"tag":33,"props":52,"children":53},{},[54],{"type":37,"value":55},"In sprint planning, we don't use velocity metrics — we use cycle time distribution. Linear's built-in analytics hide misleading averages like \"average 4.2 days\" and show P50\u002FP75\u002FP90 percentiles instead. Our P90 cycle time is 11 days — acceptable because outliers are usually dependency blockers. P50 is 2.8 days — the true speed of the critical path. Looking at distribution instead of velocity transformed the pressure to \"go faster\" into discipline around predictability.",{"type":32,"tag":33,"props":57,"children":58},{},[59],{"type":37,"value":60},"The integration point: Linear webhooks write to Notion's \"Active Sprint\" database in real-time. No manual sync — when a developer changes status in Linear, Notion's roadmap view updates within 200ms. This single source of truth pattern lets the PM check Notion before asking \"where's that issue?\" on Slack. In async-first culture, asking a question and waiting for an answer has cost — webhooks reduced that cost to zero.",{"type":32,"tag":62,"props":63,"children":65},"h3",{"id":64},"linear-triage-flow-inbox-zero-discipline",[66],{"type":37,"value":67},"Linear Triage Flow: Inbox Zero Discipline",{"type":32,"tag":33,"props":69,"children":70},{},[71],{"type":37,"value":72},"Linear has inbox zero discipline — automatic triage every morning at 09:00. New issues land in Linear Inbox; the PM triages within 30 minutes: priority label + assignee + project link. Issues not triaged within 24 hours automatically drop into #triage-needed Slack. This forcing function keeps backlog entropy controlled — 200 issues opened in 3 months, 198 triaged, average triage latency 4.2 hours.",{"type":32,"tag":40,"props":74,"children":76},{"id":75},"notion-docs-hierarchy-and-read-time-optimization",[77],{"type":37,"value":78},"Notion: Docs Hierarchy and Read-Time Optimization",{"type":32,"tag":33,"props":80,"children":81},{},[82,84,91,93,99,100,106],{"type":37,"value":83},"We use Notion as a decision log, not a wiki. Every document carries 3 metadata fields: ",{"type":32,"tag":85,"props":86,"children":88},"code",{"className":87},[],[89],{"type":37,"value":90},"decision-owner",{"type":37,"value":92},", ",{"type":32,"tag":85,"props":94,"children":96},{"className":95},[],[97],{"type":37,"value":98},"last-reviewed-date",{"type":37,"value":92},{"type":32,"tag":85,"props":101,"children":103},{"className":102},[],[104],{"type":37,"value":105},"status",{"type":37,"value":107}," (draft\u002Factive\u002Farchived). Active status older than 90 days triggers an automatic review reminder to Slack. This prevents document decay as scale grows — 180 Notion pages created in 6 months, 12 archived, the rest under active review.",{"type":32,"tag":33,"props":109,"children":110},{},[111,113,119],{"type":37,"value":112},"Hierarchy is 3-tier: ",{"type":32,"tag":85,"props":114,"children":116},{"className":115},[],[117],{"type":37,"value":118},"Company > Team > Project",{"type":37,"value":120},". Company-level docs (brand guidelines, hiring process) are readable by everyone but editable only by founders\u002Fleads. Team-level docs (sprint retros, tech debt registry) are editable by team members. Project-level docs (feature specs, A\u002FB test results) are owned by the assigned person. This permission model prevents \"everyone editing everything\" chaos.",{"type":32,"tag":33,"props":122,"children":123},{},[124],{"type":37,"value":125},"Read-time optimization: Every Notion page starts with estimated reading time (words \u002F 200). Documents longer than 5 minutes must include an automatic TL;DR block — the document owner writes this, not AI summary. With TL;DR, a reader decides in 30 seconds \"does this concern me?\" In 6 months of tracking: adding TL;DR dropped page bounce rate from 42% to 18%.",{"type":32,"tag":33,"props":127,"children":128},{},[129],{"type":37,"value":130},"Integration: Figma files embed into Notion — but as live embeds, not screenshots. When a designer updates Figma, the product spec in Notion auto-updates. This pattern eliminates the question \"is this document current?\" Also, Granola meeting transcripts auto-post to Notion — 2 minutes after a meeting ends, a structured summary becomes a Notion page.",{"type":32,"tag":40,"props":132,"children":134},{"id":133},"slack-async-first-sync-when-critical",[135],{"type":37,"value":136},"Slack: Async-First, Sync-When-Critical",{"type":32,"tag":33,"props":138,"children":139},{},[140,142,148,150,155],{"type":37,"value":141},"Slack has no real-time chat pattern — every channel is async-first. When you send a message, the expectation is response within 4 hours. For faster response, add ",{"type":32,"tag":85,"props":143,"children":145},{"className":144},[],[146],{"type":37,"value":147},"@urgent",{"type":37,"value":149}," mention to the message — this changes notification tier. In 6 months, we used ",{"type":32,"tag":85,"props":151,"children":153},{"className":152},[],[154],{"type":37,"value":147},{"type":37,"value":156}," 38 times. Total messages: 14,200. So 0.27% of messages are truly urgent.",{"type":32,"tag":33,"props":158,"children":159},{},[160],{"type":37,"value":161},"Thread discipline is mandatory: every message continues in thread. Only topic-starter messages go to main channel; discussion stays in thread. When scrolling, you see \"12 messages on this topic\" without reading all of them. Thread completion rate: 91% — messages get answered and closed in thread, not spilling to main.",{"type":32,"tag":33,"props":163,"children":164},{},[165],{"type":37,"value":166},"Integration: When a Linear issue opens, a Slack thread auto-generates. When the issue closes, the thread gets a \"✅ Resolved\" reaction. This tracks issue lifecycle in Slack without leaving Linear — single source of truth persists. Also, Granola meeting summaries drop to Slack, but the same summary lives in Notion — readers follow from wherever they are.",{"type":32,"tag":62,"props":168,"children":170},{"id":169},"slack-channel-taxonomy",[171],{"type":37,"value":172},"Slack Channel Taxonomy",{"type":32,"tag":33,"props":174,"children":175},{},[176,178,184,186,192,194,200,202,208,210,216,218,223],{"type":37,"value":177},"In a 12-person team, we have 18 Slack channels, but taxonomy is clean: ",{"type":32,"tag":85,"props":179,"children":181},{"className":180},[],[182],{"type":37,"value":183},"#general",{"type":37,"value":185}," (company-wide), ",{"type":32,"tag":85,"props":187,"children":189},{"className":188},[],[190],{"type":37,"value":191},"#dev",{"type":37,"value":193}," (engineering), ",{"type":32,"tag":85,"props":195,"children":197},{"className":196},[],[198],{"type":37,"value":199},"#growth",{"type":37,"value":201}," (marketing\u002Fsales), ",{"type":32,"tag":85,"props":203,"children":205},{"className":204},[],[206],{"type":37,"value":207},"#client-{name}",{"type":37,"value":209}," (client-specific), ",{"type":32,"tag":85,"props":211,"children":213},{"className":212},[],[214],{"type":37,"value":215},"#random",{"type":37,"value":217}," (off-topic). 6 client channels — so about 2 people follow each client. This separation keeps noise\u002Fsignal ratio controlled. ",{"type":32,"tag":85,"props":219,"children":221},{"className":220},[],[222],{"type":37,"value":183},{"type":37,"value":224}," averages 8 messages\u002Fday — enough visibility for critical announcements, no spam.",{"type":32,"tag":40,"props":226,"children":228},{"id":227},"figma-component-library-and-design-token-sync",[229],{"type":37,"value":230},"Figma: Component Library and Design Token Sync",{"type":32,"tag":33,"props":232,"children":233},{},[234,236,242,243,249,250,256,258,263],{"type":37,"value":235},"We use Figma as a design system source, not a mockup tool. Component library holds 240 components — button, input, card, modal, layout primitive. Every component links to design tokens: ",{"type":32,"tag":85,"props":237,"children":239},{"className":238},[],[240],{"type":37,"value":241},"color-primary-500",{"type":37,"value":92},{"type":32,"tag":85,"props":244,"children":246},{"className":245},[],[247],{"type":37,"value":248},"spacing-md",{"type":37,"value":92},{"type":32,"tag":85,"props":251,"children":253},{"className":252},[],[254],{"type":37,"value":255},"font-body-regular",{"type":37,"value":257},". These tokens sync to code via Figma API — when a designer changes ",{"type":32,"tag":85,"props":259,"children":261},{"className":260},[],[262],{"type":37,"value":241},{"type":37,"value":264}," in Figma, an automatic GitHub PR opens and updates the CSS variable.",{"type":32,"tag":33,"props":266,"children":267},{},[268],{"type":37,"value":269},"This sync pattern eliminates manual design-dev handoff. When a designer marks something \"ready for dev,\" a Linear issue auto-creates with the Figma link embedded. When a developer opens the issue, Figma file, component spec, and design token values are all ready. No \"what padding is this?\" question — inspect mode is built-in.",{"type":32,"tag":33,"props":271,"children":272},{},[273],{"type":37,"value":274},"Design review cycles: 1-hour async review per week — designer asks questions in Figma comments, developer responds. No real-time meetings. In 6 months, 24 design reviews, none required sync meetings. Async review lets developers respond at their own pace, maintaining flow.",{"type":32,"tag":33,"props":276,"children":277},{},[278,280,289],{"type":37,"value":279},"Integration: Figma files embed in Notion — with version control. Every major design revision becomes a branch in Figma, and Notion's embed includes a branch selector. This allows returning to old revisions and tracking design evolution. Roibase's ",{"type":32,"tag":281,"props":282,"children":286},"a",{"href":283,"rel":284},"https:\u002F\u002Fwww.roibase.com.tr\u002Fru\u002Fbranding",[285],"nofollow",[287],{"type":37,"value":288},"branding",{"type":37,"value":290}," service delivers brand identity evolution timelines to clients using this pattern — every logo iteration is a Figma branch, Notion timeline view.",{"type":32,"tag":40,"props":292,"children":294},{"id":293},"granola-meeting-transcript-and-action-item-extraction",[295],{"type":37,"value":296},"Granola: Meeting Transcript and Action Item Extraction",{"type":32,"tag":33,"props":298,"children":299},{},[300],{"type":37,"value":301},"Granola is an AI meeting assistant — but it's an action item extraction engine, not a note-taking tool. During meetings, it captures real-time transcript; at the end, it produces 3 outputs: (1) structured summary, (2) action item list (with owner + due date), (3) decision log (who decided what). These auto-post to Notion.",{"type":32,"tag":33,"props":303,"children":304},{},[305],{"type":37,"value":306},"6-month data: 42 client meetings, 18 internal syncs, 60 total. Average meeting: 38 minutes; Granola summary: 4.2 minutes read time. Action item extraction accuracy: 89% — 9 of 10 action items have correct owner + due date. The remaining 11% get manual correction. This accuracy eliminates post-meeting \"who was supposed to do what?\" debates.",{"type":32,"tag":33,"props":308,"children":309},{},[310],{"type":37,"value":311},"Integration: Action items can auto-open as Linear issues — but manual approval is required. Granola offers a \"send to Linear\" button, PM approves, issue opens. This approval step prevents AI from creating wrong action items. In 60 meetings, 180 action items were extracted, 162 sent to Linear, 10% rejected (irrelevant or duplicate).",{"type":32,"tag":40,"props":313,"children":315},{"id":314},"tool-stack-tradeoff-integration-vs-ownership",[316],{"type":37,"value":317},"Tool Stack Tradeoff: Integration vs. Ownership",{"type":32,"tag":33,"props":319,"children":320},{},[321],{"type":37,"value":322},"Using 5 tools (Linear, Notion, Slack, Figma, Granola) is more complex than one monolithic platform. But the tradeoff is clear: best-of-breed tool selection increased team efficiency by 34% (6-month tracking: task completion rate rose from 68% to 91%). Integration has cost — setting up webhooks, writing API sync, handling errors — but it's one-time. Operational gain continues every day.",{"type":32,"tag":33,"props":324,"children":325},{},[326],{"type":37,"value":327},"Ownership pattern: Each tool has 1 responsible owner. Linear → Tech Lead, Notion → PM, Slack → Ops Manager, Figma → Design Lead, Granola → Founder. Owners ensure tools fit team workflow, identify new integration needs, make upgrade decisions. This ownership prevents \"everyone uses it but no one owns it.\"",{"type":32,"tag":33,"props":329,"children":330},{},[331],{"type":37,"value":332},"We keep the bar for adding tools high — 3 criteria: (1) can it integrate with the current stack? (2) does it break single source of truth? (3) does it fit async-first culture? In 6 months, 12 tool proposals came in; 2 were accepted (Granola + 1 internal analytics tool). The rest were rejected — the existing stack could solve their problems.",{"type":32,"tag":40,"props":334,"children":336},{"id":335},"tool-stacks-measurable-cultural-impact",[337],{"type":37,"value":338},"Tool Stack's Measurable Cultural Impact",{"type":32,"tag":33,"props":340,"children":341},{},[342],{"type":37,"value":343},"Tool choice is culture choice. Linear sprint discipline, Notion documentation discipline, Slack async discipline — these are not tool features but cultural patterns tools enforce. In 6 months, the team grew (8 to 12 people) but meeting hours fell (12\u002Fweek to 6\u002Fweek). This paradox became possible through async-first tool stack.",{"type":32,"tag":33,"props":345,"children":346},{},[347],{"type":37,"value":348},"We measure operational discipline: Linear cycle time P50, Notion doc review latency, Slack async response time, Figma-to-code sync frequency, Granola action item accuracy. These metrics get reviewed quarterly at founder\u002Flead level. Tools aren't just instruments — they're the measurable surface of team performance. Now: test single source of truth pattern in your own stack, create forcing functions for async-first discipline, track metrics. Efficiency isn't a shortcut; it's systemic design.",{"title":16,"searchDepth":350,"depth":350,"links":351},3,[352,356,357,360,361,362,363],{"id":42,"depth":353,"text":45,"children":354},2,[355],{"id":64,"depth":350,"text":67},{"id":75,"depth":353,"text":78},{"id":133,"depth":353,"text":136,"children":358},[359],{"id":169,"depth":350,"text":172},{"id":227,"depth":353,"text":230},{"id":293,"depth":353,"text":296},{"id":314,"depth":353,"text":317},{"id":335,"depth":353,"text":338},"markdown","content:ru:lifestyle:tool-stack-operasyonel-disiplin.md","content","ru\u002Flifestyle\u002Ftool-stack-operasyonel-disiplin.md","ru\u002Flifestyle\u002Ftool-stack-operasyonel-disiplin","md",1785161112919]