← All episodes

Fully Agentic AI Development for pyRevit with Jonatan Jacobsson | pyRevitPodcast #7

GUESTJonatan Jacobsson
HOSTErik Frits
DATEMay 2026
DURATION1:41:48
EPISODEpyRevit-Pod #7
WATCHON YOUTUBE

Transcript

Hi everybody, welcome to Power Rated podcast number seven and today we're going to have a very interesting topic definitely something that many of you wonder about and it's going to be mostly about probably AI workflows for working with Pyrait and I brought a really good guest for that because he was experimenting for quite a long time with that. So welcome on the show Jonathan how are you? >> Thanks Erik for having me on. >> Yeah I'm good. My >> pleasure.

Yeah. >> So Jonathan uh for people who don't know you could you just introduce yourself who you work as? What is your experience? So just kind of quick kind of background. >> Uh yeah, the name is I work at a small firm in Sweden called Big Steing.

Uh we do construction management. Um helping the building owner from like the first idea for a plot to a hand over to whoever going to hand going to own the building after we're finished. Um so we helped them through all the uh earlier phase design. Um but our core uh strength is on uh construction management onsite using um what we would like to call total beam practices using open um like open um open beam. >> Oh so you practice open beam as well very much in your company.

>> Yeah as much as we can on the construction site. Yeah, that's also interesting topic because well many people treat open beam very differently at least in my experience even though like there are some standards there's like I see the schemas and so on but usually people break break it to their own ways. >> Yeah. Yeah. >> Yeah.

I think we can dive into that later as well but also let's just go a little bit back in your background because I want to find a little bit more about how you discovered Ravit >> uh and then we're going to go from there. I started uh my first uni tour, university tour was uh was in web development. Um but uh yeah, I dropped out at work worked uh as a web developer doing intra nets and stuff um back in like 2011 12. >> Uh and then uh started um my journey as a construction engineer. >> Mhm.

went three years to uni and then worked as on an in an architectural company uh until like 204 um a few years uh where I quickly became the Revit uh guy or nerd to talk to >> uh for all issues regarding Revit and like it stuff around that and I could keep the programming uh like skill alive during that time um both the web part and uh like I I mean I once I started opening Revit like the first year maybe I just like use native Revit and whatever tools I could get my hands on. Uh but like eventually I popped the hood and like used the Dynamo and eventually got into pyRevit a lot. >> So you you already had kind of programming background from this web development. Yeah. I don't mean like HTML CSS but you knew JavaScript probably.

And what what languages did you know? >> I mean at that part like all uh we did a lot of WordPress and PHP and >> like uh like ASP files over I'm just getting PSD just uh trying to talk about it but yeah uh we did a lot of like front and back end stuff. >> Mhm. I see. Um what I'm trying to understand is like when you started with Dynamo so you you already had programming background which is definitely going to be helpful because many people don't do that don't have that when they start with Dynamo.

Uh did you know any Python when you started with Dynamo? No, no, Python uh I started like using Python. Yeah. Within uh within Dynamo first and then I mean once I got into uh >> realized that I mean all the depart deployment issues that we had with Dynamo back in the day and like when I started this uh started that big streaming we went all in I went all into private. >> I see the I see this pattern over and over.

The main reason people jump from Dynamo to pirate is like probably this phrase like well it works on my machine like >> yeah everybody had to say it at least once otherwise you're not real Dynamo developer at least not back in the day now it's better I think >> hey it probably is better uh I have colleagues that use it to do like small off uh but they still use Python inside I know web due to >> all of it >> especially today with AI it's going to be so much easier to like create a Python node drop There's some code test test until it works because AI I don't know if there are workflow to find the real node drop it on the canvas with AI. So not sure if there is something like this. >> Yeah, I've completely dropped Dynamo from my toolbox that I use. So maybe it's good now but uh >> yeah yeah same. So >> you'll have to convince me.

>> Oh no, I'm not going to convince you. Like stay where you are. It sounds good. >> All right, so let's just jump back a little bit to Dynamo. I just want to see for how long did you use it?

What kind of problems you tried to solve it when you started? >> Yeah, so I started uh with Dynamo when we worked at a big uh big hospital here in uh my county. >> And then um yeah, some of the problems could have like reading and setting parameters, grouping stuff. Uh so to begin with it it was more like uh throwing data around. >> Mhm.

>> Uh for for setting door parameters and figuring out what door handle you need etc etc. >> I'm having flashback as well as you name all these. Uh so that's where I started um and like doing uh like door numbering schemas within uh Dynamo due to all of these whatever 50 parameters that we had. >> Mhm. Uh but uh we did uh some geometric processing as well like uh we have we had the fire engineer in AutoCAD at the time.

Uh and then they drew all of these fire uh requirements as lines in the DVG and then we we had some Dynamo scripts to like import those and write that parameter uh based on the layer of the line or like the property of the line. And then you could set some fire requirements on the walls. Something like some geometric processing like that as well. >> Uh I mean we I mean I think I had like 50 in the end of that project. We have like 50 uh >> Dynamo files from that project.

So it it was definitely like a learning uh tool. And >> Mhm. >> So I learned a lot of stupid I did a lot of stupid stuff with Dynamo and a lot of like some of them like ped up to other project. >> Sometimes it's fun when you work with geometry especially when you make a mistake and you just randomly get some weird shapes. You're like, "Oh, that kind of looks nice but not what I need." No, no, no, no.

And uh were you like alone or did anyone else understood dynamo? Like did you have anyone >> firm at the time I was alone? Uh >> okay. Yeah, that's very common. Hard to explain what you do, right?

People just know like, okay, just give him a problem. Don't touch him. Something happens, >> right? >> Yeah, that was Yeah, that was my job a lot of the times. >> Yeah, that's a cool position to be in >> and you learn a lot of you learn a lot like jumping between projects and uh solving problems.

I mean I I I love it to you up with projects and uh I I like to describe myself as like a BIM torpedo like torpedo. So like to uh I I like to to uh from scratch find a find a new problem and solve it. So that's >> I noticed that also people who start with dynamo programming in general sometimes we try to like automate everything. Not everything needs to be automated, just to be clear. But some, but that doesn't matter.

Sometimes you're like, I'm going to do it with code. >> Yeah. Yeah. I have to I have to like constantly read the the XD CD comic about uh remind myself to not automate everything that I uh do because it's so >> it can be rewarding, but it's >> time wise for a lot of things. >> Okay, let's make a quick test.

Have you ever automated something that already exists in Ravit natively? Did you make any of the tools that already exist? >> I I've probably I probably have uh a lot of the times. Yeah, I mean sometimes because you don't really like some features maybe like too um yeah, you haven't touched them like if you for example for like one case could be >> where I've mostly worked at an architectural office while I worked at that firm uh at Aphrey but uh like in my current job we I work as uh I support all of the disciplines in our projects So I I can have their models open all of them at the same time >> and like jump between and help help out in the models. Um so in that sense there's a lot of parts that I haven't touched in Revit uh like MVP stuff and structural engineering stuff.

So there's definitely some tools uh that I created along the way that already exist. Uh yeah, for sure. M it's it's kind of funny. I also had a few few of those. Usually they don't take much time but you make something and then you find like oh it actually exists in Revit.

I didn't know that. Then then it's like awkward. You're like do I delete it or do I pretend it's normal? Okay. I see.

So you started with Dynamo. You started automating this common issues especially with parameter geometry and so on. And can you share how far did you push Dynamo before you started looking for kind of better way with to kind of switch to Pyavit right you mentioned that you had some deployment issues can you just share on that one how far did you push Dynamo before the switch >> yeah I mean I didn't uh we didn't have like a yeah for that deployment issue because that was that was kind of the main theme like it it was so hard to to move past working on someone's machine or like promoting into someone's machine and fixing it to the work. Um, we didn't go like full into that to actually try to deploy like using the tools that were available then like network shares stuff. But eventually some to be able to make it user friendly you need it you need buttons on a tab.

