The Claude GTM Playbook
- Joshua Nelson
- 1 day ago
- 9 min read
How I built an interactive company brain for our RevOps team
By Joshua Nelson · GTM Systems Administrator at Nooks
TL;DR
A small RevOps team (ahem, me and Claude) built an AI-query-able warehouse on top of all our active GTM tools. That's HubSpot, Mixpanel, DealHub, ChiliPiper, ReachDesk, plus a few others, running on Claude Code, Postgres, Redash, and a custom-built MCP server.
Total infrastructure cost lands around $200/month for a small business setup, $400/month for mid-market, and $500+ for enterprise. Depends entirely on how much data you're moving. This is compared to the $210k it would cost for a traditionally managed database engineer, platform, and maintenance. Quite a steal!
The thing that actually changed how the team worked wasn't the warehouse. It was the MCP server. Once that went live, the rest of the team started asking the data questions themselves.
▶ Quick Implementation: Pick one source system you currently use frequently. Export it to a CSV. Open Claude, upload the CSV and ask, "What patterns would I miss if I just looked at the totals?" That's Stage 1. You have begun using the system and it should take you less than five minutes! Some example source systems to try: HubSpot contact records, company records, CPQ, Subscription Manager/invoicing, Call Data, Incoming/Outgoing financial records, top of funnel info, marketing event/lead management, segmentation.
Claude GTM Playbook Contents
This playbook is broken into three stages. You don't have to do all three, and most teams will get plenty of value from Stage 1 alone.
Stage 1, the CSV Era. No infrastructure. No code. One export.
Stage 2, the Warehouse Era. For when CSVs stop scaling.
Stage 3, the Company Brain. When you want the whole team querying in plain English from Claude.ai.
Stage 1 · The CSV Era
aka "I just exported the thing and asked Claude about it."
I have this working folder where I can just say 'hey, I have these three CSVs' and have the robot sort it all out for me. New CSV, with new fields, joined correctly, in 20 seconds.
Case Study
What was needed:
A report for the finance team showing the current state of overdue invoices.
FinOps was doing this manually in Subskribe.
The Problem:
No way in Subskribe to see who the Account Owner or CSM was.
No native link between HubSpot and Subskribe.
No easy way to join those two reports without mastering Excel or Google Sheets.
What I did:
Exported a HubSpot company segment and an invoice report from Subskribe.
Dropped them into Claude with this prompt: "I need a new CSV that shows me which Accounts currently have overdue invoices and who their CSM and Account owner are."
Claude figured out exactly what I needed.
And generated a CSV report.
Took about 5 minutes total.

▶ CTA: Try this
Pick the one report your team asks for every Monday. Export the underlying data. Drop it in Claude and ask, "What patterns would I miss if I just looked at the totals?" That's your Stage 1.
Checklist:
Pick one recurring report
Export the raw data, not the summary
Ask Claude one open-ended question, not a closed one
Share the answer in your team channel and see who asks the next question

Final "Overdue invoices with owners" CSV rendered as a table inside Claude
Stage 2 · The Warehouse Era
CSVs are great, but not when I need to sync two systems automatically.
We have hackathons every quarter where we go in and try to make fun, useful, things. And I thought, well, you know what? We have all this technology now. Never made a data warehouse before, but how hard can it be? Turns out, with Claude, not that hard.
The stack I landed on
Tool | Role | Why this one |
Postgres | Warehouse | No third-party database. We own all the data and have complete control over what goes in and what comes out. |
Redash | SQL and API layer | Open source, hosted on Render, so I'm only paying for infrastructure cost. Sits in the same environment as the DB. Full API access for query building and automations. Can embed automated query reports into HubSpot dashboards alongside the native HubSpot reporting. |
Windsurf (powered by Claude Code) | Build environment / control center | IDE that holds all my API keys securely, plus the MCP servers and working folders. Complete access to everything in one prompt box without posting sensitive keys online. Can also run queries and save them locally for quick syncing and one-offs. |
ETL Cron Jobs (hosted in Render) | Sync and automation | Syncs all GTM tools to the database on a schedule, so the data is always current. |
Total infrastructure cost: roughly $200/month for SMB, $400/month for mid-market, $500+ for enterprise. Depends on how much data you're storing and moving. These are approximate ranges, and they don't reflect what Nooks pays.

