S25-E03 – BuiltOnAir Live Podcast Full Show

To get all the latest videos and demonstrations from the BuiltOnAir Podcast, subscribe and get notified on our Youtube channel here and our newsletter/community here.

FULL EPISODE VIDEO

Watch the full video of the show.

The BuiltOnAir Podcast is Sponsored by On2Air – Integrations and App extensions to run your business operations in Airtable.

Start a FREE 14 Day Trial of On2Air Now


In This Episode

Welcome to the BuiltOnAir Podcast, the live show. The BuiltOnAir Podcast is a live weekly show highlighting everything happening in the Airtable world.

Check us out at BuiltOnAir.com. Join our community, join our Slack Channel, and meet your fellow Airtable fans.

Episode Summary

In this episode, we dive into the latest Airtable automation updates, specifically focusing on the new ability to handle arrays when inserting data into single-value fields. We discuss how this simplification helps keep your schema clean by reducing the reliance on extra roll-up or lookup field workarounds.

After the news, we transition to a deep dive into Softr. Alli demonstrates how to use Softr to transform an Airtable base into a functional web application. We walk through building a teacher portal, exploring user authentication, data restrictions, and the power of connecting multiple data sources to create a unified user experience.

⏱ Timeline:

  • 2:23 - New Airtable array handling in automations
  • 7:03 - Discussing Airtable automation limitations
  • 12:04 - Introduction to Softr’s new features
  • 20:08 - Syncing Airtable users to Softr
  • 30:27 - Implementing global data restrictions in Softr

Full Transcription

The full transcription for the show can be found here:

[00:00:01]
All right. Welcome back to the built on air podcast. We are in episode 3 of season. 25. Good to be back with everyone Kamille Ali. Good to see you. As always.

[00:00:12] And we have a fun show for you today. We’re gonna go a little bit outside of airtable. We’re gonna talk to talk about the, the softer platform and which got its roots in the Airtable, ecosystem. So Alex can walk through us with that. But before we jump into that, there was some news that airtable release. Let me show that up here and Kamille. You’re the one to find it. Walk us through what they announced.

[00:00:42] So, we talked already, I believe it was.

[00:00:45] so, to the first,

[00:00:47] At the insert as Json option, when you’re pulling items from a previous step in an automation.

[00:00:55] But what’s wasn’t announced or what we didn’t know at the time was if there was any kind of array that you’re trying to pull into a field that only accepts a single value, like a text field, for example, before this update airtable would say, can’t find anything to parse or something like that, where it wouldn’t let you pull it away into a text field. But with this adjustment and what they’ve announced here is that if there is an array and you’re trying to insert it into something, like a text field you now, have the option of pulling the first item out of the array, or the last item. And that’s really helpful, because a lot of the workarounds beforehand were forgoing using a lookup field and favor of a roll-up Fields, you can get a single item or having a formula or something to that effect that or just something out of an array and that just adds extra Fields, you know, get the benefit

[00:01:55] of a look up field. If you use a roll up field, there’s pros and cons to using, either of those field types. This adjustment kind of keeps your schema a little bit cleaner and you will work around great, a, in my book,

[00:02:14] so this part half of this is stuff that we’ve already kind of covered in the other half is a very minor like

[00:02:21] It’s a small update that. I’m sure many people won’t notice for quite a while, but it’s these are the types of updates. I love seeing from airtable is just a little improvements to the platform that resolves, some minor limitations

[00:02:39] Yeah. Yeah. Very true. Yeah. Well, we’ll have to do some testing on this in a couple weeks when we go through new features because I’ve got some questions on how it handles different scenarios.

[00:02:54] This gave us pretty useful in that it’s shows you exactly where it would appear. And then later, on, in this thread,

[00:03:04] I mentioned something I mentioned in that other episode, we talked about for insert as Json, that he would be great if you could pick which fields that you can bring over from the record object, instead of getting just a single field as a Json response.

[00:03:23] and, you know, fingers crossed that they add that as an ability but

[00:03:30] Um, yeah. Overall, both of these pretty welcome updates that mean that you have less rigmarole that you have to go through. Yeah.

[00:03:41] So yeah, here’s the question. It doesn’t seem to work with update record.

[00:03:47] You don’t usually.

[00:03:50] I’ve used it in an update record step and I haven’t had a problem. It’s possible that they made an update since this comment was written. I think this post is at the time of recording, a four days old. So it’s possible that the problem is been resolved since then, but maybe I’m mistaken about what that commenter was saying it not being compatible with.

[00:04:14] So here the responses, it’s not currently possible to use these outside conditions comparisons.

[00:04:22] So you don’t you update Fields, you just use it in the conditional.

[00:04:28] And what was I doing?

[00:04:30] I feel like I might have tested the wrong thing. I feel like I’ve seen, maybe not the first, and last, but I feel like I’ve seen the Json representation and a lot of areas, definitely everywhere. So maybe I’m mistaken. It looks like run script. Oh, you actually posted? Yeah. Yeah.

[00:04:49] so,

[00:04:52] Asian, but here I’m

[00:04:54] Talking about the insert as Json and not the array component, first or last. But

[00:05:02] Yeah, so if that’s the case there table.

[00:05:05] Make it consistent.

[00:05:07] They do sometimes have a habit of

[00:05:10] Introducing a new feature and then applying it in like three out of five places, you would want to apply it in the platform. And then the last two places,

[00:05:20] Steaming at random, just not being selected for inclusion.