>> Mhm. And that's where like uh the journey for pyrovate began like just simple really simple shortcuts within projects to to get some to to get to where we have the families or >> uh some project internets and stuff. Yeah, that's where it's >> how how did you discover paravit? >> I mean I guess it was through all the online forums and YouTube but uh >> Okay. So just one Google search.

Huh? Yeah. >> Solution. >> I mean in when I worked with Dynamo, Parvit eventually dropped like like um popped up. >> Mhm.

>> Uh and I started using like Yeah, this is was now we're talking about like the development for pyRevit, but I used pyRevit as soon as I got it. Uh just to like and I >> while working as an architecture engineer. >> Okay. So you had this tab in. I had it open, but I Yeah, I had it open, but I I I just didn't realize that how how easy it was to to create new buttons and stuff.

Uh but um so like when I worked as like architecture engineer, like I used the like memory feature for selections a ton. uh this like you where you append or write or read the selections >> to effectively jump uh between stuff in Revit. So that was kind of the main features I used as an architecture engineer to start with. >> I see. >> And have you considered C when you're moving from Dynamo?

Like there's usually Py to C. For me, I uh I always like um I when I started out, I compared Python to JavaScript so much because it was so easily like the syntax were kind of um were kind of clear or kind of similar in a way and you could um so I never really got into uh C that >> okay. So you wanted to stay in your like comfort comfort zone with Python and stuff. it. Yeah, it it felt more natural to be to begin with having learned like native JavaScript.

It was it was Python was easily read readable for me. Um >> Mhm. >> and like the way you the way parit works um structuring the Python files is kind of similar and how you could do it with JavaScript. Uh Mhm. >> So it's like C f it feels it still feels like uh I mean I now I can do it with AI but I I can't like start a C# project from scratch never >> that feels uh too hard for me that >> I mean I think if you would want to you would also wanted to make the switch but I remember talking to Ashen the part that >> and he shared something that resonated so much that usually well there are lots of languages and different people kind of root for different ones.

>> Mhm. >> But also uh once you find a language that makes sense most to you and how you think usually you kind of drop out all the other ones. This is like the one for you and I feel like for you this is also Python because for me I understand C. I could also get into that but I don't want to like it's not my kind of I don't enjoy watching C code but I like to see clean Python code especially when it's very readable structured nicely. This is nice.

>> I agree. >> All right. So, and how was the switch to Power Ravit? Was it like easy? Cuz this was still before the AI, right?

Do you remember approximately the year when it happened? >> I mean, it's definitely like before and after AI. >> Mhm. >> Um, but I guess we we did our like first custom uh pyRevit uh things that maybe 2020 or 2021 or something. Yeah, somewhere around that.

I'm just guessing I I don't have this uh in my head but I guess >> so after this co this whole thing started somewhere you start >> somewhere around that we started like using private more in the firm uh >> Mhm. And how was the transition from Dynamo to parave it? Was it like straightforward like >> Yeah, it was easier to deploy uh because it you point you you point the user to do like two things. Install pirate and then link some network share with >> yeah the private extension and then off they go. >> Yeah, deployment definitely.

I was more meaning like creating tools because in Dynamo you still have nodes. Some people have very strong habits to using nodes. But this one, >> yeah, it feel for me it it as a programmer, it felt natural to to okay code. >> Oh, makes sense. >> So that switch wasn't too hard since I had the programmer.

I could read code. I mean, I can read C#, but I don't I can't write it. I can I mean I can read the code and like once you have like familiarity with like Revit API and stuff it's yeah you can review uh like what the code what the some function or something but maybe you don't know like the ins and out of like memory management on all yeah all of the niche stuff. >> Yeah it's also extensive documentation you can't really know everything. I'm still learning things here and there.

What are like your most favorite tools that you created since you like kind of moved in? Like what are the like the highlights of your extension? Let's say because you have also I'm going to butcher it but it's called pi booking something. Yeah. Prefix by pi as the theme goes for py.

>> I'm going to I'm going to leave a link in description guys. You can read it on your own. >> But yeah. So what is your highlight tools? Do you >> I think what I personally uh use the most myself is the color elements feature that I use that extensively like while reviewing models and jumping in and fixing stuff.

That's maybe that's one that I use the most myself at the moment. And then I mean that's also where like the code base has grown has grown like maybe a bit too expensive for a single Python script. you mentioned like you you want like clean understandable code maybe you would puke reviewing this it's like 3,000 rows Python at the moment I really need to refactor it >> to make it more like m level but at current that's why I will use the most >> 3,000 lines is because of the UI or >> yeah I mean uh the combination with >> uh UI >> once you start using UI code just like triples or quadruples really quick because now I have to define all the buttons. What happens when you click and so on and >> yeah I also noticed like once I introduce UI my codes look and then like at first I'm like what did I do then I'm like oh it's just like this is for this button and then like yeah but yeah so 3,000 makes sense because if you didn't have UI I would I would be wondering what's going on there. >> Yeah.

Yeah. Yeah, I mean when I start developing some script, I always try to use just just to get the ball running uh correctly uh I usually go with like pyravit UI forms and stuff that already exists >> just to see like does the interactive work? Can I quickly iterate? Uh that's usually where I start from when I have things from scratch. >> Uh but eventually I I have a pattern that I reuse.

Yeah, the native pirate forms. For people who don't know, you can type just py rait effective input and you'll see a page. I'm going to probably show it on the screen as well >> where you have a bunch of code snippets which are usually like one two lines of code and you have a form right away. This is what Dynamo users often see and they're like no way because well UI in Dynamo was a this kind of touchy topic. >> But in par once we got that that was so kind of liberating because you can create like select from list, select views, sheets.

It was very quick especially for development. I still use it to this day as well all the time. Sometimes I even leave it and like a the tool works. I can fix it some other day. >> All right.

So let's maybe move to closer to the main topic. So you're working on your pirate extension and then AI drops, right? It was chat GBT was like free. No, it was before free. I remember it was in November I think 21.

So did you start using it right away or how was your introduction to par uh to AI just in general? >> Yeah, I w I my journey was uh SH GP like 3 something 3.5 or something that's maybe where I like the first night that I spent like awake totally couldn't fall asleep. Um yeah. So like the uh it started with like the realization of that now I can create like uh small prototypes for like JavaScript and HTML uh at what I then thought could be like incredibly fast. I could iterate a lot faster um than me writing the code uh myself.

like I'm not a like 10x engineer by any means writing code. >> Um but uh yeah, but that's when I realized like maybe this this is definitely the future. Maybe I have to re uh rethink what I I actually do or how I do things. So that's uh but and at that point just uh you there was no like integrations to anything really. So I mean it was copy paste >> between shipdity and whatever ID you used.

>> Oh, it was still amazing. >> And it was still good. I mean >> now we're getting lazy. We're like no integration not interested. >> I mean it was still good and it was priced reasonably which good also >> very cheap considering what you get.

Now we again get super picky. were like 20 euro a month for this even though it's like life-changing like thing. >> Interesting. >> Yeah. So that's when I started and then you eventually use I started with like dumping in ideas for pyRevit scripts dumping in like templates some of your templates like or some feature like functions uh or scripts for from pyRevit like dumping in that uh dropping in on the day and dropping in like drop copying pasting in some Python files and then see how it attempt >> to solve and then uh like dumping logs between it until it worked.

>> Yeah. >> Mhm. >> But some some parts of that still remain but they are all tool calls now like reading scripts, reviewing them, updating them, running them, debugging them. Maybe this loop is the same. Yeah.

For >> you mean like you mean like you made the skills or what do you mean? >> Yeah. some use these are either implemented in the ids the programming ids or or like custom tooling u which is something we can talk about later on here. Yeah, I think we can slowly start diving into the main topic because you said that you want to share this kind of agentic workflow using cursor operated development. >> I think nowadays you said you don't write as much code.

