Description Transcript
AI Build Week #2 — Day 3 of 4
Today Keanan shows you how to turn a spreadsheet into a real app.
📂 Resources: https://drive.google.com/drive/folders/1qnkaQ8JsJhoahw1T9MOlaVD2AOfewUjB?usp=sharing
💬 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-3-from-data-to-dashboards/62857
📅 Full week schedule + RSVP for remaining sessions
https://events.retool.com/aibuildweek2
00:00 Waiting room
01:26 Welcome & Introduction
03:49 The limitations of spreadsheets
04:33 What is Enterprise AppGen in Retool?
05:24 How does Retool differ from other AI building tools?
06:42 Turning Our Airports CSV data into an App
10:12 What is RetoolDB?
12:01 What integrations work with Retool?
12:45 Tips and tricks for Retool's AI AppGen capabilities
14:50 How building with AI works in Retool
22:12 Inspecting the finished application
25:09 How to create a release in Retool
26:16 Adding filters above a table
29:44 When should you cache results of queries?
31:14 Editing drawers in Retool
37:44 Can you change events in Retool?
39:31 How do you handle large CSV files in Retool?
41:19 Can Retool write data back to the database?
42:26 Can you ask Retool to specify rules?
43:36 Changing a text component into an input
45:18 How can you update CSV data in Retool?
46:45 What are the usage limits on Retool's AI Assistant?
48:09 Is there a way to see how many tokens have been used?
49:38 Are there context window or memory limits in Retool?
51:23 Can you turn a spreadsheet with formatting, formulas, and logic into a Retool app?
52:22 If you connect Snowflake/BigQuery tables, will Assist understand the request?
53:51 Roles and permissions in Retool explained
55:24 Can you import more data via CSV import from Retool?
56:26 How does AI handle rolling back changes in Retool?
57:41 How does the size limit apply if you use Google Sheets?
58:27 How to modify a dataset in Retool
59:22 Can you use AI to visually modify your Retool app?
01:01:05 Closing notes
Read more 1:00 Hey, good morning. 1:27 Hi, everyone! Hi, Keanan. Good
morning! Good morning, afternoon, 1:33 evening to everyone. You have made it! We
have made it to Day 3 of AI Build Week. 1:40 It's been an eventful week.
What do you say, Keenan? 1:44 I would say that's accurate, yeah, thanks
everybody for joining us this morning. 1:48 Yeah, so we kicked off the week with Keanan here. 1:50 He showed us how to build an app using
real U.S. Government web traffic data. 1:56 Yesterday Angelik, our Developer Advocate, 2:00 she created an app that tracked
churn risk using Stripe. 2:04 And today, Keanan will show us how to go from
a spreadsheet to a fully functioning app. 2:13 Tomorrow is our last session, and
Alexis, our Enterprise Solutions 2:17 Engineer, he will walk you through building
production-ready apps on top of your data, 2:22 and that is actually EMEA-friendly, so
for all the folks in different time zones. 2:28 That is at 7am Pacific time, or 2
p.m. GMT. So, make sure you sign 2:34 up for our final day of AI Build Week.
It will definitely be a great session. 2:39 And, for all of those who are new here. 2:42 AI Build Week is a really interactive
session. The first part of it, Keenan 2:47 will be going through a hands-on demo.
All of the resources, so you could build 2:52 along are in the chat. I'll post them again
shortly for all the folks that just joined. 2:58 It's meant to be really interactive, so we have
a big portion of it that is Q&A. If you're like, 3:03 ugh, I don't want question… I don't
want to… I don't have any questions... 3:07 They're really lively conversations. We've
answered, you know, all… all over the place, 3:11 a lot of different questions. I think it's really
interesting and useful. We kind of get into some. 3:16 like, developer holes, so… Anyway, join us for
that portion. Drop your questions in the chat, 3:22 in the Q&A, in the community
forum, wherever you're watching. 3:26 We also have some different polls. And so, yeah,
to get us started, as always, we want to know. 3:32 Where are you tuning in from? So, yesterday
we had people from all over the world, even. 3:38 the Cancun airport. So, we want to
know where you are joining from, 3:42 set the scene, tell us where you are in the
chat, and all right. Keanan, take it away! 3:50 Cool. Thanks, Sarah. Yeah, let's get going.
Hey, everybody, good to see everybody, 3:53 and it's always cool, like Sarah said, to see, uh,
folks from around the world in all different, uh. 3:57 all different time zones, so we
appreciate you chiming in. Cool, 3:59 I see, Pakistan, Vienna,
Mexico City, that's awesome. 4:02 Good to see everybody. So, like Sarah
mentioned, we're gonna get right into it, 4:06 and… we're gonna talk about today how to turn
spreadsheets into AI-generated apps in Retool. 4:12 Spreadsheets are great, they're super powerful, 4:14 and for the folks who are Excel wizards,
like, they are amazing at using them. 4:18 But they start to break down, even in,
like, a Google Sheets sort of way, uh, 4:20 when you have to share them with your team, when
you want to do more complicated things with them. 4:24 So we'll take a look at kind of how to take those
to the next level, even if you're not someone who 4:28 is comfortable, you know, writing all of the code
that's needed to generate a full web application. 4:33 Let's dive right in. For those who have been
here this week, it's a little bit of a review, 4:37 so we'll go quickly through it, but
if you missed it a couple weeks ago. 4:40 Retool introduced a new kind of concept, which
we're calling Enterprise AppGen, and what that 4:45 means is that we want to give folks the ability to
generate fully functional enterprise applications. 4:49 On top of their data, running in their own hosting
environment, and secure by default, right? So. 4:54 You can already do that with Retool. The
kind of gen or the generative perspective, 4:59 uh, is something that's new, and so. 5:00 On the right here, this is kind
of what it looks like. You'll see 5:03 the normal sort of retool IDE that you're used to. 5:06 But on the left, this is this new
tab, which we're calling Assist, 5:08 which we'll dive into a little bit today, where
you can sort of prompt in natural language. 5:13 the kind of application you want to create, 5:15 and you can watch Ritel go to work laying out
components for you, writing queries for you. 5:19 And building much of your application,
uh, for you using the power of AI. 5:23 We'll take a look at how that works. But there's
3 kind of main concepts that I want folks to, look 5:28 at today, and that's that, unlike a lot of the
other AI build tools that are out in the market. 5:34 Enterprise AppGen instead of Retool
is built on top of your data, 5:37 so… you've been able to connect resources, 5:40 other business systems, data of all types,
into Retool for years. But this is not just 5:45 prototypes we're building, we want to build
actual applications that bring our data in. 5:49 And incorporate them from the very start, so
that's what we're going to take a look at, 5:52 with some of our spreadsheet data today. Secondly, 5:55 these applications are deployed to your cloud,
so for those customers who use Retool Cloud, 5:59 they're deployed into our sort of safe and secure
environment. If you choose to self-host Retool, 6:04 those applications that you're creating are
deployed into that self-hosted environment, 6:07 which obviously you have sort of full
control over. So. Um, that's what makes 6:11 Enterprise AppGen a little bit different
than just generating applications with AI. 6:15 And number three, obviously, when we're dealing
with sensitive data, we want it to be secure by 6:19 default, and so that means you can enforce all
of your organization's single sign-on rules. 6:23 your access controls, and all those granular
permissions that you're used to inside of Retool, 6:27 in, like, that can all come into
these applications as well, right? 6:31 So… Building on top of this platform on
your governance rules, your data resources, 6:36 and your deployment environment is already defined 6:38 is a huge level up in a lot of different ways,
and so we're gonna see how that works today. 6:43 All right, so, we said we're gonna
build a spreadsheet into an app, 6:46 but let's get a little bit more specific
about what we're building today. 6:50 This topic is near and dear to my heart, 6:52 which is why I selected it for us today.
For those of you who don't know me, 6:56 and I imagine for those of you who've
attended webinars by me before, a lot 6:59 of you do feel like you know me a little bit by
now. But, I am a huge nerd about planes, right? 7:04 So that's why one of the
last times I was in New York, 7:06 I stayed at the TWA Hotel, which
is right next to the airport. 7:09 You can literally see all the airplanes kind
of taking off and landing from your window. 7:14 That's why I have a, you know, a virtual version
of myself learning how to fly in Microsoft 7:18 Flight Simulator. And that's why recently
I started doing this in real life as well. 7:22 So, what I've learned through kind of all of
this nerding out and all this research is there 7:25 are a ton of airports, both in the US and all
around the world, and not just the. you know, 7:30 Chicago O'Hare, or Charles de Gaulle in
Paris, or LAX, like, these big airports. 7:34 There are a lot of these small airports as
well. This one you see here in this picture 7:38 is right near my relative's house in Iowa,
which is a state in the middle of the U.S. 7:43 It doesn't have an air traffic control tower,
it sees maybe 3 or 4 kind of commercial flights 7:48 a day, and so there are all of these
airports like this all around the world. 7:52 And so I get interested in seeing, you know, where
those are, if there are ones that are close to me 7:55 that, you know, once I finish all of my pilot
training, like, I can fly to, things like that. 8:00 And so I wanted to build, you know, 8:02 a Retool app to sort of help me. visualize all
that. And so, what I found. was this website 8:08 or organization called Our Airports
basically publishes a CSV file. 8:13 A comma separated value file,
or essentially a spreadsheet, 8:16 of information about all of the
different airports all around the world, 8:20 right? It's a huge CSV file, I
think it's about 12 megabytes. 8:24 But it's available here on GitHub.
If you want to go take a look, 8:28 you can just look for our airport's data. 8:30 And they have all sorts of
different information. You 8:32 can see there's a CSV about the
airports, but there's also a CSV 8:35 about the radio frequencies, the air traffic
control uses, or what runways are available. 8:39 So, all sorts of data that's here. We're just
gonna focus on this airport's CSV for today. 8:44 So, if you look at this, though, we click on this, 8:47 it's not going to show in
GitHub because it's too large. 8:50 It's a 12MB CSV, which, for a
pure text file, that's pretty big. 8:54 So for the purposes of this demo, um, I've had
to split this up into a few different files, 8:59 and we'll see why in a second, but…
all of these kind of raw data files, 9:03 if you want to work on this demo yourself, 9:05 are available in that resources
link that folks have been sharing 9:08 in the chat. So there you'll find all the data
for this demo, a couple of the prompts we used, 9:12 as well as a link to the deck if you
want to take a look at any of the slides. 9:17 So, we have this CSV, it's giant, it's
a 12MB CSV, it's not super useful. 9:23 Because it's hard to kind of search through it, 9:25 or filter down to only airports and certain
criteria, and so that got me to start thinking, 9:30 could we build this into a web app, right?
And so, if we want to do this in Retool, 9:34 we have a couple different options,
but as sort of my inspiration, 9:37 if folks have seen this
website, it's called Nomad List. 9:40 And basically, and now it looks like it's
rebranded to nomads.com, but essentially what 9:43 it is, is if you're a digital nomad, there are
a lot of cities around the world where you could 9:49 move to and work and live, and so, 9:52 you know, they assembled this entire
data set of all these different cities. 9:55 And, you know, rank them on things
like cost and availability of internet, 9:58 and how safe it was, and all that stuff. 10:01 We want to make something similar, but for
our list of airports, right? And you can see, 10:05 instead of being just, you know, a spreadsheet,
this turns it into something much more visual. 10:09 and interactive, and so we're going to do
the same thing in the app that we built. 10:13 All right. So, what are the key ways we're going 10:15 to do this inside of Retool is
using something called RetoolDB. 10:19 And what this is, is it's a fully hosted Postgres 10:22 database that's available
for you inside of Retool. 10:24 So, if you don't have an external database, 10:26 or you're sort of not comfortable, you
know, administering your own database. 10:30 Retool comes with a database
that you can use. And so, 10:32 what I've done here is imported some
of my CSV data into Retool Database. 10:37 And it's automatically sort of set up all
of my different columns. Uh, with all of 10:41 my different data points. And you'll see that
this looks suspiciously like a spreadsheet. So. 10:45 If you're familiar with, kind of, the mode
of editing spreadsheets and configuring them, 10:50 this interface will feel very familiar to you. 10:52 The difference is, um, this data
is now actually in a database, 10:56 which means we can write
database queries against it. 10:58 Or, we can have AI write database queries against
it for us, which we'll see in just a little bit. 11:03 But… like I said, if you have a CSV file
that you want to add to Retool Database. 11:08 You can just go up here, add a… create a
table, and there's this import from CSV 11:13 button, which lets you just drag
and drop your CSV right on here. 11:16 The caveat being, uh, RetoolDB currently has a
limit of 3MB for a CSV file import. Like I said. 11:24 It's a text-only file, so 3MB even is
quite a lot of text. Um, so that's why, 11:30 in the resources folder that folks
have been linking in the chat. 11:32 you'll see our 12MB airport database kind
of broken up into multiple CSV files, 11:37 which you can then import. 11:39 And build up, you know, the full
table like we have here in this 11:42 setup. So… We've got all of our data in here,
you can see we can scroll for quite a long time, 11:46 and there are all sorts of, you
know, small airports, heliports, 11:49 airports that are actually closed, you know,
seaplane airports, all types of different things. 11:54 So we have all of our data
here. Uh, in Regal Database, 11:57 which means it's now a resource that's
available to us, uh, inside of Retool. 12:02 If you want to store your data somewhere
else. There's plenty of options for that, 12:05 and you can go over to our integrations
page and see all of these different options. 12:09 So, for example, if your data was in Google Sheets
instead of in an actual, kind of, spreadsheet 12:14 or CSV file, you could integrate directly with
Google Sheets and use that as your data source. 12:18 If you have, you know, Postgres, MySQL,
or any of these other resources that you 12:23 need to set up. You can configure those
in Retool, put all your credentials in. 12:27 Create the necessary permissions,
and then anyone in your team can, 12:30 within those permissions, use those
resources to build within their own apps. 12:35 We're gonna take a look at RetoolDB specifically
today, but there are over 100 integrations here 12:39 that you can take a look at and use when
you're building your own Retool apps. 12:43 All right, very cool. So, let's build
what I'm tentatively calling Airport List, 12:49 right? Before we start, I just wanted to flag 12:51 three different concepts that I want you all
to keep an eye out for as we're building. 12:55 We'll call these out as we're going,
but. Once the AI starts to get going, 12:58 things kind of happen a little bit quickly,
so I wanted to mention these ahead of time. 13:02 Number one, at mentioning resources. You'll
see in my prompt that I'm specifically 13:06 instructing the assist inside of Retool to use
RetoolDB, because that's where we put our data. 13:11 I'll do that by, just like I might tag someone
in a message in Slack, I'll just say @RetoolDB, 13:17 and I'll be able to get, uh, the AI will be
able to get access to that resource, right? 13:21 This works for any of the resources across our
platform, so any resource you have configured. 13:26 In Retool, you can basically at mention
this way, and we are rolling out support, 13:31 and, you know, even broader capabilities. 13:34 for Assist to use those resources every
week. The engineering team is very busy. 13:38 Secondly, because this is built into Retool
and is not a separate platform like you might 13:42 see with trying to build an app with ChatGPT
or Claude, or Replit or V0, or any of those. 13:47 Assist has full context on if
you're editing an existing app, 13:51 what components are already on the canvas. 13:53 If you're building a new app,
like, what sort of components 13:55 are available? What resources are
available? Where your data lives? 13:58 It can dive into your databases and look at,
how your data is set up and configured, and 14:01 that helps it build better, more
purpose-built applications for 14:05 what you're trying to do. So we'll
see an example of that as we go. 14:08 But Assist is native to the Retool platform,
which means it knows everything about how your 14:11 Retool environment's configured,
what components are available, 14:14 how your data is set up, and that
allows it to build better applications. 14:18 And number three, uh, I think everyone at this
point has heard a horror story or two about 14:22 how AI has gone, you know, completely
off the rails when given a request. 14:26 And so, that's why, by default, in Retool,
every time Assist is writing a query for you, 14:30 it's basically going to stop
and let you inspect the query. 14:33 So that you can be sure that in addition to 14:35 using the permissions that are
built into your Retool account. 14:38 It's not doing anything you
don't want it to do. And so, 14:41 we'll take a look at how we can sort of relax
those guardrails a little bit as we go, but. 14:45 By default, we want to make sure that
you know everything that's going on, 14:48 uh, inside your application as it's being built. 14:51 So, with that, let's dive into the
demo. So, I'm gonna jump over here. 14:56 Uh, into my IDE instead of Retool. And
if folks are familiar with this sort of, 15:01 like, blank retool canvas that they
normally see when they get into Retool. 15:04 You'll notice that in my case, uh,
the Assist tab was popped open here, 15:08 and so… that is, basically where
we're going to put our prompt. 15:14 So let me actually go grab this real
quick. In the sort of cooking show style, 15:18 that folks have come to
expect from webinars from me. 15:22 We do have a pre-written prompt here for
us. And again, if you want to just copy 15:27 and paste this prompt, it's available in
that resources folder that we have shared. 15:31 So, here's what I'm gonna ask it to do. I'm
gonna say, please help me create airport 15:34 lists similar to Nomad list, right? I'm
including that reference here because. 15:38 At its core, uh, ASSIST is using LLMs
from companies like OpenAI and Anthropic. 15:44 which have been trained on the entire internet.
So, just by mentioning NomadList, it will know a 15:49 little bit about how that website works, how it's
set up, kind of the aesthetic that I'm going for. 15:53 And so that's just helpful
context for the AI to have. 15:56 So I want to create airport list
using the airports table in RetoolDB, 16:00 and so this is where I can just app mention. 16:02 Retool DB, and now it's gonna know to go into 16:05 Regal Database and look for
the airports table, right? 16:08 So, what I wanted to do is I wanted to give 16:10 a container with a list of
all the available airports. 16:12 I want the name and the location, like, 16:14 most importantly, because that's
basically what I care about. 16:18 And then I'm saying clicking on a
particular airport should open a drawer, 16:20 which is a Retool component on the
side, with all of the details, right? 16:25 In the drawer, I want a map of where
the airport is, and I want to, like, 16:28 have a point on the map, basically, so I'm
telling it more about the interface that I want. 16:33 I'm not specifically saying, you
know, use this retool component 16:35 or position it this way. I'm gonna
let it make those decisions itself. 16:40 And I don't actually know if, uh, drawer
is the name of the retool component, 16:43 but because it has that full context that we
talked about earlier. it will be able to choose, 16:47 sort of, the best components for
the job, given my description here. 16:51 So, we're gonna hit enter on that. And
we're gonna see it start to go here, 16:55 and I'm gonna just kind of 16:56 talk along as we go, um, to talk about some of the 16:59 things that are actually happening
here behind the scenes, right? So. 17:03 First, we see it's as many AI tools are, 17:05 very agreeable. It says, great, I'll
help you create an airport list app. 17:08 And right away, it basically starts
making a plan for itself, right? So 17:11 it's gonna first go into Regal Database and
check for the schema of the database table. 17:16 This basically tells it what columns it has
access to, and what data is available to it, 17:20 so… that's an important first step,
because it… won't know what interfaces 17:24 it's able to create if it doesn't
first know what data's available. 17:27 So, it's gonna do that, it's gonna design our UI
with our drawer that we specifically asked for. 17:32 It's gonna create a technical
specification for our data flow, 17:34 which basically means any database
queries, code steps, or anything like that. 17:39 How do those hook up to the components, and how do
the components get data from those queries, etc? 17:43 And then it's gonna update its
own plan with the specific steps 17:46 to put these components on the
canvas and all of that, right? 17:49 So, it looks like here in step one, 17:51 it found the table that we had
just imported to Retool Database. 17:54 It has all of these different
fields in it, right? So, 17:58 because I asked for name and location, it
found the name and municipality fields. 18:03 That are going to be in the list view. Uh, it
noted that the coordinates are stored as text, 18:07 and so for the map component, it's going
to need to figure out how to parse those. 18:10 And it said that all the details
it found in that one table, 18:13 and so it doesn't have to go
get any extra data sources. 18:15 This is a really good point, because
if, for example, I wanted to, 18:19 um… you know, have something
where I would get, you know, 18:22 live weather at a particular airport as one
of the details that I wanted in that drawer. 18:27 I could ask it for that, and then it
would probably come back and say, great, 18:30 uh, I don't have this data. 18:31 can you give me access to a
weather API or something like that, 18:35 where we could hook that up as another resource? 18:37 and it would be able to start using that data in
real time as well. So… it then goes on to create 18:42 a wireframe, which is basically a… just a text
view of how all our components are gonna work. 18:47 it creates that technical specification that we 18:49 talked about, which is basically
how the different components, uh. 18:52 get data from the various queries, so
it's going to write a get airports query, 18:56 which is going to flow data into the airports
table, things like that. So all of these. 19:00 Uh, planning steps are what it's doing here. Um, 19:03 and now, it says, okay, it's got
it, it's gonna create the structure, 19:06 it's gonna add the components, and then
basically do all the updates and polishing. 19:09 to make this app. And if you've
been paying attention over here, 19:11 you've already started to see
that it's basically laying out. 19:15 all of our different components in real
time, right? So it's putting in our titles. 19:18 It's dropping in our tables,
and over here on the left, 19:21 we get that same sort of running view
with exactly what's going on, right? So. 19:25 We can see that, for example, it put the 19:28 title on the canvas right here,
where it said airport name text. 19:31 But then, uh, it updated all these
different things, and so we can see. 19:35 that it changed the title to Airport List,
right? And that's exactly what we see up 19:39 here. So all these steps, you can basically
inspect and see in real time what's happening. 19:44 So now that it's feeling pretty good about
the component setup as we have it right now. 19:47 It has started to write a query, right? So it's… 19:49 this is the get airports query that
it told us it was going to write. 19:52 And what it wants to do is say,
fetch all the airports with the 19:55 key fields. So it's gonna run a select
statement on our regional database table. 19:59 It's going to get from the airport's table, 20:00 and it's going to order the airports by their
name in alphabetical order, ascending, right? 20:05 So, this looks pretty good to me. Um, and
because I trust it to run queries against 20:10 our regional database, I'm gonna go down here
and say I automatically approve all queries 20:14 on this particular resource. So, anytime
you want to query RetoolDB on this table, 20:18 like, go ahead and do it, that's totally fine. 20:21 if I had multiple resources, and I
wanted to speed this up even further, 20:24 I could say that I wanted
to auto-approve all queries. 20:27 But that's just depending on
your, sort of, comfort level, 20:29 so… I'm gonna say it looks good, run any of
these queries against RetoolDB that you want to, 20:33 and it's gonna then continue
to go off and do exactly that. 20:37 So, we'll see here, we kind
of have these dueling views, 20:40 right? On the right-hand side, we
see our application coming to life. 20:43 On the left-hand side, we see, you know,
what the AI is actually doing for us. 20:47 And the key thing to keep
in mind is that it's not, 20:50 uh, generating sort of any new format or
anything different that you haven't seen before. 20:55 I could be following these exact same steps
and laying out all of these components myself. 21:01 The difference is, is just AI is doing it for
me. But what that means is that if we want to, 21:05 for example, look at our table
component in the inspector. 21:07 Like, it's actually setting up the table
the same way that we would. You could 21:10 see it just added a row action here,
which we'll take a look at in a second. 21:13 But it's deciding what columns to configure, what 21:16 row actions to use, if it needs
any sort of event handlers, etc. 21:19 Which means that when I get done, when
the AI gets done generating for me, 21:22 this is just a retool app that I myself can
dive into and configure and change. So if I 21:26 want to configure it differently,
how the components are working. 21:29 If I want to jump over here and say, 21:30 oh, I know I approved this query,
but I actually need another field. 21:34 I'm not forced to re-prompt, uh, the Assist tab. 21:37 I can basically make those edits myself,
either by configuring the components, 21:40 or actually diving all the way into
the code for a given query, right? 21:44 We'll take a look at when that might be the
easier way forward in just a second here, 21:48 because we'll probably want to make some
edits to this once it's done. And sometimes. 21:52 it's easier to just make those edits
yourself if they're small, versus. 21:54 leaning on the AI for making edits that are
more broad across your entire application, 21:58 or asking it, in this case, for
the initial generation, right? So… 22:03 it made some updates here, it looks like it
added this click action to open the drawer. 22:07 And it added a button in the drawer, and added
an action to close the drawer, right? So. 22:13 Step 11, basically it's saying, okay, here
is your app, and it looks good to me. So, 22:17 let's close the Assist tab and actually
take a look for ourself, right? So. 22:21 We've got… looks like all of our, um…
All of our airports here in this table. 22:27 And I'm looking and seeing that
there are a lot of these fields 22:30 that maybe don't have a bunch of… as
much data in them as I would like. 22:33 So, let's go over here and just
refresh our columns, right? 22:37 We're gonna say that the ID is the primary. 22:41 But then we're going to take
a look at what of these, 22:43 uh… columns do we actually care about, right? 22:45 So maybe, uh, this, like, coordinates
column we don't care about, we can hide. 22:50 the GPS code, we probably
don't care about local code. 22:53 Some of these are a little bit… sort of, 22:55 uh, like, behind-the-scenes values that we don't
necessarily think our user needs to see. So, 23:00 uh, we have this here, and it looks like it
is now a little bit more readable after we've. 23:05 hidden a few of these columns here. So, 23:10 let's take a look at this type column. This
is one I would expect to be filled out. 23:15 Because we do have… we saw in our database
that airports are basically grouped by types. 23:21 So, let's take a look first at our query to
see if there's some reason why that is not. 23:26 showing up properly. We can run
this and take a look at the output. 23:33 again, because this is quite a big table,
this query might take a minute to run. 23:37 But we can see that it looks like… type, small
airport, closed, etc. Those are coming through 23:44 in the data. So, for some reason, they're not
coming through in the table, which is interesting. 23:50 So, we can debug this ourself, uh, 23:53 if we want to kind of dive in here and
take a look. We can also just ask assist. 23:56 It doesn't look like the type…
field is rendering… the table. 24:07 Can you take a look? And so, what
this'll do is basically, again, 24:10 it has the full context of your application. 24:12 It can then just go through and
see, okay, it'll look at the query, 24:15 it'll look at the table, and say, okay,
is there some misconfiguration here? 24:18 How is the data flowing through? Um, 24:20 and so it will be able to do that
sort of investigation for us here. 24:24 So hopefully, we will get a little bit more
information about exactly what's going on. 24:28 And, uh… why there was a… there was an
issue with getting this in the first place. 24:37 Cool. So, it looks like it said the type
column is configured with format tags. 24:41 Which expects an array of values, but the
database becomes a single string value, 24:45 and so it changed it to format tag. 24:47 We can see that change exactly right here.
And now, perfect, we see that we have, uh. 24:52 this type column showing up perfectly. So again,
if we had been over here in the inspector, 24:56 we probably could have, uh, found that
ourself here in this Tag Tags configuration. 25:02 But ASSIST was able to really
quickly find that for us, 25:04 and now we have uh, you know,
this being sorted by type. So, 25:09 cool. This looks pretty good, but to
me, I don't know about you guys, this, 25:13 to me, looks very similar to the spreadsheet
format that we were just looking at earlier. 25:17 There's no sort of advantage here, scrolling
all of these rows. over scrolling all of these 25:22 rows in Excel, right? We do have the drawer
set up, which we'll come back to in a minute. 25:28 But if we click on this little eye icon over here, 25:30 we do have our drawer with all
of our details, which is helpful. 25:33 But still, like, I can't look for, you know, show
me all the airports that are, like, close to me, 25:37 or airports with a specific name, or stuff like
that. Let's go back over and ask ASSIST for that. 25:43 Uh, before we do, um, I'm just going to
click on this right here to create a release. 25:49 Basically, what this means is
we're saving a sort of checkpoint. 25:53 at this stage, which allows us to, 25:55 you can see here, also revert back
to this version if we ever want to. 25:58 So, this gives me a little more comfort, uh,
comfort with asking assist. Uh, to do things 26:03 for me, because I know that, okay, I have a
version that I can revert back to if I need to. 26:07 And if you're using source control within
Retool. This hooks into that as well, and so… 26:11 It allows you to just make kind
of incremental changes as you go, 26:14 uh, and feel a lot more confident. So, I'm
going to say to assist here, this looks great. 26:20 Can we add, uh, set of filters?
Above the table to allow… users to… 26:29 Filter by airport name… Or by… let's see,
what other data could we filter by here? 26:36 Maybe… maybe country. Uh,
actually, no type, right? 26:39 Because we want to be able to say,
okay, show me… for example, like, 26:41 I would want to be able to filter out,
like, the closed airports, for example, 26:44 or show me only small airports, because.
uh, you know, I'm not capable of flying 26:48 at big airports yet or something like that.
So. We're gonna ask it to do that for us. 26:52 And again, this is not a very specific
prompt. I'm kind of letting, uh, assist. 26:57 decide what it wants to do here. Um, and so, 27:00 you can give it as much detail as you want to.
If you remember in our initial starting prompt. 27:05 We gave it quite a bit of detail. We asked it
about, you know, a container, we wanted the 27:08 name and location, we wanted the drawer, we gave
it the specific format for how to set up the map. 27:14 All of that stuff, we gave
it that information. So, 27:16 you can make it detailed if you want
to, but it's also pretty good at. 27:20 Uh, using that retool context that it has. 27:22 to infer what you're asking
and build it a certain way. 27:26 So we can see, it looks like it's
creating those two filters that we 27:30 asked it for. I'm going to zoom out here
so we're able to see a little bit more. 27:33 So it's created the filters, and now
it's, you know, it added our label for us, 27:37 it's adding our placeholder text
for us, which is really nice. 27:40 Um, and this dropdown now should have all
the different types in it as well, right? So. 27:46 That looks great, and it's telling us that
it's updating our table as well, which is cool. 27:52 So it's checking against that. It's
looking at some of these other pieces here, 27:57 and again, if we want to see any
time, anything that's going on. 28:00 We can just look into these
containers that are closed. 28:04 So it looks like it's rearranging some
of this stuff in our drawer as well. 28:07 for us to make a little bit nicer of a layout. 28:11 And so let me just see, while
this is working, uh, you can also, 28:14 if you're not actively working on
a component that's being edited. 28:17 You can be over here in the canvas, kind
of making edits and doing things as well, 28:20 so… Let me just see if this is
configured yet. So, small airport. 28:24 Doesn't look like it's filtering yet, so it's
probably still working on that query. So, 28:30 let's give it a minute to run here. 28:33 While we're doing that, just a reminder that if
you have questions or want to go back and kind 28:36 of show anything else of this again, please,
you know, feel free to drop those in the chat. 28:40 We'll have plenty of time at the end, but…
we do have time for some of those as well, 28:44 if we want to, uh, take a
look at those in the meantime. 28:46 So if anything's kind of catching your
eye, or you want to talk about a concept, 28:49 or. kind of curious about how
a certain thing is working. 28:53 Please don't be shy and drop those in the
chat. Folks are keeping an eye on that for us. 28:59 Alright, so it's doing a bunch
of, sort of, reconfiguring here. 29:04 ...and again, I'm just gonna take a look at
this query and see what it's actually changing. 29:09 So it looks like it added this WHERE filter, um, 29:12 and what this is gonna do is basically
allow us to type in this field. 29:17 and have it sort of filter down
our query, which is pretty cool. 29:21 So, looks like it's complete with
that, so let's go ahead and give 29:25 this a try. I'm gonna close Assist
so I have the whole canvas here. 29:28 I'm gonna pick Medium Airport, and you'll see
my table gets a spinner, and now the only, uh. 29:34 airports that are in this table are medium
airports, right? You can do the same thing. 29:38 If I go ahead and clear this out,
if I want to do a large airport. 29:43 Looks like clearing out reruns the whole
query, which… that's maybe functionality that, 29:48 uh, I, as a, you know, developer of this
application, would want to adjust so that. 29:52 Because that query does take quite a
long time. we might want to adjust that, 29:57 and actually, I can just do that
right now, that I'm thinking of it. 30:00 You can go over here to our
query. And under Advanced, 30:04 I'm gonna go ahead and… check cache
the results of this query, right? 30:08 So… Um, this would be useful for if I wanted…
if the square was going to run periodically. 30:14 and was gonna give me the same
data, uh, we can… we can cache this. 30:18 I'm just gonna say this is 60
seconds here on the cache. So that, 30:22 uh, actually, we'll, yeah, above it down to 10. 30:24 So that we have, uh, that… that data hopefully
coming back a little bit more quickly. 30:31 I'm hoping that that doesn't remove our
ability to actually use our filters, 30:34 but we'll take a look and see. 30:36 So we saw how long that took to run.
If we run this again, we should see it, 30:39 uh, come back a little bit faster. 30:41 Uh, because we're just
fetching from the cache there. 30:44 So, okay. So we got our filter by type
working. Let me see if we can get our, 30:49 uh, if our airport name search is working. 30:51 So let me scroll down here and take a look at… Uh, 30:53 sure, let's look for maybe airports
with the name Towers in them, right? 30:57 So if we search for towers, we'll see that,
cool, our airport list is filtered, looks 31:00 like it's mostly heliports now. Oh, here we go, a
couple small airports, a couple closed airports. 31:05 So you can see that, uh, our sort of
real-time, sort of, interactive typing, 31:09 uh, field is working to filter
as well. It's pretty cool. Okay. 31:14 So we've got kind of our main
interface here that's working. 31:18 Let's take a look at our drawer. We kind of
haven't taken a look at very much of that yet. 31:23 So, let's do that. So let's… let's try and find…
Let's try and find an airport that I know about. 31:36 I am joining from Chicago today, so I'm going to 31:38 see if O'hare is in our dataset. This is
the airport that I normally fly out of. 31:43 So we're gonna pop open our drawer and take
a look and see what's going on. Alright, 31:47 so it looks like, for those of you who
are keeping an eagle eye on this before, 31:50 it moved our map up to the top of our drawer,
which is pretty cool, I like that a lot. 31:54 And here is all of the data about O'Hare.
It looks like, though, it's not using the 32:01 coordinates to populate the map, right? 32:04 So let's take a look at why that's going on. Okay,
so a couple things I'm seeing here. Number one, 32:09 if we zoom out, maybe the… maybe
the point is on the map in Chicago? 32:13 Okay, it looks like it is. So, it looks
like the only problem here is that, uh. 32:18 our map isn't actually centered.
around the point, right? So… It's… 32:22 it's centering around San Francisco, which
is the kind of default centering point. 32:28 So let's… let's go ahead and fix that.
So again, we don't have to give ASSIST 32:31 any of the context about our app, because it
already knows everything that's going on here. 32:35 But we can just say, can
you please, center the map 32:41 around, or over the airport by setting the
latitude and longitude… fields to the coordinates. 32:59 for the airport. Right, so if
I wanted to do this myself, 33:03 obviously I could go look at this, you know, 33:05 this transform coordinates for map that it,
generated, and I could key into these, and, you 33:10 know, do this configuration myself, which we'll
see. We'll give it a chance to try and fix it. 33:15 If it doesn't… if it isn't able to do that, we'll
take a look at how to do it ourselves, but… Again, 33:19 if you don't want to necessarily dive into the
code and figure out how this is working, and 33:24 how all that's going, then you can just, you
know, prompt your way to. asking how it's working, 33:31 asking it to explain itself, and then…
you know, make fixes for us. Perfect. 33:37 Then Apple now automatically center on each 33:38 airport's location. I've also
increased the zoom area to 12. 33:42 Well, okay. I think that's a little close. I
kind of want to see it in the neighborhood, 33:46 right? So, let's go ahead and
dial that back maybe to 10? 33:50 8… Yeah. Okay, that gives me a better
idea of, like. geographically, sort of, 33:56 where it is. So again, I could have
asked ASSIST to do that for me as well. 33:59 Because that's a single setting. you know, the
analogy here in Retool that we kind of like to 34:04 use sometimes is, you know, you wouldn't
ask Alexa to turn on your lights for you 34:07 if you're standing right next to the
light switch, and so in this case, 34:10 the light switch was right here. We
were just able to figure that setting. 34:13 So, we're not overly reliant on this
AI-assisted technology to do everything 34:17 for us. Simple things that are really easy to
do, and we want a bit more of experimenting. 34:21 It's easier for me to sit here
and, like, adjust this number. 34:24 than to try and prompt, you know, and ask.
AI to do this in all these different steps. 34:28 We'd be sitting here for… For quite
a while, right? So, uh, cool. So this 34:31 map's looking pretty good. Let me just make
sure… that if I go to a different airport now. 34:37 Um, that it's going to, uh, do that for us. JFK…
sure, JFK Heliport. Let's look at the drawer for 34:44 this. Cool. New Mexico. Interesting. I
would have assumed that was New York. 34:51 But it looks like, yeah, White Sands, New
Mexico. Okay, cool. So we now have our map 34:55 that's generating for us, and it's generating
on the actual, um… the actual airport. 35:03 So let's take a look at Los Angeles. I'm sure
there's a lot of these here. Interesting. Yeah, 35:11 there's two… too many. Maybe international? 35:20 Looks like not. Okay, um, just
wanted another double check, 35:23 let's just check this here, yeah. Okay,
cool, looks like that's an LA as well. Cool. 35:26 Alright, so our map is now working as we would
expect. And yeah, basically at this point, 35:31 we have, uh, you know, a fully functional
application. We can filter our different airports. 35:36 We can see whatever data we
would like in this drawer. 35:39 Again, just like we did with the table,
this is a key value component here. 35:42 And so, we can decide, uh, you know, if, 35:44 like, for example, the ID, uh,
property isn't super valuable. 35:48 Uh, we could… we could hide that or format it a
different way, any of those types of things, but… 35:52 You can see how this probably would have taken
me maybe an hour, maybe a couple hours to build, 35:57 if I was doing all this manually. But using
the assist functionality in Retool. Um, we were 36:01 able to put this together relatively quickly,
uh, and have a working app that we can now. 36:06 you know, hit publish on and share with our team 36:08 if this is an application we
wanted to share with our team. 36:10 Otherwise, we have software that we can
use ourselves, so… Hopefully this was 36:14 an interesting look at, sort of, how we
can use AI to get going really quickly. 36:18 We can also use it to edit existing applications
or explain, kind of, what's going on under the 36:22 hood. Uh, which, for folks who have inherited
old applications that other people have built. 36:27 is really helpful functionality, and we
can also still retain the ability to, 36:31 you know, in classic virtual fashion,
edit any of these components ourselves. 36:35 Or even dive deeper into, uh, you know, the
queries and the code of what's going on here. 36:41 This feature is live for everybody
in their Retool accounts. 36:44 Uh, it recently launched in public beta, so, um,
absolutely please, uh, give us feedback, either. 36:50 through any more traditional support
channels, or by jumping in the community, or. 36:54 If you, you know, get a chat
that's either good or bad, 36:57 you have these thumbs up and thumbs down
functionality here. You also have feedback, 37:01 which routes straight to the team to help us,
you know, improve the system prompts, and. 37:05 all sorts of things. So, um… I hope this
was helpful, um… I see some questions, 37:11 uh, coming in the chat, so we're
gonna get to Q&A in just a second. 37:15 So please, yeah, if you're thinking of questions, 37:16 post them there. We'll have plenty
of time to go through all of those. 37:19 But yeah, if you enjoyed this, like Sarah
mentioned at the beginning, we do have, 37:23 uh, Day 4 tomorrow, so… Uh, be on the
lookout for that, and we hope to see 37:27 you all there. So… Let's take a second here
and jump into the questions that we have. 37:36 Perfect. I am going to…
Actually, yeah, unfilter this… 37:45 All right, number one, uh… Elliot asks,
will it build JavaScript to execute a 37:49 chain of events rather than identifying all
events that fire in parallel? For example, 37:53 click save, open a dialog, click OK, update
data, close the dialogue, and refresh a grid. 37:58 Yeah, good question. So, you can
absolutely change events in, uh. 38:04 retool. So what that looks like is… actually, 38:06 let me just share my screen,
and we can see what's going on. 38:11 So, for example, if I wanted something to run, an
event to run after my retool database query ran. 38:17 I could, you know, click on this
event handlers section right here, 38:21 and so I could set up an event to
run when this query was successful. 38:25 I could also set up an event to run if this query
was a failure, right? So that could be, like, 38:29 error logging, or throwing an
alert, or something like that. 38:32 Again, this is, uh, retool-specific
functionality, so you could, uh. 38:37 prompt, assist, and say, okay,
you know, when this query runs. 38:41 I want this next query to run, right? And so. 38:44 We did see some examples of that, where,
uh, when we had, uh, our queries running, 38:50 it was… doing things like, when I clicked on
this icon on the table, it's opening the drawer. 38:55 When I clicked on the close icon,
you ca see here. it did set up 39:00 this click handler. to close the
drawer, to hide the drawer, right? 39:05 If you are more prescriptive than I was, you
could absolutely. chain those event handlers 39:10 together. And instructed to do that, or
you could use more than a single prompt, 39:16 you could let it do a one-shot generation,
and then you could give it. advice and 39:19 specifics on. Okay, great, but now we
want to chain this event to that one. 39:22 So, you can be very specific with it, but.
if it's native functionality to Retool, 39:28 um, it's something Assist
should be able to handle. 39:31 Cool. Uh, alright, we've got a question
here. Can you please confirm if someone 39:35 has more than 3MB file? I recall
you said you were going to split it. 39:38 Right, so, yeah, I kind of… I kind of, uh…
glazed over that, but, um, yes, the dataset 39:43 we're working with here is a 12MB CSV file. And so
that will not go into, uh, RetoolDB in one shot. 39:51 And so, what I did, uh, is I used this, just
this site called SplitCSV.com. not affiliated 39:57 with this in any way, just something
that I use when I have big CSV files. 40:00 And what you're able to do is basically pick a
file from here and, um, so, like, here's our. 40:06 our 12MB file, and you can just
basically go in and say, okay, 40:10 I want to… split this, I want to split it. 40:15 Okay, sorry about that. I want to split it
on file size, right? And so, a million, uh. 40:21 mega… uh, sorry, a million bytes is a
megabyte, so what I did was I just said. 40:26 2,900,000 bytes, which is just under 3MB. And
so what this will do is it'll split our CSV 40:33 into 4 or 5 different CSV files, which we can
then import into RetoolDB, uh, one at a time. 40:38 If you're familiar with,
um, using retool workflows, 40:41 you can also use them like retool workflows to. 40:44 do the same sort of process and insert your
data into RegalDB in a more programmatic way. 40:49 But the limit is really just on when you do
this sort of import from CSV action here. 40:54 It just limits the amount, just because it's
running inside of a web browser that also 40:58 has limits that we have to respect as well, so…
Um, that's the… that's the functionality there. 41:02 If you look at the resources folder that's
been linked, the split-up files are in there, 41:06 so those you can just drag and
drop straight into RetoolDB. 41:08 But if you want to do it yourself, uh, either
using split CSV.com or building your own, 41:13 you know, retool workflow, uh, is a
good way to do that. Cool. What else? 41:20 John asks us, can you prompt
the AI to allow updating the 41:23 data from the drawer? Yeah, absolutely. So, 41:26 um… This is another common question that
we get from folks, is that, uh, you know, 41:29 can I… you know, write data back to my database.
We've looked at building sort of read-only 41:35 applications. But absolutely. So, let's take a
look at, uh, let's see what happens if we do that. 41:41 So let's say, um, I want to… make the airport
name. editable from within the drawer. 41:54 Please make this field… editable, and add a save
button. That will update… the underlying record. 42:03 in the database. Okay, so yeah, because
this is connected to our live database. 42:09 Um, and Retool has write access on that database.
we can do exactly this, right? So, we'll, 42:14 uh, we'll give it a little bit to cook
here on this, and we'll come back to it, 42:18 but we should be able to get something
working where we can actually update, 42:21 various fields in the database
itself. Good question. 42:26 All right, uh, is there any… let's
see, sorry about that… Is there any 42:32 configuration to set the LLM regarding naming
conventions, code, indentation, or theme? 42:37 So, I would assume this question is
about, when you're prompting Assist, 42:42 can you say, always name my queries
this way, or things like that? So, 42:46 we don't currently have any
sort of global rules for that. 42:49 But, you know, you can always include
that in your prompt. So for example, 42:53 if you joined us a couple
weeks ago for Retool Summit. 42:55 Uh, we specified, like, please… make the
theme of this application look like this, 43:00 with a certain color scheme
and that sort of stuff. S 43:02 o, um… you know, there are ways that you can
do that, uh, within your prop. There's no way 43:08 to define global configurations right now.
Uh, but that's something the product team 43:11 is actively looking at, so, in the same way you
can define, you know, rules for how Claude runs, 43:17 or custom instructions for ChatGPT. Um, we're
looking at ways to give organizations and teams. 43:22 the ability to specify rules
for ASSIST for their team, 43:26 so that you can make it a more
consistent app-building experience. 43:30 Across your whole team. Alright, let's
take a look at what's going on over 43:34 here in our database query. It looks like it
changed our text, uh, component to an input. 43:40 Which is what we would expect, right, 43:41 because we want to be able to have
some sort of edit functionality here. 43:44 So it looks like that's working. Uh, it's
updating a bunch of the event handlers, 43:48 which will let it do, but it's also, you can
notice here, uh, written a database query. 43:53 to update, uh, the airport name. So, it's
gonna give us a summary here. What I did, 43:58 I replaced the name of the editable
field, I added a save changes button. 44:02 And on success, the list automatically refreshes 44:04 and shows a success notification.
So, it's asking us if it wants. 44:08 to… if it… if we wanted to build more
additional, like, features, but this is 44:12 kind of… the feature set that we asked for right
now. So let's do that. Let's go pick one of these. 44:16 Um, near the top of the list here. I guess let's 44:19 just pick this one. And… We
will pop open the drawer. 44:23 And let's give this a capital H, and let's
just, like, shorten this a little bit here. 44:29 Okay, cool. So that looks a little
bit different now, and I think my 44:33 zoom controls are overlapping the
save button. Yep, there it is. 44:36 Okay, we can see that our… down here, our update
query ran, and now it's running our GET query. 44:40 And so, we should be able to see… ah, 44:46 now that I… now that I changed the name,
it also changed my… alphabetical sort. 44:52 So, yeah, cool. Alright, there it
is. So it actually did change the, 44:55 uh, the data in our underlying database,
and then when our table refreshed. 44:59 Uh, now that new data is in here as well.
So, you could go as far as you wanted to in 45:03 this. You could, you know, make all of these
fields editable, only some of them editable. 45:06 Um, but that's an example
of you definitely can build 45:09 applications that write back to your data source. 45:11 And those queries can all have their own
sets of permissions and things like that, 45:14 too. So, super, super powerful in that way. 45:18 Okay, uh, Elaine asks, if
the data is from CSV files, 45:21 it's presumably static. How do
you update the data in particular, 45:24 and can you update the data from an outside
source, like another file or an API? 45:27 Yeah, absolutely. So, I just want to
clarify, our data started as a CSV file. Um, 45:32 but because of this exact reason that you're
asking about, we imported it into Retool Database, 45:37 which means it's now in a data source
that is much more able to be updated, 45:41 right? So because it's database.
We can do things like, you know, 45:44 changing the data like we just did, because
it's no longer just static data in a CSV file. 45:49 Another option that folks, uh, like to opt
for sometimes is to store it in Google Sheets. 45:54 Um, where you can get, 45:57 uh, you know, the… the flat-filed style of
a CSV with the dynamic nature of a database. 46:05 So, um, that's the reason why we
did that inside of a database here, 46:08 and that was one of the first steps, is
bring the CSV into a database, so… Cool. 46:12 Um, alright, we still got
time for a few more questions, 46:14 so we're gonna get to all these that
we have, uh, here, but the folks, uh, 46:17 behind the scenes are gonna put a quick
poll up on the screen for you real quick. 46:21 Um, and really what we're interested
in knowing is, you know, we do these, 46:23 it takes us some time to prepare, um, and so
we want to make sure that we're delivering, 46:27 you know, content that y'all find valuable. 46:29 Um, so we've got, you know, 3 options here
for you. If you're really a big fan of what 46:32 we're doing here today, that's great. Uh, if
you've got more questions, that's fantastic, 46:36 we'll get to those very shortly. Uh, and if you're
looking for something a little bit different, 46:39 uh, we want to know that, too. So, fill that
out for us, please, that'd be very helpful. 46:44 Cool. Alright, couple more, uh… Frederico
asks, what are the AI assistance limits? 46:50 I was building an app yesterday, but the limit
blocked me from continuing the process. Yeah, 46:53 so… Good question. Um, obviously,
uh, you know, as with anything AI, 46:57 this is using tokens behind the scenes,
and there's some sort of limitation on. 47:00 Um, how much sort of inference we can… we
can provide to folks. So, this is a limit 47:04 that we're kind of currently, uh, evaluating
on an ongoing basis, but, um, all of the. 47:09 virtual plans from free plan
all the way up to enterprise, 47:12 um, get a certain amount of credits at
the beginning of the month. Right now, 47:16 on the free plan, you get 100 credits
for assist, uh, free of charge. 47:20 And on our paid plans right now, we're
rolling out ASSIST on an unlimited basis. So, 47:25 at least until the end of the year, while
we're kind of in this open beta period, 47:28 anybody on a paid plan will have unlimited usage
of the Assist functionality that we showed today. 47:34 Um, if… if you are on one of those plans and
are still kind of encountering those limits, 47:38 please get in touch with us,
either through the community or. 47:41 any of your normal support channels that you use, 47:43 but we really want to get this into the hands of
folks and allow them to start building with it, 47:46 so… Uh, we're… we're trying to open
that up as much as we can for folks. 47:51 Cool. Yeah, and I think, uh, hopefully, yeah.
Uh, that answers the other question, Ali. 47:57 Uh, in the chat, uh, is there a limit to AI
performing actions, or do we need to pay for 48:00 it? So… Um, again, this is something that's still
definitely evolving, but our goal between now 48:05 and the end of the year, especially, is to get
this in the hands of as many people as we can. 48:10 Okay, uh, cool. So, uh… We have a
question here. Is there a way to see 48:14 how many tokens have been used,
and how much has been charged? 48:18 Uh, yeah, so, uh, the… one of the ways to do
this is, if you're an admin of your organization. 48:24 Uh, you can monitor usage in
your organization settings. 48:28 So, I believe I'm an admin on this organization, 48:30 we can go look at this and
see what this looks like. 48:34 But the long story short here is that, yes,
we want to make it very clear to folks, 48:38 you know, what sort of tokens
and credits are being used. 48:41 Um, and how that is working. So, we do
expose that in a couple different ways. 48:50 Let's take a look here, I want to
make sure that I can find this… Yeah, 48:56 it looks like maybe I need some additional…
permissions on my environment here. 49:01 Um, but you will be able to see inside of the
settings, if you are an organizational admin. 49:07 Um, the usage on your particular, um,
organization, so that would be across. 49:13 any of the users that you have in your org. 49:16 Um, and we're also going to be
exposing that inside the actual, 49:20 um, assist interface as well, so that folks can. 49:23 Um, see, you know, exactly what's going on, and
uh… like, what their usage is at, how it's going, 49:28 all that sort of stuff. So… more work to
be done there, and more stuff coming there, 49:32 but we do want to make that very
transparent for folks, is kind of. 49:35 how much you're using and what's
going on. Cool. Um… Alright, 49:43 Steven has a question. Understood about
token limits, is there any context window 49:46 or memory limits that might influence larger,
more complex app development conversations? 49:50 Yeah, good question. So, obviously,
the underlying AI models, 49:54 uh, have, you know, a limit to their context. 49:57 Um, that limit seems to be continually expanding, 50:00 but there always is a limit there
to the context that models have. 50:04 Um, and due to the fact that, 50:07 uh. you know, we are doing some pretty
context-heavy operations with things like. 50:11 passing components and all of
that information to the LLM, 50:14 and things that come with our
system prompt and all that stuff. 50:17 In addition to the information
that you're putting in, um, 50:20 there… there is a limit here, but I will
say the team is constantly working on. 50:25 Um, using, kind of, engineering
tricks, things like sub-agents and. 50:29 Um, you know, saving contacts via tool calls and
other stuff like that to, um, you know, make. 50:34 make this even more context-efficient. Um, so
it's a little bit… it's a little bit hard to say, 50:39 uh, sort of when that… when that
context level will be reached, 50:42 but… Um, I will say that I've gone through. 50:45 some pretty complex builds with, like,
multiple sort of feature iterations, 50:49 um, and it's been able to maintain that context. 50:51 If you start running into things where
it's not behaving like you would expect, 50:55 or you feel like it's losing that context. 50:57 You can click this plus button up here to
create a brand new thread, and again, one 51:01 of the first things that we'll do when you kick
off this thread is look at the state of your app. 51:05 And very efficiently sort of pull all that
back into context, right? So if you feel like. 51:09 You're reaching a point of
sort of diminishing returns, 51:12 um, that's where you could just
sort of kick off a new thread. 51:14 And say, okay, uh, the first thing we'll
do will be look at all your queries, 51:18 look at all your components, and so it will
refresh that context for itself pretty quickly. 51:24 Alright, uh, cool. Bion asks, is there a way to
turn an actual spreadsheet that might contain 51:29 formatting, formulas, logic, and macros into
a retool app, rather than just a flat file? 51:34 Yeah, um, so good question. So,
formatting, uh, formulas, and logic. 51:39 I mean, formulas and logic are kind of like
the queries that we looked at as part of what 51:42 we were building today, so… Um, if you,
you know, gave it a file and said, hey, 51:48 here are my Excel formulas that
are nested in this spreadsheet. 51:51 recreate these as either JavaScript or SQL
queries, that would be one way to go about that. 51:56 But also, if you have all of this in a
Google Sheet instead of just a flat file. 52:01 Um, that's another way to get a little
bit more of that dynamic nature as well, 52:04 by using the Google Sheet
as the underlying resource. 52:06 So, a couple different options there, but, 52:08 um, assist is pretty good at
understanding things like Excel formulas. 52:12 Um, taking specific formatting feedback,
etc. So, uh, as much of that detail as you 52:17 can sort of prompt it with, uh,
it should be able to do for you. 52:21 All right. Uh… Well, another question here,
if we connect Snowflake slash BigQuery tables, 52:27 will the AI understand the request
to build interactive databases? 52:30 Yeah, absolutely. This is a great
question, and a great use case, 52:33 right? So, if you remember in the demo,
one of the first steps that we did was. 52:38 Uh, that we… we gave, um, ASSIST access to our
resource and said, hey, it's the airport's table. 52:43 Ian RetoolDB. Um, if I had instead said, you know, 52:47 it's the analytics table
in Databricks, or it's the. 52:51 you know, um, customer data table in Snowflake, or
it's the, you know, page view events in BigQuery. 52:57 Um, the first step that ASSIST would do would
be exactly the same. It looks at the data. 53:03 looks at the schema and sees exactly what's
going on there, and uses that to make its 53:08 decisions and interpretation about how
to build the application, right? So. 53:11 Um, you can absolutely point
it at a database and say, 53:14 here's where my data is and what it looks like. 53:16 Um, and it will use that resource
connection. Uh, to… to look at that, 53:21 uh, information. So, in a similar
way, as we looked at on Monday, 53:24 we had hooked up a government data
analytics API instead of a database. 53:28 And the same thing, assist before
it built our app around it, 53:31 it queried the API a couple times, it
used the OpenAPI schema to understand 53:35 how the API was set up and what
information it did have access to. 53:39 And so, that sort of
introspection and inspection step. 53:42 happens with any of our resources,
whether you're using a database, 53:45 or Snowflake, or an external API, or…
Salesforce or anything else, right? 53:52 Cool. Um, yeah, alright, we have
one more question here, uh… How do 53:59 you provide access to your app to specific
users through some sort of authentication? 54:03 Yeah, so… Um, this is a question that might best
be answered, sort of, in our community, but, 54:08 um, what the… the core of the retool
platform, one of the things is that, 54:13 um, you know, you can give access to. 54:15 specific users, um, on the basis of, kind
of, their group and user permissioning. So. 54:21 Uh, if you're talking about how to give
access to, uh, assist to specific users. 54:26 Um, that's something that we can kind of walk
you through, uh, in the community, so please head 54:30 over there and make a post, but… Uh, if you're
talking about the actual end application, um. 54:36 That is part of Retool's, sort
of, granular access controls, 54:39 where you can say, okay, what users
have access to this application? 54:42 Um, and that basically looks
like, uh, you know, over here. 54:46 in our settings, if we click on,
you know, roles and permissions. 54:51 We could say, okay, uh,
actually, let's look at groups. 54:55 So we can say, like, our, you know, our read-only
users, they should only have access to, you know, 55:00 specific applications, right? So
if I… make myself a read-only user. 55:06 I can say, okay, uh, this
person only has access to. 55:09 Specific applications or, you know, things like
that. So, all of these things are configurable 55:13 within the retool settings, if you want to…
if you're talking about application access. 55:17 But if you're talking about access to assist, 55:19 uh, that's something we can
definitely help you with as well. 55:24 All right, uh, can you import more
data via CSV import from the app? Yeah, 55:28 good question. So this is if, like, you
already have an existing data table. 55:32 Uh, can you, you know, import more, uh, CSV data
here? And so, uh, the answer is yes, you can. 55:39 Um, either by, you know. flowing that into,
uh… you know, importing CSV to current table, 55:46 right down here, that's, uh, another option.
So, you would just click on this, and again, 55:51 it's the exact same flow, you would
just drag and drop another CSV in there. 55:54 Um, or if you created this through
something like a regional workflow, 55:58 um, you would just run the workflow again
with a different set of underlying data, 56:00 and that same process would
flow all the way through. So. 56:03 Absolutely, uh, like I said, this dataset, 56:05 I had to split up into 5 different CSV
files to, uh, stay under that 3MB limit. 56:11 And so the way that I got all of that in
here was to do the initial import from CSV. 56:16 But then, when you have a
particular table selected, 56:18 you can click on this plus down here, and click
on import CSV to Current Table, as well as, 56:22 you know, a bunch of different
other actions you can do in here. 56:27 All right. How does the AI handle rolling
back changes? Can you specify the request 56:32 to go back to from an iteration
from a point in time? Yeah, 56:34 good question. So you… remember,
if we look back at our thread here. 56:39 Uh, at one of these points, I
basically created a release, 56:43 and you can even see, outside
of the releases that I created. 56:46 Uh, Assist is automatically saving versions to the 56:48 history at various points in
its development, right? So. 56:51 after it created this map centering
logic, it created a version here. 56:55 And we can, at any point, click, you know,
revert to this version. So, for example, 57:00 uh, this is where we started making
our text editable in the drawer. 57:03 If we decided we didn't want to do that, 57:05 we could revert to this version
right before we made that request. 57:08 And it will basically… you'll notice,
sort of roll back all of those changes. 57:12 And so now, when we click into our drawer,
once our query finishes running here. 57:20 You'll see that, you know, our name
value isn't editable anymore, right? So, 57:23 um, you'll… you'll see that you
can either have the option to save, 57:27 uh, releases at certain versions, especially if
you're using source control inside of Retool. 57:33 But it will also sort of auto-checkpoint itself as 57:35 it goes along, and you can revert to
those versions at any point in time. 57:41 Alright, a couple more questions here. How does
the 3MB limit apply if you use Google Sheets? 57:46 Yeah, so the 3MB limit is only if you're importing
CSVs into Retool through the browser, right? 57:50 So… If you want to be able to click this, you
know, say import from CSV and drop a file here, 57:55 that's where that 3MB limit applies. If
you're hooking up to an external database, 57:59 or anything else that's not importing a CSV into
Retool Database, you won't see that same limit. 58:04 Um, but this is just because this is a
tool that's running inside the browser. 58:08 There are various technological limitations
and performance limitations that make it so. 58:12 We need to limit the amount
of data that can be imported, 58:14 uh, this way. But that's purely a, um… like,
file upload through the browser limitations. 58:19 So there are ways to get around that, and that
doesn't apply to other resources either, so… 58:25 Uh, cool. Alright, and I think we have
time for maybe one or two more. Uh, 58:29 can you create a new record through this tool?
If you want to add anything to the database, 58:32 can you use RetoDB like you
would with any spreadsheet? 58:34 Or if you want to do this in the app, then
prompt for that capability of your app. Yeah, 58:37 so if you wanted to add more data to this dataset. 58:40 Um, two ways to do it, as the person who's
asking the question mentioned. Number one, 58:44 I can go ahead and click down
here, I can click on Add Row. 58:47 And, you know, then I could fill
out all this information manually. 58:51 I could also… well, that's not gonna
work, because I didn't put in any data. 58:54 I could also go into my app and say, okay,
great, we have our drawer, that's awesome. 58:59 Uh, but I want a modal, like a pop-up. 59:02 I want to be able to click a button
that says, create new airport, 59:04 I want to have a modal pop-up that
I can then fill in all the details. 59:07 and have it put that data into the
database for me automatically. So, 59:11 that's something we could absolutely
ask ASSIST over here to build for us 59:14 as kind of an additional feature, now
that our app is built and working. 59:17 And so those would be the two ways you
could get… extra data into the app. 59:22 Cool. And last one we've got here, what about
the aesthetic side of apps? Will AI cater 59:27 to your props? Yeah, absolutely. So this is a
good question that we get from a lot of folks. 59:30 Um, our kind of base app
here, uh, that we've built. 59:34 Uh, looks very like a retool app style. But Retool
has some pretty robust, uh, theming capabilities. 59:41 the ability to, uh, you know, customize your CSS. 59:44 build custom components as well, so
if you have a custom app theme set up, 59:48 or if you just want your app to adhere to a
particular kind of well-known color scheme. 59:53 Um, you know, you can absolutely ask
ASSIST to do that for you. So I could, 59:57 for example, ask it, okay, we want this to be. 1:00:00 Um, you know, like, Netflix colors, or we
want this to be red, white, and blue branded, 1:00:04 or we want it to be… blue and orange, you know, we
have Chicago… the Chicago Bears here in Chicago. 1:00:09 Uh, maybe I want it to be blue and orange,
like, bears colors, that sort of thing. Um, 1:00:12 so you can do that, and then we'll go
through and modify your components for you. 1:00:16 It will also, if you ask for a specific
theme that you already have set up. Uh, 1:00:20 you'll be able to prompt it to do that as well. 1:00:23 Something we are working on… That
a lot of folks have asked for, 1:00:28 um, is basically the ability to import
a Figma design. So, uh, if you have a 1:00:33 design for an app done in Figma, um, you'll be
able to just upload that into Assist and say, 1:00:38 here's kind of the design inspiration for my
app, we need to build it, uh, like this, right? 1:00:42 Um, all those things are coming, it's something
we are pretty focused on, but, um… you know, 1:00:47 this upcoming year, we really want to allow
folks to build even better UIs and retool. 1:00:53 That's something we are actively
working on enabling. But you can 1:00:56 already do quite a bit today. 1:00:57 Uh, just by asking ASSIST, uh, you know, for a
particular color scheme or certain design updates. 1:01:06 All right, yeah, welcome back, Sarah. 1:01:09 All right. Keanan great job, that
was awesome.I think, you know, 1:01:13 hopefully everyone learned something,
and if we didn't get to your question, 1:01:17 we will get to them in the community, and
you can see all of the recaps, all the Q&A. 1:01:22 They are all posted in the community, 1:01:24 along with the recording, and you can
also find it in our YouTube channel. 1:01:29 Um, if you liked learning alongside
us, and also with other builders. 1:01:36 You will love the community forum. You just
go to community.retool.com. There's so many 1:01:42 different things to learn from others.
You can get help with whatever problem. 1:01:46 you're experiencing, and also get a lot of
inspiration in the show and tell category. 1:01:52 We have some different challenges that
are fun, so you could get involved. 1:01:55 Like, right now, we have a challenge running
just for another two days, where you can earn. 1:02:00 $25 in a gift card. Um, if you post something…
your assist creation using the tag AppGen. 1:02:10 So, go to the community and do that. Also, make
sure you sign up for the final day tomorrow of 1:02:15 AI Build Week. It is EMEA-friendly, um, and so
go ahead and sign up. The link is in the chat. 1:02:22 Thank you so much to our team, Daniel, who is
behind the scenes, doing all the livestream setup, 1:02:28 uh, Keanan, who did two awesome presentations,
thank you so much, Angelik, who went yesterday, 1:02:34 and Alexis will be presenting tomorrow, as well
as people behind the scenes helping us out. 1:02:38 Thank you so much, and we will see you tomorrow, 1:02:41 and in our community forum.
Thank you, Keenan! Bye, everyone!