[00:05:25] like,

[00:05:27] Her conditions. Like I can’t, we have filtered groups condition groups inside of automation steps. It’s the one place in Airtable, you could add conditions everywhere condition groups everywhere except automation’s. So automation, seems to be the common denominator of

[00:05:47] Missing implementation. You also can’t use date variables to do comparisons in fine steps, find records. Yeah, you have for those. Yeah, I was about to say, if you’ve never dealt with that auditing,

[00:06:05] Date-time, parse or daytime format into Unix. So it gets gives you a number

[00:06:12] We shouldn’t have to do that, we shouldn’t have to do that, but now I’m getting distracted by my laundry list of complaints.

[00:06:20] you know, one, one thing that I did notice, if this is we’re showing

[00:06:26] Poland.

[00:06:28] Playground.

[00:06:30] so, in automation’s,

[00:06:35] Let’s see if there’s a date field.

[00:06:40] Published a so this feature, where you would put the specific time, this changed recently where it used to, you could just put that right in. Oh my gosh.

[00:06:56] What changed?

[00:06:58] Right.

[00:07:00] I think I know where you’re going. Sometimes it will be like, do you want the date or do you want it in like local or european or ISO?

[00:07:09] I think if you do like an email step,

[00:07:12] And put it in the body of the email. That’s where it is this? I wonder if it needs to be formatted as a time. I bet that you need the time on their

[00:07:22] possible. This is a good time to mention that in the, it’s pointed out in that.

[00:07:28] Community post as well. Some of these inputs, what you can output them as does change depending on what step or thing you’re inserting it into, like the insert as Json. If it’s not a script, it will insert the Json as text, that is formatted like Json, but if you inserted into a run script action, it will be Json as data. So it’ll you don’t have to convert text to Json, in the script, it will come in already as either an array or an object.

[00:08:06] So,

[00:08:07] Useful feature, but it’s also one of those things that’s not really documented all that well. So it’s hard for you to know like what

[00:08:17] You know, it’s going to change depending on the context you’re in.

[00:08:21] I feel like Dan this is if you do like a long text field that you’re inserting the date into or it being an email step or something, that’s when it gives you those extra options. Maybe it’s a tech space. I thought for sure I was putting into a deep field. Now even there, I wonder Enterprise only maybe because I’ve seen it too dad. Now

[00:08:44] I can attest to it but I don’t know. I may not be fully rolled out so I saw in a different

[00:08:52] environment. I think we’re probably gonna need a whole episode dedicated to like airtable ghosts.

[00:09:01] Everybody picks one feature that you swear is a feature and you have to find it.

[00:09:06] Yeah, that’d be funny. Scavenger hunt of like I know this is in there somewhere, find it.

[00:09:16] Very cool.

[00:09:18] Okay, so some new new things to play with. We’ll do we’ll do a deep dive on this in the coming weeks and play with this because honestly there’s time I still have a fully embraced the Json. Even though I know there’s times where I want to use it but most of the times it comes up is when I don’t want to use it and so I need to understand it better. So,

[00:09:41] We’ll do that.

[00:09:43] All right, Ollie. Let’s learn some softer. Can I share your screen? Yes. Let me do.

[00:09:53] I want to do this window.

[00:09:58] All right.

[00:10:07] There we go.

[00:10:08] Awesome. Okay. So I’m I figured today. There’s it’s been a long time since we’ve covered anything related to softer and they’ve been through a whole new like relaunch of features. They’ve been a brand new platform

[00:10:28] Very similar to what they were before but they have a lot more capabilities.

[00:10:34] mainly in terms of, like,

[00:10:37] I mean really across the board but like for me My Favorite Things Are what I’m gonna go over today. Kind of do a little bit of unboxing so to speak and build a quick app together.

[00:10:48] The they’ve introduced their own database, which I actually have not touched myself, and we’re not going to go over that part. Today, I’m going to stay Airtable Centric. However, I have heard very good things about their, their database platform and they’ve introduced workflows as well as like, forms that you can take outside of software and give to other people. External forms haven’t played with that. Haven’t really had a need to but could be useful as well.

[00:11:17] But workflows really, really cool. The AI stuff they’ve got going on. Really, really cool. So I’m going to go through

[00:11:26] Some of that today.

[00:11:29] I as an example on the back, end have Unearthed, one of my favorite examples which is a students in classes base, where I’m tracking enrollments of students in particular classes, and I’ve added a couple tables here to track grades and assignments.

[00:11:49] And I thought a good use case today would be it’s helpful field, I was building this out.

[00:11:58] I thought a good use case would be to build a quick like teacher portal for them to you know, submit grades for students.

[00:12:08] If we had time, you could do the reverse of that, you know, you just Student Portal. But good, use case, with little bits of data to play with, to really showcase some of the new stuff going on in softer.

[00:12:24] Also has.

[00:12:29] A public roadmap, which is something I wish Airtable ever happened, right? Like, what are you doing? We all want to know, but softer tells you exactly what they’re working on, which I really love to see. And what they’ve just released what they’re currently working on and what’s planned? I am particularly excited for page breadcrumbs in this plan list, that’s gonna be

[00:12:59] Genuinely surprised that’s not in there. That is 101. Breadcrumbs.

[00:13:06] I can imagine it.

[00:13:08] Maybe it’d be hard to implement with the structure of how it works, just because you only build one page.

[00:13:14] for any number of Records like,

[00:13:18] It’s kind of like the same as a detailed page though. So those

