[{"data":1,"prerenderedAt":431},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fes\u002Flifestyle\u002Ftech-stack-2026-roibase-operational-spine":13},{"i18nKey":4,"paths":5},"lifestyle-004-2026-05",{"de":6,"en":7,"es":8,"fr":9,"it":10,"ru":11,"tr":12},"\u002Fde\u002Flifestyle\u002Ftool-stack-2026-operationelle-wirbelsaeule","\u002Fen\u002Flifestyle\u002Ftool-stack-2026-operational-backbone","\u002Fes\u002Flifestyle\u002Ftech-stack-2026-roibase-operational-spine","\u002Ffr\u002Flifestyle\u002Fstack-outils-2026-colonne-vertebrale-operationnelle","\u002Fit\u002Flifestyle\u002Froibase-tool-stack-2026","\u002Fru\u002Flifestyle\u002Ftool-stack-2026-operational-backbone","\u002Ftr\u002Flifestyle\u002Ftool-stack-2026-roibasein-operasyonel-omurgasi",{"_path":8,"_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":425,"_id":426,"_source":427,"_file":428,"_stem":429,"_extension":430},"lifestyle",false,"","Tech Stack 2026: The Operational Spine of Roibase","Linear, Notion, Slack, Figma, Granola — decision flow architecture across 12 people, 3 time zones. Integration patterns, context-switching cost, measured productivity gains.","2026-05-15",[21,22,23,24,25],"tool-stack","async-workflow","team-operations","productivity-engineering","remote-work",8,"Roibase",{"type":29,"children":30,"toc":405},"root",[31,39,46,59,64,69,76,98,110,116,128,133,149,155,160,166,186,191,196,202,222,227,233,245,250,255,261,266,271,277,289,294,299,305,310,315,321,326,395,400],{"type":32,"tag":33,"props":34,"children":35},"element","p",{},[36],{"type":37,"value":38},"text","In 2026, picking productivity tools isn't simple — every platform claims to be a \"collaboration hub.\" At Roibase, eight years taught us this: choosing the tool is easy; building the integration pattern is hard. Our team: 12 people, 3 time zones, async-first discipline. This piece cuts open that discipline — what each tool does, how they connect, where context-switching costs emerge.",{"type":32,"tag":40,"props":41,"children":43},"h2",{"id":42},"linear-not-a-single-source-of-truth-but-decision-flow-management",[44],{"type":37,"value":45},"Linear: Not a Single Source of Truth, but Decision Flow Management",{"type":32,"tag":33,"props":47,"children":48},{},[49,51,57],{"type":37,"value":50},"Seeing Linear as an issue tracker misses the point. We use it for ",{"type":32,"tag":52,"props":53,"children":54},"em",{},[55],{"type":37,"value":56},"decision flow management",{"type":37,"value":58},". Each sprint cycle, PM + lead engineer together prioritize the roadmap board. Linear's strength isn't prioritization — it's webhook notifications to Slack when status changes. This way, nobody opens Linear manually asking \"what's happening?\"",{"type":32,"tag":33,"props":60,"children":61},{},[62],{"type":37,"value":63},"Critical pattern: When a Linear issue opens, a Notion \"Research\" template auto-generates (via Zapier). The PM first documents context there — market data, user feedback, technical constraint — then moves it to Linear labeled \"implementation ready.\" This separation keeps undesigned issues out of Linear.",{"type":32,"tag":33,"props":65,"children":66},{},[67],{"type":37,"value":68},"Velocity metric: Last 6 sprints, we averaged 28 story points closed (12-person team). That number is stable — discipline delivered it, not the tool. Post-sprint retrospectives live in Notion, Linear issues close. We search past sprints in Notion, not Linear — it's more structured.",{"type":32,"tag":70,"props":71,"children":73},"h3",{"id":72},"context-switching-cost",[74],{"type":37,"value":75},"Context-Switching Cost",{"type":32,"tag":33,"props":77,"children":78},{},[79,81,88,90,96],{"type":37,"value":80},"Linear's notification aggressiveness is high. Every status change pings Slack, fragmenting attention. Solution: ",{"type":32,"tag":82,"props":83,"children":85},"code",{"className":84},[],[86],{"type":37,"value":87},"#dev-silent",{"type":37,"value":89}," channel in Slack — logging only, no mentions. Real notifications go to ",{"type":32,"tag":82,"props":91,"children":93},{"className":92},[],[94],{"type":37,"value":95},"#dev-standup",{"type":37,"value":97},", only on \"ready for review\" and \"blocked.\"",{"type":32,"tag":33,"props":99,"children":100},{},[101,103,108],{"type":37,"value":102},"Developers open ",{"type":32,"tag":82,"props":104,"children":106},{"className":105},[],[107],{"type":37,"value":95},{"type":37,"value":109}," at 09:00, never touch Linear. Code ready for review? They see it on Slack. No other noise. Result: average review response time dropped from 3 hours to 45 minutes (Slack analytics, January 2026).",{"type":32,"tag":40,"props":111,"children":113},{"id":112},"notion-not-information-architecture-but-decision-archive",[114],{"type":37,"value":115},"Notion: Not Information Architecture, but Decision Archive",{"type":32,"tag":33,"props":117,"children":118},{},[119,121,126],{"type":37,"value":120},"Using Notion as a wiki is the classic mistake. We use it as a ",{"type":32,"tag":52,"props":122,"children":123},{},[124],{"type":37,"value":125},"decision archive",{"type":37,"value":127},". Every project starts in Notion — problem statement, customer context, technical tradeoffs, rejected alternatives. When the Linear issue closes, that Notion page stays.",{"type":32,"tag":33,"props":129,"children":130},{},[131],{"type":37,"value":132},"Pattern: \"Projects 2026\" database in Notion, each row a project. Status property syncs with Linear (Zapier webhook). When a project reaches \"done,\" it auto-moves to \"Archive 2026.\" Active workspace stays clean; past decisions stay searchable.",{"type":32,"tag":33,"props":134,"children":135},{},[136,138,147],{"type":37,"value":137},"At Roibase, branding discipline ties directly to this stack — ",{"type":32,"tag":139,"props":140,"children":144},"a",{"href":141,"rel":142},"https:\u002F\u002Fwww.roibase.com.tr\u002Fes\u002Fbranding",[143],"nofollow",[145],{"type":37,"value":146},"brand identity work",{"type":37,"value":148}," keeps brand guidelines in Notion, links to Figma. Designer mocks in Figma, but voice & tone live in Notion. Instead of asking \"is this copy on-brand?\" the designer opens the Notion \"Voice & Tone\" page.",{"type":32,"tag":70,"props":150,"children":152},{"id":151},"search-and-information-access",[153],{"type":37,"value":154},"Search and Information Access",{"type":32,"tag":33,"props":156,"children":157},{},[158],{"type":37,"value":159},"Notion's search is weak — 500+ pages won't surface semantic hits. Solution: manual tags on every Notion page (client-name, project-type, team-owner). Filter first, search second. Average info retrieval: 2 minutes → 30 seconds (internal measurement, March 2026).",{"type":32,"tag":40,"props":161,"children":163},{"id":162},"slack-the-async-first-enforcer",[164],{"type":37,"value":165},"Slack: The Async-First Enforcer",{"type":32,"tag":33,"props":167,"children":168},{},[169,171,176,178,184],{"type":37,"value":170},"Using Slack as real-time chat is undisciplined. We architected it as an ",{"type":32,"tag":52,"props":172,"children":173},{},[174],{"type":37,"value":175},"async-first enforcer",{"type":37,"value":177},". Rule: Slack messages expect response in 4 hours, not urgently, unless ",{"type":32,"tag":82,"props":179,"children":181},{"className":180},[],[182],{"type":37,"value":183},"@channel",{"type":37,"value":185}," is used. That mention means 30 minutes.",{"type":32,"tag":33,"props":187,"children":188},{},[189],{"type":37,"value":190},"Enforce it with custom status: \"Deep work 🎧\" status means don't mention. The status auto-sets for 2 hours (Slack Workflow Builder). Designer gets 2 unbroken hours in Figma.",{"type":32,"tag":33,"props":192,"children":193},{},[194],{"type":37,"value":195},"Critical pattern: Slack threads go to Linear (Zapier). Thread reaches a decision? PM writes \"Decision: ...\" — auto-posts as a Linear comment. Decision lives in Linear; developer doesn't need to check Slack.",{"type":32,"tag":70,"props":197,"children":199},{"id":198},"notification-discipline",[200],{"type":37,"value":201},"Notification Discipline",{"type":32,"tag":33,"props":203,"children":204},{},[205,207,213,215,220],{"type":37,"value":206},"Don't kill Slack notifications, segment them. If ",{"type":32,"tag":82,"props":208,"children":210},{"className":209},[],[211],{"type":37,"value":212},"@here",{"type":37,"value":214}," or ",{"type":32,"tag":82,"props":216,"children":218},{"className":217},[],[219],{"type":37,"value":183},{"type":37,"value":221}," exceeds 3 times weekly, the Slackbot alerts the PM (custom app, internal). \"Urgent\" doesn't deflate — real urgent items surface.",{"type":32,"tag":33,"props":223,"children":224},{},[225],{"type":37,"value":226},"Result: Slack messages dropped from 120\u002Fday to 60\u002Fday (6 months). Async response improved: 4 hours → 2 hours. Less noise means real messages get seen.",{"type":32,"tag":40,"props":228,"children":230},{"id":229},"figma-not-design-handoff-but-design-documentation",[231],{"type":37,"value":232},"Figma: Not Design Handoff, but Design Documentation",{"type":32,"tag":33,"props":234,"children":235},{},[236,238,243],{"type":37,"value":237},"Seeing Figma as a mockup tool is incomplete. We use it for ",{"type":32,"tag":52,"props":239,"children":240},{},[241],{"type":37,"value":242},"design documentation",{"type":37,"value":244},". Design starts in Figma, but before dev, it gets reviewed in comment threads: PM + designer + lead engineer. By handoff, \"is this implementable?\" is already answered.",{"type":32,"tag":33,"props":246,"children":247},{},[248],{"type":37,"value":249},"Pattern: Figma file embeds in Notion project page. Developer comes from Linear into Notion, sees Figma preview, finds implementation details in Figma comments. Instead of Slack: \"how many px is this spacing?\" — they inspect and measure.",{"type":32,"tag":33,"props":251,"children":252},{},[253],{"type":37,"value":254},"Figma's dev mode is powerful but overused. We open it only at \"final design\" — not during iteration. Open dev mode too early, and designers think \"is this ready for dev?\" — iteration slows.",{"type":32,"tag":70,"props":256,"children":258},{"id":257},"component-library-discipline",[259],{"type":37,"value":260},"Component Library Discipline",{"type":32,"tag":33,"props":262,"children":263},{},[264],{"type":37,"value":265},"We built a Figma component library, but maintenance is hard. Solution: 1 day per sprint for \"component cleanup.\" Designer only refactors components that day, no new design. Component library doesn't decay.",{"type":32,"tag":33,"props":267,"children":268},{},[269],{"type":37,"value":270},"Result: component reuse went from 40% to 75% (Figma analytics, April 2026). Design-to-dev handoff: 2 days → 4 hours. Developers know components; no custom implementation.",{"type":32,"tag":40,"props":272,"children":274},{"id":273},"granola-not-meeting-intelligence-but-async-memo-generator",[275],{"type":37,"value":276},"Granola: Not Meeting Intelligence, but Async Memo Generator",{"type":32,"tag":33,"props":278,"children":279},{},[280,282,287],{"type":37,"value":281},"We added Granola late 2025. The tool is simple: record + auto-transcript + AI summary. We use it as an ",{"type":32,"tag":52,"props":283,"children":284},{},[285],{"type":37,"value":286},"async memo generator",{"type":37,"value":288},". After the meeting, we paste Granola's summary into Notion, edit it, turn it into team memo.",{"type":32,"tag":33,"props":290,"children":291},{},[292],{"type":37,"value":293},"Critical pattern: Team member not in the meeting reads the Granola memo (5 minutes), not the recording (30 minutes). 12-person team: we went from 8 meetings\u002Fweek to 3. Async reading: 20 minutes\u002Fperson\u002Fweek instead of 8×30=240 minutes of meetings.",{"type":32,"tag":33,"props":295,"children":296},{},[297],{"type":37,"value":298},"Granola's AI summary: 80% accurate — we fix 20%. But editing 20% is faster than re-attending. Meeting owner edits for 10 minutes post-meeting; memo is done.",{"type":32,"tag":70,"props":300,"children":302},{"id":301},"privacy-and-trust",[303],{"type":37,"value":304},"Privacy and Trust",{"type":32,"tag":33,"props":306,"children":307},{},[308],{"type":37,"value":309},"We don't embed Granola recordings in Notion — only transcript + summary. Video recordings create trust friction (\"everything I say is recorded\"). We anonymize transcripts (name → \"PM\", \"Designer\"), so people speak freely.",{"type":32,"tag":33,"props":311,"children":312},{},[313],{"type":37,"value":314},"Result: meeting quality rose — no one worried about recorded speech. Granola just documents the decision flow.",{"type":32,"tag":40,"props":316,"children":318},{"id":317},"common-integration-pattern-properties",[319],{"type":37,"value":320},"Common Integration Pattern Properties",{"type":32,"tag":33,"props":322,"children":323},{},[324],{"type":37,"value":325},"These 5 tools share integration strategy:",{"type":32,"tag":327,"props":328,"children":329},"ol",{},[330,342,352,385],{"type":32,"tag":331,"props":332,"children":333},"li",{},[334,340],{"type":32,"tag":335,"props":336,"children":337},"strong",{},[338],{"type":37,"value":339},"Unidirectional data flow:",{"type":37,"value":341}," Linear → Notion → Slack → Figma. Linear is single source of truth; others are downstream.",{"type":32,"tag":331,"props":343,"children":344},{},[345,350],{"type":32,"tag":335,"props":346,"children":347},{},[348],{"type":37,"value":349},"Webhook, not polling:",{"type":37,"value":351}," Zapier webhooks, not scheduled jobs. Real-time sync, low server load.",{"type":32,"tag":331,"props":353,"children":354},{},[355,360,362,368,370,376,377,383],{"type":32,"tag":335,"props":356,"children":357},{},[358],{"type":37,"value":359},"Notification segmentation:",{"type":37,"value":361}," Each tool's notifications go to different Slack channels. ",{"type":32,"tag":82,"props":363,"children":365},{"className":364},[],[366],{"type":37,"value":367},"#linear-log",{"type":37,"value":369},", ",{"type":32,"tag":82,"props":371,"children":373},{"className":372},[],[374],{"type":37,"value":375},"#notion-updates",{"type":37,"value":369},{"type":32,"tag":82,"props":378,"children":380},{"className":379},[],[381],{"type":37,"value":382},"#figma-reviews",{"type":37,"value":384},". Team members follow only their stream.",{"type":32,"tag":331,"props":386,"children":387},{},[388,393],{"type":32,"tag":335,"props":389,"children":390},{},[391],{"type":37,"value":392},"Manual override always available:",{"type":37,"value":394}," Automation can always be overridden. If Linear→Notion sync fails, PM manually links. Automation failure doesn't stop work.",{"type":32,"tag":33,"props":396,"children":397},{},[398],{"type":37,"value":399},"Numerically: per-person tool cost ~$15\u002Fmonth. Operational efficiency +35% (delivery cycle: 3 weeks → 2 weeks, Q1 2026). Tool stack didn't drive the gain — integration discipline did.",{"type":32,"tag":33,"props":401,"children":402},{},[403],{"type":37,"value":404},"At Roibase, tool stack review happens every 18 months. New tool addition requires proof of net workflow contribution. End of 2026, we're testing Loom and Miro. Approval criteria: \"What operational bottleneck does this solve if absent?\" No answer = no tool.",{"title":16,"searchDepth":406,"depth":406,"links":407},3,[408,412,415,418,421,424],{"id":42,"depth":409,"text":45,"children":410},2,[411],{"id":72,"depth":406,"text":75},{"id":112,"depth":409,"text":115,"children":413},[414],{"id":151,"depth":406,"text":154},{"id":162,"depth":409,"text":165,"children":416},[417],{"id":198,"depth":406,"text":201},{"id":229,"depth":409,"text":232,"children":419},[420],{"id":257,"depth":406,"text":260},{"id":273,"depth":409,"text":276,"children":422},[423],{"id":301,"depth":406,"text":304},{"id":317,"depth":409,"text":320},"markdown","content:es:lifestyle:tech-stack-2026-roibase-operational-spine.md","content","es\u002Flifestyle\u002Ftech-stack-2026-roibase-operational-spine.md","es\u002Flifestyle\u002Ftech-stack-2026-roibase-operational-spine","md",1778882625912]