Senior PMs at software consultancies currently reconstruct project status from memory every Friday afternoon—toggling between Linear boards, Slack threads, and half-baked spreadsheets to compile client updates that take 47 minutes on average (n=23 PMs surveyed, internal research, Aug 2025). By Monday morning, that snapshot is stale. When clients reply with "actually what about the auth fix?" the PM repeats the archeological dig, or worse, sends inaccurate information that erodes trust and delays invoicing.
The business case: 18 PMs × 5.2 hrs/week × $78/hr blended cost × 48 weeks = $350,438/year recoverable (source: HR cost data, time-tracking from Toggl baseline, Aug 2025). If adoption reaches only 40% of PM team: $140,175/year. The 3-month build cost is $85,000 (source: eng capacity planning, India-based team rates per Regional Cost Benchmarks).
This feature is a filtered operational dashboard that ingests Linear/Jira data and generates client-safe shareable views with zero manual curation. It is not a replacement for Linear/Jira (work stays in existing tools), a client collaboration workspace (no commenting or file sharing), or a billing/time-tracking system (hours remain in existing accounting software).
Competitive Landscape:
Notion solves this through manual databases where PMs paste screenshots—hired for "flexible documentation" but fired when updates rot after 48 hours. Linear solves this through internal Kanban views—hired for "developer velocity" but fired when PMs spend hours sanitizing screenshots for client consumption. Salesforce solves this through project management modules—hired for "enterprise sales tracking" but fired when implementation requires six months of $300/hr consulting.
| Capability | Linear | Notion | Salesforce | Client |
|---|---|---|---|---|
| Auto-sync dev tool data | ✅ (internal only) | ❌ | ⚠️ (via custom dev) | ✅ (native bidirectional) |
| Client-facing view without login friction | ❌ | ⚠️ (public pages expose all) | ✅ (complex auth) | ✅ (magic link + auth) |
| Blocker escalation without manual triage | ❌ | ❌ | ❌ | ✅ (auto-detect + notify) |
| Multi-project health rollup | ❌ | ⚠️ (manual) | ✅ | ✅ (auto-aggregated) |
| WHERE WE LOSE | Speed of execution (Linear is 10x faster for devs) | Flexibility (Notion allows any schema) | Enterprise security depth (SOC 2 Type II native) | — |
Our wedge is zero-config client transparency because consultancies lose 12% of recurring revenue to "surprise" scope disputes that better visibility prevents (source: Agency Profitability Report 2024, n=340 firms).
WHO / JTBD: When managing 4–6 simultaneous client engagements, a delivery lead wants to know which projects are blocked, which are billing-ready, and what to communicate to clients—without spending Friday nights exporting CSVs from Linear or sanitizing screenshots in Figma.
THE FAILURE MODE:
Quantified Baseline:
| Metric | Measured Baseline |
|---|---|
| Time to compile weekly client status | 47 min avg (n=23 PMs, stopwatch study) |
| Client status views per week (manual) | 3.8 avg, 40% stale |
| Revenue at risk from "surprise" blockers | $420K (8 renewals in Q3 pipeline flagged) |
JTBD Statement: "When managing multiple client projects, I want a real-time health dashboard that automatically surfaces the delta between internal progress and client-facing milestones, so I can share accurate status in under 5 minutes without exposing internal chaos."
Phase 1 — MVP (6 weeks): A read-only dashboard that ingests Linear data via API, maps internal issues to client-visible milestones, and generates password-protected share links. Scope capped to Linear-only integration, single-level milestones (no epics), and manual blocker flagging.
Phase 1.1 — Hardening (4 weeks): Jira Cloud integration (top requested blocker), Slack notification routing when health status changes, and CSV export for client quarterly business reviews.
Phase 1.2 — Expansion (6 weeks): Client self-serve login (magic links retire), comment capture on shared views, and two-way sync (close milestone in dashboard → updates Linear).
Kill Criteria: If <40% of enrolled PMs generate a client share within 14 days of onboarding, or if client view open rate is <25% after 30 days, Phase 2 is cancelled pending qualitative investigation.
┌──────────────────────────────────────────────────────────────────────────────┐
│ Projects Dashboard [+ New Project] [⚙] │
├──────────────────────────────────────────────────────────────────────────────┤
│ STATUS: ALL HEALTH: 🔴 Needs Attention (3) Last sync: 2m ago │
├──────────────────────────────────────────────────────────────────────────────┤
│ │
│ Contoso API Migration ████████░░ 80% 🟡 At Risk (Blocker: DB) │
│ └─ Client: Contoso Inc Due: Aug 28 [Share →] [Details →] │
│ │
│ Acme Mobile Rewrite ██████░░░░ 60% 🟢 On Track │
│ └─ Client: Acme Corp Due: Sep 15 [Share →] [Details →] │
│ │
│ StartupXYZ MVP ███░░░░░░░ 30% 🔴 Blocked (External dep) │
│ └─ Client: StartupXYZ Due: Oct 01 [Share →] [Details →] │
│ │
└──────────────────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────────────────┐
│ Contoso Inc — Project Status [🔒 Private Link] │
├──────────────────────────────────────────────────────────────────────────────┤
│ │
│ OAuth2 Integration ✅ Complete Aug 22, 2025 │
│ ├─ User login flow ✅ Complete │
│ └─ Admin portal ✅ Complete │
│ │
│ Database Migration 🔄 In Progress Due: Aug 28 │
│ ├─ Schema design ✅ Complete │
│ └─ Data seeding ⏳ Pending (blocked by AWS credits) │
│ │
│ API Performance Tuning ⏳ Not Started Due: Sep 05 │
│ │
├──────────────────────────────────────────────────────────────────────────────┤
│ Updated 2 minutes ago from Linear • Questions? Reply to your PM directly │
└──────────────────────────────────────────────────────────────────────────────┘
Before/After Narrative:
Before: Sarah, Delivery Lead at a 25-person consultancy, spends every Friday 4–6 PM in a "status panic." She screenshots Linear columns, pastes them into a Google Doc, manually highlights which tickets map to the "Phase 2 Milestone" the client actually cares about, then emails four different clients slightly different versions because she can't remember which ones know about the secret mobile app branch. She misses dinner. Monday morning, the CTO at Contoso replies "This doesn't match what our dev saw in staging" and the Tuesday renewal call is now a damage control meeting.
After: Sarah opens the dashboard at 4:45 PM Friday. She sees a red indicator on "Contoso DB Migration" because the Linear ticket was flagged "blocked-external." She clicks the milestone, confirms it's client-relevant, adds a note about the AWS credits delay, and clicks "Generate Client Link." She pastes the URL into an email with the subject "No surprises—heads up on DB timing" and hits send at 4:52 PM. She makes dinner. Monday morning, Contoso's CTO replies "Thanks for the transparency, let's talk about AWS support credits on Tuesday instead."
Phase 1 — MVP: 6 weeks
US1 — Linear Connection
US2 — Project Mapping
US3 — Health Calculation
US4 — Client Share Generation
US5 — Client View Rendering
US6 — Blocker Escalation
Out of Scope (Phase 1):
| Feature | Why Not Phase 1 |
|---|---|
| Jira integration | Requires field mapping complexity; Linear covers 70% of target market |
| Custom branding/logos | Adds design system complexity; unblock first |
| Historical trend charts | Requires time-series DB; defer until we validate core loop |
| Client-side commenting | Keeps Phase 1 read-only; avoids moderation/compliance scope |
Phase 1.1 — 4 weeks post-MVP:
Phase 1.2 — 8 weeks post-MVP:
North Star Metric:
| Metric | Baseline | Target (D90) | Measurement |
|---|---|---|---|
| Weekly status prep time | 47 min | ≤10 min | PM self-report via in-app prompt (n≥30) |
Input Metrics:
| Metric | Baseline | Target | Intervention |
|---|---|---|---|
| Dashboard daily active users (DAU) / total PMs | 0% | 75% | Slack reminder bot + Friday notification |
| Client share link open rate | N/A | 60% | PM training + "client viewed" confirmation badge |
| Data sync latency (p95) | N/A | <5 min | Monitoring alerts on Linear API lag |
Guardrail Metrics (must NOT degrade):
| Guardrail | Threshold | Action if Breached |
|---|---|---|
| Linear native usage (stories closed/week) | Current avg 12/week | <10/week |
| Client satisfaction score (CSAT) | Current 4.2/5 | <3.8/5 |
| Support tickets/PM/week | Current 0.3 | >1.0 |
What We Are NOT Measuring:
Risk 1 — Linear API Rate Limit Exhaustion
Risk 2 — Accidental Data Exposure
Risk 3 — Jira Complexity Halo Effect
Risk 4 — Magic Link Security Breach
Risk 5 — Adoption Drop After Honeymoon
Kill Criteria — we pause and conduct a full review if ANY of these are met within 90 days:
20% increase in support tickets categorised as "data sync inaccurate"
System Overview:
High-Level Flow:
client_milestones tableshare_tokens table/view/{token} → Edge function validates JWT + hash → serves cached HTML or triggers regenerationAssumptions vs Validated:
| Assumption | Status |
|---|---|
| Linear GraphQL API returns all required fields (state, title, description, due_date, labels) within 1500 req/hour limit | ⚠️ Unvalidated — needs confirmation from Backend Eng by Sept 5 |
| Client view traffic fits Vercel Hobby tier (100GB bandwidth) or requires Pro ($20/mo) | ⚠️ Unvalidated — needs traffic estimation from Finance by Sept 3 |
| Postgres JSONB column sufficient for arbitrary Linear custom fields (not needed Phase 1) | ⚠️ Unvalidated — needs schema review from Data Eng by Sept 6 |
| Slack webhook URLs can be stored encrypted and decrypted at notification time without rate limiting | ⚠️ Unvalidated — needs security review from InfoSec by Sept 4 |
| Magic links with JWT + SHA256 hash of token provides sufficient security for Phase 1 SaaS app | ⚠️ Unvalidated — needs security architecture review by Sept 7 |
| Linear webhooks deliver <5 min latency 95% of time for "issue updated" events | ⚠️ Unvalidated — needs webhook reliability testing from QA by Sept 10 |
Decision 1: Integration Priority — Linear vs Jira
Decision 2: Sync Architecture — Real-time vs Batch
Decision 3: Client Access Model — Magic Links vs User Accounts
Decision 4: Data Scope — All Issues vs Curated Milestones
Decision 5: Write-back Capability — Read-only vs Bidirectional
Decision 6: Hosting — Embedded vs Standalone
Pre-Mortem: Why This Failed
It is 6 months from now and this feature has failed. The 3 most likely reasons are:
PMs kept forgetting to tag tickets "client-visible" so the dashboards showed empty milestones or outdated data, making the tool look broken. PMs blamed the "extra step" and quietly reverted to screenshots. The root cause was that the tag requirement wasn't integrated into Linear's native workflow—devs had to remember to tag, not PMs.
We rotated magic link tokens as a security precaution, breaking all existing client bookmarks. Client IT departments panicked ("Is this phishing?"), consultancies lost credibility, and we had to build emergency user accounts (Phase 1.2) in a rushed 2-week sprint that broke the auth system.
Linear shipped "Guest Views" (a native client share feature) 4 weeks before our launch, rendering our primary wedge obsolete. We had no Jira integration ready to pivot to enterprise, and our small consultancy niche abandoned ship for the native solution.
What success actually looks like: Sarah and 14 other PMs start their week by reviewing the "Health Diamond" (our 4-color status visualization) instead of opening Linear first. Clients stop asking "where are we on the API?" because they check the link themselves Tuesday mornings. At the Series B board meeting, the CEO mentions that "client transparency" stopped being a weekly complaint in All Hands and became a competitive advantage in sales decks—we now win deals against larger consultancies by demonstrating real-time visibility in the pitch. The team stops getting 5 PM requests per week for "a quick export for the client" because it already exists.