[00:13:21] Yeah, it’s the same kind of concept. I don’t know.

[00:13:26] But I see here, they’re clearly going directly at airtable, you know, with their database and now they’ve got record history on the way, AI agents.

[00:13:38] Yep. They launched building apps with snowflake data and for those of you that don’t know, snowflake is for storing like millions of Records. It’s an Enterprise grade software.

[00:13:53] Coming for your tables, lunch and other several other people’s lunches as well, not just for a little tool to help you and your team. If you’re using snowflake data, you’re probably a part of a very either, a very large company or a company that deals with quite a bit of beta.

[00:14:11] I really can’t say enough positive things about software, like even their entire team. They’re, they’ve got support that literally online. 24/7. They get back to me at all hours of the day. Like they’re just really, really great platform. They move quickly. Very impressed.

[00:14:31] Um, so super excited about a lot of these things, one of the cool things they let you do. I’m just gonna scroll through this quickly and just point out be a little fangirl for a moment. You can turn your app into a pwa app which I think it’s like personal something. A progressive web app progress. Yeah. Thank you. Which makes it accessible on a phone so you can actually let your users download it. I think you can even

[00:14:59] I can’t recall if it can go into the app store or not. I haven’t dealt with that part yet. It might be possible. Not sure though.

[00:15:05] Like like the private?

[00:15:08] I think are usually an alternative to going to the app store, which require like someone to review and approve it usually, but

[00:15:18] Most most often people aren’t going to know the difference between if it’s a native web OS, app or whatever. Versus a pwa, there are very useful. Glide does the same thing. Yeah. Absolutely. So this becomes really, really cool. You can push notifications to the app which is really nice. This one, I like first. Like they’re literally on a roll this past month, like the summer, they’re shipping all the features that I’ve wanted since day one which like this.

[00:15:48] That you couldn’t choose the colors of your chart, you could only drag them in order of like the right order. And then if you had only two options visible in the chart, now suddenly the colors are out of

[00:16:01] Order like it was really a mess but now you can actually assign them and make it look pretty. Which I’m loving workflows huge, we’ll go over that in some examples of that.

[00:16:15] My personal favorite though is the vibe coding block.

[00:16:18] So that one really, really huge and they just updated it to connect to multiple data sources. I had been feeling the pain of that, some of similarly, to how airtable first rolled out. Their custom interfaces, it can only connect and custom elements could only connect to one.

[00:16:37] Table at the time now. Thank you, really cool.

[00:16:41] But software, it can commit to not just your Airtable data, but you can combine that with other data as well. So, like you can see here, they’ve got two different sources so you can filter them separately. And be like, okay, all of this data is what I’m working with this stuff from over in that app. And this stuff from over in this app which gives you one unified surface, which is really, really nice.

[00:17:07] Um then let’s just I’m just going to hop in and start building. We could keep going on that list but let’s just actually do it.

[00:17:14] Similar to Omni, they do, let you do like you know, create an app via a prompt. But I’m gonna skip that because I like to just do it.

[00:17:24] From scratch.

[00:17:26] And again, I’m going to just say start blank.

[00:17:29] And connect to airtable. They have a ton of data sources. Crazy, alright, Google server. My God

[00:17:41] They’re got everything, I usually skip this part.

[00:17:45] You can like check off the tables and create these pages, but I really just like to start from scratch because in my head if it’s already created I like forget which ones I’ve looked at already and like I just want to build it on myself.

[00:17:58] and,

[00:18:00] They have a little chat bots on the side which we can use just kind of, like, almost exactly. Like Omni would work where you can ask it to do things on the page at things for you questions, about how you’re setting it up, Etc.

[00:18:15] You can preview this, you know, desktop tablet mobile.

[00:18:20] and by default it just throws in a bunch of random stuff on the homepage, which bothers me because I’m like I said, start from scratch, I don’t this

[00:18:30] Either way.

[00:18:32] I can, the first thing I’m gonna do is hook up my users.

[00:18:37] and so, I’m going to go to the user’s table and

[00:18:41] Say, I want to sync with a data source.

[00:18:46] So, this can be from any table. It doesn’t need. It doesn’t need to be the same data source that I picked.

[00:18:53] Originally, I could really have it come from anyway.

[00:18:57] But I am going to make it the same.

[00:19:00] Data source.

[00:19:02] And in this case, I’m going to say teachers

[00:19:05] Now, you can say here, if you want to just use everybody or a selected subset of Records, which I 99% of the time and doing the selected subject because I don’t want just everybody to have access one of the downsides of these apps such as software and they’re not the only one, it’s airtable as well. It’s most of these SAS applications are

[00:19:29] User base, and that user limit is getting lower and lower and more expensive.

[00:19:35] Um, really want to save on your user count where you can and you can do that by saying, okay, only select, if you know, you could say status is active or whatever you might have.

[00:19:47] And I’m not going to mess around with that right now, just for the purpose of time. And I’m going to stick with all

[00:19:54] But you can do this and then there are Advanced rules. So like

[00:20:01] especially if you use selected, I highly recommend making sure that you review these

[00:20:07] You.

[00:20:09] Basically there’s options. Where if you have open sign up on your site which I wouldn’t in this case because I don’t want to just let teachers sign up to be a teacher, it should be closed. But if you did want open sign up, there are plenty of use cases where you would then you want to choose if you want that to be created in your actual users table. I don’t know what the benefit of not having it created in your users table would be to me, it feels that feels like a scary land to be in where you don’t create a matching record. So I would honestly recommend not doing that.

