In short
Block’s open-source AI agent “Goose” (LLM + tools via MCP) and how it enables end-to-end workflows across data analysis, engineering, and business operations—locally—plus examples of publishing dashboards and creating Square product catalogs/payment links.
Guests
Jackie Brosamer (Block; uses Goose for practical analytics; emphasizes self-serve insights for finance/sales/non-experts). Brad Axen (Block; builds MCPs daily; demonstrates integrating Goose with Square and extending workflows like emailing payment links).
Key claims
Goose is “agnostic” by connecting capabilities; MCP is the protocol that lets agents interact with real systems; open-sourcing accelerates ecosystem/tooling and supports mixing models; organizational adoption comes from both bottoms-up (salespeople) and leadership-driven standardization; best practice is automate “toil” and treat failures as learning.
Notable examples
Using Goose + Pandas to analyze a farm CSV (top revenue items like berries; busiest days like Thursdays; recommendations). Goose generates Plotly HTML dashboards and can publish static sites internally. Brad uses a Square MCP to import messy CSV data into a Square product catalog and create payment links (e.g., pumpkins/gourds). Then he vibe-codes an MCP to send the payment link via Python email (debugging errors by pasting logs), successfully sending a test email (often landing in spam).
Written by AI. May contain mistakes. Listen to the episode to check what was said.
Chapters
Tap a time to open that second in VOIntroduction of Goose AI Agent
0:00 to 1:06
Learn about Goose, an AI agent designed to solve various problems across teams.
“We kind of designed it to be really agnostic.”
Introduction to the Episode
1:06 to 1:26
Get insights on how Block utilizes AI through their open source agent, Goose.
“I'm Clara Vaux, product leader and AI obsessive here on a mission to help you build better with these new tools.”
Introduction to the Episode
1:38 to 2:28
Get insights on how Block utilizes AI through their open source agent, Goose.
“CodeRabbit acts as your AI co-pilot, providing instant code review comments and potential impacts of every pull request, beyond just flagging issues.”
Embracing AI at Block
2:29 to 3:03
Explore how Block has rapidly adopted AI across different teams and functions.
“I am so excited to have you two on How I AI because I have been so impressed how Block has, as a full organization and a large organization, at that really embraced AI, it seems, everywhere and for everything.”
Salespeople's Demand for AI
3:03 to 4:04
Understand the pivotal role of salespeople in pushing for AI tools within organizations.
“I think it was a combination of both like bottoms up and tops down.”
Cultural and Operational Transformation
4:04 to 4:58
Learn about the significance of cultural transformation in the AI era.
“We hear so much, you know, engineers are leading in and they want to vibe code and they want to do all that.”
Introduction to Goose AI Agent
4:58 to 6:06
Get an overview of Goose, its functionality, and the rationale behind its development.
“The tech piece is like a lagging piece of it you can figure out.”
The Value of Open Source AI
6:06 to 7:33
Discover the benefits of open sourcing Goose and how it fosters innovation.
“puzzle is how do we make this work, no matter what you want it to do.”
Data Analysis with Goose
7:33 to 8:08
Learn how Goose can perform data analysis using a real-world example.
“And we think there's a huge amount of power in being able to bring together data across all these different MCPs and then also pair that with really any model that you want.”
Real-world Application of Goose
8:08 to 10:40
See how Goose analyzes farm data to provide insights and recommendations.
“So I tried to make this as realistic as possible when I don't work in tech.”
Show all 29 chapters
Advanced Data Analysis Techniques
10:40 to 11:24
Explore how Goose can assist in deeper data analysis beyond initial insights.
“It goes through, you know, what are your mid high low items?”
Creating Shareable Reports with Goose
11:24 to 13:10
Learn how Goose can generate HTML reports for sharing analysis results.
“You know, use this particular type of method, you know, do a line regression that tries to figure out price elasticity or something like that.”
MCPs and Their Role in Goose
13:10 to 14:01
Understand the role of MCPs in enhancing the functionality of Goose AI.
“I think that's one thing that's like really unique about Goose.”
Understanding MCPs and Their Utility
14:01 to 15:56
Learn about different types of MCPs and how they enhance data analysis.
“And what are the MCPs sort of out of the box that if I cloned the Goose repo right away, would it have ready to go?”
Empowering Teams with Self-Service Data
15:56 to 17:06
Discover how self-service data tools are transforming company workflows.
“I think we've all been talking about like the age of self-serve data for a long time, and it's like kind of gotten better, but we all know that you usually still go ask a data scientist.”
Developing MCPs for Business Solutions
17:06 to 19:00
Explore the process of building MCPs that connect data to business products.
“But can we please get back to what people can wrap their head around, which is the software engineers.”
Real-Time Demo of Data Processing
19:00 to 23:15
Watch a live demonstration of how data from a CSV is processed and utilized.
“And so let me start by showing you an existing one before we start building.”
Real-Time Demo of Data Processing
23:23 to 24:25
Watch a live demonstration of how data from a CSV is processed and utilized.
“That's maven.com slash Lenny to get ahead in the AI era and start building.”
The Future of AI in Business Transactions
24:25 to 28:00
Discuss the potential of AI for automating business transactions in real-time.
“So what's cool about this is that this isn't just like a little website showing that I have prices for apples.”
Sending a Test Email with AI
28:00 to 30:20
Learn how to use AI to automate the process of sending test emails.
“So I won't even say MCP at first, I'm going to just say like, let's try to send an email.”
Transforming Code into an MCP
30:20 to 31:27
Discover how to convert the initial email script into a Model Control Protocol.
“Okay, and then let me go over here and see if we got it.”
Integrating Context and Customizing AI
31:27 to 33:49
Understand the importance of context when working with AI models in development.
“So that's a thing where I'm going to actually go get it that context so that it can use it.”
Debugging with AI Assistance
33:49 to 36:06
Explore how AI can assist in debugging code more efficiently than traditional methods.
“I'm not going to read line by line because I kind of trust it at this point.”
Testing New Features with AI
36:06 to 39:46
Learn how to test newly integrated features using AI to streamline processes.
“I'm going to interrupt it because, again, I think it's doing some extra stuff we don't need.”
Recap of AI Application in Development
39:46 to 42:00
Review the key takeaways from using AI to enhance development workflows.
“And then now we can kind of finish that off by bringing it back to where we started, right?”
Favorite MCP Tools and Automation Insights
42:00 to 42:54
Discover the favorite MCP tools of Jackie and Brad and their automation tips.
“As somebody who's avoided building an MCP for no less than six weeks.”
Overcoming AI Hesitations
42:54 to 43:57
Jackie and Brad share advice for those hesitant to implement AI in their work.
“It's just 100 % filling them in for me at this point.”
Strategies for When AI Fails
43:57 to 45:09
Explore tactics from Jackie and Brad on how to handle AI failures effectively.
“And then Brad, we saw how polite you are.”
Resources and Community Engagement
45:09 to 45:56
Learn where to find more information about Goose and how to engage with the community.
“I'm going to go download Goose and build that MCP that I've been avoiding.”
Transcript
Automatic transcript. May contain errors.0:00Jackie Brosamer:Goose is our AI agent. We kind of designed it to be really agnostic. You tell it what you needed to do by connecting it to different capabilities and it can just solve any problem. What I'm going to do is take that CSV that Jackie was working with, I'm just going to pop it over and I'm going to say, can you read through this data? Use it to create items in my square dashboard.
0:22Brad Axen:So we took a CSV that we didn't even have to look at, that probably had data that was not in this exact format, and you created a product catalog. What a lot of my work and what my team is trying to do is not just make it faster for someone like me or on my team who has data expertise to go through this, but to allow our finance team, our sales team, anyone in the company to be able to dig in and self-serve a lot of this data rather than having to ask an expert and wait for that to come back. You have been the first person that's told me it was the salespeople that were begging for it. We hear so much, you know, engineers are leading in and they want to vibe code and they want to do all that.
0:57Brad Axen:But it's nice to hear that the folks close to customers and close to revenue are also seeing the value.
1:06Brad Axen:Welcome back to How I AI. I'm Clara Vaux, product leader and AI obsessive here on a mission to help you build better with these new tools. Today, we're speaking with Jackie and Brad at Block, who are going to show us how their open source AI agent, Goose, can be used to do everything from Vibe data analysis to Vibe coding and MCP. Let's get to it. This episode is brought to you by CodeRabbit, the AI code review platform, transforming how engineering teams ship faster with AI without sacrificing code quality. Quality code reviews are critical, but time consuming. CodeRabbit acts as your AI co-pilot, providing instant code review comments and potential impacts of every pull request, beyond just flagging issues.
1:50Brad Axen:CodeRabbit provides one-click fix suggestions and lets you define custom code quality rules using AST grunt patterns, catching subtle issues that traditional static analysis tools might miss. CodeRabbit brings AI-powered code reviews directly into VS Code, Cursor, and Windsor. CodeRabbit has so far reviewed more than 10 million PRs, been installed on 1 million repositories, and has been used by 70 ,000 open source projects. Get CodeRabbit free for an entire year at coderabbit.ai and use the code HOWIAI. Thanks for being here. Thanks for having us.
2:30Jackie Brosamer:Yeah, excited to chat.
2:31Brad Axen:I am so excited to have you two on How I AI because I have been so impressed how Block has, as a full organization and a large organization, at that really embraced AI, it seems, everywhere and for everything. And, you know, everybody's worried about AI-native startups, but you're one of the companies that I really think is going there very fast as a much larger organization. So how did you lean in as an org so fast and so broad? I think it was a combination of both like bottoms up and tops down. We saw, you know, a lot of concentrated pockets once ChatGPT came out that were really finding a lot of value out of these tools.
3:12Brad Axen:For example, salespeople, they're like, any tool, give it to me. Like, I'll use it. Help me get those leads. And we also saw a lot of engineers, you know, starting to lean in as these tools became really good at coding. and kind of as that started from the bottom, I think a lot of our leadership saw a lot of promise and they've been trying to make some of those practices a little bit more consistent among groups. I think that it's really a great time to focus on organizational transformation because to me, that's really what's gonna define who ends up the winners in whatever this AI future is, is who not just leans into technology, but even more than that, leans into the organizational transformation, which can a lot of ways be even harder.
3:54Brad Axen:It's like really easy to get technology to go exponentially and humans don't go exponentially so well. You have been the first person that's told me it was the sales people. It was the sales people that were begging for it. We hear so much, you know, engineers are leading in and they want to vibe code and they want to do all that. But it's nice to hear that the folks close to customers and close to revenue are also seeing the value. Yeah, I think it's, you know, everyone finds like that different first use case that really gets them hooked. And one of the things I've been really impressed with with some of our non-developers, especially, like we all kind of know how people use it for vibe coding.
4:28Brad Axen:And I think that's like well discussed is non-developers are just so creative and so tolerant of like stringing together a bunch of different tools just in a way that you never would have imagined. And that's, I think, really gonna be the power is getting these tools closer to the people that actually understand the problems and see what wacky things they come up with with this new technology. Not only are you all leading the way in terms of how organizations and I totally agree with you. I think the biggest transformation is cultural and operational. The tech piece is like a lagging piece of it you can figure out.
5:01Brad Axen:But what I also love about what you're doing is not just how you're embracing it internally, but how you're trying to drive and help others adopt it externally. And so I'm wondering if you tell us a little bit about the adorably named Goose and what Goose is and why you all built it.
5:17Jackie Brosamer:So Gooses are like AI agent. And there's a lot of people have a lot of different definitions for what an AI agent even is now. But I'll say specifically what we mean by that is it's powered by an LLM, but it has a whole collection of tools that it's going to go use to solve problems for you. and this is like something we're really excited about in part just because it lets us like build for ourselves and like come up with workflows that work for our company but like you said we open sourced it because we think there's a lot of extensibility for everybody and we kind of designed it to be really agnostic like you you tell it what you needed to do by connecting it to different capabilities and it can just kind of solve any problem and I think we'll get to show some of that today.
6:00Jackie Brosamer:And that's all powered by MCP. So that's a big part of this like open source puzzle is how do we make this work, no matter what you want it to do. And MCP really helped us get in like early into helping to establish the protocol and have a way for us to connect it to anything. And people can develop their own MCPs and just make things work.
6:21Brad Axen:Got it. So you and I just want to show here, it's up on GitHub, it's open source. It's your agent framework powered a lot, it seems, by MCPs, which I think we're going to talk about later, that anybody can use and extend upon. And what made you all think about open sourcing this? Yeah, open source is, I think, a really big emphasis just as a value for our company. And I think there's two ways we think of it. Number one, this is just like the right thing to do for the world in some way. But then there's also, we think that there's so much benefit in terms of having this open ecosystem and really seeing these patterns emerge from not just, you know, the engineers that we have in our company, but from engineers all over the world.
7:03Brad Axen:And I think we're really seeing that come to fruition with a lot of the growth that we've seen in MCP, you know, and all the MCP servers that are out there. And it's only been, you know, what, like six, eight months. And then I think we also wanted to really lean into open source in order to take advantage of all these different models that are coming out. A lot of the tools that come bundled, you know, released by these different model providers can only use like that kind of models. And we know that every month a new model is coming out. One might be better at coding, one might be better at writing.
7:34Brad Axen:And we think there's a huge amount of power in being able to bring together data across all these different MCPs and then also pair that with really any model that you want. Okay. So speaking of data, I think you're going to show us how to do vibe data analysis, which is a first for How I AI. So it's a flow that you use internally. So this is definitely something we're not making it up. You use this exact flow day to day, but we're going to use some fake data so we can screen share and really get into how it all works. And so Jackie, what kind of business are we today that we're going to do some data analysis with?
8:13Brad Axen:Yeah. So I tried to make this as realistic as possible when I don't work in tech. I actually have a small farm that is not very profitable. And so we're going to be doing some analysis that I've actually done with my own internal data that kind of shows us how we can look at some business data and make some recommendations. So what we're going to do is go ahead and look at this to try to find this local CSV of data that has July data for my farm stand, which does a bunch of vegetables. And what we've asked is we've asked Goose to use Pandas, which is a Python library, to tell me the items have the best revenue and like what the busiest days of the weeks are.
8:59Brad Axen:And then I left a general kind of question at the end, just what are some trends? Because I think it's always interesting when you get a slightly different result as you run this. And so you can see the first thing that we're doing here is it's using RipGrap to find the CSV. We found that riprep is actually really effective, even though it's really simple. There's a lot you can get done with it versus something fancier like a semantic search. It identifies this July data at CSV. Then it writes a Python command. It found some error where it didn't have this installed. Oh, no, this is maybe going into cursed virtual environment territory, but it looks like it's going to solve itself.
9:40Brad Axen:Sometimes I'll tell it, like, check your Python environment so that it makes sure it sources it. But it decided to go ahead and create a new virtual environment here. One of the things I really like about Goose is I'm terrible at maintaining developer environments. And so we'll go through and try to just, like, debug that for me. I mean, how many of us, maybe this is a very niche comment, have been victimized by trying to get the right version of Pandas installed? Because I definitely have. Okay, and just taking a step back, we didn't see the input data. but is this just like general day-by-day sales of different products?
10:10Brad Axen:Exactly. This was just a list of, you know, item, quantity, date, price. And so from that, it's able to go through and say, okay, you know, your top generating, your top revenue generating items are berries. We love berries, very high margins. And it's got, you know, the best days are like Thursdays. And so, and then I just had this, you know, bonus question of like, what are some key items and trends. It'll kind of lead into some stuff later. So cherries have the highest average value. It goes through, you know, what are your mid high low items? And then, you know, goes through some weekly patterns.
10:46Brad Axen:And so without even asking, of course, it comes out with some recommendations, which I really love. Let's just pause on these recommendations. So what I love about this is you have this ugly file, you probably could have tossed in a spreadsheet or done some of this analysis yourself. And you're you're doing sums and you're doing pivot tables. And you're trying to explore this and you probably have to do different tabs for all these different analyses and this you can really drop in and it's maybe a relatively if you scroll up it's you know relatively simple analysis by day by product but under the hood you have this pretty powerful data analysis package and so I'm presuming can go from this level of analysis to something much much deeper yeah that's right and I when I'm doing something like this live with something like use what I'll usually do is kind of you know have it take a high level first pass and then you know dive into specific sections and say like, hey, can we go deeper here?
11:36Brad Axen:You know, use this particular type of method, you know, do a line regression that tries to figure out price elasticity or something like that. Well, and I have to say, as a mom of young boys, I do feel like I spend, you know,$1 ,500 on strawberries every month. So this is really hitting home. Okay, so we can go down. And then I'd love to see, I like the idea of when you're prompting a data analysis to say, give me the data analysis, but also give me some recommendations. And so it's really saying here, you know, high margin items, which is great. Look at why Friday drops, because, you know, maybe they would expect that to be a higher day, weekend sales, and then some price adjustments.
12:16That's really interesting.
12:18Brad Axen:So what would you do next after this? Yeah, so I don't think that this is like very good to share. And so a lot of times what we see is that people really like to share these kinds of analyses as local web pages, especially people who aren't technical or just a whole new world is opened up with them to them as they figure out how to use AI to turn some of the stuff into HTML and share it with each other. We see a lot. We have a way for people to use Goose to share these internal static websites. And we see that really popular, especially among, you know, some of our business users that want to kind of create their own dashboards for, you know, whatever.
12:52Brad Axen:While this is generating, I'm just reflecting on what I've seen so far. So it seems like Goose has sort of a virtual machine in which it can write code and wrestle with Python dependencies. Love that for Goose. It has the ability to spin up hosted HTML and websites. Is that right? Is that what it's kind of doing here? It's all running locally. I think that's one thing that's like really unique about Goose. And part of the reason, you know, we started that way is that a lot of our developer environment stuff happens locally. And so that was like a really natural fit. And then we also saw within the open source community that this has actually been really popular with kind of the crowd that really wants to maintain end-to-end control over their workflows.
13:33Brad Axen:One of the things we've seen with Goose is that some of the most promising use cases are, you know, you tell Goose to do something, you kind of go away and, you know, wait for that task to complete as it does things like, you know, write code errors. Oh, look at this. And so it's also cool because it can it went ahead and pop this up for me yep this is not the prettiest website it's ever made with this fake data but you can see you know it's able to make these bar charts with plotly and I could go ahead and dig in and try to refine this if I wanted it to be you know a little bit more well designed got it and you know if I was being cheap and easy about sharing it I would just print as a pdf and shoot it over and it would look it'd look nice when we run this internally
14:16Jackie Brosamer:We have an MCP that it connects to where you can just publish it to the company, like kind of keep it internally private, but share it with anybody.
14:24Brad Axen:And what are the MCPs sort of out of the box that if I cloned the Goose repo right away, would it have ready to go? And then what are some kind of ones that you've either built or integrated specific to maybe what you do at Block? Yeah, so we have like a collection of different MCPs. some of them we've taken from the open source community. Some of them we've developed internally because, you know, for example, we have an internal data MCP that I use every day that helps, you know, sort through where's the revenue for X product. I mean, it knows all that context. And we're also working on trying to have external MCPs, you know, connect to our business products.
15:05Brad Axen:A lot of what people are using use for and a lot where we saw the first value is just MCPs that connect to all of our key internal systems. So Google Drive, probably the one I use the most. Brad mentioned this one we have internally called BlockCell that's really popular because it's a click of a button. You know, you can publish a website and send a URL to anyone in the company. We also have a developer extension that does a lot of this like command line and tool stuff. We also have a computer controller one that just did, and that's how it just opened this Chrome window. Got it. Cool.
15:36Jackie Brosamer:That's the stuff that bundles with Goose. So when you get it, it's like you're going to have like five really simple like memory developer yep and and then when we use it internally we have like
15:46Brad Axen:40 or 50 yep and and jackie how often are you doing an analysis like this in your week using goose um if i'm doing an analysis i'm using goose um the question is more like how many analyses do i do per week i would say that i probably actually use it more in my day-to-day life for writing, but there's people in my team that, you know, are professional analysts or professional data scientists that are doing this, you know, every day. And I think increasingly what a lot of my work and what my team is trying to do is not just make it faster for someone like me or on my team who has data expertise to go through this, but to allow our finance team, our sales team, you know, anyone in the company to be able to dig in and like self-serve a lot of this data rather than having to ask an expert and wait for that to come back.
16:37Brad Axen:I think we've all been talking about like the age of self-serve data for a long time, and it's like kind of gotten better, but we all know that you usually still go ask a data scientist. And so I think it's really interesting to think about how can we, you know, kind of short circuit that and allow everybody to focus less on kind of the rote parts of data analysis and spend more time talking about, you know, the insights and the context and the creative parts that we all want to spend our days on. Okay, so we've talked about the salespeople love their AI. The farmers love their AI. But can we please get back to what people can wrap their head around, which is the software engineers.
17:16Brad Axen:So you have this great data and you want to do something with it. And so you have this data, maybe you want to do something with it to improve your business. Brad, what's the next step in your mind here?
17:31Jackie Brosamer:Yeah, let me share some on my screen for this and we can show a little bit about like, how a developer can build MCPs and use that to actually like connect to what someone is doing into like existing products or to like solve new problems. And this is really how I spend my day to day. Like I feel like at this moment in time, I'm just developing MCPs left and right.
17:54Brad Axen:And I'm going to just pause right there because no matter how many times people hear it, they still need an MCP explained to them. So Brad, we're going to take your explanation of what is an MCP.
18:04Jackie Brosamer:Let me do that by showing you the Patriot and Goose here. So in this, we have just this huge collection of extensions in Goose. And these are all implemented with model context vertical. So each of these is an MCP server. and what that means is that it has a collection of tools that it exposes to the agent and it can do a couple other things like provide data resources and all that other stuff and so it's it's like a protocol that lets the agent talk to a third party and get things that it can do and data it can read and most importantly it's kind of the arms and legs for the model so this is how the model goes and interacts with the real world and like makes changes in online systems okay so you're spending all your time building MCPs.
18:52Brad Axen:It seems like everybody is spending all their time building MCPs. So why don't you walk us through how you're spending your your days? Yeah.
19:00Jackie Brosamer:And so let me start by showing you an existing one before we start building. And so I've turned on a real square MCP server. So this is like from this is available like as an online MCP server that people can use to like run their business. So this is my square dashboard and it's totally empty right now. this is a kind of an account I set up for the sake of the demo and we're going to connect that through our agent and actually have it fill things in so what what I'm going to do is take that csv that Jackie was working with I'm just going to pop it over and I'm going to say can you read through this data and use it to create items and vice versa.
19:45And so this is something that you
19:48Jackie Brosamer:could do with all kinds of input formats. Like, for example, I could give it an image and like maybe a picture of a menu or something like that. And so since it's multimodal, it's just going to go figure out that source, translate it into the API calls that it needs.
Read the full transcript
20:02Brad Axen:And I'm thinking as a product builder who has built many import your data products where you're always trying to say like it has to be a csv in this format in these columns with this column name and what i've just realized this opens up for you is like drop in your arbitrary messy whatever data don't have to reformat it let the mcp figure out the translation exactly and then get it into the system okay yeah
20:27Jackie Brosamer:so it doesn't matter what you've got it's going to figure out a what could be a pdf whatever it's going to do its best to like figure out how to make that work you know the first thing it does is it just reads it and uh it's then going to go this is actually a really interesting part i think the square team did a great job designing this ncp because it has so many different things that you can do on square that it's like too much for the model to handle all at once so what it actually does under the hood here is it is it says like oh if you need to know about catalog i give you a method to look up what you can do in catalog and then under the hood the lom is seeing like all of these operations that it can now access so all that stuff about like creating items it figured out um okay and i actually see the uh it's like this is a funny i normally would just read the csv um so i'm like i'm like laughing a little bit at like how much work it's going through for this but
21:23Brad Axen:uh it is what it is i know i have i have that same experience using like a cursor max mode where i'm don't know if you need to work to think that hard exactly how to do this but you know it's not my
21:36Jackie Brosamer:brain it's the ai's brain yeah yeah so we'll we'll see i'll let it cook for a minute here and see how it figures this out but effectively what's happening is it's just deciding to use shell commands to grab the prices from that csv and then it's going to turn that into an api request and actually send it to the square dashboard and create like a product category and then fill in the items so we should just be one request away from getting that solved
22:05Brad Axen:got it and you know instead of sitting here and waiting jackie i'm presuming farmer jackie would have to go in here and one by one sort of enter enter this data in and make sure it's right and all that kind of stuff. One of the like really underappreciated things about LLMs is like how much they function is like data duct tape. You know, it's like it doesn't quite fit. You can do something to just kind of make it all mushed together. And that's where a lot of the day-to-day data work is, is trying to match all those things. How I AI is now on Lenny's list with my personal selection of the best AI engineering courses on Maven.
22:44Brad Axen:You can spend months thinking and playing with AI before really integrating it into your workflow or shipping an actual AI feature. If you want to start building, then these hands-on Maven courses are for you. Learn directly from Aishwarya Naresh Riganti, MIT instructor and AI scientist at AWS, or Sandor Shuloff, who has authored research with OpenAI, Hugging Face, and Stanford. To pivot into an AI role or successfully lead your company's next AI initiative, visit maven.com slash Lenny to enroll now. Use code Lenny's list for$100 off. That's maven.com slash Lenny to get ahead in the AI era and start building.
23:35Brad Axen:Okay, look at that. So we took a CSV that we didn't even have to look at, that probably had data that was not in this exact format. And you created a product catalog out of it.
23:48Jackie Brosamer:And this is something like I could follow up with this and say like, okay, grab
23:52Brad Axen:images or even generate images and like, I want to I want to AI generated Apple image.
23:59Jackie Brosamer:Exactly. Yeah. And the I'll skip it for the sake of time. But like, there's so much you can do to just like navigate through all of this. And this is something where like, we're watching it live for the sake of the demo, but what really the best version of this is like handed the CSB and walk away and come back and then you're going to just see that this is done. And so that kind of like background task thing is the I think the best mode for Goose in a lot of ways. But yeah, it like goes and figures this out. And this is like a real account. So what's cool about this is that this isn't just like a little website showing that I have prices for apples.
24:32Jackie Brosamer:It's something I can take payments with. So I can now say, okay, let's make a payment link for three pumpkins. And we'll let that run for a little bit too.
24:43Brad Axen:This is not the topic I thought I was going to get from you all today. You know, I had a lot of things in mind, but using AI to generate farm stand payment links for gourds was just not on the top of my list this afternoon. But I'm excited to see it. Okay, so I think, you know, one of the other things that I think, and I know this is running locally and we won't get into like sort of the local mobile debate right now, but I just think that the ability to do this stuff via text on the go is so powerful. imagine somebody wants to buy the three pumpkins off the back of your truck and you want to be able to do this really easily this sort of like ability to just type in a short command to get a really custom software solution backed by you know either a platform or not I think is pretty cool
25:34Jackie Brosamer:for people I think there's like so many little details too that again like while you're watching it it's a little slow but but it just figures this out for you without any intervention like oh it's it has to decide which location i'm selling these from for the payment link and it's just it just like saw that it needed it and and like when it looked up what locations i've got here and uh like just it just unblocks itself which is really nice so you can just wait for this to go and so okay so i actually have a real payment and this is just going to load up it uses my items has a price look at that yeah and so we could just throw in a real credit card right now and this would work And we would collect on that.
26:13Jackie Brosamer:And so this is like, okay, so this is a bit of a tour of an existing MCP, like how you connect these agents to real products. And but then I think what's like part of my job is really like, okay, what's the next step? And how do we make the agent do the next step? And so for me, I think a thing we could switch to from here is like maybe we go give it another MCP so that it can send these payment links in an email. and so I have a test email account here that's totally empty and I think we can work with that and then just try to show you how you can literally like extend the existing conversation so I'm going to leave this open and we'll come back to it I'm going to make a new window that we're going to use to make the like vibe coding half this so we'll just go vibe code and nvp together I'm also going to open up a terminal window so that we can follow along and I did do one thing in advance, which is I went and grabbed an API key here in an N file.
27:14Jackie Brosamer:And I set that up just in advance so we didn't have to show the API key on the screen. And so we're going to use that to set up an MCP server with Mailman.
27:24Brad Axen:And I want to just pause here because we've heard this a lot on this podcast, which is people are always saying, you know, you can do the output. I'm sure you could take this link and send the email. But anytime you're about to create an output, instead, think about how can I create a tool or a prompt or an input that could do this for me. So instead of saying, great, I'm going to email this link, you say, great, I'm going to build an MCP to send emails. Exactly. Yeah.
27:47Jackie Brosamer:Like how do you take that whole end to end workflow and solve every part? Yeah. Okay. So let's, let's talk it into vibe coding and MCP for us. So the way I like to do this usually is I'll start with the scaffolding and making sure that everything kind of connects and works. So I won't even say MCP at first, I'm going to just say like, let's try to send an email. So I'll tell it like I have a staff holded Python package here using UV, I'll tell it about that dot end file I mentioned. And I'll tell it what's in there because I don't want it to actually read this. It's like, you know, I don't want the model to know about my API.
28:25Jackie Brosamer:And so then I'll say, can you make a Python script in this directory that sends a test email? And this is like the vast majority of the work. Like it going from a blank slate to sending a test email. That's the hard part. The MCP half is really easy. So yeah, I always start that way. Let's just prove that everything works.
28:47Brad Axen:That you can do the thing and then we can figure out how to invoke the tool. Yeah.
28:50Jackie Brosamer:And this is actually another feature of Goose that I'm kind of glad it accidentally triggered, is that it tried to read the.env file because it was like, oh, what am I working with? And we denied that, actually, because it's like a security concern. So there's a bunch of stuff that we try to catch. And so it can't see it, but it's going to have to just trust me that what I said is in there and then use it. And so OK, let me follow along over here. so I'm gonna just uh we have a new file now send test email that should be using this um and it just wrote that and if I wanted to like follow along in detail I could do I could I could read it in an editor or something like that but for the most part I'm just gonna trust it and hope it works and so let's say okay can you um and I'm gonna give it that demos email got it so now it's
29:44Brad Axen:written the script and you're just going to double check this thing works and that i'm going to get
29:47Jackie Brosamer:an email out of the script and so it figured out what i meant by the dot end so it's like okay i found a thing and it's got this hard-coded recipient that it's going to go edit and you can see like uh if i like just read down there it like just fixed that for it now that i told who it's going to send it to and it's figuring out all this virtual end stuff okay so so just
30:13Brad Axen:AI just like us figuring out its virtual environment. That is the theme of today's episode. Yeah, every time.
30:21Jackie Brosamer:Okay, and then let me go over here and see if we got it. And I'm sure it's going to end up in spam or something.
30:27Brad Axen:Oh, there it is.
30:29Jackie Brosamer:And so we got a test email sent with Python. And it goes to spam because obviously this is all demo stuff. That's not surprising.
30:38Brad Axen:And whenever I, you know, I get engineers asking me a lot, they're like, mailgun, It's well documented. I can write the thing. But I think about the number of characters you wrote in Goose and just the number, like the typing that had to happen in the file. And I just think it has just saved you 15 minutes of time of like looking at the docs, copying it over, you know, checking that it works. And we did it in probably two minutes.
31:04Jackie Brosamer:Yeah, exactly. And like, I just I've never built an email sending service. So it's like, I don't know this API at all. It didn't have to ask me for that. it's like, oh, it knew the endpoint name and everything. That's all trained in, which is just fantastic. OK, so now that this is working, let's turn it into an MCP. And then this is an example of a little bit of model knowledge going a long way. So this model isn't trained recently enough to know about the MCP SDKs. So that's a thing where I'm going to actually go get it that context so that it can use it. And so I'll just go find like the, yeah, MCP Python SDK.
31:44Jackie Brosamer:And we'll just grab it from the readme. And so at this point, I could actually tell Goose the URL and like it could download this readme and it would work. But I'd rather just like copy and paste, honestly, because it's easier.
31:56Brad Axen:I'm the same as you. I'm just like, let's just drag the whole page and paste it in.
32:02Jackie Brosamer:Yeah, and it's like, okay, great. Like it's already got these links. all I need is just this one example and that should be enough. And so I'll say, you know, okay, be nice to your LLMs, of course.
32:14Brad Axen:I agree, be nice to your LLMs.
32:16Jackie Brosamer:So I'm going to say now we're going to make an NCP server out of this. Here's reference code. And then I'll say, can you use that example to make an NCP with a send mail tool? And we'll see how far it gets with no other context, actually. We might need to tweak stuff, but hopefully that's a good start for it.
32:42Brad Axen:And while it's thinking, does Goose auto-select models? Do you have a default? Do you have a favorite?
32:49Jackie Brosamer:We currently don't auto-select models because people bring so many different models to Goose. And so for us, we kind of switch context by context, like Jackie was mentioning. So for writing code and using these tools, currently I'm using Cloud Sonnet, which is great. But when I you know if I wanted to like go write a design doc I might actually switch to like one of the reasoner models from opening eye or I could even like try out like a local only model and run QN. Okay so let's see what it's doing. I'll check in again and I'm just gonna like take a look. Okay so it's got a new file and it's combining like what we were doing before and it's following that example pretty well it looks like and that's actually good code i'm gonna i'm gonna interrupt it honestly because i i know what it's going it's going down like a slightly wrong path because it doesn't know how i'm going to integrate it so i'm just going to pause that and i like the i like the the judgment yeah good code it's like definitely the right idea i i know I'm not going to read line by line because I kind of trust it at this point.
33:58Jackie Brosamer:But what I am going to do is I'll make my one line contribution to this project right now, which is I know I want it to be running not as a remote URL. I want it to just be a standard IOMCP if you work in it. That's the difference here. So I'm just going to make it standard IOMCP. And then I'm going to ask it like a weird question to help me set this up in Goose. so I'm going to say to help me do that can you get the path in this virtual end so really I'm just trying to make sure that I have a portable command so that I can run in goose and so I'm going to ask it to figure out that virtual end so listen that and that should just take like one or
34:38Brad Axen:two tool calls from it and is this your just general flow for making MCPs all the time build me the build me the function then here's the code to turn it into an mcp i'm going to make my one line contribution i'm going to ask it a this very specific question that i know works in my system
34:56Jackie Brosamer:and then you're going to get it get it going yes exactly and so once you have that like a core functionality working then you give it this example and turn it into the mcp exactly that yeah and so um okay so it got me this like this is the path of the virtual length python which is what I needed. And then I'll ask it like also, what's the abstract of the Picon file? And that's going to be the two ingredients that I need to go make this work. And it's just, you know, running shell commands to do this. So I've already got it there. So let's do this. And I'm going to go into that like existing settings.
35:39Jackie Brosamer:And I'm just going to immediately add a new custom extension that we just built. So I'm going to call this email. We're going to do that path to the Python file. Oops, and I didn't paste the other one. So let me just go to the terminal and grab this. And there, and we're going to do, we're just going to run that server we just created. And that should be everything. Oops, I got an error. see what that is i'm just going to paste the output um oh so there's actually a code error oh well there you go and i'm going it wasn't good yeah it's cool um i'm going to tell it this um i'm going to tell it this error and see if it
36:22Brad Axen:can just fix it so i like that you actually say i got an error can you help me because i just
36:29Jackie Brosamer:go straight to just paste the error in yeah it's probably spartan i i like spend a little too much time like having a conversation honestly with the loms and uh and so like hopefully it can figure this out without me thinking too hard about what's in the file we can like watch it work of course um and honestly i think the thing that it did here is this resource so it's fixing that but yeah okay okay so it figured it out at about the same time I did yep okay so
37:03Brad Axen:this is going to be the new podcast it's human developer AI developer who figures it out who spots it first
37:11Jackie Brosamer:I the the debugging flow is like something that I thought was going to be what kept me employed with the AI writing all these codes but I'm like oh it's actually pretty good it's pretty fast yeah So we're going to try that again now that we've edited that file. I'm going to interrupt it because, again, I think it's doing some extra stuff we don't need. And I'm just going to toggle that. Where did it end up in the list? I'm going to toggle that on again. Oops. Okay, new error. Sorry about that. Normally, this works in one shot, actually.
37:47Brad Axen:do you find as as an engineer that you have shifted your debugging strategy to this which is just i'd rather loop with the the agent and just get it to figure it out then sit here and use my eyeballs and my fingers to solve this thing i'm just curious how that's
38:08Jackie Brosamer:happened internally to yourself i think i basically i almost always let the llm try once like if it if it knows what to do to fix it i'm like great that's faster than me figuring out and then the thing that um i think i am better at than it is is like just being tenacious so if it's like if it's not figuring it out it's like okay i will take over and uh so this version is like i'll take go look at like whatever idea um it's coming up with and if it like seems like it's in the right direction i'll let it finish we did it hooray um great so now that we've got the like infars loading and we actually so what we just did is we like turned that thing we just built on in the existing chat okay so it's it's a x it actually should now see it so i'm gonna play like great we just enabled that can you see the new tools um try sending a test email and let's see if that works so now we've at least like got it running and yeah it sees the tools right so and it's and it's trying this like get email status which doesn't we don't need that it but it's like great it sees that everything is ready to go and then it's like sending the an NTP email test.
39:28Jackie Brosamer:And it is success. And so it's working. And so we kind of built it, plugged it into Goose, and then immediately tested it out. And let me go check my inevitable spam folder. Yep, there it is.
39:41Brad Axen:You did it!
39:42Jackie Brosamer:Great. So despite all the spam checks, we've got that working. And then now we can kind of finish that off by bringing it back to where we started, right? So we know that works. I'm going to go over to this existing chat. And these are two separate conversations, right? So like this LLM knew all about everything we just did. I'm going to close that out. This one has no idea that that just happened. So I'm just going to go in and toggle that on and off real quick. And we're going to go back here and I'm going to say, I just enabled an email tool. can you send that payment link to my demo email address so it doesn't have any of that like it doesn't have to its memory doesn't have to worry about
40:30Brad Axen:the functions or any of that stuff so this is the real test yes so it has no idea other than that
40:37Jackie Brosamer:this thing just got created and it's doing the same thing that the other one did which is like okay it's it's like checking and knows where it's coming from and yeah hopefully we'll get it to send something at this point it's like writing more content right because it's like i'm sure it's going to try to be cute about the the like body are we gonna get a pumpkin emoji and the right yeah that's that's what i'm open for um okay and we should have something in spam yep and so we've got a store payment we've got our payment link um order details all of that stuff stuff and you know the same link should bring us back so there are two levels of faces i make on this podcast this this is one of them where i go and then this is the other one where something
41:24Brad Axen:works so you've gotten the the raised hands podcast reaction so just to recap everything goose did for us today i'm like still still processing jackie we got your csv we took some dirty produce data, got some insights on how to make it better. Brad, you took that and populated a store with your produce items, then created a way for people to buy those items through a nice little friendly link. Then you vibe coded an MCP live, thrilling. As somebody who's avoided building an MCP for no less than six weeks. Now I feel like I have no excuse other than to just go do it. And then you use that MCP to send somebody a pumpkin purchase.
42:19Brad Axen:That's right. This is so great. Okay. This has been incredibly fun. I have to ask you both as part of our lightning round questions. Jackie, what's your favorite MCP tool in your stack right now? I hate to say it, but it's probably Google Drive. That is as a manager where I live. And I'm just so happy to be able to not have to copy and paste and click on save the time. Okay, Brad, what's your favorite?
42:48Jackie Brosamer:Definitely shell. I just you know, I've lost I've lost all my memory of the arguments to various shell command. It's just 100 % filling them in for me at this point.
42:57Brad Axen:Okay. And then if you could make a pitch to people inside an organization that are hesitant about getting started with AI or even people that are outside of technology that just say, I don't know, how could this apply to me? Why would I use it? Seems really complicated. What would you say to them?
43:16Jackie Brosamer:Find the thing that you don't like doing and automate that. Like don't don't if you love programming, don't try to automate your programming. That's like fun for you. You maybe figure out when when you want to make that trade off. But it's like, oh, I hate writing the unit tests. That's the thing I'm going to have the AI do.
43:30Brad Axen:OK, get rid of toil. Spoken like a true, true engineer. Jackie, what about you? I think really treating it as a learning experience and realizing that this is the worst the models are ever going to be. And so even if it's not something that transforms your daily life right now, even by keeping up with the tools and seeing where it fails, seeing where it fails is like just as useful as seeing where it succeeds and still really training as an experiment and a way to learn versus, you know, a magic bullet that's going to magically solve everything. Okay. And then Brad, we saw how polite you are. We have to ask both of you our favorite question, which is when AI is not doing what you want and you're starting, maybe you get exasperated.
44:11Brad Axen:I don't know. What's your tactic? You seem very polite. So every, I saw every line started with great, but you really screwed that up. So Brad, what's your, what's your strategy here?
44:23Jackie Brosamer:So I thought this was kind, but I realized now it's even more brutal is that like the moment it's not good i just i just throw out the session i throw out the whole convo and i start over and it's like i could that what like it's so much work to convince it to do the thing you want it's so easier to start so much easier to start over and then i'm like oh i guess that that like that thread with that model it's just done forever now so it's kind of sad but can you imagine if we did this at
44:47Brad Axen:work where somebody started to say something that was totally wrong you just like shut the door in their face and said come back and just start start totally totally over okay uh jaggy what about you when it's not functioning right definitely start a new uh session but what i like to do is a habit i'll give it like really keywords that i want if i want the style of something to change so you know if something comes out like to mba like a lot of times i'll say write it like you're a hacker um another thing i like to do is how to like summarize everything that it did the good parts and like take out the bad parts and start a new session based on those instructions great I have learned so much myself.
45:25I'm going to go download Goose
45:27Brad Axen:and build that MCP that I've been avoiding. Where can we find more information about this? Where can we find you two? And how can we be helpful?
45:35Jackie Brosamer:Yeah, definitely check out block.github.io slash Goose. That's like the homepage, all the install instructions. And it should lead you also to our like GitHub repo where we love contributions. And if you want to chat with us about it, we run a Discord for Block Open Source. So get in there and like all of us are in there and we like debug live and all that kind of stuff. So a lot of activity for sure.
45:58Brad Axen:Amazing. Well, thank you so much for sharing all this on the show. Thanks for having us.
46:02Jackie Brosamer:This was fun.
46:03Brad Axen:Thanks so much for watching. If you enjoyed the show, please like and subscribe here on YouTube or even better, leave us a comment with your thoughts. You can also find this podcast on Apple Podcasts, Spotify, or your favorite podcast app. Please consider leaving us a rating and review, which will help others find the show. You can see all our episodes and learn more about the show at howiaipod.com. See you next time.
From the publisher
VP of engineering Jackie Brosamer and principal engineer Brad Axen join me to demo Goose, Block’s open-source AI agent that runs locally, plugs into your existing tools through model context protocol (MCP) servers, and peels away the rote parts of work so people can focus on insight and impact.
This episode is packed with in-depth demos: starting with a messy farm-stand sales CSV, Goose analyzes the data, builds visualizations, and generates a shareable HTML report. We then spin up an MCP that lets Goose talk to Square’s dashboard for inventory management, vibe code an email MCP that can send payment links automatically, and unpack how environment setup, debugging, and tool orchestration get handled behind the scenes.
What you’ll learn:
- A practical, repeatable workflow for turning any working script or function into a custom MCP—and exposing it to natural-language control
- How to transform messy CSVs into visualizations, HTML reports, and actionable business insights without needing a data science background
- Ways to hook Goose into live business systems (e.g. Square inventory, payments) so analysis flows directly into operational action
- The thinking behind Block’s decision to open-source Goose
- Lessons from Block’s bottom-up meets top-down adoption model
- Why organizational transformation, not just picking the right LLM, will separate AI winners from laggards over the next few years
- How to scale an internal MCP catalog
- The organizational transformation required to fully leverage AI capabilities
—
Brought to you by:
CodeRabbit—Cut code review time and bugs in half. Instantly.
Lenny’s List—Hands-on AI education curated by Lenny and Claire
—
Where to find Jackie Brosamer:
LinkedIn: https://www.linkedin.com/in/jbrosamer/
—
Where to find Brad Axen:
LinkedIn: https://www.linkedin.com/in/bradleyaxen/
—
Where to find Claire Vo:
ChatPRD: https://www.chatprd.ai/
Website: https://clairevo.com/
LinkedIn: https://www.linkedin.com/in/clairevo/
—
In this episode, we cover:
(00:00) Introduction to Goose and its data analysis capabilities
(02:27) How Block embraced AI across the organization
(04:48) What Goose is and why Block open-sourced it
(07:45) Demo: Analyzing farm-stand sales data with Goose
(12:18) Creating shareable HTML reports from data analysis
(14:15) Model context protocols (MCPs) that Goose uses
(18:56) Demo: Using Square MCP to create a product catalog
(23:35) Creating payment links from analyzed data
(26:30) Demo: Building a custom email MCP
(31:18) Testing the new email MCP with Goose
(36:09) Debugging and fixing MCP code errors
(38:44) Connecting workflows: sending payment links via email
(41:30) Lightning round and final thoughts
—
Tools referenced:
• Goose: https://block.github.io/goose/
• Pandas: https://pandas.pydata.org/
• Plotly: https://plotly.com/
• Python: https://www.python.org/
• ChatGPT: https://chat.openai.com/
• Claude: https://claude.ai/
• Cursor: https://www.cursor.com/
• Mailgun: https://www.mailgun.com/
—
Other references:
• Block: https://block.com/
• Model context protocol (MCP): https://www.anthropic.com/news/model-context-protocol
• GitHub: https://github.com/
—
Production and marketing by https://penname.co/. For inquiries about sponsoring the podcast, email jordan@penname.co.




