Introducing Skein and Beaker Stack: Using AI Agent Engineers to Ship SaaS Faster
In this special episode of "How Many CTOs Does It Take?" podcast, hosts Scott Porad and Brad Hefta-Gaub discuss Brad's experiment proving that AI can dramatically boost output for teams with strong engineering practices. Brad shares an MIT-licensed open-source SaaS template called Beaker Stack, which includes web and mobile scaffolding, CI/CD for preview/staging/production, automated setup, observability, email tooling, and Stripe-based tiered billing with feature gating. He then uses it to build Skein, a cloud-hosted shared "memory backplane" served via an MCP endpoint that lets multiple AI tools and agents read/write memories with strong security controls and auditing. Brad describes hiring four AI agent "engineers" (Diego, Mei, Rahul, Sarah) with persona "soul files," running them in Nanocloud/Nanoclaw containers for security, coordinating work via Telegram and GitHub, and applying spec-driven, test-heavy guardrails to ship Skein in about 10 days of part-time work. Scott asks questions about Brad's process, and the two hosts debate how different perspectives effect an engineer's process, be they AI agent or human coworker. A video version of this episode can be found on the How Many CTOs YouTube channel!
Resources
- How Many CTOs Pod: https://howmanyctospod.com
- Scott Porad: https://www.linkedin.com/in/scottporad/
- Brad Hefta-Gaub: https://www.linkedin.com/in/bradheftagaub/
- Skein: https://getskein.ai/
- Beaker Stack website: https://beakerstack.com/
- Beaker Stack GitHub: https://github.com/Artificer-Innovations/BeakerStack
#techpodcast #EngineeringPodcast #DevTalks #PodcastForDevs #HowManyCTOs #Podcast #CTOs #CTOPodcast #ChiefTechnologyOfficer #Technology #Engineering #SoftwareDevelopment #SoftwareEngineering #TechLeadership #EngineeringLeadership #EngineeringCulture #TechDebates #AI #SaaS #Engineering #Development #BeakerStack #Skein #TechInnovation #AIRevolution #AIEngineering #AIAssistedCoding #AICoding #AIProgramming #AIAssistedProgramming
0:00 Brad: people's background does inform their way of thinking and we do know that the llms i mean you can get them to give very different answers if you tell them they are they should approach it from a different perspective
0:33 Scott: Hello, everybody, and welcome to this week's episode of How Many CTOs Does it Take? My name is Scott Porat and my trusty co-host,
0:41 Brad: Is Brad Hefta-Gaub.
0:43 Scott: and he texted me the other day and he said, Scott,
0:46 I have to show you what I've been working on.
0:49 I'm so excited. I was like,
0:51 all right, let's get on and let's get on a call and check it out. I can't wait to see Brad.
0:56 You said you didn't tell me much, so I'm not even going to try and set it up.
1:00 Brad,
1:00 why did you text me? What are you working on? What do you want to share with us?
1:03 Brad: OK.
1:04 All right. So I want to start with you and I've been talking about this for a while. I've been really bullish on AI for teams that already have good engineering practices.
1:14 Okay,
1:14 Scott: Okay.
1:15 Brad: right.
1:15 That's been like I've been pounding that drum forever,
1:19 right?
1:19 What I've been saying is I believe and we've talked about this in past episodes. I believe that smaller and smaller teams are going to be able to do bigger and bigger projects if they've got the K-shaped economy. If they've got best practices from an engineering perspective,
1:35 if they understand how systems work,
1:37 then basically these AI agents and AI software assistants.
1:41 the sense are just like gonna make things happen that's not i've been consistent with that story right
1:45 Scott: Yes, you have been indeed.
1:47 Brad: okay
1:48 So I decided I needed to put my money where my mouth was, or as the saying goes,
1:53 and put
1:55 Scott: I think you meant to say put your tokens where your mouth is.
1:58 Brad: my tokens where my mouth is.
2:00 And I've got some charts to show you some token usage.
2:03 But I basically have this thesis that labor costs are dropping.
2:08 That means smaller and smaller teams can build cooler things.
2:11 And so I was like, I need to put this to the test.
2:13 Scott: Okay.
2:14 Brad: That's the setup.
2:15 Scott: All right.
2:16 Brad: So let me tell you what I've done.
2:18 So I
2:20 have like a handful of I got like two dozen ideas in my back pocket for little things little little let's call them SaaS apps b2c SaaS apps that I personally wish existed I like I want this thing I want this thing for myself so I said I'm going to put this to the test and I'm going to start to try to I don't know set some audacious goal of I want to ship a new ship a new SaaS app once every six weeks
2:46 Scott: Okay.
2:46 Brad: Okay, that's my crazy audacious goal I'm going to set for myself.
2:50 And meanwhile,
2:51 you know, I still do my fractional CTO work. I'm basically working more than full time with multiple different clients.
2:57 And so this has got to be stuff that I can get done in a couple hours a day at the most, right?
3:01 What does that mean, right?
3:02 What do I need to make that happen?
3:04 I need really good quality engineering gates.
3:09 Right. I need we've talked about it. I need my CICD.
3:12 I need, you know, automated testing.
3:16 I need I need that just to be able to build software in a high quality way.
3:22 Right.
3:24 I also figured that I needed a whole bunch of features all these things need to have, right? They all need like a landing page with some marketing dribble. They all need signup flows. They all need, you know, like the three different packages of free pro and max,
3:42 you know, and those packages are going to need to have feature metered features that you can like know how much, you know.
3:49 So many, so many AI tokens per month or whatever the heck, right?
3:53 So actually like last November, I kind of said, I'm going to try to build something that will start out as my, my,
4:00 my template,
4:01 right?
4:02 And I worked on it for a couple of days in November and then I put it aside and.
4:07 and stopped working on it but our recent conversations you inspired me to be like this is i need to get my ass off the you know i need to do this right
4:16 Scott: Get off the bench and do the game.
4:17 Brad: get it get off the bench and into the game so a month ago i hired four ai engineers as in i created four
4:29 AI agent personas and
4:31 Scott: Mm-hmm.
4:31 Brad: I set on a crash course to finish my template my template I'm going to I'll share my screen here with you guys here let me share my screen my template is called beaker stack
4:46 It's MIT licensed open source. It's on GitHub right now.
4:49 I'm the only one using it, but it has all these things in it. So let me share my screen real quick.
4:54 Scott: Do your AI engineers have names?
4:57 Like my friend Eric has an AI agent assistant that he is named Frank.
5:03 Brad: As a matter of fact,
5:04 my agents do have a name. Let me show you their name.
5:08 So this is Beaker Stack.
5:11 Um,
5:11 it's ship your SAS faster.
5:15 Uh,
5:15 it's a foundation,
5:16 it's a template that basically has kind of a, all the stuff to do B2C SAS in it.
5:21 Okay.
5:23 Um, it's got.
5:25 a shared website and mobile app it's got full cicd for like preview environments uh staging and production it's got an automatic setup that literally you can just say you fork this template say setup and boom it like you know it's going to ask you a bunch of questions about you know login you know enough enough keys to basically set up the github cicd for like
5:50 like doing aws doing expo all this stuff um and
5:54 Scott: Wait, I got
5:54 Brad: yeah
5:54 Scott: to ask you a question.
5:55 Brad: please jump in anytime
5:56 Scott: When you said you say setup,
5:58 does that mean like you just go like,
6:00 hey, Siri,
6:00 set up this thing for me or like what's
6:02 Brad: it's
6:02 Scott: the difference?
6:02 Brad: an npm it's an npm command so it's npm run setup and it and it does a full-blown setup and it comes out of the box with all kinds of stuff billing um all the stuff that i knew i needed so it's got like
6:16 It's got support for observability through Sentry.
6:19 It's got email marketing through Kit.
6:23 It's got transactional marketing,
6:25 high quality transactional emails through Resend.
6:29 It's got users.
6:31 And in fact, it's even like here's a here's actually this is the demo site BeakerStack.com.
6:37 And you can see that.
6:41 This kind of has all the stuff that you expect,
6:44 you know,
6:44 Scott: Mm
6:44 Brad: like, what
6:44 Scott: -hmm.
6:44 Brad: are my features? Oh,
6:46 I got all these features.
6:47 What's the kind of the CTA?
6:49 What's the billing?
6:50 So here,
6:51 it's got built-in support for Stripe for subscription services.
6:56 You know, you can see it's got feature A and B are not turned on on the free version.
7:00 Feature A gets turned on. And all this is just configurable and the setup wizard will actually ask you a bunch of questions to set.
7:07 set this up and boom,
7:08 Scott: And
7:08 Brad: get going.
7:08 Scott: I would think in 2026, when we're recording this,
7:12 something like this already exists,
7:14 doesn't it? Or is this the first one of its kind?
7:17 Brad: Well,
7:17 I'm not going to go so far as to say it's the first one of its kind.
7:19 There certainly are tons of packages out there to get going.
7:23 You know, Next.js is obviously like great for people to get going on it.
7:29 But what I found was none of those packages like
7:32 like had the soup to nuts of what I expect out of a high quality engineering team.
7:39 So in other words, those packages don't come pre-built with like true CICD to let me do, you know, a PR and get an ephemeral environment that I can test, right?
7:52 Or they don't come with like, they don't come with like observability built in.
7:58 Scott: Got it.
7:59 So there's these packages that like provide the website and the mobile app software,
8:04 but they don't provide the developer infrastructure around it.
8:07 Brad: That's my take on it,
8:09 Scott: Got
8:09 Brad: right?
8:09 Scott: it. Okay, cool.
8:10 Very cool.
8:11 Brad: You asked me, like, you know, name my developers.
8:15 So this I'd like you to meet. This is Diego.
8:19 Scott: Hi Diego
8:20 Brad: Diego started work with me on May 10th.
8:24 And as did May.
8:26 May joined on May 10th as well.
8:29 And Rahul and Sarah.
8:33 Scott: Okay.
8:33 Brad: And.
8:35 I, you know, this is not, this is not, you know, I'm not going to say this is rocket science.
8:40 I,
8:40 I created these agents, I gave them their soul files,
8:43 which basically describes their, their, their personality,
8:45 how
8:45 Scott: They
8:45 Brad: they work.
8:46 Scott: have soul files?
8:46 They have soul files?
8:48 Brad: In this case, that's, that's a pretty standard thing. Now, most, most agent packages, you kind of give them a soul.md and a, and then, you know, that basically kind of points them at the way.
9:01 way they behave right
9:02 Scott: Oh,
9:03 Brad: so it's
9:03 Scott: I've
9:03 Brad: a little never bit heard. different yeah
9:04 Scott: That's news to me.
9:05 Brad: that's pretty standard these days
9:06 Scott: That
9:07 Brad: right
9:07 Scott: is very metaphysical, though we're getting into different territory now.
9:11 Brad: yeah you know immediately i basically started i happen to use nano i set them up on nano claw because i liked the nano claw gave me like a better um security profile you know uh it uses one cli to basically keep um
9:27 things like access tokens and things like that are restricted so I can assign Sarah only has access to a GitHub access token, which is her account.
9:38 So she can only do things as Sarah.
9:40 And so literally all of these contributions that she's done, they are attributed to this agent clearly through GitHub.
9:50 So anyway, so that's my team.
9:51 And just to clarify,
9:53 like they help me in all kinds.
9:54 all kinds of ways so like here's an example where i so uh i wanted to make beaker stack easier to use where there's the there's the template stuff and then there's the stuff that's like specific to the app so i i
10:06 used my cursor agent and I strategized and wrote up a feature brief called adopter owned app zones for easier template upgrades.
10:15 So this is me doing the work of I'm describing as a product owner a feature that I want you know and this is this is just normal engineering practices for for teams like that you and I work with for years right so a feature brief was written it includes a business need except
10:32 acceptance criteria,
10:33 a proposed implementation,
10:35 and that was me kind of running my cursor agent to do that.
10:40 But
10:40 Scott: Mm-hmm.
10:40 Brad: then I ask my team of developers,
10:43 hey,
10:44 please do a tech plan review.
10:49 And so Diego comes in and he's immediately says there's a blocking problem here. The phase order is inverted and he's read through my plan and he's critiquing it.
11:00 Right.
11:01 And then, you know, May comes in.
11:04 She's got a different personality, a different perspective on development,
11:08 and she comes up with similar types of critiques and then unique critiques to her.
11:12 Right.
11:13 And then Rahul came in with his critique.
11:16 I then like, oh,
11:18 sent my agent to kind of fix that and, you know, came up with architecture diagrams.
11:24 So basically this iterative process that I'm kind of blowing through here real quick, this is the kind of stuff that you would expect if you had teams of multiple engineers.
11:33 Scott: Mm-hmm.
11:34 Brad: And I'm using these AI agents to do the same type of.
11:38 of expected quality work that you would expect from a senior engineer on the team or you know a junior engineer on the team reviewing each other's work right eventually
11:47 Scott: Okay
11:48 Brad: i was kind of like right around uh uh
11:52 So May 17th, I was like,
11:54 okay,
11:55 these guys have been working for me a week. They've really cranked out the platform here for me,
12:00 but now I need to actually build something with this.
12:03 And by the way, we're recording this on June 3rd, so just over two
12:08 Scott: It's relevant.
12:08 Brad: weeks ago.
12:10 I said,
12:11 I have an idea for something I want.
12:13 What that is, I'll tell you what that is.
12:15 That is a,
12:16 I want a...
12:18 essentially a shared memory backplane that I can share across not just multiple agents,
12:24 but across all of the different AI tools that I use.
12:27 So I use Cloud,
12:29 I use ChatGPT, I use Cloud Code,
12:31 I use Cursor, I have the agents that are running this different stuff.
12:33 And I want to be able to create essentially a memory backplane that
12:38 Scott: Mm
12:38 Brad: is
12:38 Scott: -hmm.
12:38 Brad: served by an MCP server that any of these agents can...
12:42 can can can basically store memories or I can store memories and they'll they're able to use that as a resource to look things up so I don't have to so it's like I don't want to have to tell chat GPT the same thing I just told Claude and I don't want to go tell cursor the same thing I told chat GPT pretty straightforward idea in fact there's a handful of products out there that kind of do this so on May 17th I
13:10 I wrote my initial planning brief.
13:13 Well, to be fair, I used Claude and I said,
13:16 Claude, I want this thing.
13:17 Does such a thing exist?
13:20 I don't think it does.
13:21 Please go do market research for me.
13:24 Here are my expectations for what I want.
13:28 And basically,
13:29 Claude and I wrote up a business plan,
13:32 a technical architecture.
13:34 a competitive analysis and all that started on May 17th basically
13:39 Scott: Okay.
13:40 Brad: a week later I actually started coding on this project I'm calling it Skane.
13:48 Skane is like a
13:51 Here you go. I'll show you a quick demo.
13:53 So Skain is the thread that connects your AI tools.
13:56 Scott: Got it. Like a skein of yarn.
13:57 Brad: A Skain of yarn,
13:59 exactly.
14:00 And I wanted it to have a reliable MCP endpoint.
14:04 I wanted to be able to capture from the web, but more importantly, I wanted all my agents to be able to write,
14:09 read and write to it.
14:10 But I really wanted security in this, right?
14:12 So I didn't want,
14:14 I wanted this to be able to, I wanted to be able to control like if I gave access
14:18 access to an agent.
14:19 I could see what its access was.
14:22 I could control its access.
14:23 So for example, I could later edit and go, oh,
14:26 NanoClaw shouldn't be able to write to memory.
14:28 It should only be able to read from it.
14:30 And I wanted to be able to audit,
14:32 what did it do?
14:33 What did it search for?
14:34 What did it capture?
14:35 Did it try to delete something?
14:37 And so that's the thing that doesn't exist out there.
14:40 And that's what I wanted.
14:41 So that's the main thing that this...
14:43 thing Skane does so
14:44 Scott: Mm-hmm.
14:45 Brad: this is this is literally by the time by the time this I mean this is out there now you Scott you could play with it right now I plan to like you know release it to my friendlies here in the next couple days but certainly by the time this episode comes out get Skane.ai is going to be available and open and anyone will be able to log into it get a free account start using it right away and
15:10 All the upgrade paths are built in.
15:13 And so I literally built that in 10 days of part-time coding with me and my four employees,
15:23 my four agent employees.
15:24 Scott: Wow
15:26 I mean, that sounds like an understated wow,
15:28 but like, that's a wow.
15:29 Brad: As an example, by the way, I'll show you this real quick. This is kind of just to kind of make the scale of this clear.
15:35 This is my cursor dashboard for the last year.
15:40 And, you know, this is just me in cursor. This doesn't count my agents. And this is kind of like all of the projects that I work on, you know, across my different.
15:51 fractional CTO clients or some of them I write code for them and then my own personal projects and you can see here this is essentially May 17th was when I started doubling down on BeakerStack and May 24th was when I actually started building Skain and so if you look here you can see that you know I was typically doing a couple thousand lines of code a day and
16:15 Scott: Mm-hmm.
16:15 Brad: then
16:16 And on the 17th, almost 11,000 lines of code,
16:20 36,000 lines of code,
16:22 13,000 lines of code,
16:24 20,000 lines of code.
16:25 My biggest day here, I think, was 38,000 lines of code.
16:30 This is just my contribution, not counting the other four robots.
16:34 I know I'm rambling. I went super fast on all that. But my meta point here is.
16:41 This isn't about vibe coding.
16:43 This is about applying classic engineering best practices and driving that velocity by using AI agents.
16:55 Scott: Yeah.
16:55 So many thoughts.
16:57 Here's just the first one, first
16:59 Brad: Yeah.
16:59 Scott: two.
16:59 First one is I'll go back to wow.
17:01 Like this is just really cool. And it's really amazing you did it because so many people talk about it and you had an idea and you made it happen, which is skein. That's pretty sweet.
17:13 My second comment is this evolution makes a lot of sense to me. And here's what I mean by that.
17:21 The journey that I've been on for say the last six or nine months is
17:26 The upstream part,
17:27 the spec part.
17:28 How do we go from vibe coding to what we've been talking about a spectrum and development or STD?
17:35 Because we're trying to make a system, we're trying to structure that upstream part in order to get better outputs.
17:40 What I'm sensing here is that
17:44 Now, this is also like called the downstream part,
17:47 right,
17:48 which is logical,
17:49 right? It's like, oh, just like we needed to structure the upstream part away from the vibe,
17:53 we need to take the vibe out of vibe coding,
17:55 we need to take like the YOLO out of, you know, building and deploying,
18:01 right?
18:01 Brad: And building and deploying.
18:02 Yeah, totally.
18:03 Scott: And so that makes a lot of sense to me and it's very exciting.
18:07 The next two things I have are questions.
18:09 Brad: Sure, please.
18:10 Scott: One is just a...
18:11 Practical question about beaker stack and skein.
18:15 Brad: Sure, totally.
18:18 Scott: So how do those two things connect,
18:21 right?
18:21 Skein is like this software that's like a shared memory in the cloud somewhere. Maybe it's hosted locally. I don't really know where it is, but it's like the shared memory concept,
18:30 Brad: Yeah.
18:30 Scott: right?
18:30 But then beaker stack is actually like the business scaffolding around
18:34 Brad: Yeah.
18:34 Scott: it.
18:34 How do those two parts fit together?
18:36 Brad: Yeah,
18:36 Scott: Because
18:37 Brad: I love it. my Thank
18:37 Scott: first
18:37 Brad: you.
18:37 Scott: question,
18:37 Brad: Yeah.
18:38 Scott: my second question is, let's just, I don't even know how to ask this. So I'd love to learn more about the scaffolding.
18:45 around your workforce,
18:47 right?
18:47 Brad: Yeah.
18:48 Scott: How are you running those?
18:50 Brad: Okay.
18:51 So I'll start by saying Skain is a cloud hosted.
18:59 You know,
19:00 it's targeted B2C,
19:01 so it's kind of targeting consumers like you and I who maybe are active AI users who are frustrated by the,
19:11 damn it, I just told Claude this,
19:12 why do I have to retail cursor the same thing, right?
19:15 Scott: Yep.
19:16 Brad: And it's hosted as opposed to being open source for a couple reasons.
19:22 The first one is that...
19:26 You actually need to host it if you want the cloud things like CLAWD and ChatGPT to be able to talk to it.
19:33 Scott: Yeah,
19:33 Brad: They
19:34 Scott: of
19:34 Brad: need to be able to hit a thing on the public internet,
19:36 right?
19:37 Scott: course.
19:37 Brad: So it's very much, it's got all its features, and I kind of rattled off the security features that were important to me.
19:43 But just think of it as just like any other like cloud-hosted SaaS app that, you know, you log into it, you use the software,
19:51 you...
19:53 You know, you pay your monthly fee and it does the service for you.
19:58 Scott: But I guess what I'm asking
19:59 Brad: is for instance maybe you could put up the screen the free pro max screen for
20:05 Scott: Yeah,
20:05 Brad: skiing I
20:06 Scott: yeah, sure.
20:07 Brad: guess
20:07 Scott: Yeah.
20:07 Brad: what I'm asking is in my mind the way I think about it maybe I'm thinking about it wrong so like skein is one application that does a thing and like beaker stack is a different application that does a different thing how
20:19 Scott: Totally, totally.
20:19 Brad: do those fit together
20:20 Scott: Cool.
20:21 Let me explain that.
20:22 Yeah.
20:22 Awesome.
20:23 So basically,
20:24 scane is a fully deployed.
20:26 deployed application that does all this stuff,
20:30 lets
20:30 Brad: Yeah.
20:31 Scott: you capture thoughts,
20:32 you know, blah,
20:33 blah, blah.
20:34 I built it on top of
20:38 Beaker Stack.
20:39 So you could think of Beaker Stack as just like any other framework.
20:44 So it's kind of like you could compare it to Django or something like that, right?
20:49 It's an opinionated framework where the opinions that I knew I wanted it to make easy for me were...
21:00 The shape of the features that you're looking at here.
21:03 Brad: Mm-hmm.
21:04 Scott: So BeakerStack, to answer your question,
21:09 BeakerStack has built into it the idea of multiple payment tiers with different features. They can be arbitrary. These are obviously arbitrary names,
21:21 feature A, feature B.
21:23 Monthly versus annual,
21:25 it's got, you know.
21:27 It's got full flows here.
21:28 So if I basically like, you know, click start, get started with pro,
21:34 I'm going to get sent to a signup funnel that lets me connect to Stripe and buy the pro version.
21:41 Brad: So let me, if you can go back to Skain for a second, let me just say this back to you to see if I understand.
21:48 All right. Let's say I wanted to make skein.
21:50 I don't want to make skein. I want to make you're doing balls of yarn.
21:53 I'm going to do rubber band balls.
21:54 So I'm going to do rubber band ball
21:55 Scott: Yep.
21:56 Brad: dot com.
21:56 OK,
21:57 so I install beaker stack and I'm imagining maybe there's some folder in there called app.
22:02 Scott: Yep.
22:02 Brad: And that is where I actually stick rubber band ball.
22:06 Scott: Yep.
22:06 Brad: And then, OK,
22:07 rubber band ball has a bunch of features.
22:09 Well, I just use skein. Right. So skein is in the app folder and then it looks like skein has I'm just counting here. Maybe.
22:14 Maybe 25 different features or
22:16 Scott: Yep.
22:16 Brad: something right or maybe it's not 25.
22:18 Maybe it's less doesn't matter and
22:21 So I would imagine that
22:25 beaker stack has some sort of
22:29 already built-in way of tracking what kind of account I have and
22:33 Scott: Mm-hmm. Yep.
22:34 Brad: some sort of manifest where you indicate I've got a pro account which means I get features X Y & Z and I don't get features PD & Q and then
22:43 I guess there must be some library available to the app inside the app folder where I can, maybe
22:50 Scott: Yep.
22:50 Brad: it's a decorator on a function or I don't know what it is, something that
22:53 Scott: Yeah.
22:53 Brad: allows me to easily make something available or not available.
22:56 Scott: Yep.
22:56 Brad: Is that kind of how it works?
22:57 Scott: That's exactly right.
22:58 It happens to be, I based it all on React and React Native.
23:03 Another opinionated part of BeakerStack is I wanted the web and the mobile to be able to quick, you know, share same business.
23:10 this logic and so yeah you basically got it exactly right so BeakerStack has a billing module that Skane didn't change at all
23:21 Skein hasn't touched anything out of the package billing.
23:24 All of the stuff for the Skein features are all in app and actually in app adopter. So the adopter component is where you put your you put your custom web pages,
23:36 you put your custom business logic,
23:38 you know, you and and, you know, the features that just work for free out of the box are all this billing stuff.
23:47 accounts you know even other stuff that like I knew from working with you know I've worked with plenty of other you know entrepreneurs who are like I'm gonna I need to build this like you know landing page that that I want to run a marketing campaign against well stuff like this home page is pre-baked SEO optimized right like
24:12 I changed the configuration.
24:14 I rebuild it. It is fully SEO optimized.
24:18 You don't have to figure that out.
24:20 Brad: Now, okay,
24:21 now we're talking about like web and mobile apps here, but Skein itself.
24:26 feels a little back-endy to me it doesn't have a user maybe it has a user interface to manage it or something but it's really an api or an mcp server and
24:34 Scott: Yep.
24:35 Brad: so you just put that in your app adopter folder
24:37 Scott: Yeah, in this particular case,
24:39 yeah, totally.
24:40 In this case, it does have an MCP server interface in it.
24:45 I built beaker stack on top of many different services. One of the main services I'm using is
24:52 is super base but
24:53 Brad: Mm-hmm.
24:53 Scott: it could have been built off of pure aws and and stuff like that but i used super base because it's pretty good hosting and has a bunch of the features that you care about like a real high quality sql database a vector database built-in skein obviously does um
25:15 It supports embeddings so that when you you know, if the thought that you've captured is Scott Porat is the co-host of the How Many CTOs podcast and another thought is Brad Hefta-Gaub is the co-host of the How Many CTOs podcast and Then somebody says well,
25:32 who are the hosts of the of the
25:35 How many CTOs podcast,
25:36 you know, embeddings and vector searches the way that those types of searches
25:41 Brad: Mm-hmm.
25:41 Scott: work? Well,
25:42 Supabase has built-in vector search,
25:45 so I just had to implement the embeddings feature.
25:49 But yeah, you're right.
25:50 There's, I mean, there is a user interface to it.
25:56 So this is this happens to be the user interface,
25:58 you know, for
25:59 Brad: Mm-hmm.
26:00 Scott: all these different features that it has, you know, including like my billing setup or,
26:04 you know.
26:07 security oh
26:08 Brad: That
26:08 Scott: there
26:08 Brad: is the, yeah.
26:09 Scott: you go something goes wrong every live demo something goes wrong
26:12 Brad: Yeah, well,
26:13 this is staging.
26:14 And this is your view as the administrator.
26:17 Is this, I'm sorry, question,
26:18 is this your view as the administrator of get
26:21 Scott: this is
26:21 Brad: scene?
26:22 Scott: my view as a user of
26:23 Brad: Okay.
26:23 Scott: Skeen yeah
26:24 Brad: So I'm getting the vibe of how this works.
26:26 So now my other question was,
26:28 how did you use the word manage, but maybe the word operate is a better word?
26:33 How
26:33 Scott: Yeah.
26:33 Brad: do you manage and operate your workforce?
26:36 Scott: Yeah,
26:36 that's a good question. So like, how do I tell Diego what to do and and all that?
26:42 Brad: Yeah.
26:42 Scott: Yeah.
26:42 Brad: You just put in tickets and GitHub issues and somehow open up Claude and say, did you go work on this? You're like, what did you do?
26:48 Scott: Yeah, a little bit. I told you already I use Nanoclaw.
26:53 And Nanoclaw is like.
26:56 open claw um it allows you to set up a bunch of agents um it has a bunch of interfaces on top of it that you can you can talk to them with uh um telegram or you could talk to them through command line you could hook up slack and stuff like that um
27:15 Brad: So NanoClaw is a locally hosted LLM.
27:19 Scott: No.
27:20 NanoClaw,
27:20 Brad: No.
27:20 Scott: that's a great, great question.
27:22 So NanoClaw is a locally hosted agent framework,
27:28 and it has the thing that I liked about NanoClaw, so it's similar to OpenClaw, but what I liked about NanoClaw is the agents all get their own Docker image,
27:39 excuse me, their own Docker container. And...
27:44 They and NanoCloth supports,
27:47 uses one CLI, which is a token proxy for.
27:55 agents to talk to external services so in other words so i'll show you this real quick so i
28:02 Brad: So it sounds like nano claw is slightly more secure than open claw because
28:07 Scott: feel like it's more secure for sure you
28:10 Brad: it's
28:10 Scott: know sort exactly
28:10 Brad: of compartmental containerizing things a little bit better.
28:14 Scott: so um this happens to be my docker desktop right running and you can see i got kinds of all kinds of different stuff running in here but you can see
28:22 You can see that this is Diego's, Diego,
28:24 May and Sarah happen to be currently running inside of their their containers.
28:31 Mm So
28:31 Brad: -hmm.
28:31 Scott: they're they're completely isolated to that space. They can't go outside of that container.
28:37 And that's that's one way I can control them to make sure or control that they don't do.
28:42 They don't have access to my email.
28:44 They don't have access to the rest of my drive.
28:46 They only have access to that container.
28:47 Brad: versus open claw which had access to everything and
28:50 Scott: Yeah.
28:51 Brad: what models are those using are they do you configure them to say use claw or use whatever
28:56 Scott: Yeah.
28:57 Yeah, that's a great question. And I'll show you I'll answer that question by kind of showing you my my conversation with them.
29:03 So this is this is my telegram. So I'm often saying things like team,
29:07 please rereview.
29:09 GitHub,
29:09 Skan, AI,
29:10 Pool 119. It includes additional code for admin and to set comps as well as more tests, you know, and
29:16 Brad: This
29:17 Scott: then.
29:17 Brad: is so dystopian, by the way, the fact that you're using telegram to talk to your agents.
29:23 Scott: why is that dystopian
29:25 Brad: Well, just fast forward to the future where we're in the movie times and we're like in a dystopian future and you're having to use your encrypted messaging app to talk to your AI agents that are controlling the world.
29:36 Please give me more food and water. I'm begging you.
29:40 Scott: well yeah so anyway i talked to them i mean this i actually planned to set up slack but i was just so i was making so much progress i didn't need the feature slack but i what i really want is slack
29:50 Slack where I can just have individual like uh you know DM channels with Diego you know a different one with Diego Sarah May and and um Rahul and then and then to team ones and you know stuff like that but basically I assign them GitHub issues
30:04 I asked them to review GitHub pull requests or GitHub issues,
30:08 you know, and they jump on it and, you know, that's how I work with them.
30:13 Brad: So can you ask a specific person to do a specific thing like you said team please
30:18 Scott: Yeah,
30:18 Brad: review.
30:18 Scott: yeah, I do.
30:19 Like, so for example,
30:20 Brad: Rahul,
30:20 Scott: here I
30:20 Brad: yeah,
30:21 please.
30:21 Scott: said, Rahul, please do a code review of pull 394 upgrade vi test on this repo to address a
30:27 Brad: We
30:28 Scott: CVE.
30:28 Brad: talked about we talked about soul.
30:30 dot md
30:31 Scott: Yeah.
30:31 Brad: early tell me about raul and sarah and may and diego what who what who are they did
30:39 Scott: Yeah, that's a great question.
30:41 I want to so I I'll have to
30:45 Brad: you
30:45 Scott: pull I'd
30:45 Brad: did you
30:45 Scott: have to pull
30:46 Brad: have
30:46 Scott: it up.
30:46 Brad: a childhood trauma in their soul
30:48 Scott: I didn't necessarily add any childhood trauma,
30:50 but I did give them backstories that.
30:53 I intentionally wanted them to be influenced by the idea of a backstory.
30:57 So I basically wrote up a persona for each of them.
31:03 And so, for example,
31:04 May's persona includes that she got her start in technology in hardware.
31:12 And so for her, the idea of you can't do a patch to hardware,
31:17 so she really leans into correctness and quality,
31:23 basically.
31:24 The backstory I gave Sarah was that she basically was very much got her start in small startups, and so she's kind of got a bias for action.
31:37 Let's not
31:37 Brad: Mm
31:37 Scott: overcomplicate
31:38 Brad: -hmm,
31:38 Scott: things,
31:39 Brad: mm
31:39 Scott: you
31:39 Brad: -hmm.
31:39 Scott: know.
31:41 uh shippable is good enough kind of kind of perspective for
31:45 Brad: Yeah.
31:45 Scott: example and so and diego and rule have slightly different backstories and
31:49 Brad: Can I just sidebar on those perspectives for a second?
31:51 Scott: sure
31:52 Brad: We're having this conversation at the company that I work at about velocity related to AI and all this stuff.
31:58 I mean, everybody has everybody's talking about velocity because everybody just wants stuff to go faster. But we're having this conversation about velocity.
32:05 And I was talking to one of our engineering managers.
32:07 And she said something very interesting to me.
32:10 She said, you know.
32:12 I used to work at a defense contractor.
32:14 Like, I feel like we go blazing fast here.
32:17 Scott: Yep.
32:18 Brad: And I was like, like when you guys are all talking about going faster, faster, faster,
32:22 I'm like, this is I'm already thinking this is madness.
32:27 And I and I I've come I'm more like Sarah, I came from that startup world.
32:31 And so that was a really interesting perspective to me just a moment where I was like, Oh, that is interesting.
32:37 Everybody's bringing their experiences.
32:39 their sole MD file to the table, right?
32:42 And they're bringing different perspectives. And I think it's really fascinating. And I think it's fascinating that you wrote those into those agents as well.
32:50 Scott: I'm not 100% certain how much value I'm getting out of that, but my initial thesis was that people's background does inform their way of thinking.
33:04 Brad: Absolutely.
33:06 Scott: We do know that the LLMs, I mean, you can get them to give very different answers if you tell them they should approach it from a different perspective,
33:16 right?
33:17 It is kind of all about the probability generating machine, but if you preload the probability generating machine to have a bias for one perspective or the other,
33:29 it directs the output.
33:31 Brad: I learned about something recently.
33:34 from someone I work with,
33:36 a woman who I'm going to give her a little credit right here,
33:38 Jillian Kando.
33:39 She's one of the directors on our team.
33:41 She taught me about something,
33:43 her pointed me towards something to read called the six thinking hats.
33:47 Are you familiar with this?
33:48 Scott: No, it sounds interesting.
33:49 Brad: It is interesting. It's a framework.
33:52 I'm not going to relate it exactly perfectly, but basically there's these six thinking hats.
33:57 Each one has a different color and just each one.
33:59 brings a different perspective like the white hat focuses on pure facts the red hat focuses on feelings and intuition the black hat folk is the devil's advocate hat yellow hat the optimism positive hat you know etc and so it's a it's
34:14 It's kind of a tool for like we're having you know when a team is having a conversation like what What color hat do you have on when you're bringing this up?
34:21 And I think it's a tool mostly for getting people to have a little awareness of what they're bringing to the conversation
34:27 but when I think about having these agents like
34:30 what hat you're essentially giving one of those hats to sarah or may or diego or whomever and it's like if you got a team of a bunch of you know red hats which are focused on intuition compared to a team of a bunch of black cats which are focused on skepticism you know what different outcomes are you going to get
34:48 Scott: Yeah.
34:49 Brad: imagine a little i can imagine when you build the version of um
34:54 Is it artificial?
34:55 Is that how you pronounce it?
34:56 Scott: Artificer.
34:56 Brad: How you pronounce it?
34:57 Scott: Artificer Innovations.
34:59 Brad: Artificial intelligence itself could be a beaker stack thing whereby you just slide the dials for what kind of agents you want.
35:08 Scott: The question of do different agents with different perspectives,
35:13 does it change the result?
35:17 And I think it does.
35:20 At least so far in my experimentation for the last month at this,
35:24 they definitely come up with different things.
35:28 They come up with a lot of the same things,
35:30 but they come up with different things.
35:32 Brad: Yeah.
35:32 Scott: And when I can look at essentially the amalgam of all of them and iterate on it, then I feel like I get at least as good of a product as I would if I had four humans.
35:46 trying to wear the same types of hats.
35:48 Brad: I was at kind of a meetup seminar kind of thing where someone was talking about the agents they were building.
35:58 I'm not going to be able to relay it perfectly,
36:00 but I think the concept will come across.
36:02 And I also,
36:03 I'll tell you a flaw, not a flaw, but a part I don't understand.
36:07 He said, look,
36:08 I have like a code review agent and I actually have three personas,
36:12 right?
36:12 Like let's just call it the liberal,
36:14 the centrist and the conservative just to.
36:17 Illustrate three and I actually have those agents each do a code review and then I have each do a code review with Gemini OpenAI and Anthropic
36:29 and then so now i have nine code reviews and then i'm not exactly sure how he said the part i didn't understand is how he synthesized them you know one because you got to pick one of those models to synthesize it right um but i thought i just thought that was kind of clever like everything's given as different perspective and you need to kind of like then do them all and but i don't know how the amalgamation part where i don't really synthesize that back into one code review
36:52 Scott: I haven't tried to solve that,
36:53 and the reason I haven't tried to solve that is because how would you do it if you had humans?
36:56 human you'd
36:57 Brad: Well, you'd just read it and you'd synthesize it in your head.
37:01 Scott: let all three people do their reviews now you got like maybe
37:05 Brad: All nine people.
37:06 You have all nine people do
37:07 Scott: it. you have nine people do their code reviews and you got you know you got um a lot of overlap where they're like plus wanting each other's comments and then you got some unique stuff where like only one of them came up with it
37:20 Brad: Right.
37:21 And so, yeah, unless you're, is this, right, I guess the question is, is this a spot that requires a human in the loop or do you just roll the dice with one of the models and say, synthesize all this for me?
37:35 Scott: I, okay,
37:36 so that's a great question.
37:37 I'm going to answer that practically for the month I've been doing this.
37:42 So I want to say like a couple things.
37:45 One.
37:46 The first couple days of letting the agents write issues,
37:50 critique each other's plans,
37:53 and then I would say,
37:55 hey, start building it.
37:57 Then they would produce a pull request.
37:59 They would ask each other to do code reviews.
38:01 I would still be like, I would still do a final review and merge it.
38:04 Brad: Mm
38:04 Scott: OK,
38:05 Brad: -hmm.
38:05 Scott: first couple of days I did that.
38:06 I then got really excited of like,
38:09 wow,
38:09 this is working. Like, I feel like my human in the loop.
38:12 loop isn't adding that much value so
38:14 Brad: Mm-hmm.
38:15 Scott: i asked them to work overnight and to only start working once their plan had been approved by everybody on the team and to start working on their pull requests and then do code reviews i told them not to merge anything but i basically gave them i took out myself out of a couple places in the loop
38:38 Brad: Mm-hmm.
38:39 Scott: And when I woke up in the morning,
38:41 I had like 30 PRs, five of which were usable.
38:48 Brad: Hmm.
38:50 Scott: And so I was like,
38:52 okay,
38:52 that was a little bit too,
38:53 I didn't get the right guardrails.
38:56 I didn't put the right guardrails in place.
38:58 I have not yet gone back to taking myself out of the loop. I think that's.
39:03 I don't think they're ready for that yet.
39:05 I don't necessarily think it's a problem with the models.
39:08 I think it's a problem with my,
39:10 I haven't given clear enough acceptance criteria for each step along the way.
39:17 Brad: Mm-hmm.
39:19 Scott: And we talked about this almost we talked about this three or four weeks ago, you and I did, where I told you about one of my engineers that worked for me on one of my teams, and he's gotten he's he's been able to get his agents to have really strong acceptance criteria enough that he's starting to take himself out of the loop on a handful of of human in the loop places.
39:42 That's a kind of a guardrails that's that's a.
39:46 That's a that's a agent guardrails tuning thing.
39:51 Now,
39:51 Brad: Mm-hmm.
39:51 Scott: what I feel good about is they still have like Beaker stack has literally almost 100 percent code coverage on.
39:59 Brad: thing this year it's like 99 statement coverage 95 branch coverage and like 98 function and 99 line coverage it's like very high quality coverage it's got incredibly it's got great integration tests as well and it's got end-to-end tests that test all the features like they literally fires up on web it fires up playwright and does the whole thing right so
40:23 So that's the kind of stuff that are guardrails that I would want for you and me if we were just human developers,
40:29 right?
40:29 Like that's exceptional level of guardrails for human developers.
40:34 So I feel like if I've got the guardrails for the human developers,
40:37 then I should be...
40:40 more confident that i can let the the agents work so long as they can access all those tools um
40:45 Scott: Mm-hmm,
40:46 Brad: now what i'm not certain of is well here's the other important point i'm i'm not spending a ton on tokens so i have like the max plan on cursor and
40:57 Scott: mm-hmm.
40:57 Brad: i have the pro plan on clod or something like that so we're basically like
41:04 I mean, those are not cheap,
41:06 but it's less than $400 a month of token spend.
41:12 Scott: Mm-hmm.
41:13 That surprises me that it's not using a ton of tokens. Why is that?
41:16 Brad: I think that's because I'm still human in the loop.
41:19 I think the way that people are burning through tons of tokens is I think that if I did say to these agents like,
41:26 hey, you're allowed to go wild.
41:30 So long as all the local quality gates pass,
41:33 then I think I would wake up and they'd have 100 PRs and then I would be sort of left with like,
41:42 oh, how many of those do I actually want to merge?
41:46 Scott: Well, this is pretty amazing.
41:48 Let me ask one more question about
41:51 beaker stack you built it you've got skein you got beaker stack you built skein on top of it you have this uh useful tool you call it a b2c it is b2c technically it's almost like b2d business to developer because i don't see a lot of people who are ordinary c's using this thing but i could be wrong about that
42:10 Brad: Using
42:11 Scott: skein
42:11 Brad: skein or skeins.
42:12 Yeah,
42:13 sure.
42:13 Yeah,
42:14 it's definitely a power user tool.
42:15 Scott: definitely a power user tool but here's my question
42:17 question if a tree falls in the forest and nobody hears it is there to hear it does it make sound and
42:24 Brad: Yeah, sure.
42:25 Scott: so you've got this thing does beaker stack have the marketing platform built into it
42:30 Brad: Partly. So like I said, Beaker Stack has, it's integrated with Kit so you can do nurture campaigns.
42:39 It's integrated with
42:43 uh it has fully optimized seo so it's you know your landing page um is optimized and it's got you know it's got things like articles and stuff like that so you can kind of do your seo optimization where you write articles about yourself
42:56 Scott: Mm
42:57 Brad: saying
42:57 Scott: -hmm.
42:57 Brad: how you're great and you know you get the things to you know the crawlers to find you um i
43:04 This is clearly not launched and it's clearly not it got zero users,
43:08 right?
43:08 Scott: Right.
43:09 Brad: That's not yet the piece,
43:11 the part of the thesis that I'm trying to test.
43:14 Scott: I understand.
43:15 Brad: But I think it's a good point. And the and like you and I have talked a little bit about this, which is an idea is only as good as whether it solves a problem for for customers enough that they see value in it.
43:27 Scott: Well,
43:27 I'm actually coming at it from a slightly different perspective.
43:30 perspective,
43:30 a little bit more of a
43:32 business business growth perspective which
43:34 Brad: Yeah.
43:35 Scott: is this i believe this solves a problem for customers but how do you how do we get it in front of those customers right you mentioned seo that's one way to get it in front of them another way to get it in front of them is for diego and may and your other employees to all have linkedin accounts and post articles about what they're doing at work so their social is another way to get in front of customers there's paid is another way to get in front of customers
43:58 And my observation, of course, there's, you know, PR is another way to get in front of customers.
44:05 My observation,
44:06 not about beaker stack or skein,
44:08 it goes all the way back to, you know, way long, just my experience with startups is engineers often see a problem and they go out and fix it.
44:19 And then they don't actually know how to get their.
44:25 solution in front of people who have the problem.
44:28 Brad: Totally agree with that.
44:29 Scott: You know, there was a time when I made a website about cats work.
44:35 It was successful. It was a successful startup.
44:37 And it made me stop believing that I had any idea about what was or wasn't going to be successful.
44:44 Brad: Right.
44:45 Scott: Because I was like, look,
44:46 if I could make a website about cats work,
44:48 anything can work,
44:49 Brad: Right.
44:49 Scott: right?
44:50 And when I would talk to people who are doing startups,
44:54 people would come to me and they'd say, what do you think of this idea?
44:55 idea.
44:56 And I would say, sounds great.
44:57 How are you going to find the customers?
44:59 Who
44:59 Brad: Yeah,
44:59 Scott: needs
44:59 Brad: totally.
45:00 Scott: your ball of skein? And how are you going to get in front of them?
45:03 And that to me
45:07 For me personally, that's always been the mystery,
45:09 you
45:09 Brad: Well,
45:10 Scott: know.
45:10 Brad: and I'll say like that's a legit observation and this this episode will come out, you know, a month from now and and we'll find out if any if anybody's using it, you know, three weeks after I launch it.
45:23 Scott: Well,
45:23 what you're saying is that wasn't the problem you were trying to solve,
45:26 which I appreciate.
45:28 That's great.
45:29 Brad: Well,
45:29 it's not it's not that it's not that I'm saying it's not the problem I was trying to solve.
45:33 I do want people to use Skane and the next six other ideas that I also plan to build.
45:38 Scott: Mm
45:38 Brad: And
45:38 Scott: -hmm.
45:39 Brad: so, you know, finding a way to market them, whether that be a combination of social,
45:45 you know, whether that be paid advertising,
45:48 SEO,
45:49 etc.
45:49 That's there's an element of my.
45:53 factory of software projects philosophy
45:55 Scott: Yeah.
45:56 Brad: that I didn't cover with you today that I
45:59 Scott: Yeah.
45:59 Brad: do have in the back of my mind or in written documents I plan to
46:04 Scott: You
46:04 Brad: execute know, against.
46:05 Scott: it's like you need to build a bot farm into into a beaker stack so it can go out and vote all your posts.
46:12 Brad: Well,
46:12 there are many other...
46:17 tools that I think are needed to operationalize the factory that
46:21 Scott: Yeah.
46:22 Brad: don't exist in the form that I want.
46:26 And those, therefore,
46:28 they might be other things that the factory builds.
46:30 Scott: Yeah.
46:31 I think this is amazing.
46:33 And I think, Brad,
46:34 the most amazing thing about it is that you did it.
46:37 Brad: Well,
46:37 Scott: as
46:37 Brad: thanks.
46:38 Scott: engineers we often see the solution to a problem and
46:42 Brad: And I feel like that's good enough.
46:44 Identified the solution.
46:45 Scott: yeah we're like oh i know i can here's how we would solve that we can here's how we can do that and you know in your head yeah we could build that this is how we would do that blah blah but we never go do it and then there's another thing we do which by the way if i had a nickel for every one of these we start it
47:02 Brad: Yeah.
47:02 Scott: If I had a nickel for every folder on my laptop of something I started and spent,
47:07 you know, a couple of nights on and then got tired of because it got hard, I'd have a lot of nickels, right?
47:13 We do that. But you actually saw it through and did it,
47:15 which is pretty amazing.
47:16 Brad: Yeah,
47:16 I appreciate that.
47:17 One of the things that is driving this is this idea that all those nickels, I want to make it so that I can.
47:26 Come up with the idea,
47:27 fork BeakerStack, run a setup,
47:30 and in the first hour, have the shell of the new app up and running.
47:35 And that's
47:35 Scott: Yeah.
47:36 Brad: what I did with Skane.
47:37 Like literally from the moment I forked BeakerStack and said running,
47:41 it was 45 minutes later,
47:43 the initial Skane website was up.
47:47 Now, it didn't have any of the features yet.
47:50 But it was up with billing integrated,
47:53 with observability integrated,
47:54 with everything integrated.
47:56 Scott: See what I want from Beaker Stack is this.
47:59 I want to be out for a hike in the woods talking with my good friend Brad talking about some idea and be like,
48:05 oh, that would be cool.
48:06 And I want to be able to send an SMS.
48:09 And
48:09 Brad: The
48:09 Scott: by the
48:09 Brad: telegram.
48:09 Scott: time we get back to the car,
48:13 it's up and running. It's already spamming the internet with AI posts on Instagram and YouTube and whatever.
48:21 And we got a trillion dollar valuation.
48:23 Brad: There is somebody out there called Pulsia AI,
48:26 I think, that is the beginnings of almost trying to do that, where they started with the lead gen sort of like strategy type thing.
48:37 And I don't know how many people have built apps on Pulsia, but this is not a unique idea.
48:44 And I think you're right, there's value in it.
48:46 Scott: Well, Brad,
48:46 amazing.
48:47 I think what I'm going to say to all.
48:48 To all of our listeners is do not smash subscribe,
48:51 do not rate and review,
48:52 do not tell all your friends about this. Go straight to beakerstack.com.
48:57 Brad: Yeah.
48:58 Scott: Actually, go straight to GitHub and give it a star.
49:00 Brad: Give it a star and start your own start your own out of the box SAS app.
49:07 Scott: Can we put the link in the show notes?
49:09 Brad: For sure.
49:09 Link in the show notes.
49:11 Scott: All right.
49:12 Brad,
49:12 this is awesome.
49:13 Thanks for reaching out.
49:14 Brad: Yeah, it was fun.
49:15 Scott: This is the best kind of bonus episode.
49:17 I love it.
49:17 Brad: Love it. All right, man.
49:18 Scott: Talk
49:18 Brad: Nice talking
49:19 Scott: soon.
49:19 Brad: to you. See you next week.
49:20 This episode of the How Many CTOs Does It Take podcast was produced and edited by Safran Heptakow.
49:26 Our theme song was AI generated by Brad.
49:29 Please follow us on all the social media platforms at...
49:33 How many CTOs pod?
49:35 You can find us on YouTube,
49:37 LinkedIn,
49:37 Instagram,
49:38 Facebook,
49:38 Threads, X,
49:39 TikTok,
49:40 and Patreon,
49:41 or at our website at howmanyctospod.com. And remember to rate, review,
49:46 and subscribe on the podcast platform of your choice.
49:49 Thanks for listening.