You mostly kind of torture AI to make it for you, right? >> Yeah, that's Yeah, that's definitely my way of working at the moment. Uh I've gotten too lazy, I'm afraid, to like write it myself or researching every feature myself. I usually have try to have as uh as many agents running in parallel as I can. >> How far can you push it this way when you start kind of like do you do you give it like multi kind of step task right away?

You slowly build it up? How do you >> My usually uh approach is to uh like um thinking out the idea and and like dumping in every idea that I have to begin with referencing like uh scripts that I already have up um or like uh to other tools that are on GitHub or something referencing dumping in uh URLs and stuff for it to research and then having um cursor do a plan mode. They have different modes um where it it doesn't really create anything yet. It just creates a plan based on what you prompted >> and then >> yeah like totally straight >> and then you iterate on that plan until it's like when you you review the plan. This is kind of what I'm uh after and then you switch your model to something that's not expensive and then you fire it off and then once it's done you start debugging until it works.

Uh basically >> and that loop can take I mean it's for simple stuff it could take like one shot the entire script but most of the time we're not doing like simple yeah select walls uh or something but it's usually like a combination of things or like the UI uh needs some debugging and stuff until it works >> or maybe the assumption that they did well while planning was wrong and Yeah, you have to fix the underlying assumption. This is all like programming in a nutshell basically. Yeah, you start you have one >> you have like a hinge of what you're what you're looking for, >> but you you need to to iterate on that feedback loop as fast as possible. Um my bottleneck at the moment is is um like I usually want to have a Revit open and then cursor open and having an agent working through my script, >> but I the uh like bottleneck for me at the moment is testing that script in Revit. Mhm.

>> I at some point at some point I need to have some >> like MCP thingy clicking the buttons for me in uh in in par like reloading re reloading um Revit hello pyRevit u and the clicking the script you need to test. Yeah >> that's my bottleneck at the moment. Maybe someone has solved that but I haven't got it >> because that's what I wanted to ask if you because Herser usually does does its thing and then either ask you to test it or test it itself and I know people definitely have this workflows where it can execute in Revit itself get the output and kind of keep working. I saw this workflows I think before MCPS as well. So people but they kind of rewrote parit a bit.

So it was a bit they went really deep into that. But now with MCPS maybe it's simpler because now we can just connect it send it and get the output. >> Yeah. And you can have like rules in uh like u like a within the plan for cursor. I guess you could have like uh when it starts to uh write the code it always writes like u like extensive debug logging and then when it's once it runs it's uh double checks how it's working.

But for me, I usually um plan in a in the like more expensive models and then write the code in a more um like a cheaper model and then debug a few times maybe like 10 rounds or something. That's usually where I you need >> what you need to create a feature or something or add something. >> Do you find it more efficient this way? because I came to conclusion that oftent times it's just worth to pay extra for like Opus or like this Deep Seek V3 or whatever is their latest one to kind of try to oneshot it because the dumb model sometimes you spend a lot of time back and forth a lot of time and like you still save on tokens but sometimes it takes you like extra hour maybe to get there or at least >> yeah I haven't really like benched my like I have trial and error And this is what I do now like full-time basically. I sit I I think I use cursor more now than I use Revit.

Um so um but we do a lot of web development and stuff as well. So >> like for the dashboards for the analytics and stuff, >> we have the like uh small like hub project hubs um custom hubs or we work a lot a lot of it like in self-hosted environments uh because some of the projects we can't work in the cloud. So then you have to do >> uh you have to yeah you have to have stuff in self-hosted environments. So all of a sudden like PowerBI isn't suited as a dashboard or like uh all of a sudden you can't use u to uh yeah for all of the things you want ACC for >> or like format sorry. Um >> no they keep changing the name.

>> Uh so then we do a lot of like programming inside those project environments that are like secure by default. Then >> Mhm. Yeah. But the AI is crazy good with web development nowadays. >> I mean my bottleneck in web development is my imagination.

That's what I think at the moment. Like it if I run like Opus for like a large task for the things we do, it it gets gets us pretty far. Uh >> but uh >> we're not serving like 1 million customers. We're s will we're serving in projects maybe a few hundreds. So it's the uh it doesn't have to be like super super efficient or like uh >> Mhm.

>> for the things we do. It has to be secure. That's what it has to be. >> Secure. Yeah.

>> But it's also good at that nowadays. I don't know. I love how far you can push it. >> But yeah. >> Uh I think well web development is really exciting to Yeah, I like this topic.

I just try to hold myself not to go too deep into that because most people came here for like Power Ravit and this AI workflow. So, I think just going to move back a bit. >> Yep. >> Uh do you want to dive straight into the topic because you you share that you don't mind showing us a demo of your kind of workflow and I think it's going to make a lot more sense. >> Yeah.

Um and also I think maybe a good question to begin with. You mentioned you're using cursor for this hygieneic workflows. Can you also share why cursor and not like cloudcode or copilot or one of these other thousand tools that coming out every week? And you're also not sharing your screen by the way. >> Yeah, I'm I Yeah.

So, uh this is my extension. It's it's uh we want this to be used in our projects uh and be able to have like a starting uh a point like get us gets us to a we want to use this as a um a tool that we can iterate on when like native features and everything doesn't do what we want. Maybe we have to automate something in our project. Um that's where we we really want to like have a some way of like adding tools to our project that we can uh define ourselves. So that's the starting origin for this uh tool set.

>> Mhm. >> Um let's see here. So the it has grown a bit from the um image on GitHub but when people install it they through pyit and extensions this is what they get. >> Um >> and this is just like a normal um template model from Autodesk. Um, I mean we talked about deployment.

Um, we since we I mean I have users calling me like maybe once or twice a week to fix something or something's broken or something. Yeah, this it it needs to take this use case into account or stuff like that. Um the only thing that they have to do on their machine is just clicking reload here and then they'll get the latest from GitHub uh which is our repository for the entire um tool set. And I just recently added a feature for like branching um >> Oh yeah, >> due to the like the forum or like on your discord forum, Erik. >> Mhm.

Yeah, I remember you shared screenshot. This is pretty good one. So this allows us to like um test things uh in like I like more on isolation. So some some of these features uh can be developed and like deployed um >> Mhm. >> separately to test things out.

So this is a feature that we added yesterday from a project and I have a user testing that today. they can just uh click this button and then >> I'll direct them to switch to the feature and then they'll switch and reload and then >> um they'll get that button or that part version of the button >> and then I'll merge it to the master then later on when it's uh completed. >> No, that's a good workflow. Also for people who are not familiar with GitHub just going to quickly explain that branching is like parallel state of the project. Think of like a folder then you copy paste it to have second folder and it can work in parallel and then there is a way to bring it back and merge back.

That's pretty much the branching like in a nutshell. Yeah. No, that's a cool feature. When you share the screenshot how it works, I was like, "Oh, that's actually very nice, very clean workflow." >> And maybe we'll dive into that having other version of branching since get has a lot of uh other tools we could use as well. Yeah.

>> Mhm. >> Um I don't know where do we start? I mean should we I don't know if it's any point of like diving into u like the code base for the extension. Maybe that doesn't make any sense. >> If you want to explain certain things like show the branching explain how it works that's fine.

If you have tools you really want to explain in depth that's fine. But we can also dive straight kind of into cursor. >> Mhm. >> That that's fine by me. Whatever you feel is kind of more natural flowing to you.

>> Yeah. My I can explain how I can briefly explain how cursor works and how I usually use it. >> Yeah. So first we can also start why cursor and not like copile cloud code and all of these. I uh I did some testing earlier on and I guess cursor was uh it fitted it fit.

Uh I from my end uh viewpoint I came from like VS Code uh and since cursor at the beginning was a like a VS Code fork or like a copy basically of uh VS Code >> um it felt more natural. Uh I have I am not like a a programmer that only uses the terminal like I'm I'm not a terminal ninja h at that point as I see people who use cloud code are um more like familiar with using like tools like Vim or when they do everything in um for me cursor at the beginning felt more natural to use. Um and uh yeah and I still my mental model of the code is still like a this like a directory of files um that I like can interactively click on and stuff. So it it's it uh for me it hits a sweet spot where I can still like use agents to do like all of the coding but I can still review the code uh as my like mental model. um is suited or like uh or I'm how I'm myself programmed to you called so it's it kind of fits my mental model uh of my like ideal programming environment better.

