Description Transcript
AI Build Week #2 — Day 2 of 4
Today we are building a real-time Churn Radar dashboard using Stripe + Assist.
A few quick links to follow along:
Resources: https://drive.google.com/drive/folders/1iweVY317R8MRYqgOHw3v9Hn1zd6z8KhP?usp=drive_link
Q&A + Discussion: Drop questions in Q&A or chat. We will follow up live and in the Community thread:
https://community.retool.com/t/ai-build-week-day-2-from-payments-to-predictions/62829
Full week schedule + RSVP for remaining sessions
https://events.retool.com/aibuildweek2
00:00 Waiting Room
03:00 Welcome to AI Build Week Day 2
06:08 What is AI Build Week?
07:12 Voluntary churn and involuntary churn explained
09:37 What is the traditional way of building in Retool?
10:45 Retool's AI AppGen capabilities explained
14:35 The different ways you can build in Retool
16:55 What makes Retool different?
19:03 What is Enterprise AppGen?
21:09 Where to find demo resources
22:35 Demo: How to prompt a churn dashboard in Retool
24:25 How to connect Stripe data to Retool
28:36 How you can re-create this demo
31:00 How to customize your dashboard
31:55 Inside Retool's code tab
33:19 How to change the brand themes
34:00 How to add new columns in Retool
35:05 Version history in Retool
37:36 Prompting a table that shows customers with expiring credit cards
38:43 Creating a query that sends emails
39:54 Troubleshooting tables in Retool with prompts
41:34 Does Retool have visibility to the source code of the app?
42:48 Prompting best practices in Retool
43:25 A prompt to measure revenue impact
44:05 How do I know Retool won't run incorrect queries and mess up my data?
45:46 Does Assist work for building Workflows and Agents?
46:10 How are OpenAI and Anthropic keys managed in Retool?
48:22 How is LLM behavior monitored and guarded in terms of security?
48:45 Can Assist improve existing Retool apps? And what guardrails are in place?
50:10 Extra resources
Read more 0:07 [music] 0:26 Hey, hey, hey. 0:34 [music] 0:45 [music] 0:51 [music] 0:57 >> [music] 1:04 [music] 1:14 [music] 1:17 >> Heat. 1:37 Hey. Hey. Hey. 1:40 [music] 1:44 >> [music] 2:10 [music] 2:21 [music] 2:26 [music] 2:32 [music] 3:02 >> Hello everyone. 3:04 Hi, good morning, good afternoon, good 3:07 evening. I know we have folks from all 3:09 around the world here. Uh, some familiar 3:12 faces from yesterday and some new people 3:15 joining us. So, welcome. Yesterday, 3:18 Kenan showed us how to build an app in 3:21 minutes using US government web traffic 3:24 data. Um, and so you could see the recap 3:27 in the community forum which we'll post 3:29 the link uh in the chat and also on our 3:32 YouTube channel. We also posted all of 3:35 the questions and all of the answers 3:37 from day one in the community thread. Uh 3:40 so if you want to check that out, go to 3:42 community.retool.com 3:44 and um check out day one of AI 3:47 buildweek. All right. So coming up uh 3:50 today we have Angelique, a developer 3:53 advocate here at Retool. Uh she will 3:56 take us through building an app using 3:59 Stripe, being able to predict churn 4:03 risk. Um we have a lot of really great 4:05 stuff coming up. We do have two more 4:07 sessions coming up for AI build week. 4:10 This week we have Kenan back again 4:12 tomorrow. He'll show us how to take a 4:14 spreadsheet and turn that into a fully 4:16 functional app. So make sure you tune in 4:19 tomorrow at the same time. And then for 4:22 all of our AMA folks, folks in uh 4:25 Europe, uh we actually have uh our 4:28 enterprise solutions engineer al Alexis 4:31 who will walk you through building 4:33 production ready apps on top of your 4:35 data. And so that is at 700 a.m. Pacific 4:39 time or 2:00 p.m. uh GMT. So make sure 4:42 you catch us then as well on Thursday 4:45 for the final day of AI build week. Um 4:49 all right so Angelique um pretty soon 4:53 she will be going through uh today's 4:56 demo and then uh as is for all AI build 5:00 week it's meant to be a really 5:01 interactive session uh so you know if 5:04 you have anything to say any feedback 5:06 any questions let us know in the chat 5:08 she'll be going through kind of the demo 5:10 first uh and you can all follow along we 5:13 have resources that are posted in the 5:15 chat um I'll be posting them again right 5:17 once I'm off of here and uh we have 5:20 people behind the scenes helping to 5:21 answer those questions and also 5:23 Angelique will be answering them live 5:25 toward the end of the session. We'll 5:26 have a big chunk for Q&A. Uh so make 5:29 sure you get your questions in either in 5:31 the chat in the Q&A uh feature here or 5:36 in the community forum or on YouTube 5:38 wherever you're watching we are 5:40 listening. So, all right, to get us all 5:44 started, uh, where is everyone tuning in 5:47 from? Yesterday, we had folks from all 5:49 around the world. I'm here in the Bay 5:51 Area, Angelique's in New York, Kenan's 5:55 in Chicago. So, uh, let us know where 5:58 you are watching from. And all right, 6:02 looking forward to seeing your 6:04 presentation. All right, Angelique. 6:07 >> Thank you, Sarah, for that introduction. 6:10 I'm really excited about today. I'm 6:11 going to go ahead and actually just 6:13 start sharing my information here. 6:16 So, 6:23 okay. 6:25 Yes. Here we go. Okay. So, welcome 6:29 everybody. This is day two of AI build 6:31 week. Okay. So, I I just kind of want to 6:34 reiterate the same things that Sarah 6:36 said, which is that this is a week of AI 6:39 building, which means that we're going 6:40 to be sharing some learning bits on how 6:42 to be using AI inside of Retool. So, 6:45 somebody should be dropping a link soon, 6:47 honestly. And you guys can check out the 6:49 other ones. If not, check out Kenan's. 6:51 It's really, really dope. And check out 6:52 Kenan tomorrow. Um, now, as always, my 6:56 name is Angelo Torres. I'm a developer 6:58 advocate here at RET and I'm very 7:01 excited about today's topic because 7:03 we're going to be doing some building a 7:06 real time turn 7:10 dashboard in minutes. 7:13 Okay. So actually before we talk about 7:16 retool and all the capabilities that you 7:18 might have heard in retools summit I 7:20 want to actually covering a little bit 7:22 more about like turn and what that is 7:25 really. Well, there's actually a number 7:28 that keeps like subscription business 7:29 owners up at night, and that is the 7:31 average SAS company loses around 4.2% of 7:36 their customers every single month. That 7:39 is a medium churn rate across the 7:41 industry. For a business that, let's 7:44 say, makes like $1 million, that would 7:46 mean $400,000, give it a tick, you know, 7:49 that is literally walking out of the 7:51 door, you know, and like when you look 7:53 at it percentage wise, you're like, you 7:54 know, whatever. It's not that much. We 7:56 have business. But no, these are things 7:58 that you can track. And so this is 7:59 actually some of the statistics that uh 8:02 or like some research that was made in 8:04 2024 and it explains that it is a 8:08 portion of 4.2 but it is distributed 8:11 between two. You have the voluntary 8:13 churn which is 3.5%. And that is 8:16 something that is mainly people choosing 8:19 to leave whether they're dissatisfied by 8:21 the pricing, they don't like the EUI, 8:24 they're just they're just not happy. So 8:26 they have even like a cancellation date 8:28 that is upcoming. Then you have the 7% 8:32 which is the involuntary turn and these 8:34 are customers that want to stay but they 8:36 have failed payments, they have expired 8:39 uh credit cards and then also they're 8:41 having billing issues. So all these 8:43 things are really signals that you can 8:45 track and address and you can see 8:48 coming. So for some understanding of the 8:50 section that we're going to be doing 8:51 today and with the time that we're 8:53 given, I'm going to be covering the 8:55 involuntary turn. I know I know I know 8:58 the 3.5% is a lot and there's so much 9:01 information especially if you have 9:02 really good like mock data or just like 9:05 experimental data or even like real data 9:08 that would make this very beneficial. 9:10 However, given the constraints of time 9:12 and how the building is going to go in 9:14 this situation, I'm going to be tackling 9:15 that 7% which is still a lot. If you 9:18 guys are interested in like seeing maybe 9:21 like the voluntary churn or want me to 9:23 do something additionally, I can hop on 9:25 a Twitch stream or we can make another 9:28 resource in the community forum. Just 9:30 let me know. You can drop it in the 9:31 chat, whatever you're interested in. 9:33 Okay. So to actually get started with 9:35 the information, I think many of you 9:38 might be thinking okay well yes um if I 9:41 start going and like ideulating how I 9:45 can build this project traditionally in 9:47 retool that would look like looking at 9:49 the stripe documentation in this case 9:50 where I have my data even though it's 9:52 comprehensive I still need to have some 9:54 level of understanding from there I have 9:56 to be like okay cool uh I think I 9:58 understand now I'm going to do some 10:00 queries I'm going to get push or pull 10:02 some of you know you can do your 10:04 resource queries with that or you can be 10:06 like oh I've received my JSON file now I 10:09 have to normalize that data now I have 10:11 to like configure web hooks or I have to 10:13 set up authentication all these things 10:16 right then need to be connected to a UI 10:18 if you want something for your 10:20 stakeholders to look at or if you want 10:21 some user input depending on how you 10:23 want to deal with that information what 10:25 I'm trying to say is that hours it would 10:28 take you hours if you are really expert 10:30 with re really using retool and 10:32 connecting to APIs. It could take you 10:35 days if you're like learning as you go. 10:37 You still get make it, you know. Um, but 10:40 I kind of want to introduce you another 10:42 way that you can build on retail. Now, 10:46 so here it is. This is the AI assistance 10:48 inside of Retail, which allows you to 10:50 describe in plain English what you want. 10:52 So, let's take this example, right? You 10:54 have I want to build a customer turn 10:57 prevention dashboard that uses at 11:00 Stripe. And let's pause there. We can 11:02 see that the stripe is actually in 11:04 purple. This this is an imitation of 11:06 what it looks like on the platform. 11:07 We'll show it in a second. Um and that 11:09 is because as part of this AI 11:10 assistance, you can at mention resources 11:13 that you have already set up in your 11:15 platform. And so this is I mean this is 11:18 nothing new, right? We know all the 11:19 capabilities that retool has the ability 11:21 to connect to whether it is Postgress, 11:23 data bricks, snowflakes, rest APIs, open 11:26 API, open AI like etc etc. uh you can 11:30 just set them up once as an organization 11:33 and then add mention it in your AI 11:36 assistance. is basically our API 11:39 connection and then it would be like 11:41 okay create three queries get one for 11:43 the customers get one for the 11:44 subscriptions get one for the invoices 11:46 and then you have another at symbol here 11:48 and that is because this AI assistance 11:50 has full context while it is generating 11:53 and after it has generated it knows the 11:56 components it knows the queries it knows 11:57 the connections all inside the 11:59 application here in this example I have 12:02 already a table that I had named 12:04 customer table and so I wanted to take 12:06 that exact table the result will look 12:08 something like this, which I mean it's 12:10 not it's not bad at all to be honest. 12:13 Pretty awesome. Um, so now we're looking 12:15 at like, okay, we're expanding who can 12:19 create and what type of builder can be 12:21 making tools inside of retool. Let's 12:24 take another example. Let's say this one 12:27 is like uh show me customers with fail 12:29 payments. Well, okay, cool. It has 12:32 created a toggle where it now is 12:34 highlighting only those specifically. 12:36 Then let's be like add a risk score 12:40 based on billing signals. The AI builds 12:43 the logic and then ta voila a new very 12:46 beautiful column that is also colorcoded 12:48 things that it has decided for itself. 12:50 And something I want to say here is that 12:52 every query written takes into accounts 12:54 all of your permissions and will 12:56 explicitly ask the user before running. 12:59 So that would mean like once you have a 13:02 query that pops up in this AI 13:04 assistance, it's going to say do you w 13:06 to preallow them like for the whole run 13:09 or do you want to allow them per 13:10 resources or do you want to be like 13:12 always in the loop and the thing is that 13:15 you know in contrast to maybe other some 13:17 code generations we're really telling 13:19 you what the plan is and we want you to 13:21 be aware and not create complexity but 13:23 rather reduce that. Okay. Then one last 13:26 one. Um, make this dashboard be 13:28 colorcoded alerts, right? Okay, maybe 13:32 Superman colors. Okay, now what I'm 13:35 saying also here is that you're not 13:37 really just writing boiler plate. You're 13:40 not having to do this constant context 13:42 switching between your documentation and 13:44 your code editor. This AI assistance has 13:46 full awareness of not only the app but 13:49 also of your like of the retool 13:51 documentation. So whatever questions you 13:53 have about like uh how do you do this or 13:55 what is this component supposed to do 13:58 you can ask that even if you don't have 14:00 anything on the screen let's say that 14:01 you do have something on the screen well 14:02 then you can ask what is the application 14:04 supposed to do what is this interaction 14:06 supposed to be creating or making again 14:09 it creates this capability of sharing it 14:13 with other people inside your 14:14 organization makes collaboration easier 14:18 and we'll talk about it in a second but 14:20 it's about how you best build. And so 14:23 yes, now you can have conversations and 14:25 your AI understands both your data and 14:28 your intent. So I will be talking about 14:31 a shift that that well I'm going to be 14:34 demonstrating that shift today. So 14:36 welcome welcome to the new era. This is 14:38 building with retool. We know that RTOL 14:41 is here to provide you good, beautiful 14:43 internal software and you can create 14:45 apps, agents, workflows with your LLMs, 14:48 your data sources or APIs and deploy AI 14:51 across your business. 14:54 So speaking about the whole context 14:56 switching, right? What did I mean by 14:57 this? Well, the whole way that you used 15:00 to build and retool if you're, I don't 15:01 know, an expert user doesn't go away. 15:04 There's still the drag and drop. There's 15:06 still the prompting. Well, this is the 15:08 prompting and what it looks like now. 15:10 Um, this is actually over here where it 15:12 says always ask to return queries. That 15:14 is where you would check off that uh 15:16 preapprove that I mentioned about. And 15:19 then at the same time, you have code. 15:21 I'm not saying that like oh like now the 15:24 only way to build on retool is through 15:25 prompting. No, no, no, no, no. like 15:27 those capabilities are still there and 15:29 it's just a matter of you know building 15:32 idea or transforming ideas into software 15:35 depending on how you want to portray 15:36 them whether it is through chatting 15:39 whether it is through the canvas inside 15:41 the ID you're never losing that flow 15:44 right um but I also do find 15:46 transformative here is that it enables 15:49 people who might not be traditional 15:50 builders to build functional 15:52 productionready applications and this is 15:55 huge it opens up the door for many other 15:57 builders and in the sense that you might 16:00 be an engineer and you're like I've you 16:02 know I want to be building my internal 16:04 tools cool then make that JS file make 16:07 that like Python script on workflows 16:09 whatever works for you works for you 16:11 like customize it do libraries doesn't 16:13 matter right but we're also saying like 16:15 not every single person at a company is 16:17 an engineer and sometimes the marketing 16:20 person the data team the ops team might 16:24 have some internal apps that they want 16:26 to 16:26 Right? So this gives them the ability to 16:29 not have code or coding knowledge as a 16:33 barrier but rather it is them as domain 16:36 experts who really get to go in and just 16:40 be building whatever is their problem 16:43 depending on how their knowledge fits 16:45 in. So this allows the marketing person, 16:47 the data analyst, somebody who works on 16:49 supply and chain to know everything and 16:53 build whatever they want. 16:55 Aha. So what makes building a retool 16:57 different? Well, I like to point out a 16:59 couple things in difference to what we 17:01 are seeing right now in the landscape. I 17:03 would say the first one is death to 17:05 boiler plate. I'd mention it. I mean 17:07 like you go to the other ones and then 17:08 it's like a bunch of code that is given 17:10 to you and even as somebody who's 17:12 technical, I might be reading and be 17:13 like this is so much I don't know if I 17:15 if there's ever error like or like an 17:18 issue I don't know how to go back rather 17:20 than like just having to like read every 17:22 single thing. And it might not be my 17:23 coding style. might not be like the way 17:24 that I'm like accustomed to. So it's 17:27 creating a lot of mountains of code and 17:29 it often multiplies complexity rather 17:31 than reduces it. Well, RTO was built 17:34 with the idea of building like being 17:35 this sort of like compossible no com 17:40 these Lego building blocks you know that 17:42 compose uh blocks to create the perfect 17:45 layer of abstraction. 17:47 Uhhuh. So with that said, you know, you 17:50 see these other softwares just kind of 17:52 implementing AI because of the boom, you 17:55 know, let's let's be real about it. Um, 17:57 and then there might be a second 17:58 thought, but the reason why it works 18:00 perfectly with retool is because it's 18:01 the whole package. It's the whole 18:02 platform. I'm not saying, oh, there's 18:04 only a natural language interface. No, 18:06 there's also agents that can orchestrate 18:08 automated critical processes. There's 18:11 also the retool AI which is a resource 18:13 query that allows you to call whatever 18:16 model you want whether it is retool 18:18 manage or your own keys and then like 18:20 make whatever script you wanted to do or 18:22 whatever functionality. We also have 18:25 vectors. What I'm saying is like you 18:27 have different ways and they're there to 18:29 complement what was already there rather 18:30 than like substitute make something a 18:32 little bit more convoluted. 18:36 Another one here is I mean this is 18:37 nothing new. It connects to everything. 18:39 Retail connects to your data and your 18:41 tools that your business depends on. So 18:43 whether that is a database, an API like 18:45 stripe or an LLM that you choose, the 18:48 data your business already runs on, 18:51 which is important because these apps or 18:53 automations that you created creating in 18:55 retool are composed against your actual 18:58 schemas. So you have production ready 19:00 without any rework. 19:03 Ah, here's another thing. I know that 19:06 many of you maybe saw the retool summit 19:08 announcement and from there we said that 19:11 this is what really makes retool an 19:13 enterprise app gen application. What 19:15 does that mean? Well, for context it is 19:18 AI that creates apps and automations 19:20 anchored in enterprise context. So your 19:23 live data, your governance models, your 19:26 security postures and your deployment 19:28 environments. It allows apps and 19:31 automation generation into the 19:34 enterprise environment itself. So for 19:37 the first time how I mentioned you have 19:39 the domain expert right maybe somebody 19:41 who might be aware of the technical 19:43 aspects but or like are just not 19:44 technical at all and this is somebody 19:46 who just knows the information very well 19:49 and then you also have the engineering 19:51 team and they can all build together in 19:53 the same platform against the same data 19:55 with the same guard rails. 19:58 That was too extra. Never mind. Uh not 20:01 in disconnected sandboxes that might be 20:04 like, you know, tool box or toy box. Uh 20:07 but something that is really like side 20:09 by side on a real system that matters. 20:12 Uhhuh. 20:14 So a couple things that I want to say 20:15 here about this enterprise app 20:16 generation. You have that it means 20:19 deploying on your cloud or in ours. So 20:21 your data never leaves your stack that 20:24 keeps sensitive information in access 20:26 patterns and controls stays inside your 20:29 environments. 20:31 It is secure by default. Every app 20:33 automatically confirms to your orgs, 20:35 SSOs, RBAC, the compliance policies 20:39 because the generation happens inside 20:41 the platform whether where where the 20:45 governance is actually defined in and ah 20:49 I mean I think the other one gave the 20:50 spoiler already but you could configure 20:53 source controls with GitHub to manage 20:55 changes using pull requests, pushes, 20:58 commits. You just have to create the 21:00 repository for the source control to use 21:02 and then configure the GitHub app for 21:04 your retail instance. 21:07 [gasps] 21:09 So let's build. Okay, so let's do this. 21:13 I'm going to close it in here and I'm 21:14 going to open up this application. I'm 21:17 going to move this to the side. 21:20 Awesome. So this is I mean this is 21:23 nothing new. This you already know what 21:25 this is. Okay. However, if you want to 21:27 follow along, um I have made this folder 21:30 over here that actually contains three 21:32 files. Well, a folder in two files. Uh 21:36 the first one is actually where the 21:38 prompts are going to be in. I do have to 21:41 give the context that this the whole 21:44 point is not to generate the same thing 21:46 every single time within the prompts. 21:47 Depending on how specific you are or how 21:49 broad you are, it might be interpreted 21:50 in different ways. Right? So in this 21:52 particular scenario, it might make the 21:55 same. It might make some variations in 21:57 yours. So just keep that in mind um if 21:59 you don't see the same thing happening 22:01 uh in your screen and my screen. So 22:03 these are not like you have to do them 22:05 in every specific order. I'm just going 22:07 to try to go in this order when it comes 22:08 to the second prompts. Now the other 22:11 thing that I want to talk about is 22:12 actually this folder here. But let's get 22:15 started with the generation of this. Let 22:17 me move this. 22:19 Okay. I'm going to copy paste it. 22:24 I'm going to go over here. I'm going to 22:26 create app. 22:30 Oh, 22:32 I didn't copy paste it. Never mind. 22:34 Okay. 22:36 Voila. Okay. I'm going to say I want to 22:40 build a customer turn risk dashboard 22:42 with this is the ad resource. Here you 22:45 have the basic pro customer data. That's 22:48 the name that I had for my Stripe 22:50 resource. I'll show you in a second. And 22:52 what is it going to do? It's going to 22:53 have a KPI at the top. I then want 22:55 filters. And then I also want a table 22:58 that has all the customers and I want 23:00 information like the latest invoice 23:02 payment, the subscription status, and 23:03 the score. Could take liberties and add 23:05 more, add less. We'll see. Um, and then 23:08 I also wanted that when I click on it, 23:10 it actually expands and it gives me like 23:12 the subscription and the invoice table. 23:15 I've also told it like what the risk 23:18 score should be. So when it is at zero, 23:20 it means that that is very good. That's 23:22 very healthy. Uh and then if it's at 23:25 100, well, you know, that person's going 23:27 to leave me soon. Um so yeah, I have cut 23:29 like outlined it like that. So I'm going 23:31 to be um explaining a little bit, but uh 23:35 for now I'm going to talk about the 23:37 updated plan that I make. So it actually 23:39 kind of goes step by step. Right now 23:41 it's put four steps in it task. The 23:43 first one is going to connect to the 23:44 stripe resource and it's going to check 23:46 the schema. Then it's going to do the 23:48 dashboard layout. Then it's going to 23:50 follow up with the data flow as well as 23:52 the risk calculation logic and then the 23:55 detail implementation steps. Especially 23:57 when it gets to four, it kind of starts 23:58 expanding and it goes, oh, okay. So, I'm 24:01 going to deal with the static resources. 24:03 I'm going to deal with like naming 24:05 conventions, right? This is pretty cool 24:06 because if you already have an 24:07 application and you're like, I my names 24:10 are like all over the place. Well, this 24:12 is why you have this AI assistance on 24:14 the side to make it better and to be 24:16 more um detailed. How do we have access 24:19 to that? Well, you click over here and 24:21 then it expands. I can also close it and 24:23 reopen it again. There you go. Still 24:25 going to be calculating. So, let's talk 24:27 about the resource that I'm going to be 24:28 using. I'm going to go over here. I'm 24:29 going to create a new tab. And this is 24:32 the resource. 24:33 You might be familiar with this already 24:35 to be honest. This is nothing new to 24:37 retool or anything. Here I have my 24:39 Asana, Slack, Stripe, even Confluence 24:42 API set up. How do I do that? I go and 24:44 create new resource. 24:46 And then from there, I might be like, 24:49 oh, I want notion or I want Jira. No, I 24:52 don't want that one right now, but I 24:53 want the strike one. So, I'll go here. 24:56 And then it's just giving me a name, 24:57 which is the reason why I chose basic 24:59 and pro. The reason being is that in my 25:01 customer data that I'll show you in a 25:02 second, I actually have set up a payment 25:05 of a subscription that is basic for $29. 25:07 and then the pro for $99. 25:10 My API key is going to be added in here. 25:13 And this is my Stripe dashboard. As you 25:16 can see here, I have my publish and 25:18 secret key. I particularly would do the 25:21 secret key. 25:23 And the reason why this is in test mode 25:25 is because that's the only way to add 25:27 fake data into your dashboard inside 25:30 Stripe. If you use the real sandbox, 25:33 you're only allowed to do it if you have 25:34 like uh something that a customer has 25:37 submitted for you or anything. So keep 25:38 that in mind. That's one caveat here. So 25:42 the resource would end up looking 25:43 something like this. Tada. Once you put 25:46 it in, it like encrypts it on the 25:48 server. Pretty cool. Uh okay. Yes. So 25:52 actually details like the type of usage 25:54 and like which applications have I done 25:55 it in. If you had any questions, you can 25:57 do like test connection. So let's go 25:59 back and check before I continue on with 26:00 the next things. Okay, right now as I 26:02 said it did step number four and it has 26:06 revised it to now do step five. Cool. So 26:09 let's go one by one. Made the connection 26:11 check. Then it did the design layout and 26:14 the component hierarchy. My bad. Let me 26:16 expand this window. 26:18 Um okay. And then from here it has 26:21 selected the sort of theme in there. It 26:24 has also done a wireframe saying where 26:26 things should be in in the same way that 26:29 I can close this down. It also has a 26:30 technical spec. There you have it. Um, 26:34 it's making a title. It's making the 26:36 table. Oh, good. These are stuff that 26:38 you can like drag and drop. And the and 26:39 the cool thing is that depending if it's 26:41 not like really interfering with a 26:43 component that they're really 26:44 interacting with, you can like do stuff 26:46 at the same time. It's not preventing 26:47 you from like, oh no, I just I can't do 26:49 anything. No, no, no, no, no. That 26:51 that's not a thing. Okay, so it has 26:54 created the dashboard skeleton and the 26:55 containers and the UI components. Right 26:57 now it is working on static properties 26:59 and all components. Oh, and this is 27:02 where I want to get. Voila. Create 27:04 stripe queries for data retrieval. Right 27:06 now it is doing a get from the path of 27:09 v1 customers. And I want to run this 27:11 query. 27:13 I will talk about other things in a 27:15 second. That is why in the next 27:17 following option, I'm actually going to 27:19 just pre-authorize anything for this 27:21 resource particularly. So, I don't want 27:23 to be like checking every single time 27:26 just for time sake. So, run every query 27:29 that has been related to that resource. 27:31 And we're going to leave this. We can 27:33 already see a couple of things be set up 27:35 like the high risk, medium risk, and low 27:36 risk KPIs. It has the subscription 27:39 status, has the risk levels, and I can 27:42 search, but there's no data, so I can't 27:44 search. So cool. Let's go here. What 27:46 data are we talking about? Well, we have 27:48 the customers. And when I go inside, it 27:51 gives me information like which plan are 27:53 they on? Which type of payments have 27:55 been tried on? And then also like the 27:57 default payment method. This is fake, 27:59 don't worry. Uh then just any type of 28:02 invoices that they might have paid, 28:04 voided, or uncollected. This person has 28:06 two uncollected. Pretty bad. So, what am 28:09 I gonna go? I have over 50 customers 28:12 that I have added in here. And I'm going 28:16 to go into invoices. I could show you 28:18 that I have some uncollected. I have 28:19 some past due, some open. So there's a 28:22 little bit of diversity here that should 28:23 be reflected in the other space. And 28:26 then same way you also have the 28:28 subscription which right now it only 28:30 shows the active. Same thing. There's a 28:32 couple people who are on trial, some 28:34 people who are active, some people have 28:35 canceled. So what I've made is actually 28:39 I in the Google Drive give you the 28:41 ability to work on this data if you 28:43 want. So this is a folder that I've made 28:46 with a bunch of scripts like these. The 28:49 reason being is that this CSV that you 28:51 see here, the stripe customer fake data 28:54 I think it's called CSV only is able to 28:57 have the names of the users and then 29:00 also the email. But really you can't add 29:03 the payment information um all at once. 29:06 So for that the first script is in 29:08 charge of importing all the customers 29:09 then creating the products. So in this 29:11 case the basic and the pro subscriptions 29:13 then adding the payment methods. Those 29:15 are the payment methods that you saw 29:16 over there. I made it such a way that it 29:18 has a diversity of uh card expiration 29:21 dates if you want to check that. I also 29:25 made a sorry my bad create product 29:27 create subscriptions and then the 29:29 subscription in this case would be the 29:31 people subscribing whether they're 29:32 cancelled, passed through, activated or 29:34 anything. and then create invoices, 29:36 right? If any of them have any 29:37 uncollected, pass through, open, unpaid, 29:40 voided, etc., etc. If you just want to 29:42 run this, then you can do run all um 29:44 setup. I did this all from the terminal, 29:46 just connected with to uh CLI. I just 29:50 put the the key, the secret key, the 29:53 same one over there. I also added the 29:54 keys to every single one of them. So 29:56 again, if anybody has any question or 29:58 anything, this is the resource that we 30:00 can have another conversation about and 30:02 I can help you with. But that is how you 30:05 have access to the same things that I'm 30:06 going to be building on. Okay. So, we're 30:09 in step number nine. Let's go back to a 30:12 couple things. So, over here has made 30:15 these queries. Don't worry about this. 30:17 We'll figure it out as they go. Uh, 30:19 let's expand. Let's see what type of 30:20 information have they gathered. Okay, 30:22 here's a JSON file and I can say, let me 30:24 see 30:27 invoice. Cool. Let me get the customers 30:29 to see if this is actually working. 30:32 Kimberly Thompson. Let's check that. 30:35 Let's go to customers. Kimberly 30:37 Thompson. Good. This is not an error. I 30:40 I was trying to test out something that 30:42 I'm gonna show you in a much, you know, 30:45 and an application that I built with the 30:47 AI assistance. It just took me longer 30:49 and I was like more thinking about it, 30:51 but I'll show you in a second. Okay. So, 30:54 they get customers query, they get 30:56 subscription, they get invoices. 30:59 Oh, we have pulled in some information. 31:01 Awesome. Okay. So, we can see right now 31:04 it has detected the email as like the 31:06 EMER tag. And I can actually go here and 31:09 switch that. I'm like, I don't really 31:10 like that this is a tag. Okay. Then I 31:13 can do a tag. Awesome. The description, 31:16 the same thing. I'm like, uh, I don't 31:18 like it that is nothing like a string. 31:21 I'm going to also do a tag. Prettier. 31:24 Okay. The wrist levels I need to work on 31:26 because they're all green. They should 31:28 not all be green. And then the risk 31:29 score is good for now. Okay, awesome. 31:32 Um, can move this over here if I feel 31:34 like it. And then we're connecting 31:36 components to data source. Okay, soon 31:39 actually it should make it so when I 31:40 double click it opens up this like new 31:42 drawer that has created has also done 31:45 the calculations and the transformers. 31:47 Where is this data existing? Well, I 31:50 mean like is this is nothing new. It's 31:52 just a different way of building inside 31:54 the platform. So you should know where 31:56 this is in the code tab. Okay. So you 31:59 can go in and you can test out any type 32:01 of resources here. You can check the 32:03 transformers if you want to check 32:04 anything. It it's actually pretty 32:06 detailed in the way that I is going 32:08 about this type of building. Um so yeah 32:12 another thing here the components. Yes. 32:14 And then the pages I can actively like 32:17 drag and drop things as this is 32:18 happening like nothing will change. 32:20 Let's say that I wanted to add that 32:21 image. That image will stay. It won't 32:23 just like refresh the entire thing and 32:25 go we can't do anything right now. Okay, 32:29 let me close this here. Let me go back 32:32 to the AI assistance. 32:35 Okay. Uh, it's working on this. Let's 32:37 check if this works. Let's do active. 32:40 Awesome. The filters are working. Let's 32:43 do risk medium. 32:45 Okay, a couple medium. Um, 32:50 Donald Allen. Awesome. And it even 32:53 updates the KPI, which is pretty dope, 32:54 actually. Okay. M this is good to me. 33:00 Should be done actually very soon. We're 33:02 in step 11. Oh, we just finished. Voila. 33:06 Um, awesome. So, let's see. 33:09 Hey, there we go. That's the double tap 33:12 that I said about opening up this drawer 33:14 and it has information like the 33:15 subscription and the invoices. Perfect. 33:17 [clears throat] 33:19 Um, let's do 33:22 I feel like doing the breathing first. 33:24 This is a this is one of the 33:26 capabilities that it has and it's that 33:28 you can make an app theme. We saw it 33:29 actually in the presentation for the 33:31 retool summit. They did it but like with 33:33 Spotify if it's something really known 33:36 like you can just go ahead and tell it, 33:38 hey, I want this to look like Santa 33:39 Claus or I want this to look like 33:41 Coca-Cola color-wise. I'm not saying 33:43 that it's like all of a sudden going to 33:44 change things, but hey, this is pretty 33:46 good to me. I like these colors 33:48 actually. Awesome. And if you wanted to 33:51 change them organizationally wise, you 33:52 can go over here, add theme, and then 33:54 manage your organization themes. I won't 33:56 do that right now, but that's where you 33:58 add them. Awesome. So, let's do this. I 34:01 want to do 34:03 Okay. Um, add to the customer's table. 34:11 That is this table over here. I'm giving 34:13 it the references because I want to work 34:15 with that one specifically. add to the 34:16 customers table a car 34:20 expiry column. 34:23 Let's see how that works. Awesome. Um, 34:28 so now that we've done the app theme, 34:30 let's work on this one once that uh 34:33 column is called. And I can even ask for 34:36 improvements. So this is something that 34:38 I definitely want to check out. or if 34:40 you see any sort of issues like here I'm 34:42 like oh some of the active they don't 34:45 have the cancellation um tag that might 34:48 be because of the way that it is being 34:50 processed in Stripe it might just not be 34:52 that intuitive so okay we're having some 34:55 card expirations here awesome 34:58 um oh let's talk about like the 35:00 different types of versioning and 35:02 histories that you have the ability to 35:04 do here so if there's anything that I'm 35:07 like whoa that was so wrong like that is 35:09 not even like what I is imagining 35:10 probably because it was too broad. You 35:13 if you want something specific, be 35:14 specific. Create a plan. You can click 35:16 over here and revert back on that 35:18 version. So, let's see if if it makes 35:20 anything like really bad. And then we're 35:21 like, let's go back. Um, you can also 35:23 create releases. So, I'm like I really 35:26 like the fact of how it is right now. 35:28 So, I'm going to create a release here. 35:30 And it would actually be saved over 35:32 here. And you can like go back and refer 35:35 to that. So that way you don't, this is 35:37 really good when you do like source uh 35:38 source control. So if you keep working 35:42 on it for a long time and you never save 35:44 it, then some things might just be like 35:47 too bad to go back and like fix 35:50 partially because you've been working on 35:51 it for a while. That happens all the 35:53 time with all types of software. 35:55 So okay, this seems to be good. Cool. Um 36:00 if you also have any sort of like I 36:02 don't know feedback that you want to 36:04 give us or if you believe that a certain 36:06 prompt was really good then you can 36:08 thumbs up it and you can be like yeah uh 36:12 good generation 36:14 helps with the team. This is still in a 36:16 beta so um things to keep in mind and I 36:21 want to talk about the thread in 36:22 history. So for that I'm actually going 36:24 to go home and show you the other 36:26 application that I worked on. So, this 36:28 is something that I did when I had maybe 36:30 a little bit more time and was like 36:32 going crazy going like what can I build 36:34 for you guys, right? Um, and then I 36:38 narrow it down in scope. Okay. So, then 36:40 I was like, cool. I have these high 36:42 risk, medium, and low. And then I also 36:44 want to see the total. I've created an 36:46 alert that says like this person is high 36:49 risk and the reason why because they 36:51 have and this is all reasoning that it 36:54 made for me and that is constantly 36:56 changing depending on like if I update 36:57 that information per user. So these 37:00 people have cancel subscriptions and 37:01 then this one has invoices marked as 37:03 uncollected. Seems pretty bad. Um, this 37:07 is what we should be working on later 37:09 on, which is just a table that allows us 37:12 to see like the people whose cards are 37:14 expiring soon. And then likewise, you 37:17 can filter out by like draft void. You 37:20 can do payment status. There you go. If 37:23 I double click on it, it has Let me make 37:25 sure that this is all good before 37:27 continue. Okay, still working. Awesome. 37:30 Um, oh. Oh, it finished. Okay. So, let's 37:35 prompted the next thing. 37:38 Let's do the table that I just showed 37:40 you. A table that displays the customers 37:42 with expiring card credit uh credit 37:44 cards state uh within the next 60 days 37:47 and then it shows the name, email card, 37:49 expiries and days until expiring and 37:51 then risk. Let's see how that goes. 37:55 Okay. Uh to go back to the other 37:57 version. So I have made the 37:58 subscriptions and the recent invoices 38:00 and it has pulled this information from 38:02 here. And then I also did this sort of 38:04 like risk assessment. It was actually 38:06 something that I like prompted to create 38:09 and I made this um analysis of when the 38:12 card was expiring when the next period 38:14 is in and then also the risk factors. 38:17 Um, again, I would like to say this is 38:19 data that I created that is for you to 38:22 utilize and so I couldn't be as like 38:24 all-encompassing as I could, you know, 38:26 versus using real data which is 38:29 something 100% differently. Um, so keep 38:33 that in mind in terms if you're like, 38:34 that's kind of weird. Why are they why 38:36 is that happening? I'm like, well, use 38:38 your data. Uh, your your app is only as 38:41 good as your data is. Facts. Okay. Uh 38:45 here's actually why I was testing out my 38:47 Gmail is because I wanted to create a 38:49 query in order to when I click that 38:51 button send an email with retool email 38:54 to notify me. Still working on it. So 38:56 it's not working. And then count how 38:57 many times have I sent that email. I 38:59 even wanted to like put it in gray if it 39:02 wasn't like if the user had a very long 39:06 way until the card expired. Again, 39:09 things that I'm working on. Okay, let's 39:12 go here. Let's see how it's working. 39:13 Okay, I made a title. Credit cards 39:17 expiring soon. And then it is pulling 39:20 some emails. 39:23 Cards are mass days and expire and rest 39:25 level. I'm going to eliminate this doggy 39:27 here because that was just to 39:29 demonstrate that you can change things 39:30 as the application is working. Um, see I 39:33 can move this and it's not going to go. 39:35 Oh, that was below. Now it needs to be 39:38 down there or whatever. Um, if you guys 39:42 are like if I'm like now that I see this 39:44 table and if this is being done and I 39:46 can be like, "Oh, I don't want this 39:47 column anymore. I can hide it." What 39:50 happened? Nothing. You know, I mean, 39:53 it's a good thing. I'm not saying that 39:54 it's like bad thing. Okay. So, this card 39:57 over here is not pulling it. So, let's 39:59 let's troubleshoot this. Be like, um, 40:03 how do I troubleshoot this? Let me see. 40:06 So, 40:08 maybe expiring 40:13 card table that's not showing anything. 40:19 Use the column from use the what's the 40:22 name of that column? card. Use the card 40:27 expiry 40:29 column from what's the name of this? 40:33 Customer table 40:36 in order to determine 40:40 those users 40:42 who 40:44 whose card is expiring in the next 40:50 60 days. 40:56 that I think that's comprehensive. Might 40:58 not be. Might might be something that 41:00 I'm like missing in there. Hopefully, it 41:03 pulls it out. Either way, it's going to 41:05 generate this table. Uh 41:09 the next thing that I want to do if that 41:10 thing doesn't work is actually I want to 41:12 ask for some improvements. I want to be 41:14 like, what would you recommend that we 41:16 add or anything? And I think at this 41:19 point if you guys have any sort of 41:21 questions I'm going to start checking 41:22 the the chat or anything I can do back 41:25 and forth. I can do like this is still 41:28 working and as it's processing I can 41:30 answer some of the questions. So I'm 41:32 going to see what's up in here. We have 41:34 do we have visibility to the source code 41:36 of the app and that is saying well you 41:41 can inspect the JavaScript and the SQL 41:43 queries that retool is writing but in 41:45 terms of the components and the source 41:47 uh storage core of the ID the UI sorry 41:51 the retool platform is has an 41:54 application layer to it. So yeah, it 41:58 lets you forget about all the different 42:01 components. But if you want to build 42:02 like UI components, you can go over 42:04 here, click here, 42:07 and then you can do custom CSS, you can 42:09 do custom components. So the answer is 42:11 you can check the JavaScript and the SQL 42:13 the UI question mark. You can build your 42:15 own if you want to see any of them. 42:17 Otherwise, just use the beautiful drag 42:19 and drop. 42:21 So this is not working. I will figure it 42:23 out later uh what's happening. But let's 42:26 ask for some improvements. Okay. 42:30 I like to go back and forth. Here's some 42:32 like best advice that I might give you 42:35 when prompting is that sometimes if you 42:38 want the application to run faster and 42:39 you're sort of working with the UI, 42:40 well, okay, then ask it to do some mock 42:43 data for you. And that's actually what I 42:44 did when I was building out this one. I 42:46 was like, I don't know what the UI 42:48 should look like or anything, but I need 42:51 to figure that out before I start like 42:52 adding some complexity by adding the 42:54 actual resource. I build it out and then 42:56 I made the query to the stripe resource 42:58 and then and made this. So, uh the other 43:01 one is that I like to separate out like 43:04 the different things that I asked for. 43:05 That is why like maybe in some of the 43:08 information here like maybe it didn't 43:10 emphasize on the risk level and it being 43:12 colorcoded and I just put all of them 43:14 green. But if it if the ask was being 43:18 done separately then it would be more 43:19 specific. 43:21 Um I'll give more advice in a second. 43:23 Let's do the improvements here. So it is 43:27 saying 43:33 let's do revenue impact. I like that 43:35 one. 43:39 Let's do revenue impact. 43:42 And um 43:46 yeah, that seems good to me. Okay, let's 43:48 see what it comes up with. Uh this is 43:50 moments where I can have go back and 43:53 then revert back like the version to 43:55 work with that previous. I'm going to 43:57 thumbs down this one and be like nothing 44:00 happened. 44:02 Just be honest. Okay, another question. 44:06 How do I know that retool isn't going to 44:08 run incorrect queries on my database and 44:10 mess up my data? So all queries that 44:13 assist is going to run are presented to 44:15 the user first and that is actually what 44:17 happened. It's just I decided to 44:18 pre-approve them all just to like deal 44:21 with the time and everything. So yes, if 44:23 you're feeling confident, preapprove 44:25 them. If not, then go check them each 44:27 like each one at a time. Up to you. 44:32 Okay. Um 44:36 I'm trying to see if anybody has any 44:38 other questions. I'm just reading in 44:39 here. 44:46 Oh, it seems like I answered the other 44:48 question with that question which was 44:49 the custom uh code base to migrate to my 44:52 app. 44:57 Yes. Okay. Again, any questions drop it 45:01 in. The revenue impact. Cool. Pulling 45:05 some numbers in here. Let's see what 45:06 point is it in. So, this is something 45:10 that if I want I can like move around. 45:12 I'm like I 45:15 maybe I want to see this at the 45:16 beginning. Maybe I'm like I don't want 45:18 to see the other things. [clears throat] 45:20 Oh, my bad. 45:23 Let's move it in here. 45:29 Maybe I'll put this down here. Choice of 45:32 choices. Up to you. 45:35 I'm still checking 45:37 if anybody has anything. Um, 45:42 okay. 45:46 Oh, there's a new one. Does assist work 45:48 for building workflows and agents? Uh, 45:51 not yet. We are currently working on 45:53 bringing assist to more area of the 45:55 retail product. Stay tuned. 46:00 Okay. 46:02 Is this still adding some revenue 46:03 analysis? 46:07 Do you I need to figure you out? 46:10 Okay. Do we need both OpenAI and 46:13 anthropic related retool manage keys 46:15 when we're on self-hosted business plan 46:18 to enable uh the AI assistance or is it 46:21 just one provider key sufficient? Uh you 46:24 don't need any keys unless you're on 46:27 self-hosted. So, RTO will usually manage 46:29 your keys for you. But if you have any 46:32 sort of relationship with a single AI 46:34 provider, you can just insert that key 46:36 in and reour work with it behind the 46:40 scenes. 46:45 Okay, let's see. 46:49 Okay, 46:51 this is the total revenue risk. Hey, we 46:53 we said we said if a million dollars and 46:56 then $400,000 will lost on that turn, 47:00 we're losing on the 7% of this company's 47:03 business $256. 47:06 I can buy a lot of money with $256. 47:10 [laughter] Um, okay. I am [singing] 47:17 No, I don't see any other questions. Let 47:19 me see what else can I do. 47:22 Um, oh the subscription status I can see 47:25 that some of them are blank. 47:28 Um, 47:31 in the 47:34 okay this is the last thing I will do 47:36 and then I'll mention a couple resources 47:38 that we have available for you guys. In 47:41 the customers table, we have the 47:44 subscription status [clears throat] 47:48 column not showing 47:52 something 47:55 if they are cancelled. 47:59 Um, you make a tag for that. 48:08 Okay. 48:10 Uh, 48:11 okay. Let me see. 48:15 Let me see. 48:19 I'm reading other questions. So, how 48:23 LLM's behavior is monitored and guarded 48:26 in terms of securing securing user logs, 48:29 cache, input, and output. Well, retool 48:32 has actually a pretty comprehensive like 48:34 audit logging which will show you 48:35 information about any AI queries that 48:38 are running inside of retool 48:39 applications. Um, somebody can give you 48:41 a link if you are interested in this 48:42 sort of thing. But yeah, the other 48:45 question is can AI 48:48 can 48:50 uh the AI assistants also work on 48:52 existing apps perhaps improving them 48:54 before applying the changes? Is it 48:55 possible to view and accept them or is 48:58 it just automatic? Well, the assistance 49:01 can absolutely improve existing apps. It 49:04 can show and explain how an application 49:07 is working and talk about how the 49:09 queries are all connected and even 49:11 suggest some improvements. But if at any 49:14 point you see anything that the changes 49:16 are being made and you're saying, 49:19 you know, I can revert I can actually 49:21 like let's revert back in this one like 49:24 this one that just is running here. 49:29 I went back. It's no problem. It really 49:32 allows you to like be very experimental 49:35 and they're there for you to have full 49:37 control of rather than like letting it 49:39 just run loose and everything. So that's 49:41 why I say do step things by step rather 49:44 than like compounding them together. So 49:46 then that that way it's easier to 49:47 version them and to create releases. And 49:50 the reason is that I can actually go 49:51 back in my history here and I can create 49:53 new threads at at the same time. So 49:56 whenever it's kind of getting like a 49:58 little bit lazy with the sort of 50:00 information that it's pulling, just 50:01 create a new thread and then start 50:02 working. It almost it almost like 50:03 refreshes that memory. If I'm saying, 50:06 "Oh, I want this one to be about my app 50:08 theme." We can rename the thread. Makes 50:10 it very easy to follow. 50:12 Awesome. Uh so yes, let's uh let me show 50:15 you actually a couple resources that we 50:17 have available just for before we wrap 50:20 up this whole thing. And here it is. So, 50:24 I mean, you saw Keenan yesterday, but 50:27 myself, uh, we make some sort of videos 50:30 from time to time in our YouTube channel 50:32 that demonstrate just how we can help 50:35 you with building like either with our 50:38 resources, with some getting started or 50:41 any sort of part that you're kind of 50:42 wondering about soon. Very upcoming. I'm 50:45 personally going to be releasing some 50:46 about queries, some about workflows, and 50:49 even like forms and user input. But if 50:51 you're like, I am a decision maker and I 50:54 want to show my company like some 50:56 customer stories, we have that. Um, 50:58 let's say that you want to read the 50:59 documentation, we have that. We also 51:02 have some demos for agents. It's right 51:04 there, you know. Um, and then from time 51:06 to time, we do these webinars. So, you 51:08 know, you never miss out. Okay. Um, I'm 51:11 going to answer another question that I 51:13 saw here. Let's see. 51:18 Sorry if I missed this, but did the AI 51:20 agent agent determine the risk score 51:22 based on the data available in the 51:24 Stripe resource or did you ask the risk 51:26 for Okay, so I actually just told it 51:29 what the risk score evaluation should 51:31 be, but that was something that like uh 51:35 you can let it like have it determined 51:37 by yourself. It's just a choice that I 51:39 made. And let's do 51:42 yeah, just post on the chat. see how 51:45 this went. If you liked it, if you did 51:47 not like it, um that would be great. We 51:50 would just love to know how you think 51:52 this section went. 52:04 I'm personally gonna say I loved it, but 52:07 I'm not biased at all. 52:09 >> I also loved it, Angelie. [laughter] 52:12 Well, thanks everyone. And I don't know 52:14 if there's any other questions that 52:15 we're going to answer. I think we're at 52:16 the end of the questions. Um, please 52:18 make sure you vote for the poll. Let us 52:20 know what you thought. Uh, tons of 52:22 resources in the chat and I will be 52:25 posting a recap with all the links in 52:27 the community forum. It's 52:29 community.retool.com. 52:31 Um, and yeah, that was an amazing 52:33 session. I hope you guys enjoyed it and 52:35 learned something. And we'll see you 52:37 back here tomorrow at the same time. 52:39 Thank you, Angelique. [laughter] I'll 52:41 see you.