What changed
I can build complex reporting in about 5 minutes from the actual sources. Since everything lives in a database now, we can cross-join across systems, use real SQL logic, and export visualizations and tables. The old answer of "oh, can't do that in HubSpot reporting" turns into "oh sure, here you go" in a few minutes. No engineer, no data analyst, no DBA needed.

▶ CTA: Stage 2
If Stage 1 worked and you're hitting its ceiling, here's the one-weekend version.
Checklist:
Spin up a free Postgres on Render (about 30 min)
Pipe one source system in via VS Code, Windsurf, or Cursor using Claude Code MCP or API. (Create a .env for security. Claude Code can help you set this up.)
Install a hosted Redash app from redash.io, or have Claude Code help you build your own instance if you're feeling spicy. Point it at your new DB.
Write your first three queries with Claude Code in the IDE.
Stop. Don't add a second source until the first one is boring.
Shadow your best analyst, even if that's you. Before you write a single query, watch what question your team actually asks on Monday morning. Build for that question, not the dashboard you imagined.
Stage 3 · The Company Brain
Then I built an MCP server and the team stopped needing me.
The rest of the team wanted to use it. And I'm like, well, I don't want to get them stuck on setting up Windsurf, getting the IDE. Wouldn't it be nice if you could just do it through the UI, like Claude.ai, without having to use Claude Code? So I started investigating creating my own MCP server. Turns out that's also really easy with technology now."
What is an MCP:
MCP stands for Model Context Protocol. It's the thing that lets Claude reach into your tools (your warehouse, your CRM, your custom scripts) and actually pull or do things, instead of just talking about them. Think of it as giving Claude hands.
How I built mine
I used Claude Code to build the whole thing.
The technical version: the MCP server is a Node.js app using the official @modelcontextprotocol/sdk, Express, and Zod for input validation. It sits in front of our Redash instance, which is the query layer on top of our Postgres warehouse, DB_ULTRA. Claude Code wrote the server, I steered it, and it was running on Render within an hour. The server exposes 8 tools that let Claude browse our schema, run ad-hoc SQL, execute saved Redash queries, and navigate dashboards. I also built a read-only variant for the broader team that validates every query and blocks anything that isn't a SELECT. Connecting it to Claude.ai was just adding the server URL as a remote MCP integration with a token for auth. All they need is the URL and an OAuth login that my Render instance handles.
# MCP Tool Definitions, db-ultra-redash
execute_sql Run ad-hoc SQL against the warehouse and get results back
describe_schema Browse tables and columns (filter by schema: hubspot, mixpanel, etc.)
list_queries Search saved Redash queries by name
execute_saved_query Run a saved query by ID, with optional parameters
get_query Get full details of a saved query (SQL, schedule, tags)
list_dashboards List all Redash dashboards
get_dashboard Get dashboard details including widgets and linked queries
list_data_sources List available database connections
Claude.ai mid-conversation calling the MCP, with the prompt "Can you please run a Redash query that shows how many Closed Won Meetings my Enterprise AE team has closed..." and the "Execute sql" tool indicator
What the team actually asks it
These are real questions RevOps at Nooks asks the company brain now.
Prompt 1, Sales Manager:
"Show me all deals that closed-won this quarter with ARR over $30K. For each one, tell me who the AE was, which BDR sourced it, and how many Gong calls happened before close. Sort by ARR descending."
A manager asks this in plain English. Behind the scenes, Claude joins hubspot.deals to gong.calls on the deal ID, filters by close date and stage, and returns a table. The manager doesn't have to know any of that.
Prompt 2, SDR Leadership:
"Which reps had the highest connect rate in the last 14 days but the lowest meeting conversion? I want to find people who are getting through but not converting, so I can coach them on the conversation, not the dial."
This pulls directly from Nooks reporting. Connect rates, meeting conversion, call volume, all in one table. Specific question, actionable answer, and the person asking it doesn't need to know the table exists.
Prompt 3, Cross-system join (Nooks plus HubSpot):
"For each SDR on the team, compare their Nooks calling activity over the last 30 days to the number of deals their sourced contacts are associated with in HubSpot. Are our highest-volume callers actually generating pipeline?"
This is the one that used to be a ticket to the data team. Claude joins Nooks reporting (calls, connects, meetings) to hubspot.deals (pipeline, BDR attribution) through hubspot.contacts. It's the activity-versus-outcomes question every SDR leader has, and nobody wants to wait two weeks for it.
"You can literally just ask the company questions. It's a company brain." - Joshua
▶ CTA: The MCP weekend
Checklist:
Read the MCP quickstart for Node.js or Python (or have Claude Code help out). About 20 min.
Define 3 tools, not 30. Start narrow.
Connect it to Claude.ai for one teammate. Watch them use it for a week.
Only then roll it out wider.
Set a Friday calendar reminder to review what people actually asked it. Those questions become your next 3 tools.
The Upkeep
"But doesn't maintaining this eat your whole week?"
"There's always a little upkeep. Somebody will be like, hey, this doesn't seem quite right, and I'll go in and tweak it. But it's just general maintenance, same as I'd do with any other process. Even if I was just HubSpot adminning, there's always going to be something. For the most part, it pretty much runs itself. The ETLs run every couple hours."
What runs on a schedule:
HubSpot sync, hourly
Nooks DB, every morning
Mixpanel, every morning
Pre-built manager reports refresh in Redash every 30 minutes, embedded into HubSpot
"The big pushback was, we don't want another dashboard. All our reports are here. So I figured out you can take Redash reports, refresh them, and embed them with a URL into the HubSpot dashboards themselves."
Five Takeaways
You don't need a data team to ask data questions anymore. What you need is someone who knows what to ask. That used to be the cheap part of the job. It's the expensive part now.
Start with one source. Stage 1 is a single CSV and a single prompt. If you can't make that part useful, more infrastructure won't save you. If you can, the rest is just scaling what already works.
Cheap infrastructure plus Claude Code goes a long way for a small team. I'm not saying this replaces a real BI team at a 5,000-person company. But it covered ours at Nooks for a couple hundred bucks a month.
Build into the dashboard your team already opens. Nobody wants a new tab. When I started embedding Redash reports inside HubSpot dashboards, adoption went up immediately, because nothing in their workflow had to change.
The MCP server is the part that actually changes how your team works. The warehouse is for you. The MCP is for everyone else. That's when people stop pinging you for reports and start asking the data themselves.
Nooks Intelligence — AI Assistant

