Why Pitches exists
Before Pitches, documents lived in email threads, Sharepoint folders, and local drives. Nobody knew which version was current. Developers got outdated specs. BAs wasted time answering "where's the latest BRD?"
Pitches gives every document a permanent, canonical URL. Upload a new version and everyone with the link sees it immediately — no re-sharing, no "v2_final_FINAL.docx".
Features
Documents & viewing
Canonical URLs — Every pitch gets a short, permanent link (pitches.greatbuildersolutions.com/42). Share it once; it works forever. New versions appear automatically at the same URL.
In-browser viewer — Open any .docx directly in the browser with full fidelity: images, tables, headers, footers, and page layout preserved. No download required.
Version control — Every upload creates a new version (v1, v2, v3...). Previous versions are never overwritten. A slide-out drawer shows the full history — who uploaded, when, and what changed. Click any version to view inline or download individually. All backed by GitHub commits, but users never see Git.
PDF & DOCX download — Download any pitch as a formatted PDF (title page, sections, images) or DOCX. Final pitches default to PDF; in-progress pitches default to DOCX.
Large file support — Files up to 100 MB are supported. Small files (under 4 MB) upload directly; larger files route through Azure Blob Storage transparently. Uploaded images are automatically optimized to reduce storage.
Smart URL resolution — Use legacy identifiers you already know:
/sr-51442 → finds the pitch with SR #51442
/scr-51442 → same (SR and SCR are interchangeable)
/fs-12345 → finds by FreshService ticket number
/brd-7 → finds by legacy BRD number
One match redirects to the canonical URL. Multiple or no matches land on the dashboard with the search pre-filled.
Creating & importing
Create a pitch — Click New Pitch, drag in a .docx, and AI extracts the title, description, and legacy identifiers automatically. No forms. You get a canonical URL to share immediately. Real-time streaming progress shows each stage as it completes.
Bulk BRD import — Upload multiple .docx files at once, drag to reorder (pitch numbers assigned by order), and fill in legacy metadata per file. Import runs sequentially with a live progress bar.
Version-grouped import — When importing multiple versions of the same document (e.g. BRD - Project_V1.0.docx, _V1.1.docx, _V1.3.docx), the app detects the version pattern and groups them automatically. Instead of creating separate pitches, it creates one pitch with multiple versions. The AI extracts metadata from the latest version. Supported patterns: _V1.0, _V2, _v3, (V1.0), _Rev2.
BRD-to-Pitch coaching — Convert legacy BRDs into shaped pitches using the gbs-pitch-coach plugin. The Convert to Pitch button launches an interactive coaching session in Claude Code or Cowork that walks through all eight Shape-Up sections, drafts collaboratively, and uploads the result as a new version.
Editing & collaboration
Inline editor — Edit pitches directly in the browser. Rich text with formatting tools, organized into Shape-Up sections (Problem, Appetite, Solution, etc.). Upload images inline. Changes save atomically. Both structured and legacy DOCX pitches coexist.
Inline comments — Select text to leave an anchored comment. Comments are highlighted in the document and tracked in a sidebar with All, Unresolved, and Resolved tabs. A badge shows unresolved count at a glance.
AI features
Change summaries — When you upload a new version, AI compares it to the previous one and generates a plain-English summary. The summary is editable before confirming.
Pitch review — Click Get AI Feedback for a structured review against the Shape-Up template. Claude analyzes text and embedded images, scoring each section:
| Section | What it checks |
|---|---|
| Problem | Concrete pain point? Who's affected? |
| Appetite | Time budget set? Appropriate scope? |
| Solution | Rough, solved, and bounded? Sketches included? |
| Rabbit Holes | Complexity risks called out? |
| No-Gos | Firm boundaries set? |
| Nice to Have | Stretch goals separated from core? |
| Acceptance Criteria | Testable and comprehensive? |
| Approvals | Sign-off section present? |
Each section gets good, needs work, or missing with specific feedback.
Title naming rules — Configurable rules (in Settings) control how titles are cleaned across all AI extraction, Monday sync, and re-extract flows:
| Rule | What it does |
|---|---|
| Strip patterns | Regex patterns for noise to remove (e.g. ^SCR#\d+\s*, ^BRD\s*[-–]?\s*) |
| Module codes | Dynamic Builder prefixes to preserve at the start (e.g. SO, JC, PD, SM) |
| Max length | Target maximum title length (default 80) |
Examples:
| Before (raw from Monday/AI) | After (cleaned) |
|---|---|
SCR#6783 SO View Floorplan Usage – enhance report | SO View Floorplan Usage - Enhance Report |
BRD – SCR#6653 - SR#72562 – JC Update Item Statuses | JC Update Item Statuses |
SM>Takeoff – Add Restrictions Filter | SM Takeoff - Add Restrictions Filter |
AW/SL Amalgamation: BRD - Takeoff Junction | AW/SL Amalgamation: Takeoff Junction |
The AI is given these rules when generating titles, so extracted titles follow the format from the start.
Status & workflow
Status lifecycle — Every pitch moves through a configurable pipeline:
Draft → Dev Review → Requestor Review → Approved
Two special statuses available at any stage: Hold (reversible pause) and Rejected (terminal). Status changes are one-click with full audit trail. Approved and Rejected enter read-only mode. The pipeline is editable from Settings.
Monday.com integration — Bidirectional sync with Monday.com. Pitches are matched by SR/SCR number across configured boards.
| When | Direction | What happens |
|---|---|---|
| You change status in Pitches | Pitches → Monday | Monday item updates to match |
| Someone changes status in Monday | Monday → Pitches | Pitch updates to match (via webhook) |
| New pitch created with a Monday link | Monday → Pitches | Pitch inherits Monday's current status |
| You click Sync with Monday | Most recent wins | Compares timestamps to determine source of truth |
Title sync applies the naming rules above to keep titles clean across both systems.
The detail page shows Monday linkage state:
- Linked — red dot indicator, direct link to Monday item, last sync time
- Not linked — item wasn't found on any board
- Not yet checked — linkage hasn't been verified yet
The red dot also appears on kanban cards and grid view. Board eligibility is configurable in Settings.
Notifications
Notification center — Bell icon in the header shows unread count. Click for recent activity (status changes, comments, uploads, reviews, edits). Click any notification to jump to the pitch.
Subscriptions — Auto-subscribed to pitches you create, change status on, or comment on. Manual subscribe/unsubscribe via the Subscribe / Watching button on any pitch.
Email — Opt-in email notifications for status changes, new comments, new versions, and AI reviews. Every email includes an unsubscribe link. Configure which events trigger email from notification preferences (gear icon in the notification dropdown).
Integrations
MCP server — The app exposes an MCP server at /api/tools/mcp with 13 tools and 5 resources. Two workflows:
- Developers use Claude Code to interact with pitches from the terminal
- BAs use Cowork with the
gbs-pitch-coachplugin for interactive pitch coaching
Connect from Claude Code:
claude mcp add --transport http pitches https://pitches.greatbuildersolutions.com/api/tools/mcp
Connect from Cowork: admin adds the connector org-wide via Settings > Connectors > Add custom connector with the URL and Okta OAuth credentials.
Telemetry — Server-side telemetry via Azure Application Insights. Auto-collects HTTP requests, outgoing dependencies, and exceptions. Custom events track pitch creation, status changes, uploads, reviews, syncs, and edits. Disabled when APPLICATIONINSIGHTS_CONNECTION_STRING is unset.
Dashboard — Searchable, filterable grid of all pitches. Search by title, number, or any legacy identifier. Filter by status. Sort by recently updated, number, or status.