Urgent.News

What's breaking now, across thousands of outlets.

Tech

How I turned Linear into a customer-facing roadmap without adding client seats

I built Feedvote because I kept running into a simple product problem: our team wanted to keep planning in Linear, but customers and stakeholders needed a much narrower view of what was happening. Giving every customer a Linear seat was the wrong boundary. It exposed an internal workspace, added account friction, and made it too easy to share implementation details that were never meant to be…

To create a customer-facing roadmap in Linear without adding extra client seats, the founder of Feedvote treated the customer roadmap as a controlled projection of Linear. The internal system and customer-facing system have separate roles. Linear remains the source of truth for delivery work, while the public or customer portal contains only selected issues and projects.

New imported work stays team-only initially for review before publishing. Customer feedback and votes are moderated before becoming Linear work to prevent arbitrary issues from being written directly into the engineering backlog.

The data flow begins with selecting the Linear teams, projects, issues, or labels to sync. Those items are then imported into a private review state where customer-facing copy is rewritten or trimmed to keep internal details private. Approved items are published to a public roadmap or customer-specific portal. Feedback is collected outside Linear, duplicates are merged, and approved feedback is sent to Linear. Delivery status is then synced back to the roadmap and notified to voters.

Three implementation details that were crucial were: 1) visibility being a separate field, not a side effect; 2) translating internal statuses into a smaller set of stable, understandable customer-facing states; and 3) implementing ownership rules for two-way sync to avoid overwriting the wrong information. Customers never need Linear access; they interact with the public roadmap. The integration was published in the Linear directory and the workflow is continuously improved based on feedback from Linear-first teams.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

.NET 10 JSON Console Logging: Stop Parsing State.Message

The .NET 10 JSON console logging change is small enough to miss during an upgrade: the formatted message still exists, but a typical record no longer duplicates it at State.Message .

  • .NET 10 JSON console logging now places formatted message at top-level Message property
  • State.Message property now holds structured values, not duplicated formatted message
  • Parsers should prioritize top-level Message, retain State for structured data

Ruby Pathname Moved to Core, Documentation Upgraded

In release 4.0, the Ruby Powers-That-Be have brought class Pathname into the Ruby core. This is a Very Good Thing. Through its many instance methods, a Pathname object provides a consistent and…

  • Pathname class integrated into Ruby core in version 4.0
  • Documentation for Pathname methods upgraded with local descriptions and examples
  • Updated documentation released with Ruby 4.1 later this year

More from Saturday 22 August →