[00:20:43] then this is very important though is if they get deleted out of the app, like you actually physically right click on their record and deleted out of software or

[00:20:55] for an airtable and

[00:20:59] the what should happen to the user in software.

[00:21:03] I usually say just deactivate sync user because that will just make it so that they when they try to log in, they can’t anymore and it won’t remove it from your airtable base. But sometimes

[00:21:17] you might accidentally have it on the delete sync user one. So if they stop

[00:21:22] They stop eating the conditions, they get deleted and you don’t want that to happen. I usually leave on these two settings. But these are important things to look at depending on what you’re use case is. And I’m going to just map this to my user Fields. So email is how they log in.

[00:21:42] And I’m going to pick.

[00:21:44] first name for name, which is so painful to me every time I do it, but they don’t let you choose a formula for

[00:21:53] Oh, you do well they do but it causes problems.

[00:21:58] Historically, unless they literally just change it today.

[00:22:02] Well, you couldn’t do the two-way sync with the formula, right? You can’t do exactly. That’s exactly right.

[00:22:11] So same with like if you have that goes for your email as well. I’ve used in

[00:22:17] Formula for an email field.

[00:22:19] And it got mad at me down the line, like things stopped working. So just

[00:22:25] a word of caution. Make sure you choose editable fields.

[00:22:29] Which if you have a formula for the full name, unfortunately, will not let you.

[00:22:35] Pick that.

[00:22:36] so bummer there, but

[00:22:39] You can have.

[00:22:42] An avatar, which I don’t have a space for here. So I’m going to leave that blank and then you can map their created time. And their last login time to

[00:22:53] Feel that I have in the face here.

[00:22:56] So, I’ve got these as placeholders right? Ready to go to map.

[00:22:59] To that section there.

[00:23:02] And I’m going to say save, and I don’t see password other handle passwords.

[00:23:08] Great question.

[00:23:10] So once we are all loaded in there,

[00:23:14] so this you can see here what the off method is and that is something that I choose on this authentication page.

[00:23:22] Um, you can go into here, there’s certain Enterprise level options as well as Google sign-in which is really nice. They have the magic link option as well but they will like make you if I try and turn this on. They make me like type in. I understand the risk which I gotta love. It is very risky to have magic legs but I do

[00:23:47] I don’t think I’ve seen permanent magic link before. Is this like a static URL? That like as long as you have it you could log in. Yes.

[00:23:56] That’s not what I’m familiar with normally in my experience when you click log in, It’ll ask for your email and it will send you an email, which is a new link every time you click that and it will authenticate you, which is more secure than just. Here’s a link that you could always that, you could give it to your friends, and neighbors and they can log in as you.

[00:24:19] 100%, absolutely agree. There is

[00:24:22] I know most people use. Yeah, you can do. So what Camille’s talking about is an option as well though, there’s, but it’s kind of similar, it’s a code, it’s not a link.

[00:24:34] This is a huge step forward to me in terms of what they used to offer for login. And the onboarding scenarios can be really painful to set up sometimes depending on your use case that’s to me. Still feels like the biggest stumbling block when it comes to softer. Is I usually feel a little bit disappointed with how everything’s set up. I’m like, maybe I could be doing it better, but I haven’t found a right way to do it. For example, if you want the one time code,

[00:25:02] Or a password.

[00:25:04] Like I want them to be able to choose, right? So when they log in, they can set up a password. The first time they log in, they can actually choose what their password is after they log. In the first time though, which is

[00:25:15] Strange.

[00:25:18] You either way, if I want both of these as options, They will receive a one-time code every single time they try to log in. Even if they are logging in with their password. It’s still the one time code, which meaty balls. Yeah, no one else does that means,

[00:25:39] Like it’s it’s silly to me but it’s still huge step forward.

[00:25:45] and I think if you have open sign up, so when you actually like are letting the user sign up, if you have password as your only

[00:25:53] Thing, then it will prompt them to choose a password when they are signing up.

[00:26:00] But if you don’t have open sign up then it’s like, okay, you just have to kind of figure out.

[00:26:04] What the lesser of two people’s or mess around, with all the options and figure out. What’s least painful and password is only saved within softer. It doesn’t think

[00:26:17] Yeah, it’s the users so you don’t have access to any users passwords. That’s all saved.

[00:26:24] Excuse me. Sorry.

[00:26:30] and,

[00:26:32] Let’s see.

[00:26:34] Email input. You can you know just change what the label says on the login screen. Oh here either method or both methods you can enforce to FFA but there’s not like

[00:26:47] A way to say, don’t send the one time.

[00:26:51] which really bothers me, but

[00:26:55] there’s,

[00:26:56] Still.

[00:26:58] huge step forward there and

[00:27:01] You can.

[00:27:03] Choose here, whether you have the open sign up or not. And you can if you don’t have open sign up or if you do rather

[00:27:11] You can choose if it’s domain restricted, which is also nice.

[00:27:17] Onboarding flows are really cool. They find them useful in the relatively

[00:27:23] I think actually they’ve existed for a long time. I’ve just only just started getting into them. You can choose when somebody logs in like what their first page is going to be

[00:27:35] and you can have different user groups. So if I did have, you know, one table of teachers and students for

[00:27:42] An example in my database.

[00:27:45] I could split those into user groups of teachers students and then have different permissions set up for those different groups and different pages that they land on the first time they log in, for example, so that gets pretty powerful with