>> Okay, that's fine. >> They have just recently released they call it like an agent window. That's why I'm usually now sitting because I like I' I I've switched to like like the VS Code way of looking at um my code and just just using this agent uh window at feels more natural for me at the end. But I still used back to like Claude, I still use uh uh like I love the cloud models. They fit me perfectly um >> Mhm.

for my like how I solve problems. Um um if you use like aentic uh programming a lot, it it's kind of like how you how you get used to uh like an ID and how the IDE treats your codebase and how you jump between stuff and edit stuff. Uh at some point you you start to get a feel for the model as well. Like you can sort of like I can sort of know how >> uh how it will plan out features. Uh, and if I like u use maybe some of the like Google um uh like yeah open AI or Google models uh I don't get the same results that I expect uh as I do with like cloud models.

So um like model wise I would it doesn't really matter I guess using cloud code or cursor for the most part. Uh I just started using cursor uh because at the time it it fit my mental model better. Um I think at some point this year I will try cloud code. >> Um >> you can also integrate it in VS Code and stuff like that. >> Uh I think the cursor came out as a leader because they were I think one of the first AI ids.

they also captured most of the market and I think they're still one of the innovators even though recently they were getting some heat for uh they're moving away from this kind of view that you have where you can see the code exposed and so on and they want to kind of hide it behind agents and stuff like that's what I understood I haven't used cursor in a while but I saw some people complaining especially developers that they kind of hide the code a bit they want you just to chat >> and don't look at the code so >> yeah I Yeah, there it's it and it's also it's it's you you also you you mean eventually you you often have to review the code but I mean if you you run the expensive models they will throw the problem for you so >> um eventually just a matter how many tokens you throw at it >> and how the tool set and the hard like the >> what the tools they have available and how like scoped they are >> they do it's um >> I see. Could you explain us the cursor setup you have because there are all these kind of extra MD files we can plug in to make it smarter or better understand certain things. >> Yeah. So the this uh this part here is like the uh directory for the extension and then in the cursor file folder this uh part of the repo is used um for cursor to like review before it starts to plan it. It it reads the it reads the um um what tools they have available, what what rules are could apply to this if there are like explicitly mentioned um what skills do we have and stuff like that.

>> Um the the uh maybe the most like used rule I have when I start a new tool is this one called Revit dev.mdc. This is what I use like all like always if I start a new project like a new script. Um >> Mhm. this um has like all the like some of the lessons I've used uh like learned uh during some of like the code um lessons hardearned lessons that I've had during the years are like explained uh in this rules file. I mean this I have a couple of hundred rows and there are there are more as well.

Um, and for people who are just going to get started into this kind of workflows, where should they focus on creating these kind of rules? Should they just start from scratch? Should they just kind of create it with AI, take existing ones? Yeah, for me I I um I realized like when I started using private and doing like AI workflows to create them that copying between like uh some chat window and into somewhere doesn't really you're not using the agents to their full extent. Uh so I started off really like uh researching uh like best practices um like analyzing tools that like how they usually go go around creating buttons uh how they usually structure the code here.

um your course material was used to begin with to like create help me set up like uh some of the pitfalls that you usually have and like I can't remember how many times I referenced this one uh for for um >> no f strings that's a common one >> this I mean when the models are trained on like the massive Python stuff uh it it can sometimes uh try to do like what people other stuff other Python libraries or software pieces use >> but for pyRevit they I mean you have to scope it down to what pyavvit can handle and use >> so that we running IronPython older versions and most of the python is python free >> yeah so >> so then some of these things have been some of the lessons that I've used uh to to not be like the first error that appears when I click a button is after strings. So, uh this has been used extensively yeah to like scope the um agent better. So then some of this could be like yeah I mean to begin with if you create a button you it I mean it has to follow like pyRevit's way of creating like tabs and panels um >> Mhm. >> and then you go into buttons or if you have stacks um how how it handles stacks like bundles some of that can be explained in these rule sets. So if you just uh have it uh create a new push button, it will read the rules, read some like uh code that you already have and then it will replicate that.

>> So then you won't have to debug if the folder structures are right. Right. >> I see. >> So yeah, this kind of uh also the same kind of setup goes not just for the cursor thing. They they all implemented similar in cloud code.

You also can create skills, add all these extra things. >> Mhm. >> Which are which is quite nice. But I think curs was it cursor who was the first >> maybe >> maybe I don't know I I'm not I I didn't have this in parallel when I worked I completely ran into cursor >> the way they do. Um >> okay.

So these are pretty much just kind of files with the rules on how to behave with IronPython how your code prefers to do and stuff like that. Plus you train it on the learn rate API material. So >> for me what I noticed the most is like when you give a working example it's so much better because now it understand the context especially for example for UI forms if you ask it right away it often fails but when you give like simple example look this works now make that it's now it's just such a difference. Yeah. >> So I think that's what it does.

>> Pretty good. >> This is one another thing that I it it often does like if if if we do >> if you have like in parate if you have >> like tools that you you've um that you have your scripts that you have ref you have reference to some like a common um uh code stack where you reference file from them. in py rev you have to reload >> entirely to to use these like function calls that you use in your scripts. >> Mhm. >> So this is just a reminder that um it remind me about if I add stuff in the library uh it will um I won't have access to it.

So whenever I have li scripts that I reference here it it will notify me to read. >> Mhm. This one, by the way, I think it was updated. That was the case. And I spent >> like two days trying to fix something and I couldn't understand why my code is I haven't noticed it for a long time.

>> Maybe changes in the new. >> Yeah, this this reminder would save me hours. But then I noticed that when I start teaching it in tutorials, I try to prove the point and it actually worked without reloading. And I'm like, >> okay, that didn't go as planned. So I guess there were changes maybe or maybe I don't know but I would still recommend to reload your par extension like it says right there that whenever you make changes in library not a bad practice trust me I >> I I do this like maybe maybe you're right maybe allowed to to to add a new maybe >> I would leave it I'm not sure like maybe it was just for me like some engine setting changed in private or I would take it six version.

>> Um, yeah. So, this is like the you you in in cursor you you have your your normal repo and then you have a folder that where you can reference things from. Well, so if if we need to create a new button, we can like explain it here. >> Uh, and then >> I could reference rules to and or like just instruct it to read the rules before it's uh when it starts to plan. Um what's your opinion between rules and skills?

Because in the end it's also both like MD files with a bunch of kind of uh explanations how to work. >> Yeah, I mean this is the part of for like my my pyavit uh development journey needs to improve a lot. Uh because I mean skills uh if the agent feels that it needs to reload to be able to test it, one skill could be to actually like trigger some MCP run or something to reload that. >> Um so I mean this um for me I know that this part has to improve. I use skills a lot in other repos uh and that works uh really good >> to like skills and stuff.

>> MC this is not MCP tool. This is like rules and skill for the >> AI to do. >> Mhm. >> But I mean one skill could be to to trigger an MCP uh or like this uh >> so it's more like SOPs like this instructions on how to do certain tasks, right? >> Yeah.

And it could be there are a lot of other cursor functionality or agent functionality like as well apart from skills and rules. There's also a concept called hooks like so if >> the moment you let's say you have a kind of have a hook to >> whenever uh you create a file a python file like a push button file you would have um that hook would trigger and then you you could explain what to like check or validate or run or debug when that new file is created. >> Mhm. >> That's also like a more like a event driven uh thing than skills. Skills can be things that you reference as well.

So like use this skill when developing this or >> um I haven't used it a lot in par context but I use it a lot for like web development stuff uh to uh maybe like analyze uh >> uh like maybe if I have a a database running in my local de developer environment I could have a skill to how it should uh like authenticate or test things in that database. Okay, got it. Um and if I reference in the rules that like before um getting back to me it has to check the skills. I mean yeah I mean it will >> uh if you use the better models. >> Mhm.

