Evergreen Gets Serious: Actions, Prompts, and Building Tools That Think With You
A month ago I built Evergreen, a personal CRM in Swift despite never having written Swift before. It worked well enough. I could track contacts, log interactions, and stay on top of follow-ups for the Atlanta AI dinners.
But as I actually used it, I started noticing the gaps. The data model was too simple. I couldn’t capture enough detail about what I was doing or what needed doing. And while the MCP integration let Claude help manage the data, it was pretty basic.
So I kept working on it. Still vibing, but more serious this time.
The Data Model Problem
The original version tracked contacts and interactions. That’s it. But relationships aren’t just a list of conversations. They’re a mix of things that happened and things that need to happen.
I needed two distinct concepts:
Interactions - Things that already occurred. Coffee meetings, emails sent, calls made. The historical record of how the relationship has developed.
Actions - Things I need to do. Send that intro, review the pitch deck, schedule the follow-up. The forward-looking commitments that keep relationships alive.
The difference matters. Interactions are closed, immutable history. Actions are open, mutable intentions. Mixing them into one feed was making it hard to see what actually needed my attention.
So now there are three tabs: Contacts, Actions, Interactions. Each view is purpose-built for what it needs to show. The Actions tab became my actual todo list for relationship management: dates, priorities, descriptions, all linked back to the relevant people.
Keyboard Shortcuts for Speed
The MCP integration is great for big updates. After a dinner, I can tell Claude who I met and what we discussed. But for minor updates I wanted something faster.
I added keyboard shortcuts for everything. Command+I to log an interaction. Command+A to create an action. Command+F to search. Quick capture without breaking flow.
For fast logging, the shortcuts are perfect. For maintenance and enrichment, Claude does the work. The idea of using the AI assistant as a single pane of glass for everything is alluring, but I find myself more like 50/50. For quick lookups and modifications I’m using the app, for creating new contacts and populating metadata (more on that later), I’m using Claude.
For complex questions (“who would be a fit for XYZ?”), it’s Claude all day.
MCP Prompts: The Missing Piece
This is where it got interesting. I’d written about MCP prompts before: those reusable templates that servers can expose to AI clients. I knew they were powerful, but hadn’t found the right use case.
Evergreen turned out to be the perfect fit.
I added three prompts to the MCP server:
Evergreen Context - Loads all my contacts, recent interactions, and pending actions into the conversation. Gives Claude the full picture of my relationship graph without me having to explain anything.
Enrich Contact - Takes a contact name populates a prompt with everything we already know about them from Evergreen, and then uses Claude’s web search to fill in their background further. Company info, recent news, social profiles. Turns a bare name into a rich profile automatically.
Research Contact News - Finds recent news and updates about a contact or their company. Keeps me current without manual Googling.
Here’s how it works in practice. I meet someone new at a dinner. I use Command+I to quickly log the interaction with basic details. Later, I open Claude Desktop and run the “Enrich Contact” prompt with their name. Claude searches the web, finds their LinkedIn, their company’s latest funding round, recent blog posts. Then it writes all that information back into Evergreen through the MCP tools.
The prompts can also propose actions. “Hey, based on my conversation with Sarah about their fintech startup, what follow-ups make sense?” Claude looks at the context, suggests introducing her to someone in my network who’s in payments, and creates the action item automatically.
It’s like having a really good executive assistant who knows everyone in my network and pays attention to what matters.
The Flexibility Advantage
What makes this system work is how the pieces fit together:
- Swift app for fast local access and keyboard-driven capture
- MCP tools for programmatic data management by Claude
- MCP prompts for sophisticated workflows that combine web research with local data
- Shared SQLite database that both runtimes access without friction
None of these pieces are complicated. The app is straightforward SwiftUI. The MCP server is basic CRUD operations plus a few prompts. But together they create something that feels surprisingly capable.
I can work at whatever level fits the moment. Quick keyboard shortcut for logging a call. Conversational prompt when I need to prep for a meeting. Full context dump when I’m planning the next dinner’s invite list.
What I Learned About Building Tools
This project reinforced something I’ve been thinking about: the best personal tools aren’t the ones with the most features. They’re the ones that fit how you actually work.
Evergreen works because it meets my needs and nothing more, it’s got an audience of 1. It doesn’t attempt to replace or compete with something like Anthropic, it’s just a small system of record with a clean integration.
I’m not saying everyone should build their own CRM. But I am saying that when you build tools for yourself, you can make different tradeoffs than commercial software. You can optimize for your exact workflow instead of trying to serve everyone.
What’s Next
I’ve been using this version for a couple weeks now and it’s stuck. The prompts especially have changed how I think about relationship management. Instead of “I should check in with X,” it’s “Let me ask Claude who I should check in with based on how long it’s been.”
If you’re building your own tools with AI assistance, I’d recommend thinking about MCP prompts. They turned Evergreen from a simple database with API access into something that genuinely helps me think about my relationships differently.
And that’s the whole point of building your own tools: they should make you better at the things you care about.
One More Thing
It is personal software and I don’t plan on straying from that, but I’ve got it up on TestFlight for some friends that have similar needs as I do, if you want to try it out, drop me a note.
Subscribe to the Newsletter
Get the latest posts and insights delivered straight to your inbox.