[00:28:00] Like actually setting up your onboarding flows.

[00:28:03] And makes it a nice user experience.

[00:28:10] And the other questions on this. Oh yeah, I should get into the, the data restrictions as well, and user groups.

[00:28:17] he’s a group that just talked about,

[00:28:19] By default, you have visitors. So anyone who’s not logged in and then logged in users, but then you can create groups within the logged-in user group to be like, okay, if

[00:28:29] You know, type equals this, put them in this group.

[00:28:34] A person can be in more than one User Group if they meet more than one condition. Yes.

[00:28:39] Would.

[00:28:40] Great implementation. Yes, exactly. I. If that’s not possible, I get so frustrated. It makes things really hard but it is here, which is nice.

[00:28:51] Then we have data restrictions, which super, super cool and you can apply Global restrictions to tables. So for example, in this database, what I might do,

[00:29:06] or I might not depending on how I want this portal to function like if you’re like okay when a teacher logs in

[00:29:13] You could make a decision to say, can they see only the classes that they are the teacher of, or can they see everything and then maybe you could have a table? That’s like my classes, all classes, or you can decide to say, no teachers can only see the classes that they are. And they can only see the students that they are responsible for so on and so forth.

[00:29:41] So, you can set that up at a global level rather than every time you reference that table having to set that filter, which can be really frustrating.

[00:29:50] the other benefits of that, which I’m actually going to wait to set this up because I’m going to show you

[00:29:55] what the benefit is in a moment or that it like

[00:29:59] changes the that linked record drop down across the board every time, the teachers go to search for a class. They will only see the classes that they should see which is really nice.

[00:30:09] So I’m going to set that up in a moment. I’m going to wait until

[00:30:12] I have them, the right.

[00:30:14] set up to show you the difference of with and without

[00:30:18] but here on my homepage.

[00:30:22] I’m going to just delete everything here. Start from scratch.

[00:30:27] We have.

[00:30:29] they’ve just redesigned this as well, so I’m getting used to it, but they have application UI, which most of these are

[00:30:37] I don’t know why they’ve decided to put some in this bucket but either way form grid list table item details. These are all things that are gonna connect automatically to your data source like, you know, them that way, same width chart.

[00:30:52] everything basically here, but then they have

[00:30:57] Containers where you can put them on the screen at different places tabs and columns.

[00:31:02] And then they have all these drag-and-drop kind of website builder tools, like elements blocks if you will.

[00:31:11] what is really cool about this is, if I’m like, oh I really like

[00:31:18] How this looks?

[00:31:21] but I want this to be connected to my data, like,

[00:31:25] I don’t want.

[00:31:27] I’d rather have it look like that, and like the grid.

[00:31:31] You can do that now with the vibe coding, which is really cool. You can actually chat with it and say, hey hook this up to my

[00:31:39] Assignments table or whatever, it might be, and then you can map the fields accordingly. So I’m going to go over that afterwards but

[00:31:47] Really cool stuff Happening Here.

[00:31:50] So, let’s say I want to start off with.

[00:31:56] When the teacher logs in, they should just see their classes here and be able to click on one of their classes.

[00:32:03] So first thing I’m going to do is map this to a source.

[00:32:08] and again, you can

[00:32:10] Use multiple sources. So

[00:32:13] You can.

[00:32:15] Pick a way to your heart’s content. And if you have like sink bases as well, it’s really nice because you could have like

[00:32:21] If you think to tables, you know, like if you had your grades in one place and students in another, you can bring them together onto the same screen here in really easy ways.

[00:32:34] So, I’m going to go classes.

[00:32:39] And then it automatically Maps. Some of my stuff, it takes a stab at throwing in fields for me.

[00:32:46] And I can choose here with the sort is I can choose the record filters.

[00:32:53] So, this is very similar to an interface.

[00:32:57] Page kind of like I can set up the back end filters and then on the content I have the ability to set up these front end filters for the user to play with. But in here is where ordinarily, if I weren’t using the data restrictions, like we discussed earlier.

[00:33:17] I could go here and say only show where the teacher record ID

[00:33:23] Gained sure and then logged in user.

[00:33:27] Record ID.

[00:33:31] Now, as it says here, user specific filters are not applied while we’re in editing mode. So I’m not going to see any change here at first, but when I go to preview,

[00:33:45] Now, I can choose at the top here who I am and Tomas has these classes. Whereas my

[00:33:56] Only has these.

[00:33:59] Which is quite nice. But then

[00:34:04] if I don’t want to deal with setting this, every time I display the classes,

[00:34:09] then I would use those global.

[00:34:13] Filters, or Global restrictions under the users table.

[00:34:19] the other thing that that lets me do is if I have another page of

[00:34:25] Let’s say.

[00:34:28] Ah, the let’s just do like all students will do like a whole class list.

[00:34:37] And I’ll throw in a table.

[00:34:46] Just sort by last name, first name.

[00:34:53] and then if I want to go to my content,

[00:35:00] you can choose what Fields the search bar does, which is really, really helpful.

[00:35:07] Really like that. And you can also choose if you want to search bar at all, you can get rid of it entirely.

[00:35:13] Same with the in-app filters. I could shut these off. But I could also say, I want to let the teacher filter by.

[00:35:23] Us.

[00:35:24] Does this not work? Because of I need to do an enrollment. This is one thing that they haven’t quite fixed yet. Is like they haven’t dove in because this is a lookup field, it can’t sink the