>> I see. Got it. All right. So the setup makes sense. So what feature will we build now?

Or is there anything else you want to mention before we kind of dive more into the demo from challenge please? Maybe I can we can do a we can do um um Yeah, maybe we'll do I have an idea now. This uh >> Yeah, >> but since you mentioned clashes uh Okay, so we're we're looking for a feature that can um have me select different Revit categories to clash between. Um and then once it can generate the clashes uh it will group them using our current method for uh family elevations but not using elevations using isolated 3D views instead. So we have we would get a grid um like a one to one or like a end to end grid of all the clashes in the model on a sheet.

based on like this uh category clashes. So like the first uh first grid element would be like if I like the walls towards doors category and those who clashes between those on in an isolated view and like the next grid element would be uh doors uh against columns or something. And then uh this would be a sheet with uh end to end uh uh isolated 3D views for these categories. So this is usually how I uh start like just talking out >> the AI and then so now we have like a a small uh part of that. Mhm.

>> Uh and now I can reference I can start by reference rules that we have. Um just to scope it down a bit. I can use like clash detection method like I I have done clash detection beforehand um for our zone detection part. Uh and I can also like drag in part that I like usually I can reference >> folder. >> This is like a tutorial for AI on how actually it works the clash detection in Revit API.

>> Yeah. So this I have like one uh after some hard learnings I uh I ended up creating like a small docs for me to use uh again. >> Uh so this yeah I mean these are examples. Uh so from now I like I can um I know that I mean it can use it can read this it finds examples. So clash detection is for me is already solved uh in this sense but it hasn't already it hasn't uh done the uh like sheets part and creating that part.

>> But we have that in um >> uh in another called family elevations. Now that I look at that, I should turn my newsletters into skills because I often take a subject like that and just send a newsletter on that. I mean I mean yeah so this is how I you usually go about it. um and then uh have it in plan mode just to see and I usually go for like a harder uh like a smarter model to begin with um in planning. Um yeah so yeah we'll jump uh like straight into this uh and we'll I'll try to explain what it does in the beginning.

>> Yeah. So in in um in cursor they u it can create like sub agents. So we have one like major major agents or like the normal agent and they have we have sub agents that like dump like go through the code. Uh so for like the zone uh clashing it's it's uh uh the we're into that sub agent here and this is the prompt that is uh he initiated the sub agent with. So now it it explores the codebase that we have reads a few of the files and then it it lists the files that are available and what they do and yeah summarize them and they have meth methods here that they use.

Um so and I mean the sub agent is just uh it it uh it scans this a sub agent scans um and then reports back to like the main agent. So now we have two sub agents who have like uh scouted the code base for this um and then it starts reading like other code that we have. So I can I can like see the tool calls here >> that agent uh runs. It it thinks it reads it like searches for references that for like functions and stuff. >> Mhm.

>> It uh sees how we it search for like bundles. It it thinks I can read some of the patterns like how it thinks. Um, I can see what it's it's it's reading parts of this code base here for fan motivations. >> Mhm. >> Creating also reference your current tools from the extension.

>> Yeah. >> A lot. >> Yeah. I mean, yes. Yeah.

Yeah, I mean I do have a extension like this, but I mean if you're starting out there are like a lot of pyRevit extensions that you can do >> uh use this kind of workflow to like um reference add that to like a reference uh part of your codebase to have let a research uh patterns that you have selected that you need will want. >> Mhm. Uh so now it it has like a it it says it has a good picture of what I what I need but it needs a further questions before we create a plan. So I I mentioned like pick and categories. Um so then I'll have to options here like how how I want to like uh scope the plan.

>> Um so let's just pick that you select unique. You just select you get a list of selected categories and it will create par. >> So kind of hard code what we do. >> Yeah. But you just you get the user to select what categories to like clash and then uh what's a single grid one per category?

Yeah, let's go by category otherwise it will be obvious. Uh should clash detection include elements from linked uh host model only >> and then it will continue and then this answer is part of the like next phase of the planning and in this phase it also like it can also start to read parts of the codebase as well um or uh yeah for extra clarifications u based on what they've responded here. Um, that's it's it's thinking about like this creating a new clash module in the library here. Creating views and then we'll get to decide where this push button should live. Uh, let's say elements.

Yeah, that's that's Yeah. Or a new panel. Yeah. Yeah. Let's go find this is this gets you into the architectural um software architecture like how do you want to clash how precise do you want it to be?

>> Uh I'm going to go for the first one. >> Yeah. And at any point here I can like if I if I see that it's going in the wrong direction or I have to like this is the right path like uh it's uh trying to do something that I know isn't possible or something that or I know isn't efficient >> uh you could like always uh go into this and just say that it needs to do something else. >> Mhm. Mhm.

>> Um but this is already quite like the feature will be quite big like it will use um some UI features um create an icon or yeah or create a ribbon management and here we see like it's it planning out how it should work. Um like it will open a window and you have to use iter to select something and then you generate like clashes pair them some like filtering and then eventually you create a view uh with a section box and then place them a view in the grid. >> So this is our code that's going to be used. >> Yeah. So this is like just a plan but you can also you can always save the plan.

Let's see. But because in some ways uh this or this is all I do in in some cases because I know I have a feature planned. I just don't have time to write it or complete it. But I can always complete it later. I just save the plan enough in that uh folder or something.

>> Uh >> Mhm. >> So now we have a a plan how it would uh uh discover categories. the code behind the project for the UI part um heat and grid placement we already have we have direct references to that as well uh in the codebase. So the next agent who reads this will yeah can read that code. Um how it creates views >> and at any like at any point I can ask it to review the plan against like Revit API or some web page or the root set add rules again or um >> Mhm.

>> So you mentioned that nowadays you spend more time in cursor than Revit. So pretty much that's what you do, right? You're just chatting and waiting for it's more more questions. You chat back and probably have it in parallel. Yeah.

With other tools as well. >> Another project. Yes. So, and then like I review the plan and sometimes I have uh like multiple like windows and I like try to monitor them as I would have like monitor some AI colleague or or like a colleague coding or >> uh sitting there with a weep you now. >> Yeah.

I mean, so you can I mean, there's something to be said about uh that let's just fire this stuff. Uh and yeah, I mean, now that we I mean, for this demo, it doesn't feel right to choose a a cheaper model. So, yes, just uh let's go with a faster model. >> Uh since this is recording, so why not? Let's >> uh >> by the way, when you use OPOS 4.7, uh how is your target work?

You normally you pay subscription for the cursor. Do you pay for extra API calls? Do you connect cloud subscription? >> Yeah. So in how does it work right now?

>> Yeah. You have a you have a subscription and in that subscript subscription you have a fair amount of like API tokens that you can use. subscription still 20 a month or >> so I'm at the more the uh I'm using the like expensive plan from cursor because I use this a lot and I really enjoy >> uh uh let's see if how this so this is my um I'm not saying that I'm using this the most efficient way but this is my plan uh and in that plan it's included like $400 $100 for like API usage, but this usually ends up being consumed quite early in the month. So I now I have nine months until my plan resets. >> But up until this month, I have we've used some tokens already.

>> Oh, so you also pay on extra. Yes. On top of the plan. >> Yeah. I mean, yes, it does it does uh >> it it can be if you're not careful as I am, >> it can be quite expensive.

But I I'm at a plan that I we I mean we >> for me for us this doesn't uh it's still worth it if it's a good idea. So I mean >> but your company pays for that, right? Yes. It's not coming. >> Yeah.

My pocket. >> Also for them it's less than one employee especially in Sweden. I mean they want me to be efficient and this is what it takes. >> Yeah, >> for me that's this is what it takes. But >> on this note, have you heard about caveman skill for AI?

>> I read it uh like a week ago and I I think that maybe I should try this because this is also like how I write how I write the prompts. I don't write them like super extensively. Yeah. >> So, for people who don't know and watching this and wonder what the hell is caveman, somebody made a skill for AI. Yeah, if you could open it, that would be great.

