Cohesity · AI Sales Enablement Intern
An AI agent reports on sales-training completion on its own, and only messages a real person when it's confident enough to be right.
Hi Jordan,
You're currently at 60% complete on Security Fundamentals.
Please finish by Friday, June 14.
Sent automatically · confidence: high
The problem
Enablement specialists manually pulled training-completion data every week, emailing reps about their own progress on courses they'd been assigned, and emailing managers about their team's reps' progress on those same courses. My assignment was simple on paper: replace that manual process with automation.
Instead of building the obvious version right away, I first interviewed the specialists doing this work today. Two things they said changed how I approached the whole design:
Those two things shaped almost every decision that followed.
The research
Interviews with the specialists doing this work today, plus a column-by-column audit of the source data rather than trusting what its field names claimed.
The strongest pushback wasn't about what the system could do. It was about trust in something unattended.
A single company-wide send schedule would spam the weekly programs and leave the longer ones silent for weeks.
Specialists' own knowledge of who really owned what was more accurate than the system of record.
People feared one wrong message far more than the system occasionally saying nothing at all.
Key decisions
Not features that seemed nice to have. Every gate and threshold below answers a specific worry from the research above.
| Decision | Why |
|---|---|
| One lookup table, not five workarounds | A single, specialist-verified source of truth beats patching each data gap on its own. One thing to explain, audit, and hand off. |
| Confidence score: High or Low, no Medium | A gray zone quietly puts a human back in the loop every time it fires. Two states force a real decision up front. |
| Low confidence escalates, it doesn't fail silently | Nothing sends to any rep or manager. The course owner gets the exact reason instead of a vague failure. |
| Per-course cadence, not one shared schedule | The weekly check only decides when the agent looks. A separate cadence per course decides whether it actually sends. |
| A single-switch test mode for rollout | Every message routes only to the designer until the content earns trust. Going live for real is one flag, not a rebuild. |
| Deterministic message text, not AI-generated wording | Predictable, auditable text comes before a warmer tone. A wrong sentence in a manager's inbox can't be unsent. |
How it works, end to end
Every run wakes up on a fixed schedule, walks every course that's due through the same pipeline below, and logs what happened before going back to sleep. Nothing carries over from the run before it.
Shipping without an incident
Because the agent's entire value is acting without a human checking every message, the path to live had to make a bad send structurally impossible, not just unlikely.
Specialists manually tracked training completion and messaged people about it, by hand, every week, for every course.
The pushback was never about capability. It was about trust in a system that acts without anyone checking each message first.
Decision logic that scores its own confidence, only speaks when it's sure, and tells a human exactly why when it isn't.
What this taught me
"The interesting question isn't whether this can be automated. It's what the system needs to refuse to do, and how loudly it needs to say so when it refuses."
Next, if this continued: letting the system draft its own new-course setup requests instead of asking a human to type them in, and testing whether a warmer tone changes how people respond, once the plain version has earned enough trust to risk it.