[00:35:38] Class names because of the workout.

[00:35:41] So that was me being silly but if I, let’s just actually switch this to enrollments instead.

[00:35:52] because enrollments links directly to

[00:35:57] can use those values automatically.

[00:36:01] Let’s just sort by.

[00:36:10] so here under classes,

[00:36:13] I’m not going to do grades.

[00:36:17] but here now that sync with source is no longer grayed out and I can say yes, I want this to

[00:36:23] Sync up.

[00:36:25] This is brand new where I can actually now filter the options by conditions, which

[00:36:32] Is incredibly helpful. Again, this would work if I did the data, restriction, at that level, I wouldn’t need to do this part, but there are some use cases where you would want to be able to control that separately. So just

[00:36:46] really, really good stuff there. And what that means is, I could say here only show again, showed the teachers,

[00:37:00] Record ID.

[00:37:02] and now,

[00:37:05] I go preview that page.

[00:37:09] Because I’m logged in as Maya. I should only have those two classes here.

[00:37:15] Really cool.

[00:37:17] Love. See that.

[00:37:22] but if I get rid of this,

[00:37:26] and let’s go set up a

[00:37:29] data restriction.

[00:37:38] And we’ll go to classes.

[00:37:43] Here, I’m going to pick again, teacher record ID.

[00:37:48] And change logged in user record ID.

[00:37:52] And I can choose which User Group this applies to, so you can get really intricate with your permissioning globally, which is great.

[00:38:02] I’m just gonna say all logged in users and you can choose here separately. If you have a high enough plan different permission across creating editing deleting Etc,

[00:38:19] so now that I have that Global permission,

[00:38:24] I had got rid of.

[00:38:28] This filter here, it’s not there anymore.

[00:38:31] But it should still.

[00:38:34] Only show me those two. What?

[00:38:39] Interesting.

[00:38:41] But I’m not.

[00:38:43] Know what? I wonder if.

[00:38:52] I have been noticing, I should preface this. I’ve been noticing some really random bugs in softer also, like, but they’re fixed quickly, but they have been happening as they’ve been releasing these new features. So

[00:39:06] But again support incredibly responsive, there we go.

[00:39:10] I think I just refreshed the page too early. Yeah.

[00:39:13] but,

[00:39:15] so that

[00:39:16] The implementation are is pretty interesting, because I could see a world where you might have both teachers and like, administrators or something logging into the same app. And if you do the data restriction and had a user group for teachers, it might be set, I can only see my classes that I’m a teacher of but if you’re an administrator, you could see any class in your school or exactly. So that’s pretty powerful at the like app level to make that security policy. It’s the equivalent of like row based Access Control where you don’t set it in the app necessarily. You said it like globally at the database level.

[00:40:01] Exactly, we could do something like that.

[00:40:04] Here kind of do exactly what Kamille was.

[00:40:08] Describing is like, let’s say and maybe I’d have a role field. I’ll just keep it simple for now. Like this person Maya, should be able to see everything, whereas everybody else should only be able to see their classes.

[00:40:22] User specific classes.

[00:40:23] and if I go into users,

[00:40:27] User groups.

[00:40:30] I’m going to create, just call it super admin.

[00:40:35] Edition based.

[00:40:38] Where permission level includes all classes?

[00:40:45] really, maybe I should have said super admin instead because then I could apply it to more than one table, but that language on my part and then I can add another one that’s like just

[00:40:58] teachers.

[00:41:06] now, I’m curious that’s gonna bother me if I

[00:41:15] Might have broken it if I do that. I’m just gonna verify.

[00:41:20] Good to know when you’re going to break something, let’s all find out together.

[00:41:25] We will go here.

[00:41:27] Interesting.

[00:41:30] Again, sometimes I think I just refreshed too quickly.

[00:41:35] Got a sink.

[00:41:39] the thing I worry about is,

[00:41:42] So now you’re dependent on like values in a drop-down, right? And then in their table, it doesn’t tell you that that field is being used and softer. And yeah, the management of all of that is kind of scary. Oh yeah. And one thing I will say there is softer, does it on field names?

[00:42:05] Not working.

[00:42:09] Okay, I know that we’ve instead of updating all classes to be Superman or whatever you changed it to, it didn’t notice and that suggests that it’s not just filled. It’s all so select options as well. That it’s based on name and not ID which is an interesting decision. Those you can get the IDS from the API so I wonder what their decision making. That was right.

[00:42:34] Like what’s what? This one is interesting because you could actually put in different values so it will like, I just needed to add

[00:42:44] but there are actually, I think what they’re thinking, what they’re thinking with it is, is that

[00:42:49] You can take a template or like, you could duplicate your app and point it at a different base. Like, say if you needed to restore a snapshot or duplicate your base or give it to somebody else like as a template or something.

[00:43:01] Those fields would then automatically mapped to the data source that you’re now pointed at without needing to go through and remap everything. But I would almost prefer to remap everything because I’d prefer to have the field IDs of things.

[00:43:17] Yeah.

[00:43:20] That might have been it. They also

[00:43:24] Might not have wanted.

[00:43:27] Like if you do based on ID then you also have to do an extra like query to in real time when you’re on the page to get the current display name value and maybe they didn’t want to add that extra like low or whatever it is or dependency for making it human readable.

[00:43:45] But for longevity sake, it’d be nice if it were ID and there used to be a different third-party tool, that would like connect the dots between. It would read your like make instance and it would read your airtable instance and then find What fields not just make. But other things, as well, were used across other third parties. So it was like a dependency checker for your whole ecosystem, but I think they shut down and I don’t remember the name, but