So, uh pretty much it's going to dump down the answers from not really dumb down. It's going to make sure it doesn't talk what it shouldn't. It's going to cut all the punctuation, all the useless words, all the okay, I'm going to summarize now. It cuts all this fluff away. Just tells that just speak what I need as short as possible.

And some people you can see they're cutting 70% of output tokens. So you can chat more with your AI models getting pretty much the same results. And you can see there like before and after if you're going to scroll through I just scroll down there. How would normally cl talk to you and how it talks in the cave mode. You can see there's like the usual blah blah blah blah blah or it just tells you exactly what happened.

Okay. New object rendered inline object prop. It also shortens everything. So it saves you money by still giving you the information. And >> I mean the Uh this feels uh quite uh good.

So I'll I'll try this after this recording just uh because I do see that it has already pre pre skills for this. >> Yeah. Yeah. Yeah. It has the skills for all the AI to use like it pretty much it's just a set of rules and you can see in rules drop articles like a and the then short synonyms patterns not.

There are also modes on how hard you want to go. It's literally it can even shorten the real words. So it's kind of look like a word but you kind of guess it but there if you scroll through you will see there switch level caveman professional ultra uh on top >> in the middle. >> Oh okay. >> Okay.

So there was somewhere um line 15 >> you can choose between these modes >> and then it's kind of how >> how compressed your messages output should be because it can use like really hardcode mode where >> you will eventually learn how to speak it properly. >> This sounds fun. >> So yeah that's a good tip for anyone who is spending a lot of tokens like Jonathan here. >> Interesting. Yeah, I'll try this out.

This uh it's it's it would probably save us money in the long run. >> Yeah, >> I would also love to hear once you play around with it the quality of outputs because from what I saw, people don't really say that it becomes dumber. It just kind of saves on tokens. But >> yeah, but we can try this. I can try this in a branch, the same fe the same uh feature and then we'll see.

We can explain, we can check later on like the caveman caveman branch versus uh this one. >> Yeah, could be interesting. >> Also, how long does it normally take for you? Because now it's going to because the script we chose is not the simplest one. You gave it a lot of different steps, UI, and so on.

So, I wonder >> it's going to take a few good minutes, right? >> Yeah. So at this point is it it has gone through parts of the task list uh creating the tab creating the basic UI creating uh 800 rows of like the Python scripts. >> Mhm. >> So now it's it's it began like diving into that code and like cleaning up things and stuff.

Um, so I mean usually I mean this could take um I mean now that we're using a more expensive model it it it will think uh more than if I just set this to auto and and or like some of the faster models. >> Mhm. >> But the output is going to be closer to final results though. >> Yeah, it will. So I mean I I don't expect this to work the on first click but um maybe like five prompts in this will this will work uh or if in five like maybe 10 it's it not it's not going to be like three weeks of working to get this working that >> Mhm.

>> Yeah. >> That's how that's confident I feel after working with this after >> also I noticed that you're going to go you go completely yolo. you just give it the full steps everything right away. >> In my work, I usually prefer to start with like MVP. So start small and then slowly introduce feature by feature so I can track the bugs and so on.

Uh have you tried kind of also going step by step yourself or you just always give it the full prompt and let it cook? I >> mean for this example you Yeah, I mean we gave it quite I mean we gave it the more like the harder route uh to do this. This is already a hard task. Um, but I mean if we were to to drill down this into parts, some could be like just creating a push button script that with like no icon, no nothing that just would clash categories like clash doors and walls or something stupid. >> Uh, or like walls and columns.

Uh and then you like iterate on that logging like see that it that that part works and then moving forward. >> That's what I mean. >> Yeah. So that I you you could drill down that task uh uh create like the uh like an MVP but for me I I usually um it's so good at creating boilerplate code for me at least. But it's it's um the I mean this for me this makes more sense in and then will iterate on the code and then eventually it will go to the phase where it clashes and uh creates the views and stuff.

So it um this just means that I get more boiler plate. But I mean this is all uh due to the fact that I I know I have rules that uh work uh I know I >> and examples it. I know I have we have read the plan and we see that it's kind of taking the correct approach like overall overall. Um yeah. So now we're uh we're at the point where this gets interesting.

>> Mhm. >> Uh we'll see we'll see how humbled I get after this. >> So I think it's finishing now. >> Yeah. So it's it's created a few files uh in a new panel for us.

Uh and it it suggest a way to test this. Um this is where my MTP thing gets >> uh be approved later on to also allow it to automatically like read all the test stuff. >> Mhm. Mhm. So now we'll go into like the next part of the uh where we debug the code and see that it worked or not.

>> The most important part. >> So now we see that we we did get the new panel. >> We did get the button. >> It's I mean it does have some some level of review. >> That's solid.

So this is also very similar to what I gave it earlier. So this is what I gave it earlier and let's look at that one. So you see what it already had in its context. >> Uh so it like use this one as a base for your UI. >> Yeah.

And it also it so it has the pattern already for how it should plan this out. >> So now we we do we can select like view scale for maybe this isn't doesn't uh really apply. view scale for a 3D view maybe uh you can select a view template here that's let's set one and then it will prefix the sheet or clash for the view and crop one view per group let's see about that and then we'll try something like uh floors and cols to begin I should have I should have added like coloring color uh the first group like green and next one red or thing. >> And so now it's created the view. So then opening this sheet and we'll see how this turns out.

This will be a lot of 3D use. So okay. So we're it at least it created the views but doesn't uh >> Mhm. >> really pans them out. >> I can find.

So, this created let's see if I go into this and then see what's it does only have columns and floors in this view but it >> and stairs. No, >> and stairs and like it has uh it included legs. So, that was kind of >> Okay, got it. I got it. Yeah, but this is view visibility probably issue.

So just uh so maybe we'll add this into um add this into the next part to always hide uh Revit links, >> but it I mean it it's it's not really far away. It's it's more like >> we get the results. we do get results and we can see where it's uh it's from one shot we get uh views with isolated categories. So it it would be the next part for me would be like uh having this in I mean uh sizing them to the same size maybe the viewports >> and having adding them into a group. Um, and then like maybe coloring these in different colors so the user can like quickly jump into a view and like drag around and say, "Oh, these are clashing." >> Mhm.

And here we got the clashes of floors and columns per level, right? Just to remind the task. >> Mhm. Mhm. >> So each of these views is a separate level where we can find clashes, right?

>> Yeah. Parking. You see clash columns from I mean so I mean you could imagine this still being quite useful for a oneshot prompt for like adding for like diagnosing clashes. >> Yeah, definitely. Again, we can make more views and stuff if we would want to, but >> Mhm.

No, pretty good. >> Uh so okay, so let's see if if uh no nothing seems broken. So that's kind of weird. What do we debug? But we can like add the next part could be like adding colors to elements or like group having having a better grid or >> so you can see what it takes us and also check how many tokens it used just for this run.

>> Should be somewhere usually. So 172,000 of tokens. >> Yeah, that's in the context window. So >> I also like stuff. >> Yeah.

Yeah. I I I don't actually know how see how we could see. We could see we could see the token usage. Uh we were at 2625. >> Mhm.

>> $3 up. >> Okay. Yeah. >> I mean, >> not bad. >> I would consider this uh this is still like a marginal success.

Uh but uh this is all due to uh if we get to the beginning if we would have started with like only this part it would still it would have to be figure out the clash detection and figure out the UI and figure out a lot of things. >> Yeah. Yeah. You gave it a lot of supplementary information which made it also more efficient which is I think should be the end goalie. >> Mhm.

because uh what I like to see is that you use a lot of rules and skills and stuff like that. And well, I'm I kind of resisted this AI change for a long time. Now I'm embracing it more. So I think I just need to follow what you showed like I like that you showed the file of clash detections that you take individual topics and make like this manuals probably still with AI but still it's very useful when you kind of give what you understand ask it to complete it and then you have like this working file it can reference. I think this is a big killer feature.

