An Airtable base with company, value, stage, and owner columns is most of a CRM already. What it doesn't have is a safe way to let a sales team change it. This build wraps the base in one Task, mounts that Task on an MCP server, and gives a rep a chat window instead of a login to the table.
What's covered
- A single dispatcher method with modes for
show,open,pitched, andlost, so every read and write goes through a defined action - Mounting the Task on an MCP server and configuring it in a Claude project
- Working the pipeline in plain language: creating a deal, moving it to pitched, recording a loss with a reason, and watching the Airtable rows change alongside the chat
A rep with edit access to Airtable can change any cell in any row, including the ones nobody asked them to touch. A rep with these four modes can list the pipeline, open a new deal, move it to pitched, and close it as lost with a reason. That is the whole vocabulary.
Airtable is in the demo because the rows are visible on screen while the chat runs. The same Task would work against Postgres, MySQL, or anything else reachable from Python. Since the modes are exposed as MCP tools, the same CRM is available from an Aisle project, ChatGPT, or Claude Code without building it again.
Video transcript
Let's build a really simple CRM based on tasks and air table. You could do this with any database, Postgres, Azure, MySQL. I'm going to use Air Table because it lets us see our data right on our demo screen. So, as you can see, I have a list of companies. These are deals that are in progress in our pipeline.
Each has a value, a stage, an owner, and for those that were lost, we have a reason. Here's what our task looks like. The important part is down here. We have this main dispatcher method called CRM. And it has different modes.
It is a show mode, an open mode, pitched one, and lost for updating existing deals. These are the actions that I can take on the deals. And we're going to expose these in a chat so that someone on a sales team can interact with them using a chat. So I've mounted this tool on an MCP server using IS and I've configured it in a cloud project. So in this project I can actually just start interacting with this tool by chatting with natural language.
I can say what's in my CRM. It's going to access my server. It's going to pull the tools and it's going to query it for the data. All right, here it is. So this should match the data that we saw in the air table.
Let's go ahead and create a new deal. I want to create a new deal. Uh the company is Alliant. It's 42K and Marcus is the owner. So, it's going to access my tools and it's going to call that open tool to create a new row in our air table.
Let's go back and check our air table. Indeed, here is that alliant row Marcus 42,000. It's initialized into the lead state. Okay. Uh so let's update it and say actually that deal has been pitched again.
It's going to call my tool. It's now pitched again. We snap back to our air table. It is pitched. So, let's say unfortunately Marcus lost the deal because he was late from lunch.
So it understands that it's going to write to our air table and it confirms and we say yes that is the reason recorded again. Let's check our air table. There it is. Mark it was late from lunch. So this basically lets us give the users access to this database to make changes to it but in a safe way.
We're not giving them cartel launch access to the table. They can't come in and just edit anything. They must use the tools and those tools we're exposing in this case in a clawed chat. You could also use these tools from projects within Aisle. You could use this in chat GPT.
Uh because they are published or exposed on an MCP server, you could even bring them into cloud code and use them locally.