<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: l DraGSsine l</title>
    <description>The latest articles on DEV Community by l DraGSsine l (@l_dragssinel_b6c789f3c4b).</description>
    <link>https://dev.to/l_dragssinel_b6c789f3c4b</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2481094%2Fac4dd9fd-9698-4b01-91cf-8cb52fcde483.jpg</url>
      <title>DEV Community: l DraGSsine l</title>
      <link>https://dev.to/l_dragssinel_b6c789f3c4b</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/l_dragssinel_b6c789f3c4b"/>
    <language>en</language>
    <item>
      <title>How I turned Linear into a customer-facing roadmap without adding client seats</title>
      <dc:creator>l DraGSsine l</dc:creator>
      <pubDate>Sat, 22 Aug 2026 18:54:58 +0000</pubDate>
      <link>https://dev.to/l_dragssinel_b6c789f3c4b/how-i-turned-linear-into-a-customer-facing-roadmap-without-adding-client-seats-3od0</link>
      <guid>https://dev.to/l_dragssinel_b6c789f3c4b/how-i-turned-linear-into-a-customer-facing-roadmap-without-adding-client-seats-3od0</guid>
      <description>&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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 customer-facing.&lt;/p&gt;

&lt;p&gt;So I treated the customer roadmap as a &lt;strong&gt;controlled projection of Linear&lt;/strong&gt;, not as a second project-management system.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Disclosure: I'm the founder of &lt;a href="https://feedvote.app/linear" rel="noopener noreferrer"&gt;Feedvote&lt;/a&gt;, the product described here.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The separation that made the workflow click
&lt;/h2&gt;

&lt;p&gt;The internal system and the customer-facing system have different jobs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Linear remains the source of truth for delivery work.&lt;/li&gt;
&lt;li&gt;The public or customer portal contains only selected issues and projects.&lt;/li&gt;
&lt;li&gt;New imported work starts team-only so someone can review it before publishing.&lt;/li&gt;
&lt;li&gt;A team can publish an item publicly or assign it to specific customer contacts.&lt;/li&gt;
&lt;li&gt;Customer feedback and votes are moderated before becoming Linear work.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last point matters. A public feedback board should not be able to write arbitrary issues directly into an engineering backlog. The moderation step is a trust boundary, not just an admin feature.&lt;/p&gt;

&lt;h2&gt;
  
  
  The basic data flow
&lt;/h2&gt;

&lt;p&gt;The useful workflow ended up looking like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select the Linear teams, projects, issues, or labels that are eligible to sync.&lt;/li&gt;
&lt;li&gt;Import those items into a private review state.&lt;/li&gt;
&lt;li&gt;Rewrite or trim customer-facing copy when internal detail should stay private.&lt;/li&gt;
&lt;li&gt;Publish the approved items to a public roadmap or a customer-specific portal.&lt;/li&gt;
&lt;li&gt;Collect feature requests, votes, and comments outside Linear.&lt;/li&gt;
&lt;li&gt;Merge duplicates and approve the feedback that deserves engineering attention.&lt;/li&gt;
&lt;li&gt;Send approved feedback into Linear.&lt;/li&gt;
&lt;li&gt;Sync delivery status back to the roadmap and notify voters when something changes.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The important part is that customers never need access to the Linear workspace. They interact with the roadmap, while the product team keeps using the tool it already uses.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three implementation details that were easy to underestimate
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Visibility is a field, not a side effect
&lt;/h3&gt;

&lt;p&gt;An item being present in Linear does not mean it should be public. I needed an explicit customer-facing visibility state that could be reviewed and changed independently from the Linear issue.&lt;/p&gt;

&lt;p&gt;This also makes customer-specific roadmaps possible. The same internal project can be relevant to one account, several accounts, or everyone.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Statuses need a translation layer
&lt;/h3&gt;

&lt;p&gt;Internal workflows often have statuses such as Triage, Blocked, or Ready for QA. Those labels are useful to the team but noisy or confusing to customers.&lt;/p&gt;

&lt;p&gt;Instead of mirroring every internal state literally, the customer-facing layer maps them into a smaller set such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Under consideration&lt;/li&gt;
&lt;li&gt;Planned&lt;/li&gt;
&lt;li&gt;In progress&lt;/li&gt;
&lt;li&gt;Shipped&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Linear issue can keep its full workflow while the customer sees a stable, understandable lifecycle.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Two-way sync needs ownership rules
&lt;/h3&gt;

&lt;p&gt;"Two-way sync" sounds simple until both systems can change the same field.&lt;/p&gt;

&lt;p&gt;The rule I use is to be explicit about ownership:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Linear owns delivery state.&lt;/li&gt;
&lt;li&gt;Feedvote owns customer visibility, public copy, votes, and portal access.&lt;/li&gt;
&lt;li&gt;Approved customer feedback can create or link to Linear work.&lt;/li&gt;
&lt;li&gt;Linear status changes flow back to the linked roadmap item.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This avoids a generic last-write-wins model, which can silently overwrite the wrong thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing the loop is the real value
&lt;/h2&gt;

&lt;p&gt;Collecting feedback is only half the job. The moment that creates trust is when a customer gets an update without having to ask again.&lt;/p&gt;

&lt;p&gt;That means the feedback record, roadmap item, and Linear issue need to stay linked. When delivery moves forward, the customer-facing status changes. When the work ships, the people who voted can be notified.&lt;/p&gt;

&lt;p&gt;I published the integration in the &lt;a href="https://linear.app/integrations/feedvote" rel="noopener noreferrer"&gt;Linear directory&lt;/a&gt;, and I'm continuing to improve the workflow based on how Linear-first teams share progress with customers.&lt;/p&gt;

&lt;p&gt;If you're building a similar integration, I would start with the permission boundary and field ownership rules before building the UI. Those two decisions shape almost everything that follows.&lt;/p&gt;

&lt;p&gt;I'm happy to answer questions about the sync model or the trade-offs behind customer-specific versus fully public roadmaps.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