>> Mhm. This is what made or break it for for me like like cop because you you need to it needs to have some some uh examples to follow. Um and for me it it's uh I mean we started out creating >> uh some some smaller features and then one the more the the codebase grows the more patterns emerge that it can it can reuse. Mhm. Yeah.

You can also ask it like look at my extension make me like a skill for creating this kind of tools. Right. It will understand your patterns, your structures. Uh what do we use? Uh can you read what you're doing?

>> Yeah. Yeah. So then uh now that we know that the functional it works, we can start improving on it. So like in classic classic clash detections um part we color them differently. Um uh I could have referenced my colorizer as well and this but um uh and also make the views in the sheet the same size.

Uh now they're stacked. But then we'll it's we see that it's trying to >> fix some view size and if it doesn't have a like a uh it doesn't know how to like read views port sizes or set them or yeah it will probably look at some form like like searching Revit. I see it when it has no context. It I see it uh like searching Revit API forms a lot. >> Um does the dirty job too.

Yeah, we have we have add we haven't added a research step here as well but but one uh uh one pattern that I also all sometimes use is I plan like multiple steps like I from the first plan we we created I I uh we could have uh uh asked another model to review the plan or like uh thrown another model to Google searches and review the planet again. Uh >> Mhm. Mhm. >> This is all like locally reviewed uh that I've researched, but uh you could always like have it go into GitHub and search for other patterns as well. Uh and also do you often hit the limit with a context because normally AI have a context what it's aware all the information it kind of feeds itself.

when it hits the limit, uh, usually it kind of stops working or kind of breaks halfway through. At least that's was my experience. >> Uh, how do you deal with that? And do you often hit it? I know there's also one 1 million token model of OPOS.

I don't know if it's available in the cursor. >> Yeah, you can do there's a max setting here where we it gives more context, >> but do you often hit the ceiling? Does it break your workflow? >> Yeah, I mean, we're hitting the ceiling at the moment. So yeah, usually you hit you hit them you hit this >> u uh it usually starts with uh when I do if I know that this is a like a soup a very large task I would go u in max if I have uh now that I have the caveman I won't maybe I won't reach it but that's at um when I I usually have one like large context agent um and then uh for this colorizing part we I we wouldn't have needed to use to have this feature in this agent.

We could have start another one like this and then reference that old that chat cuz the chat itself isn't the entire context most of the time. >> So it's like compressed version of it. It just picks and chooses what it needs and then continues. And I could like pick a smaller model that if I have a small task uh let's say if I want to rename the views a bit differently or I don't want the views to clash or yeah something like that I could use this a smaller a restart an agent with some context of what it's working on >> and then fixing it uh separately or parallel >> but we reached the max token at uh already so it's at some point here it it summarized the chat context and this can be quite dangerous >> because >> because it loses information, right? >> Yeah, it will lose stuff.

Uh but uh yeah, we're we're we're doing it live, so we're already in the dangerous zone. >> So why not? >> Now, it's good to see that it didn't fail because sometimes just refuses to continue. It just stops midway, which I hate the most because the moment you restart, it decides, oh, probably since I didn't finish, I'm going to delete this hours of research. I'm like, "God damn it." >> Okay, so now we have a new version.

>> Yeah. >> Uh we can I mean we had uh we can just uh either now we have re I forgot to re remove the hide the links but yeah. >> Oh that's okay. We can limit features as well. >> Uh so now let's go for another uh let's say case work and let's see if the search work.

see that there are more selected there and where we can add say something more here. So now we have we add a bit more we group we skip group by level and let's see where it takes us. Let's skip a view template and see where that goes. Mhm. So now there's few fewer views but it should still group them differently.

>> Okay. So now we have we have them more apart from the last one. >> Mhm. >> But we still see >> so that one case work versus walls. >> Yeah.

I mean this could I mean you I would still use this if I worked in Revit. I mean >> no that's useful. >> This is still useful if you can see see it like this. I mean you you're only seeing Revit like I mean categories as a category but this is still useful like if you're working in Revit and you need to check some things now we see >> colors they just represent different categories >> just we could have we could have maybe we could have add an edit for others or something >> because at first I thought that red one is bad green one is good then I'm like no it's just categories it's just the red and green like thing when you see it like this >> you immediately assume one is wrong. >> Something versus walls.

Okay, we have only one. >> Uhhuh. >> And then >> wait, this is a link model. No, can you select it? >> Uh, no.

This was a group uh group. >> Oh, yeah. Yeah. Yeah. I read it wrong.

There was like something on Live work or I thought it's link. No, no, that's a solid tool for sure. So nowadays you pretty much sit there with cursor and just like with a whip tell it what to do have multiple of them like sub agents command the whole thing. >> Do you still code or do you write both? I mean what do you I I wouldn't I wouldn't consider this uh that I have coded anything but I I mean we still provided some value right so >> I sure once you understand code you can navigate this but I mean like actually opening like and typing yourself like step one why from from just some some parts that I really really care about that that has to be like secure I mean let's say if if it has to do with like user data something like that then I really need to see the code uh >> Mhm.

uh to see that we're not doing something really stupid. But Revit is already kind of contained. Uh I mean security means that it won't break your model. That's the what's what can break. But you can already restore and like just fix the code.

So uh >> I see we should have added like a better transaction register or something. But I mean it's uh that's I don't see myself uh coding a lot in the future because um this uh the mod the uh the current state of the models is uh the probably the the worst state they're at. So they will only improve. Uh >> but maybe in the future we will do uh we could use the the machine ourselves instead of paying >> $10,000 to to uh some old provider. Uh there are some crazy Apple machines coming out because they have this architecture where RAM and VRAMm they all fused into one and for 10K you can get 120 or 250 GB of VRAM.

You can run crazy models on that >> but it's not going to be probably Oppus level but I think it's going to be solid ones as well. Uh I have a question. Mhm. >> So for people who let's say people watching us they maybe know a little bit of coding or don't know coding at all and they now think that okay I want to get in pirate game and start creating my own tools. Do they still need to understand basics of Python and Revit API or like just start chatting with kind of blindly like for you you you still need uh like an idea to execute on and >> uh but I mean I wouldn't you what I think you need is like some basic fundamentals for programming but uh I mean you the basics are still useful like u u have having your way along that you know where the Revit API is located or having other basic like basic programming rules still apply for this workflow.

Yeah, like how to work with parameters, what is transaction, what is FilteredElementCollector, how to >> Yeah. So like uh just this morning I ended up ended up in learning like the persistent engine thing in the pyRevit. I haven't used that a lot. I mean >> u the fundamentals or underlying uh codes or like programming is still very very useful to know. Um, >> but do you need it to uh do you need it?

I don't think you need it, but it's still very useful once you get into the deeps uh of like debugging things. Um. >> Mhm. Mhm. >> I mean the the because the models will improve faster uh than my learning like my uh my if I look at if I only go to myself like I I can't learn in the speed that the models improve.

there's no way I can learn in that pace but I can still like practice good programming fundamentals. Uh >> so like uh but like knowing how you should create how you need to create a class in Python maybe do you don't need to learn that but you maybe you want you need like in private context maybe you need to know like how it's how a script uh actually appears in the toolbar but like uh the ar the like software architecture part is still very useful to know. So you'd say that people who want to get started with all this agenting and stuff they still it's best to understand basics of Python or computational logic all this >> and also the Ravit API what actually kind of powers all the Ravit software behind >> so you can speak better or >> I would still say so but I mean I yeah I would still say so yes you you it's still useful I mean it's still useful to know all of these things uh but uh just look at what we did today. Uh >> and we didn't touch any code. >> Maybe this is super inefficient and wrong.

Maybe it is. >> Can you Can you show the code by the way? Just scroll through. >> Yeah, I mean I'll share it on I'll just add an icon and you can see it in added the toolbar and >> Mhm. No, I mean like so it's during the podcast I can quickly show what's going on.

