# CRM Forecast Call Workspace with Call Lanes, Rep Rollups and Target Attainment

> Quarter forecast call: drag deals between call lanes, roll them up by rep in a banded table and track won plus commit against target. ReUI Kanban, Data Grid, Filters, Badge. For forecast review, commit call.

A paid shadcn/ui block sold by the [@reui](https://reui.io/?utm_source=shadcn.exchange) registry, listed on [shadcn.exchange](https://shadcn.exchange/r/reui/solution-crm-8).

- Page, with a preview: https://shadcn.exchange/r/reui/solution-crm-8
- Screenshot: https://abzjhwgwpdpz7ua5.public.blob.vercel-storage.com/shots/reui/solution-crm-8-light-149c6c2789925871.png
- Listed: 2026-10-13

## Buy and install

@reui sells this block, and its code is not on shadcn.exchange. Buy it from the registry, which installs it for those who have: https://shadcn.exchange/out/reui/solution-crm-8

## Dependencies

- npm packages: `@tanstack/react-table`, `cn`, `sonner`
- Registry items: `@reui/alert`, `@reui/badge`, `@reui/data-grid`, `@reui/filters`, `@reui/frame`, `@reui/icon-stack`, `@reui/icon-tile`, `@reui/kanban`, `@reui/number-field`, `alert-dialog`, `avatar`, `button`, `calendar`, `checkbox`, `collapsible`, `combobox`, `@reui/data-grid-cell-selection`, `@reui/data-grid-column-header`, `@reui/data-grid-scroll-area`, `@reui/data-grid-table`, `dropdown-menu`, `empty`, `field`, `@reui/filters-operators`, `@reui/filters-query`, `@reui/filters-types`, `hover-card`, `input`, `input-group`, `popover`, `progress`, `scroll-area`, `select`, `separator`, `sheet`, `skeleton`, `switch`, `tabs`, `textarea`, `toggle-group`, `tooltip`

## Notes from the registry

## Purpose
Forecast Call is a sales workspace for a Sales owner to run a quarter's forecast review from one dataset, seen as a board of call lanes and a table rolled up by rep.

## Actor
Sales owner

## Business Goal
Run a quarter's forecast call from one dataset: move each deal to the call the rep will stand behind, roll the calls up by rep, and see won plus commit plus best case against the target.

## Page Type
workspace

## Primary Source
solutions/crm/solution-crm-7

## Container Family
none

## Main Entities
- deal
- forecast call
- rep
- account
- quarter target
- next step
- close date

## Required Interactions
- switch between the board and the table
- drag a card between call lanes to change the forecast
- drop a card on the won or lost lane to settle it
- filter both views by rep and by a hygiene state
- group the table by rep with call rollups on every band
- edit a cell inline and undo it
- open a deal in the record sheet
- create and delete a deal with a confirm

## Required States
- not called
- pipeline
- best case
- commit
- omit
- closed won
- closed lost
- slipped close date
- no next step
- rotting
- overdue activity
- locked record
- gap to target
- empty filter result

## Source Families
- kanban-board
- data-grid
- sheet
- filters
- stats
- list

## Layout Guidance
Containerless full-bleed workspace. One identity line carries the quarter title, a dot and a one clause subtitle, with an icon Undo and New deal on the right. Under it the call reads as a call sheet: a large headline of won plus commit against the quarter target with a derived status badge beside it, and one sub-line with the attainment and the week of the quarter; on the right a compact ledger keys won, commit and best case over one solid attainment bar whose end is the target, captioned with the linear pace and the gap. One toolbar band holds a rep picker and four hygiene chips on the left and search, Filter, Display and the Board and Table switch on the right. The board lands grouped by the forecast call with every lane (Not called, Pipeline, Best case, Commit, Closed won, Closed lost, Omit) at one width in a horizontal scroller; the table lands grouped by rep with Won, Commit, Best case and Pipeline as columns and a rollup on every band.

## LLM Guidance
The forecast call is the unit of work: the board's default axis is `forecast`, so a drop writes the call through the one write path, and a closed deal refuses a call (rule 8). On the forecast board a settled deal sits on its outcome lane keyed by the stage id; a drop on that lane writes the stage, never the call, so call accuracy stays reportable. Locked and settled cards are disabled items, never vetoed on drop. The four call columns are derived and read the same rule as `callTotals`, so a band always adds up. The summary reads the whole book and counts only deals closing inside QUARTER against QUARTER_TARGET; a scope adds an in view note, never moves the track. A lane header prints the amount its share of target is taken from, and lost or omitted lanes read as outside the call. The call owns the hue (one blue ramp, strongest at Commit), open stages are a neutral ramp and only the outcomes keep a tint. The rep picker and hygiene chips own no state: each reads and writes one root rule of the shared filter query.

## Differentiation
It changes the unit of work from the deal's stage to the rep's forecast call. solution-crm-7 is a four view pipeline operations workspace grouped by stage and by account, whose board drop settles a stage; solution-crm-2 is a hardcoded lane board with no write path. Here the board's lanes are calls (Not called, Pipeline, Best case, Commit) so a drop rewrites the rep's forecast, the won and lost lanes settle a deal without touching the call it was made on, the table bands by rep with Won, Commit, Best case and Pipeline as derived columns that roll up on every band, and the header measures won plus commit plus best case against a named quarter target and counts four hygiene states that filter both views through the shared filter query. It reuses crm-7's store, validator, selectors, DataGrid and kanban engine unchanged in behavior.
