Pipeline Reporter
Generate a Markdown pipeline report from a CRM export CSV containing deal or opportunity rows. The report must include pipeline summary, forecast by stage, and rep performance.
Accepted Input
Accept a CSV file or pasted CSV data with opportunity-level records.
Standard column mapping:
deal_name: opportunity or deal name
amount: deal value
stage: current sales stage
owner: rep, account executive, or deal owner
close_date: expected close date
Common aliases may be mapped automatically:
| Standard Field |
Acceptable Aliases |
deal_name |
deal, opportunity, opportunity_name, name, account_name |
amount |
value, deal_value, arr, mrr, revenue, forecast_amount |
stage |
pipeline_stage, sales_stage, status, deal_stage |
owner |
rep, sales_rep, account_executive, ae, deal_owner |
close_date |
expected_close_date, forecast_close_date, close, close_dt |
If the CSV uses different names, infer only obvious mappings and show the mapping used before the report.
Missing Columns
Handle missing columns gracefully:
- If
amount is missing, ask the user for the value column before calculating totals or weighted pipeline.
- If
stage is missing, ask the user for the stage/status column before forecasting.
- If both
amount and stage are present but owner is missing, continue with pipeline and stage analysis, then ask whether to provide the owner column for rep performance.
- If
deal_name is missing, continue with row counts and aggregate analysis using row numbers as deal identifiers.
- If
close_date is missing, continue with current pipeline analysis and label date-based forecast sections as unavailable.
- If multiple plausible columns exist for a required field, ask the user to choose the mapping instead of guessing.
Do not fabricate missing values. Make partial reports explicit with a short Missing / Assumed Fields section.
Stage Probabilities
Use explicit probability weights for weighted pipeline. If the CSV includes a probability column such as probability, probability_percent, win_probability, or weighted_probability, use it after normalizing percentages to decimals.
If no probability column exists, apply these default stage weights:
| Stage Contains |
Probability |
closed won, won |
100% |
commit, contract, legal, procurement, negotiation |
80% |
proposal, quote, pricing |
60% |
qualified, solution, demo, evaluation, technical validation |
40% |
discovery, needs analysis, meeting scheduled |
25% |
prospecting, lead, new, identified |
10% |
closed lost, lost, disqualified |
0% |
| Unknown or unmatched stage |
0% until the user confirms a probability |
For unknown stages, include the stage in Needs Confirmation and ask the user for its probability if a precise weighted forecast is required.
Calculations
Parse amount as currency/number by removing currency symbols, commas, and whitespace. Treat blank or unparsable amounts as missing and exclude them from financial totals, while counting the affected rows.
Weighted amount formula:
weighted_amount = amount * probability
Where probability is a decimal from 0 to 1. Examples:
$10,000 at 60% = $6,000
10000 at 0.6 = $6,000
- Closed won = amount * 1.0
- Closed lost = amount * 0.0
Required report calculations:
- Total raw pipeline: sum of valid
amount
- Total weighted pipeline: sum of
weighted_amount
- Deal count: total rows and valid financial rows
- Average deal size: total raw pipeline / valid financial rows
- Stage forecast: count, raw amount, weighted amount, average deal size, share of weighted pipeline by stage
- Rep performance: count, raw amount, weighted amount, average deal size, stage mix, close-date risk when
close_date exists
When close_date exists, group forecast by month or quarter if useful. Flag overdue open deals where close_date is before the current date and the stage is not closed won/lost.
Workflow
- Read the CSV with a real CSV parser when tool access is available; otherwise carefully parse pasted tabular data.
- Detect and display the column mapping.
- Check for missing required fields and either ask for missing mappings or proceed with an explicit partial-report note.
- Normalize amounts, stages, owners, dates, and probability values.
- Assign stage probabilities from a probability column or the default table.
- Calculate raw and weighted pipeline.
- Produce the Markdown report.
- Run quality checks before returning.
Output Format
Return a Markdown report:
# Pipeline Report
## Column Mapping
| Standard Field | CSV Column | Status |
|---|---|---|
| deal_name | <column or unavailable> | <mapped / missing / inferred> |
## Executive Summary
- Total deals: <count>
- Valid financial deals: <count>
- Total raw pipeline: $<amount>
- Total weighted pipeline: $<amount>
- Average deal size: $<amount>
- Largest stage by weighted pipeline: <stage>
- Top rep by weighted pipeline: <owner or unavailable>
## Forecast by Stage
| Stage | Probability | Deals | Raw Pipeline | Weighted Pipeline | Weighted Share |
|---|---:|---:|---:|---:|---:|
## Rep Performance
| Owner | Deals | Raw Pipeline | Weighted Pipeline | Avg Deal Size | Notes |
|---|---:|---:|---:|---:|---|
## Close-Date Outlook
<Monthly/quarterly forecast, overdue deal notes, or "Close-date analysis unavailable because close_date was not provided.">
## Risks and Follow-Ups
- <Missing fields, unknown stages, overdue deals, concentration risks, or data quality issues.>
Keep the report concise and practical. Prefer tables for summary data and bullets for recommendations.
Quality Checks
Before returning, verify:
- The report shows the column mapping used.
- Missing columns are handled with a prompt or an explicit partial-report note.
- Weighted pipeline uses
amount * probability.
- Probability values are decimals internally and percentages only in display.
- Closed won is weighted at 100% and closed lost/disqualified at 0%.
- Unknown stages are not assigned arbitrary probabilities.
- Rep performance is included when
owner is available, and gracefully marked unavailable when it is not.
- The final answer includes pipeline summary, forecast by stage, and rep performance unless the CSV is missing fields required for those sections.
1---2name: pipeline-reporter-free3description: Generate pipeline reports from CRM CSV exports. Use when the user says "analyze pipeline", "generate pipeline report", "forecast from CSV", "sales report", or asks for a sales pipeline summary, weighted forecast, stage forecast, rep performance, opportunity analysis, or CRM export review from deal/opportunity CSV data. This is the single-report, no-CRM-connection version; for 12-month forecasting, CRM API connections, PDF export, and scheduled reports, use pipeline-reporter-pro.4license: MIT5---6# Pipeline Reporter78Generate a Markdown pipeline report from a CRM export CSV containing deal or opportunity rows. The report must include pipeline summary, forecast by stage, and rep performance.910## Accepted Input1112Accept a CSV file or pasted CSV data with opportunity-level records.1314Standard column mapping:1516- `deal_name`: opportunity or deal name17- `amount`: deal value18- `stage`: current sales stage19- `owner`: rep, account executive, or deal owner20- `close_date`: expected close date2122Common aliases may be mapped automatically:2324| Standard Field | Acceptable Aliases |25|---|---|26| `deal_name` | `deal`, `opportunity`, `opportunity_name`, `name`, `account_name` |27| `amount` | `value`, `deal_value`, `arr`, `mrr`, `revenue`, `forecast_amount` |28| `stage` | `pipeline_stage`, `sales_stage`, `status`, `deal_stage` |29| `owner` | `rep`, `sales_rep`, `account_executive`, `ae`, `deal_owner` |30| `close_date` | `expected_close_date`, `forecast_close_date`, `close`, `close_dt` |3132If the CSV uses different names, infer only obvious mappings and show the mapping used before the report.3334## Missing Columns3536Handle missing columns gracefully:3738- If `amount` is missing, ask the user for the value column before calculating totals or weighted pipeline.39- If `stage` is missing, ask the user for the stage/status column before forecasting.40- If both `amount` and `stage` are present but `owner` is missing, continue with pipeline and stage analysis, then ask whether to provide the owner column for rep performance.41- If `deal_name` is missing, continue with row counts and aggregate analysis using row numbers as deal identifiers.42- If `close_date` is missing, continue with current pipeline analysis and label date-based forecast sections as unavailable.43- If multiple plausible columns exist for a required field, ask the user to choose the mapping instead of guessing.4445Do not fabricate missing values. Make partial reports explicit with a short `Missing / Assumed Fields` section.4647## Stage Probabilities4849Use explicit probability weights for weighted pipeline. If the CSV includes a probability column such as `probability`, `probability_percent`, `win_probability`, or `weighted_probability`, use it after normalizing percentages to decimals.5051If no probability column exists, apply these default stage weights:5253| Stage Contains | Probability |54|---|---:|55| `closed won`, `won` | 100% |56| `commit`, `contract`, `legal`, `procurement`, `negotiation` | 80% |57| `proposal`, `quote`, `pricing` | 60% |58| `qualified`, `solution`, `demo`, `evaluation`, `technical validation` | 40% |59| `discovery`, `needs analysis`, `meeting scheduled` | 25% |60| `prospecting`, `lead`, `new`, `identified` | 10% |61| `closed lost`, `lost`, `disqualified` | 0% |62| Unknown or unmatched stage | 0% until the user confirms a probability |6364For unknown stages, include the stage in `Needs Confirmation` and ask the user for its probability if a precise weighted forecast is required.6566## Calculations6768Parse `amount` as currency/number by removing currency symbols, commas, and whitespace. Treat blank or unparsable amounts as missing and exclude them from financial totals, while counting the affected rows.6970Weighted amount formula:7172```text73weighted_amount = amount * probability74```7576Where probability is a decimal from 0 to 1. Examples:7778- `$10,000` at `60%` = `$6,000`79- `10000` at `0.6` = `$6,000`80- Closed won = amount * 1.081- Closed lost = amount * 0.08283Required report calculations:8485- Total raw pipeline: sum of valid `amount`86- Total weighted pipeline: sum of `weighted_amount`87- Deal count: total rows and valid financial rows88- Average deal size: total raw pipeline / valid financial rows89- Stage forecast: count, raw amount, weighted amount, average deal size, share of weighted pipeline by stage90- Rep performance: count, raw amount, weighted amount, average deal size, stage mix, close-date risk when `close_date` exists9192When `close_date` exists, group forecast by month or quarter if useful. Flag overdue open deals where `close_date` is before the current date and the stage is not closed won/lost.9394## Workflow95961. Read the CSV with a real CSV parser when tool access is available; otherwise carefully parse pasted tabular data.972. Detect and display the column mapping.983. Check for missing required fields and either ask for missing mappings or proceed with an explicit partial-report note.994. Normalize amounts, stages, owners, dates, and probability values.1005. Assign stage probabilities from a probability column or the default table.1016. Calculate raw and weighted pipeline.1027. Produce the Markdown report.1038. Run quality checks before returning.104105## Output Format106107Return a Markdown report:108109```markdown110# Pipeline Report111112## Column Mapping113114| Standard Field | CSV Column | Status |115|---|---|---|116| deal_name | <column or unavailable> | <mapped / missing / inferred> |117118## Executive Summary119120- Total deals: <count>121- Valid financial deals: <count>122- Total raw pipeline: $<amount>123- Total weighted pipeline: $<amount>124- Average deal size: $<amount>125- Largest stage by weighted pipeline: <stage>126- Top rep by weighted pipeline: <owner or unavailable>127128## Forecast by Stage129130| Stage | Probability | Deals | Raw Pipeline | Weighted Pipeline | Weighted Share |131|---|---:|---:|---:|---:|---:|132133## Rep Performance134135| Owner | Deals | Raw Pipeline | Weighted Pipeline | Avg Deal Size | Notes |136|---|---:|---:|---:|---:|---|137138## Close-Date Outlook139140<Monthly/quarterly forecast, overdue deal notes, or "Close-date analysis unavailable because close_date was not provided.">141142## Risks and Follow-Ups143144- <Missing fields, unknown stages, overdue deals, concentration risks, or data quality issues.>145```146147Keep the report concise and practical. Prefer tables for summary data and bullets for recommendations.148149## Quality Checks150151Before returning, verify:152153- The report shows the column mapping used.154- Missing columns are handled with a prompt or an explicit partial-report note.155- Weighted pipeline uses `amount * probability`.156- Probability values are decimals internally and percentages only in display.157- Closed won is weighted at 100% and closed lost/disqualified at 0%.158- Unknown stages are not assigned arbitrary probabilities.159- Rep performance is included when `owner` is available, and gracefully marked unavailable when it is not.160- The final answer includes pipeline summary, forecast by stage, and rep performance unless the CSV is missing fields required for those sections.