[00:44:20] Operator or up. It was, it Philip Lake and

[00:44:24] I don’t remember because it was, it’s been a while, I think since they were in operation, but somebody somewhere needs to make that again because at

[00:44:35] there’s a lot, there’s a lot of

[00:44:39] You know, we’re airtable groupies over here, but there’s a lot of other, like, SAS applications that you could connect to software as we’ve just seen. And then there’s a lot of alternatives to softer as well. And if you’re using any one of these

[00:44:53] It’d be nice if there was like a map.

[00:44:57] that you could like, all of

[00:44:59] Okay, I know are table is not going to tell me, but this other tool will and I’m sure people are Vibe coding their own dependency map thing if they can for sure. Like, I mean, the one thing that if I, if I thought to keep up with it, kavan talked about at Daredevil, once her trick to like documenting, those dependencies that are outside of the Airtable system, is she like creates a formula and I’m probably gonna butcher the beautiful way that she does it. But it’s in essence, she like does a big or function and puts in

[00:45:38] You know, like first name, I don’t know.

[00:45:43] Classes.

[00:45:45] And then be like, software dependent is

[00:45:49] Not literally all she does and just like keeps it hidden. So, that way, if I’m looking at my dependencies for first name I could see. Oh, it’s in soccer like

[00:45:59] Something like that was creative.

[00:46:02] Before a script inputs, I used to have like a last modified time field and selectively Target the fields. I wanted the weakness in that, I like it as a cleaner approach overall, but you can’t select a formula or a computed field. So, cavan’s approach using a formula and then just having them somewhere in the body of the formula, makes it a dependency allows you to pick any type of field for that. Dependency Checker option.

[00:46:30] Exactly, very nice.

[00:46:34] So now I’ve got this set up. I restricted that permission to just the user group teachers. So that means that Maya is no longer being affected by that permission theoretically and should not be able to see everything.

[00:46:49] whereas if I preview as anybody else,

[00:46:53] I should only see their own.

[00:46:57] Classes. That’s just their list.

[00:47:00] Which is really nice.

[00:47:03] and,

[00:47:05] The.

[00:47:08] Last thing I know we’re running out of time. There’s so much cool stuff to go over in softer but let’s say I want to create a transcript.

[00:47:23] For the student.

[00:47:26] Let’s actually go. This is now enrollment. This is really what that is.

[00:47:36] I’m not creating like, you know, full app right now but

[00:47:40] I want to just demonstrate the great back-end stuff as well and but let’s go to create now students.

[00:47:51] We’ll throw in a list.

[00:47:54] Or table doesn’t really matter.

[00:48:03] just,

[00:48:10] Again, we could continue with the permissioning here. I’m going to ignore it for now for the sake of time, but I could say, you know, only show the students that a teacher has in their class and there’s all sorts of formatting as well on each of these fields. I don’t want to skip over.

[00:48:27] Everything entirely but you could, you can set up different color coding.

[00:48:34] for the tags which I’ve found really useful, you can assign random

[00:48:39] tag colors as well as have it inherit.

[00:48:42] The tag color from the base, the single select color.

[00:48:46] And they recently made it so that it does recognize the colors and lookups and the formula single select outputs which didn’t always. And I found that to be really, really nice.

[00:48:58] Let’s say when we

[00:49:03] Click on a student. So if I go to actions,

[00:49:07] I’m going to get rid of our ad record button because we don’t want to be adding students here.

[00:49:12] But we can add a button here to open the details page of a student.

[00:49:19] And I don’t have one yet, so it’s going to prompt me to create a detail page.

[00:49:25] Now, and I can also choose if I want, you know, to open an immortal or new page Etc, that was on the previous screen.

[00:49:32] But now I’m working on a detail page, just like I’m working, like you would be an Airtable. So, a record detail page is kind of the same as this and I say Vibe, because this is a bit more flexible. You can throw in more

[00:49:49] The data from other sources. But the one key thing to remember and this is actually something I learned within the last year or two, is that the record detail Source? Like, the current record that this is based off of is always going to be the top.

[00:50:05] Most.

[00:50:06] Top left. Most

[00:50:08] Source on this page. So if I had a different item details block above this and pointed it at a different table.

[00:50:17] that could mess up the rest of my filters on the rest of the page, which

[00:50:23] Just in my mind, the topmost item details block is important.

[00:50:28] and,

[00:50:30] Then you can choose whether.

[00:50:32] You can find the record based off of either the record ID in the page you URL, which is inherited automatically based off of whatever.

[00:50:42] Record, I’m clicking on in this case.

[00:50:46] so, let’s go to

[00:50:49] Students here I say, open.

[00:50:54] Like this record ID.

[00:50:56] Is what is going to be in the URL.

[00:50:59] because I clicked on that record, same thing as airtable and

[00:51:04] but say, I had

[00:51:07] like this is from what’s really powerful about having that option to be able to change it to base it on conditions is like

[00:51:16] say I wanted the detail page to actually be sourced in a different base and like when I click this record,

[00:51:24] That record ID isn’t the same record ID as the same space is. I can say well actually use that record ID but point it like search based on that for a different field.

[00:51:35] Like you can kind of redirect using that in powerful ways. It’s hard to talk about arbitrarily without having example. Ready?

[00:51:43] But I have found that to be a useful feature.

