CRM deals, targets spreadsheet and billing
Same scope, new MRR by type and a weekly snapshot
Target vs. actuals, forecast and gap
Revenue meeting, team TV and AI agent
What it solves
- Target and actuals read in the same scope, without doubling the target.
- New revenue split into new logo, upsell and one-off.
- This week's forecast explained against last week: in, won, slipped, out.
Business questions it answers
Ask your agent these questions once the case is live.
What you need
- CRM connected to Nekt with recurring value, expected close date and forecast category on each deal
- Targets in a spreadsheet or table, with period, scope, revenue type and value
- The owner x channel or team table, maintained by the manager
What you get
- A target vs. actuals table by scope and period, with gap and attainment
- The weekly forecast snapshot with each deal's movement
- Daily target and required pace for the team TV
- An AI agent that answers about target and forecast with the same rule
Where to activate
Target vs. actuals by scope and the week's movement, read from the frozen snapshot.
Month-to-date attainment by rep and required pace in business days, updated through the day.
Answers how we are tracking against target and what changed in the commit, without summing scopes or mixing in upsell.
The rules are business rules and fit in one conversation with the manager. The care point is starting the weekly snapshot early, because the CRM doesn't keep the history of forecast fields. The detailed view has the business rules, the pitfalls and the acceptance test. Or send everything straight to your agent with the Nekt MCP.
The total target and the cuts by channel and product sit on the same spreadsheet rows, and whoever sums without a filter triples the target. Actuals mix new logo, upsell and implementation, and the deal value is sometimes the whole contract, not the MRR. The weekly forecast is redone by hand because the CRM only keeps the current state, and a deal pushed to the next quarter simply vanishes from the count.
How it is usually done, and the rule
Each row is a mistake that already happened in practice.
Load the target into a long table: period, scope (total, channel, team, rep, product), scope key, revenue type and value. Total and cuts live in the same table: always sum filtering one scope. Attainment is computed in the pipeline, never by the agent at question time. On load, treat the spreadsheet as a source that changes format: month columns often change every year.
Use the monthly recurring value of the won deal, not the total contract value: on an annual deal, the total is 12 times the MRR. Classify each win as new logo, upsell or one-off (implementation, one-time service). One-off stays out of the MRR target. If there is a target per type, attainment is per type too, and overall attainment is a declared weighted average (for example, 80% new logo and 20% upsell).
A deal in the new-business funnel whose company is already a customer, by the company flag in the CRM or by self-declaration on the deal itself, is expansion, not new logo. Generate the list of these cases every week so the manager can fix them before close.
A won deal's period is the won date's period; an open deal's is the expected close date's. An open deal with no date, or with an overdue date, doesn't go into the current period: it goes to an overdue line for review. CS, renewal, partner and legacy pipelines stay out of the new-business forecast.
If the team flags deals as commit and upside, show commit, upside and weighted in their own columns, never summed. Filter status open or won before summing: a lost deal that still carries the commit flag, because nobody cleared the field when it was lost, comes out of the count.
Save the forecast every week, because custom CRM fields (such as the forecast category in Pipedrive) have no change history. Compare two snapshots and classify each deal: in, won, slipped, out or MRR changed. Apply the period filter to both snapshots: filtering only the current one makes a deal that moved quarters vanish instead of showing up as slipped.
Map each owner to a channel or team through a table maintained by the manager, with start and end dates, and normalize names before joining. A joint deal between two channels counts for each on its own row and once in the total. CRM loads are usually daily: an owner change made in the afternoon only shows up the next day.
To track mid-month, spread the monthly target across days with weights per week and the business-day calendar, preserving the month's total and with no day negative or zeroed by compensation. If the team agrees on an intermediate checkpoint (a fraction of the target by a date in the month), it goes in as a written rule. Compare with actuals through yesterday, in the São Paulo time zone.
For finance, new MRR starts when the first invoice is paid. Show actuals by won date (sales view) and by first charge (finance view), with the difference between the two. In self-serve products, the charge can come before the deal is marked won; in sales with implementation, weeks later.
Deals in another currency go to the reporting currency at a declared rate (a fixed budget rate, for example) kept stable across weeks. Prefer the account-currency value field the CRM already computes (amount_in_home_currency in HubSpot) when the CRM rate is the one agreed with finance.
Weekly forecast movement
Comparing this week's snapshot with last week's, with the same period filter on both.
Definitions
Pitfalls that already happened
The total target, the channel target and the product target sat on the same rows, and a dashboard summed them all. The team looked a third of the way there when it had already hit the target.
Always sum filtering one scope.
Lost deals kept the commit flag because the field wasn't cleared on loss, and the commit total was inflated.
Filter status open or won before summing the forecast category.
The weekly comparison applied the quarter filter only to the current snapshot, and deals pushed to the next quarter disappeared without showing up as slipped.
Apply the same period filter to both snapshots.
Deals from companies that were already customers came in through the new-business funnel and were counted as new logo, covering a gap that belonged to acquisition.
Weekly list of new-business deals at companies that are already customers.
A deal reassigned in the afternoon stayed under the old owner until the next day's load, and the forecast follow-up went to the wrong person.
Show the last load time and check the owner live before acting.
Deals from an old pipeline nobody worked anymore added to the quarter's open pipeline and gave coverage that didn't exist.
List the pipelines that go into the forecast and exclude legacy.
Acceptance test
The case is done when every item passes.
- For each period, the sum of channel-scope targets equals the total target, or the difference shows on an unallocated line.
- The month's new MRR actuals equal the sum of MRR of new-logo deals won in the CRM by won date (zero difference).
- No lost deal is in commit, and no deal shows up in two movement categories in the same week.
- In + won + slipped + out + changed + no change cover every deal in both snapshots.
- The month's daily targets sum to the monthly target, and no day has a negative target.
Agent package
Paste into Claude, ChatGPT or any client with the Nekt MCP connected.
Forecast and target vs. actuals - Forecast revenue is MRR (monthly recurring value), not total contract value. One-off (implementation, services) stays out of the MRR target. - Revenue types: new logo, upsell, one-off. Upsell never counts toward the new-logo target. - The targets table has a scope (total, channel, team, rep, product). Always sum filtering one scope. Never sum different scopes. - Attainment and gap come computed from the table. Don't recompute them. - Won deal: period of the won date. Open deal: period of the expected close date. Overdue or empty date = overdue, out of the period. - Only acquisition pipelines go into the new-business forecast. Out: CS, renewal, partners, legacy. - Commit, upside and weighted are separate columns. Never sum them. Commit only from open or won deals. - Weekly movement: in, won, slipped, out, value changed, no change. - Sales view = won date. Finance view = first paid charge. Say which one you are using. - Reporting currency: <currency>, rate: <declared rate>. - CRM data is from the last daily load. Give the load time when the question is about the current owner. Per-client exceptions: - <client>: overall attainment = <weight>% new logo + <weight>% upsell. - <client>: a joint deal with a partner also credits channel <channel>.
Build the "Forecast and target vs. actuals for new MRR" case in my Nekt workspace following the rules at https://academy.nekt.com/en/industrias/saas/forecast-meta-realizado.md. 1) Find the source tables and confirm the columns the rules use. 2) Create a transformation at the stated grain applying every rule. 3) Run the acceptance test and show me the result of each item. 4) Create the case's context document in the workspace, leaving my clients' exceptions open for me to fill in.
Variations
Add to opening MRR the forecast new sales, the forecast expansion from the CS pipeline and the forecast churn from the retention pipeline, each in its own column.
Quarter target and actuals in USD at a fixed declared rate, for companies reporting to investors outside Brazil.
A 0 to 100 index per open deal, with qualification, recent activity and reschedules, for the manager to review the commit.