While I hacked this database together for our team's hackathon, Nooks ended up mirroring what I was doing for production and recently launched a new tool called AI Assistant.
Same idea, but you don't have to build it! The Nooks AI Assistant sits inside the rep workspace and pulls from call transcripts, CRM, LinkedIn, and web search to answer questions about an account on the spot. Things like "what's the outbound motion for this company," "who's the decision maker based on previous engagement," "write me an outbound email to this prospect in my style."
Same pattern I built for our internal warehouse, except it runs on top of your live signals and engagement data instead of your warehouse, and your reps don't need an MCP server, a Postgres instance, or a me. If you want to skip the build, this is a tool that will allow you to do so.

▶ Want to see it live?
Get a Nooks demo → — the productized version of everything above
Connect with Josh on LinkedIn → — happy to nerd out about your stack
Joshua is a HubSpot Technology Partner who manages the revenue operations systems at Nooks. He connects cross-platform tools and maintains the HubSpot infrastructure to keep data accurate and processes efficient for the Sales, Marketing, and Customer Success teams. By reducing technical hurdles, he helps sales representatives focus on their core work. Outside of his technical roles, Joshua lives in San Francisco with his partner and spends his free time producing his own music albums. Production for Nooks/the Signal by Amanda Grutza / thirdspaced.com