[00:51:47] So in here, I like to do a bunch of things here, usually turn on the container, just so I can see what’s happening here.

[00:51:56] I don’t want to be able to edit.

[00:51:59] We don’t even care about this. I just want to.

[00:52:04] See the name.

[00:52:07] Of the student.

[00:52:10] above average means grade above average grade

[00:52:15] We could do, you know, average grade letter.

[00:52:18] and I could say, as defined in source so that shows

[00:52:23] Always, it’ll be color-coded.

[00:52:25] I can get rid of the picture if I want.

[00:52:29] but now, let’s say I want to

[00:52:33] Insert.

[00:52:35] A vibe coded transcript. I’m just gonna like use that as a quick prompt here. I could

[00:52:44] you know, make my own based on different elements on the page or I could just say please

[00:52:54] Create me a transcript.

[00:52:59] Or the.

[00:53:02] Student.

[00:53:04] That is the current record on this page.

[00:53:10] Tuesday from the assignments.

[00:53:17] And grades.

[00:53:21] Tables.

[00:53:24] And then, I’m going to connect my data sources.

[00:53:28] so in here, I want it to

[00:53:36] have the students.

[00:53:39] I think it might already have it because that is the current record. And, but just in case I’m going to still just a

[00:53:47] I want them to have access to the student record, where the record ID is, the current record. I’m looking at

[00:53:57] I want it to be able to see the

[00:54:05] enrollments.

[00:54:08] Based off of.

[00:54:11] A student record ID.

[00:54:13] Being this current record.

[00:54:17] I’m looking at.

[00:54:19] So, that’s that concept of current record here.

[00:54:23] Is the thing that’s defined by that topmost item details walk.

[00:54:29] And these are all the pages, all the fields from my students table.

[00:54:33] And then I want add another, which is

[00:54:43] Here.

[00:54:45] I guess we could upgrades, we don’t need a sign necessarily.

[00:54:50] This will be.

[00:54:54] Student record ID contains again.

[00:54:57] Just that.

[00:55:05] Grades tables, sure.

[00:55:11] Keeping it really big for the sake of time.

[00:55:15] This does use AI credit. So software gives you a certain allotment of credits with your plan each month.

[00:55:23] I have found that it does dwindle pretty quickly. I have

[00:55:28] Been using clot a lot. I made a skill or softer Vibe coding so I can just go to Claude instead and be like, hey use this base do this and it gives me the code that I can just paste into this Vibe, coding block. So you can save on software, AI credits.

[00:55:47] but I have found their Vibe coding tool to actually be very good like

[00:55:53] It’s, I think it’s better than Omni and it can even dive into your Airtable data and it can decide what Fields, make the most sense to use for this to try.

[00:56:09] There’s while we’re waiting along the same lines with AI.

[00:56:14] There’s so much. I didn’t get to cover today that I wanted to but the

[00:56:21] Good.

[00:56:22] I was just gonna say they have a button now that you can use

[00:56:28] to ask AI something like you could let your user.

[00:56:34] Click a button.

[00:56:36] And ask questions about the page in the data on the page and get answers around. Like, it’s, it’s really cool. You can basically build your own little chatbot for your user’s.

[00:56:46] But yeah. So this is what it came up with not terrible to begin with. Let’s verify that it’s even correct. If we go to preview,

[00:56:58] okay, so Samuel Torres.

[00:57:01] Let’s go look for.

[00:57:04] Their go with grades.

[00:57:08] Filter.

[00:57:12] So physics, one fundamentals of chemistry.

[00:57:16] got a D plus and a B plus

[00:57:19] B, plus b. Plus that’s all

[00:57:23] Really not bad. Like First Data, and

[00:57:27] I’ve been very impressed with it.

[00:57:31] Yeah.

[00:57:33] This is cool. That’s I’m imagining like somebody that softer that like

[00:57:39] Understands all the moving pieces. Like this is a complicated piece of software, like every single data source has all these nuances. Like, we know how much are table has every other one that they connect to has just as many and to be able to manage all of those and get them to play nicely. I it’s just unbelievable that they pulled this off.

[00:58:05] Very impressive. And

[00:58:06] one thing I will say I’ve noticed is interesting, using the vibe coding block.

[00:58:11] Seems like they the way that they treat the data types. In airtable is different, like numbers are not, like number numbers, come into this.

[00:58:21] Vibe coding.

[00:58:23] Code as a raise.

[00:58:26] For some reason, every every even if it’s a formula, that’s a number, I was banging my head on the wall, trying to figure out what was going. I was like, why isn’t this working? And then I realized like

[00:58:37] it was coming in as an array and I needed to just like, you know, zero

[00:58:43] That doesn’t really make sense to me. This looks like standard JavaScript. There’s a type in JavaScript called number.

[00:58:51] It’s very weird. Yeah. Like I wonder where they have data to do.

[00:58:57] Where the grades?

[00:59:03] Yeah, it’s really weird.

[00:59:07] Yeah.

[00:59:10] I had to map.

[00:59:11] Yeah, but yeah, thank you. We could almost create a whole new series on software. I mean, it it’s as complex or more complex than their table to, to master.

[00:59:28] Yeah, there’s a lot there. So gave us just a taste. We might let us know in the comments and in the build on our community if you’re using software and want to see more deep, dives into US, let it let us know and we could do we could do more content on it. So

[00:59:44] Very good. Thank you, Ali. And we will be back next week. Hope everybody has a good week.