viewof countryCode = Inputs.select(
countryData.map(d => d.code),
{
label: "Country",
format: code => countryData.find(d => d.code === code).name
}
)
viewof salary = Inputs.number({label: "Rep monthly salary", min: 0, step: 100})
viewof oncost = Inputs.number({label: "Employer on-cost rate (%)", min: 0, max: 100, step: 1})
viewof reps = Inputs.number({label: "Number of reps", value: 5, min: 1, step: 1})
viewof callsPerDay = Inputs.number({label: "Calls per rep per day", value: 12, min: 1, step: 1})
viewof minutesPerUpdate = Inputs.range([0.5, 5], {label: "Minutes per CRM update", value: 2, step: 0.5})
viewof workingDays = Inputs.number({label: "Working days per year", value: 220, min: 1, step: 5})Why the CRM is never up to date
At any real call volume, keeping the CRM current is a losing battle. A rep finishes a call, and the honest options are to log it properly or to take the next call. The next call almost always wins.
So the record drifts out of date. Agreed next steps are not written down. Follow-ups are missed. And you, the manager, are left without the one thing the CRM was supposed to give you: a clear view of what is happening with each client.
Sales call data entry, done automatically
Sales Signals writes the record for your reps. After each call, it logs what was discussed, captures the next step that was agreed, and creates the follow-up task, directly in your CRM.
Nothing changes in how your reps work, and nothing is left to memory or discipline. The record stays complete because keeping it complete is no longer a task anyone has to remember.
What changes
Your CRM reflects what actually happened, not what a rep remembered to type. Next steps are captured and followed up. And the time your team spent on data entry goes back into selling.
See it on your own calls
The clearest way to understand Sales Signals is to see what it surfaces from your team’s actual conversations. We will set it up with your existing phone system; there is nothing to install, and nothing changes for your reps.