Vigil — Project Story
Inspiration
Every SaaS company has the same quiet crisis: customers don't cancel loudly. They go silent. Logins slow down. Tickets pile up unanswered. Seats go unused. And by the time anyone on the team notices, the customer has already mentally left — the renewal is just paperwork.
Account managers are juggling too much. Nobody has time to watch every behavior from every account. So churn happens not because the product failed, but because nobody caught the signal in time.
Vigil is the employee who doesn't stop watching.
What it does
Vigil monitors customer accounts continuously against a weighted churn signal model. When an account's risk score crosses a threshold, Vigil drafts a personalized save email from the account manager and surfaces it for one-click approval. No manual review of dashboards. No weekly check-ins. No accounts slipping through the cracks.
The scoring model weighs four signals:
$$\text{Risk Score} = w_1(\text{login gap}) + w_2(\text{unresolved tickets}) + w_3(\text{seat downgrade}) + w_4(\text{NPS penalty})$$
Where accounts scoring above 75 are flagged as critical and surfaced immediately.
How I built it
- Frontend: React + TypeScript + Tailwind CSS, built with Vite
- Backend: Node.js + Groq API
- AI: Llama handles the email drafting — given the account's full signal breakdown, it writes a warm, personal save email that doesn't sound automated
- Email: Gmail MCP sends the approved email directly from the account manager's inbox
- Data: Rule-based churn scorer runs against a CRM account store
The architecture is intentionally simple: a scoring engine that never lies, an AI that writes and sends like a human, and a human who approves in one click for low-risk and no-risk clients.
Challenges
Making the email sound human. The hardest prompt engineering problem wasn't detecting churn — it was making Claude write a save email that didn't feel like a save email. Early drafts were obviously automated. The breakthrough was providing the account manager's name, the customer's specific signals, and explicit instructions to never mention churn, risk scores, or retention. The email should read like a colleague who happened to notice.
The demo problem. Any agent that "monitors over time" is hard to demo in 60 seconds. I solved it by pre-seeding realistic account data representing six months of behavioral history so judges could see the full picture live.
Scope discipline. The temptation was to build Slack alerts, a dashboard, integrations. I cut all of it. One flow, done well: see the risk, read the draft, send it if it has not been already.
Built With
- anthropic-claude-api-(claude-sonnet-4-20250514)
- dotenv
- express.js
- gmail-mcp
- node.js
- react
- tailwind-css
- typescript
- vite
Log in or sign up for Devpost to join the conversation.