>> Would be helpful. >> I just wonder like the style of coding it used. So then we'll go into the re review mode when you see this is all the code that it added this phase. Um and in my previous runs this morning. So this clash view here this is the this green part.

This is what been added. So it already has some pattern to follow here and some imports and uh how it handles navigating to libraries and stuff. >> Then we get into we >> filter categories and then having defining functions to use to reuse. Yeah. Some kind of yeah code group functions.

Yeah. I mean you could >> okay we don't have to we don't have to explain everything can I just scroll through I just want to see the structure so pretty much made a lot of different functions that reference each other and then in the end we have these 10 lines it's pretty much tell us give us results and then like all the functions they start calling each other and this is all the patterns that we have in our codebase but >> yeah this is the example view. >> Can you preview ZAML in cursor? >> No. Uh but I mean I can just iterate so fast.

>> That would be great. I mean if you could >> for people who don't know XAML is like HTML but for this kind of UI forms like Windows native >> very similar syntax but yeah I hate that there is not a good uh viewers like Visual Studio is pretty much the only one all the other ones they have some issues. Uh what do you think about MCPS for Revit? You know there's like this new AI assistant that fails badly. There's also ability to create our own MCP servers.

So idea is that in the end we can just prompt with Ravit without tools. I'm very pessimistic about that. But what do you think? >> For me like MCPS are useful between services uh that are like not colloccated. That's my take on.

>> You mean like sharing the data between like different services or >> and this could be like like between desktop app as well that where they are kind of closed in the environments. So like it may kind of make sense for to have it at MCP inside Revit. Uh uh but I really I um but it's it's not quite like really token efficient and it um I for me when I develop at least I want a a freer environment than MCP >> uh provides because MCP is is also kind of >> yeah you have to create like what explicit tools that it needs to create that that it can use but uh I like to free dangerously. So for me I I would personally more in like Joyce a closer uh like API like a a closer thing than MCPS provides today um >> Mhm. to like really connect to the models uh for me as developer to be able to do things like uh >> within the models.

But for I mean for uh what I've seen the Autodesk Assistant does and like and what I saw in the preview of it, it didn't um it it meet my expectations when I tried it in the preview uh in the tech preview. Um yeah, back in what version it was in the preview. But um uh the uh like the Nanite Pro and others I've seen uh there's I have a project colleague who uses struck IQ or something they have a chat as well and that seems to works a lot better than the auto life assistant. So for me, I would personally more like see Autodesk providing like the MCP interface, not the chat assistant because I think the the industry will take care of the chat part, the deployment of that and like they should focus on the close I think the close uh integration. >> If they just give us the bridge, we can add the tools much simpler.

When I look at MCPS, I'm very torn because many people start a thing and it's like it's the magic button like we just write finish the project and it does the thing. I think it's good for tasks where like analytics like exploring like this kind of not changing the model but looking at the model and giving feedback because if you give enough tools to look at it maybe color it or something like this that could be really good but for like geometry and modeling it's so tricky to give it to users. I saw a really good example. It just shows you how prompting can go bad and it was a very simple example. Imagine like we have like a bunch of different doors and there is numbering and you just write something you know what uh renumber doors for 1 5 to 1.15 and logically you would think we need to remember all the doors right one after another but the looked at it and like oh I found the door which has already number one.1 so I'm going to change just this door to 1.15 so technically the prompt is correct it took the door 1.1 1 change it to 115 but logically everybody would assume that all doors have to be renamed in this kind of pattern.

>> So this is also the issue like you can give even the best MCP tools but I think the prompting also stays this kind of human uh what is it um human error can still stay there but now it's in prompting which can be tricky. I mean for me for me like the current um state of the autodesk assistant it feels like the earlier chat uh that uh agents did. it doesn't feel like very agentic in a way that it really thinks about what it's supposed to do and like but maybe that's maybe there's something I don't understand that makes it that they have to do it this way but u u >> I still I I for I mean geometry is tricky like that's also the hard part like when you're doing dynamo scripts as well uh like geometry is quick is um is hard to like really understand like if you Let's say if we had a MCP for fixing these clashes that we have we just created or like discovered having that it it takes quite a bit of coordination to um to fix these things smart because they all there's always so many rules that apply in a project that a a simple textbased chat prompt can't really fix. you it needs like visual >> context and it it's geometry is hard so and the data part is easier but it's also easy to like mess up >> of course >> but I mean these are things are hard but I think autoes can focus on like the API and like the close-knit part of the API to allow like things like to >> things to like rules and skills things that that kind of supplementary parts of their ecosystem to to evolve uh around and then third party actors can create these ID parts for >> Revit. Mhm.

>> So like firms can uh create their own rules and apply those in their firm. I think that makes a lot more sense than having a generalized autodesk assistant like this. No, I think that's a good input. It's like with API, they gave us API, we started making plugins and Revit wouldn't be where it is without all the third party plugins. I think same with AI, you have a very good point that instead of trying to make us perfect AI, which we will hate no matter what they do because we cannot control it, right?

And it's autodisk and >> everybody works differently, you can take the same project and 10 different offices going to build it in 10 different ways. There's no way it's going to be even close in how we kind of work. Well, it could be, but usually it's not. >> So, like it's a better suggestion would be like instead of approving or add an AI assistant, create like a maybe a keynoting system or share parameter system where you can embed data into the file, the project file with rules and skills and how we how we handle stuff, how we call, how we numbers, cluts, etc. >> to be added into the Revit family like Revit project.

So when a new agent starts whatever they start from they have something to like add into the context that for me that makes more sense for us to develop them. >> Yeah more like infrastructure so we can build on top >> that's because yeah these rules and skills it makes such a difference to AIS because once you give it like examples how to do not to do all these still takes a lot of work to make it properly and good but once you have it it's a day and night difference. All right, I think we're coming to an end. Usually I ask all my guests what uh um how they would recommend beginners to begin with programming, but he but out of this conversation it sounds like they shouldn't. >> Well, they should and they should take your course because I this that's where I started like my real development journey using AI.

I take I took your course and I went through it all and it's it's gives you a I'm I'm I'm giving you a shameless plug here but it's actually really good course. >> Thank you. I appreciate it. >> So yeah I would for new pyate developers that need that want to go this route like uh your course here gave me a really head start. >> Oh thank you.

Can you share like before and after like taking the course what's what was the noticeable difference? Yeah, I mean just just the like code examples to see like okay this is how I could you use this. This is how I can select elements. This is how we can filter elements create or like >> the uh like oh how do you say like approaches to architecture like code behind or oh this model view let's call it model view view model >> oh MVDM >> yeah like Yeah. Yeah.

These patterns are very useful to to know because you will eventually run run into these. >> Mhm. >> Uh if you're doing like the harder. >> Yeah. Uh if you would like to share any socials where people can find you, what what they can ask you and stuff.

Be my guest like give you links where they find you on LinkedIn and so on. >> Yeah. Yeah. Uh I'll I'll send you it to it, Erik. >> This was fun, Erik.

I'll I'll share the code. So it's if anyone wants to continue it. Yeah, sure. Be my guest. >> Yeah, just send me the message.

I'm going to drop whatever you want in description. The more you give like the more you put there. That's perfect. Okay. Uh thank you everybody for watching.

Appreciate it. It was very interesting topic. Very not controvers controvers controversial but something that definitely on minds of many of us. This AI thing is yeah, we definitely keep thinking about this. It's something on my mind all the time because I keep thinking like should I teach it, should I not?

And yeah, it seems like we're going more in AI. So, I think we should stop resisting it as much at least like I did and embrace it more. And yeah, Jonathan showed it really well what you can do. It's already like performing really well and you can probably get some ideas how you can use it in your work. Now, for the next podcast of Py, just let me know in the comments which guests I should invite.

And as usually, happy coding. Goodbye everybody.

GUEST Fully Agentic AI Development for pyRevit with Jonatan Jacobsson | pyRevitPodcast #7 TermsPrivacyImpressum