Rules you can read, and the math behind the forecast.
The drawer's panel is labeled AI, but nothing in it is a model. Every number on this page is a constant in Envoy's code today, so you can check what a score means before you trust it.

The health score
A score from 0 to 100, rounded, stored on the deal and shown as a colored chip on its card: 70 and above is green, 40 to 69 amber, below 40 red.
| Signal | Most points | How it is scored |
|---|---|---|
| Stage probability | 30 | The stage's win probability, as a share of 30 points. A 50 percent stage gives 15. |
| Last activity | 25 | 25 if within 3 days, 18 within 7, 10 within 14, 3 within 30, otherwise 0. |
| Amount of activity | 15 | 15 for 10 or more logged activities, 10 for 5 or more, 4 for at least 1. |
| Close date | 15 | 15 if the close date is 0 to 60 days away, 8 if 61 to 120, 3 if further out or more than 30 days past, and 0 if 1 to 30 days past. |
| An amount | 5 | 5 if the deal has an amount above zero. |
| People | 10 | 5 if the deal has an owner and 5 if it has a primary contact. |
The score is recomputed every six hours and whenever you press Recompute in the drawer.
Risk flags
Four flags, each a plain test. The first three look only at open deals. A flag that stops being true is cleared and kept with the time it cleared.
| Flag | Fires when | Severity |
|---|---|---|
| ghosted | No activity in 14 days, or none at all. | High if the deal has never had activity, otherwise medium. |
| stage_rot | The deal has sat in its stage for as long as the stage's limit. | Medium at the limit, high at twice the limit. A stage with no limit never fires. |
| close_date_slip | The close date has passed. | Medium for up to 14 days past, high beyond that. |
| no_primary_contact | No contact on the deal is marked primary. | Low. |
Flags are recomputed hourly and when you press Recompute in the drawer. The time in stage is measured from the deal's last update.
Next best actions
Up to five suggestions, picked by these rules in this order. Each comes with its reason.
- No primary contact: identify a primary contact.
- No activity yet: send a first-touch email. Seven or more quiet days: re-engage.
- No amount: capture a deal amount, because the forecast needs it.
- No close date: set an expected close date.
- A deal in a stage named Proposal: follow up within 48 hours.
Suggestions are regenerated every four hours. A language-model client exists in the code, and nothing calls it yet.
The forecast
The Forecast page works over the open deals of one pipeline whose close date falls in a window. Deals with no amount or no close date are left out.
| Weighted | Each deal's amount times its stage probability, added up. |
|---|---|
| Best case | The full amount of every deal in the window. |
| Commit | The total of the commits reps have submitted. It reads $0 until someone submits one. |
| AI forecast | The weighted number times 1.1. The page calls it a 10 percent uplift in mock mode. It is arithmetic, not a model. |
The page computes the current calendar month when you press Compute forecast, and a background job refreshes it hourly.
What these rules are
These rules are a starting point, not a model. The labels in the app say AI in places where the code runs fixed rules and arithmetic, and this page is the plain account.
Questions about this tool?
Write to Renkara Media Group and a person will answer.