Try Onsa

Meeting Intelligence Automation with N8N: Build Powerful Sales Workflows Without Code

Open full audio transcript

00:00:08 - Bayram:
Hi, guys. We'll start in a couple of minutes. Let's just wait for others to join. I muted you so that we do not distract each other. So sorry about that, but feel free. Hi, Sergey. Feel free to use the the chat for questions, comments.

00:00:30 - Bayram:
And things like that. Okay, let me set this up. Okay. I think it's 11am 11am sharing.

00:01:04 - Bayram:
So I think we can kick this off. Welcome to the third seminar or webinar in this series of AI in Action webinars where I basically explain and show how AI can help increase sales and automate the most boring stuff that we have to deal with when doing sales. And today it's going to be a hands on meeting.

00:01:35 - Bayram:
I will just basically show you how to leverage one of the tools to set two workflows. One to basically prepare your account executive or yourself for a meeting, and second is to basically evaluate the results of the meeting and log them to your CRM. Let me then share my screen.

00:02:04 - Bayram:
And we will start. So you should see my N8N screen. And just for the context, N8N is basically a low code, no code tool to configure some workflows that you can run to automate some stuff in your company or in your personal processes. Probably you received a blast from me to sign up.

00:02:35 - Bayram:
For N8N. So I just want to make sure that and get a sense of whether you did that or not. So could you please just let me know in the chat if you signed up for N8N and you're ready to follow along as I show you how to configure those workflows? Cool. That's great. Awesome. Cool. Basically, we'll do two things. The first.

00:03:06 - Bayram:
First workflow is a meeting preparation workflow. Essentially what I'm trying to achieve is to I have some kind of event coming up in my Google Calendar. I want to get the details about that event, including the attendees of that event. Then I want to find the information online about those attendees and then ask AI in this case OpenAI. But basically.

00:03:38 - Bayram:
Any AI you want to use to help me prepare for the meeting. As soon as that is done, send me a message with all of the meeting details. Do not be afraid or confused that you don't understand what's here. And what are these icons for? I will explain that in a moment. The second workflow is. We have a recording of our meeting with a customer.

00:04:08 - Bayram:
And we want to transcribe that recording and basically ask AI to extract most important information from that recording transcript and then do two things. First, send me a summary of that meeting, or send my head of sales a summary of that meeting. But in addition to that, to attach and to log that call in my CRM in this case.

00:04:38 - Bayram:
HubSpot. So step by step I will show you and you will do the same how to configure these workflows. So let's start with Nadin. If you signed up, then you will see a big orange button. I think it's orange to create a workflow. So basically you will see something like this, but maybe without the workflows here. And you will see a create workflow.

00:05:09 - Bayram:
So please click on that one and we'll take it from there on each step so that I have some feedback whether you are following along or not. Just let me know if you're done with that step so I can understand whether we're on the same page there. Essentially the starting point for N8N is to configure a workflow that basically we want to run, and every workflow is typically.

00:05:42 - Bayram:
Triggered or started with some event, some external event that we want to leverage and we want to trigger the whole workflow from. In our case, for the first workflow, we want to be triggered by an event in our Google Calendar. Every time a Google Calendar event is created, we want to extract the attendees from that Google Calendar event.

00:06:13 - Bayram:
And we want to run the search, prepare a memo and things like that. That's why the first step we click on + here and we would search for Google Calendar and click on that one and you will see five standard triggers that basically like pre configured for Google Calendar Calendar. And in our case it's basically we want to execute this workflow on event created.

00:06:45 - Bayram:
So when event is created. That's why I will pick this one. As soon as I pick this one, you will see. Basically you will have to do two things. Basically, the first thing is you need to connect your Google Calendar account. And in my case, it's already connected. But I'll just show you the first couple of steps so that you have an idea. So basically you will not see the Google Calendar account here, you will see.

00:07:14 - Bayram:
See just the Create new Credential option. You click on that one, you will see this form and you will notice that there's like a standard familiar sign in with Google button that you can click and that button will basically open. You see my browser blocked the pop up. That's why probably you will have the same. So make sure that you.

00:07:45 - Bayram:
You in the upper right corner of your search bar. Click on it and there you will see basically the list of Google accounts that you have. And in my case I will just connect. I have already done that, but basically I can choose one of the accounts here and then I will need to confirm. In your case you will see a bunch of permissions. Basically the two permissions that you will have to grant is to create events and to.

00:08:17 - Bayram:
Read calendars, something like that. After that you will see that your account connected. And this means that now your Google calendar is connected to N8N, which means that you can listen to the new events that you create there or other people create there, and use that information to trigger and process the workflow. Does it make sense so far? Please let me know in the chat if you.

00:08:47 - Bayram:
We're able to connect the account and basically set up this trigger. So every time there's this, Sorry, let me choose the first one. So every time that we set things up, we want to test them. So to finalize setting this trigger up, after we connected our Google Calendar, we need to specify which calendar.

00:09:18 - Bayram:
To search or to process events from. You see here it says calendar. And basically it offers me two calendars available in my Google Calendar. The holidays in US and my calendar. I click that one. You should pick the one that you have again. We want to trigger this on event created. That's why we're not changing anything here.

00:09:49 - Bayram:
As soon as you are done, you will notice that this orange button in the upper right corner which says Fetch Test Event is enabled, which means that you have correctly set everything up. Now you can click on this and what N8N will do is that it will actually fetch one of the events in your calendar. In this case, you can see that it.

00:10:19 - Bayram:
Basically fetched an NAN event from my calendar and we see that I'm the organizer and I have the attendees. My other basically email my gmail.com just to verify here's my calendar, here's this event that was triggered. And indeed, I see myself as an organizer and my second email account as.

00:10:49 - Bayram:
Attendee. We will need this attendee information to basically then perform a Google search and find the information about me and prepare a memo about me as an attendee. So do let me know if you were able to fetch a test event and if you actually see some some event information to the right of this trigger. Cool. So we're done. I mean, we did the.

00:11:21 - Bayram:
First step we now will be like by default, every minute, N8N will try to look for new events created, fetch those events and allow you to trigger workflow on them. So the next step is to basically, we want to perform a web search.

00:11:51 - Bayram:
Here. So we, we want to get a detailed information about this event. Because, because sometimes it may be much more, say, than an event. We want to get some description information, et cetera. So we will. Oh, sorry, Google Calendar. We will basically trigger an action that's called get an event and basically.

00:12:21 - Bayram:
We want to download complete information about the event that we have. Again, sometimes the first trigger will be enough, but I want to show you that for some additional workflows that you may create. When I create get an event action for Google Calendar, you will notice here that I have the get operation and it says.

00:12:51 - Bayram:
Select the calendar, which makes sense. But to get an event, we need an Event id. Event ID is something that we got on the previous step when Google Calendar Trigger was executed. You will see to the left that as an input to this step of the workflow, there is an id. You just drag and drop this ID into the event id. This is how you map.

00:13:22 - Bayram:
Basically that, hey, to get an event, use the ID that is available in this input and you don't have to pay much attention. You don't want to know programming, you just do a drag and drop and this way you have an event id. It actually shows you here as a result, just so you could test and make sure that this is the case. After you've done that, you can see.

00:13:53 - Bayram:
Execute step. And now you see a complete information about this event. You see the start and dates, attendees. In some way it's similar to what we had here. But again, in some cases you will need that additional step. That's why I want to show you because sometimes you may have an idea of the event from some other source, but basically here we have and essentially.

00:14:23 - Bayram:
We're good with the second step. So the workflow is triggered when Google Calendar event is created. We get the details of the calendar. Now we want to make a search. So to perform a search, we will use one of the services that we actually use in production. But please note that I'm not endorsing in any way or connected related in any way.

00:14:54 - Bayram:
To this event, to the service. I just like the way it works. That's why I want to show it. It's called Firecrawl. What Firecrow does is basically the tagline is they turn websites into elaborated data. But what we actually need is it allows us to perform a Google search and get all of the search results in a special form that we will use then for.00:15:24 - Bayram:
To feed in ChatGPT model and help them have the context to prepare us for the meeting. So that's why the next step is firecrawl. So we need to find the firecrawl and there are a bunch of actions, and the one we're going to use is the search and optionally scrape search results action. So you pick that action and what you see here is that the first thing you need to create.00:15:56 - Bayram:
You need to specify the credentials to use the firecrawl. You will be able to sign up for firecrawl after the meeting. Just don't spend time at the moment. But they give 500 credits for free, so that should be enough to test and then you can decide whether you want to use this or some other service in the credentials here. I already have those, but you will need to create new credential.00:16:26 - Bayram:
And you will need a key, an API key, which I'm gonna share in the chat right now. So again, this. Hold on. This API key you will need to copy from the Zoom chat and enter, like, insert it into the API.00:16:58 - Bayram:
API key field. This is a free API key, so there are just 500 credits right now. So please just use it for this session and then create your own and use it for your own needs. Okay, so you will need to specify the credentials, but again, I have those set up so that's good. So after we configured the.00:17:28 - Bayram:
The credentials we need to execute the query, and what I'm gonna. So essentially, it's the same query that we would type into a Google bar, a search bar, but we need some kind of input from the previous step. Right? We want to search for all, all information available for a given person. So first of all, we need to find where this.00:17:58 - Bayram:
Person is. And if we look through the event information, we see that in the attendees one, we see that there's an attendee called with an email, bayram.anakov Gmail.com, which is my second email. And this is not an organizer, this is actually an attendee. So I want to basically instruct Firecrawl to find all information about a.00:18:28 - Bayram:
Person with email. And again, I drag and drop here and you will see that it basically shows up like this. So we instruct. We're instructing the firecrawl to find all information about the person but email. And the email will be taken from the output of the previous step, which is the input of this step, which is the attendees. If you don't have the attendees,00:19:00 - Bayram:
In the list, then add one right now and refetch the event. You can, for instance, invite me like this my gmail.com event and this should do the trick. But in real circumstances, if you don't have an attendees, you don't need a memo for an attendees about the attendees. So we're good there. So in any case, as soon as you have this, you will.00:19:31 - Bayram:
Limit the number of results to 5 just to reduce the amount of credits we spent, because again, we just have 500 for this one. And click on Execute Step. What you will see, but you will see here, is that some of the search results actually are about me. So, for instance, this search result.00:20:01 - Bayram:
It says that I'm based in Seattle, I'm a founder of AI and things like that. Definitely there is an information here that we could then feed to the OpenAI or to the ChatGPT or what have you and ask them to prepare a memo, let me know if you successfully executed the next step and you actually see.00:20:31 - Bayram:
The output here, as in the form of search results. Well, actually, for just for demo purposes, I will do the 10 search results. We should see it here. Okay, cool. So I see two of you already. Let's give like a minute or two for others to. If you have any issues or any comments.00:21:03 - Bayram:
Do. Let me know basically if I see that there is something stopping most of you, I will address this right now. If not, then I will just refer you to documentation after all. Or we can address this in the Q and A session. Okay, so basically now we have these search results. They are ready to be fed to ChatGPT and this way ChatGPT can prepare.00:21:35 - Bayram:
A memo about this, about the attendees. That's exactly what we're going to do. So for this, we want to. The next action will be obviously, OpenAI. And with OpenAI, you want to pick an action called message, a model. Basically, it's a way to send some kind of message to ChatGPT and get a response. Again, you will need an OpenAI.00:22:05 - Bayram:
Key. For that, I will share a test key which will be available just during the session. If you want to create your own, then you will have to go to platform OpenAI.com and create a key there. But essentially, if you open that, you will need to create a new credential. Let me share the key with you.00:22:38 - Bayram:
This is again limited key. So limited by budget in this case. So do not use it in production. Here you go. So this is the OpenAI API key that you want to enter into this field here the credentials and you see here API key.00:23:06 - Bayram:
So you want to just insert it here? I have already done that, so I'm good to go. So next we want to. We need to specify which model we're going to use. So for this one, let's use GPT for that point one, and the prompt will be Prepare a meeting memo.00:23:37 - Bayram:
Given the search results for meeting attendee. So essentially I'm instructing it to prepare a meeting memo and now I need to somehow connect those search results that we had on the previous step to feed that information into OpenAI model and get the respons.00:24:08 - Bayram:
One. So we notice that all of the search results are actually in this list. You see that all of them are in the data list. So maybe it makes sense then to drag and drop exactly this field here. So, and we can see that it actually connects. But you will notice that it says object, object, object, object, which.00:24:38 - Bayram:
Is definitely not what we want. We want to supply some kind of text, text that is inside this here. So to achieve this, you will just, well, you'll need a little bit of programming. You will need to basically type dot. And when you type dot, you will see a bunch of methods here. And one of the methods will be 2 JSON string.00:25:10 - Bayram:
Basically what this meta does, it transforms this list of source search results into a string or into a text. If it's a text, then this is exactly what we can feed into the model. As soon as you do this to JSON string, you will notice that result. Actually now instead of object object object it actually shows.00:25:40 - Bayram:
A bunch of results, which is exactly what we wanna feed. Feed the text we want to feed into the LLM. So as soon as we're done with that, actually we have prompt configured, we have the credentials now we just wanna execute this step. And it'll take some time obviously, because model needs to process. But what you will notice here,00:26:11 - Bayram:
Here is that this is actually something like that. So there's a meeting memo, meeting attendees from someone, subject meeting preparation by Rama Nakov, attendee overview, and then that current role founder and CEO at Onsa AI and things like that. Right. So this is exactly what we want to do. And here we basically achieved and successfully performed the step of.00:26:41 - Bayram:
Feeding the search results into the model and asking the model to prepare a meeting memo. Do let me know if you were able to achieve this. Awesome. Okay.00:27:11 - Bayram:
Give a minute or two to others, and then we'll finalize this workflow. Okay? By the way, Igor, that's a good point. You can actually specify the format since we will be sending this by email.00:27:42 - Bayram:
I forgot about that. Thanks. Let's actually prompt the model to respond in HTML format. Because HTML is the format that we will use to send email in, let's add the response in HTML here. Let's execute the step again. This way you can get the exact format that you can then use to send a message.00:28:11 - Bayram:
Okay, so we provided these instructions. We now see an HTML here. This is great. Now we just need to finalize and perform. The last but not least step is to actually send that email to us. So we want to use the Gmail connector. Send message. You will have to connect your Gmail account again. I did.00:28:42 - Bayram:
That. So you just click create new credential, you click on sign in with Google, you connect your Gmail and you will see the Gmail account here. And then we just need to specify who to send this email to. So I can either hard code like myself here, write my email, or remember we actually had.00:29:12 - Bayram:
Organizers information in on the previous steps when we fetch the meeting details. So why don't we just reuse that information? So to the left here you will see all of the inputs on all of the previous steps of the workflow. So you need to find the get an event get an event step and.00:29:42 - Bayram:
It's always the case that the organizer's email is in the attendees zero. So it's the first in programming, the. We count from zero. So it's the 0th element. It's the first element of the. Of this list of attendees. So what you can do is you can basically drag and drop here, or you can use the creator, basically, if we want.00:30:12 - Bayram:
Or organizer. So organizer is exactly what we what we need. So instead of relying on the attendees list, let's just use the organizer here. So we see that the message will be sent to the organizer, which is in this case, my onset AI. The subject could be meeting memo, for instance.00:30:42 - Bayram:
And then you see that email type is HTML. That's why we asked the instructed the model to prepare response in HTML format. So we just drag and drop this here and as soon as we're done, we can click, click, execute step. Okay, I need to reconnect my Gmail. Sorry. Let me do it.00:31:13 - Bayram:
Again. Okay. Okay. Gmail account two Execute step. So you see, it successfully sent a message. When it's sent, you will notice that there's a label sent in some id.00:31:42 - Bayram:
But let's see if I get this. Yep. So you can see a nicely formatted meeting memo, which is basically a response from the model. So that's basically, if you don't like this, automatically appended. This email was sent automatically with Nan, then you just.00:32:13 - Bayram:
Here in the properties, you will see a property called append nan attribution and you just disable that. They just do that to promote virally promote the product. So I did that, executed the step again, and now I should have the same email, but without the, you see, no NADN stuff here. So that's basically it. That's the.00:32:42 - Bayram:
The first workflow that we configured and do let me know if you execute the step and if you have an email in your inbox. So I'll just repeat the key steps we.00:33:13 - Bayram:
Configured the Google Calendar trigger on Create Event. We then got event details. We searched Firecrawl for information about the attendee. We asked OpenAI Model to prepare a memo and then we sent the message. Done. But could you repeat step in that? Yes, of course. So, Sergey, here's the step about the message model. Essentially in the model, first of all, we need to provide the credentials.00:33:44 - Bayram:
For OpenAI. I've shared the key here, so you should provide this. Okay, the prompt. So in the prompt you basically do the same thing you do in the ChatGPT. You provide an instruction to prepare a meeting memo given the search results. And then we need to map the search results from the previous step. Those search results are in the data elements.00:34:13 - Bayram:
Element. That's why we let me remove this. That's why we just drag and drop it here. But the problem is that by default, all of the objects are represented as objects, and LLM does not understand objects. LLMs understand text. That's why we need to transform this list of sources into a text, into a string.00:34:45 - Bayram:
You enter dot after the data and you will see a bunch of methods and the one that we need is called to JSON string. As soon as I do that, you will notice that now the result is actually rendered correctly. Actually, the search results are here. Victor, why don't we ask GPT? Yes, absolutely. Victor, some models.00:35:17 - Bayram:
I assume you imply the web search functionality of the model. The reason I don't want to use the standard capabilities of some models because some models may lack those capabilities. It could be the case that, for instance, you used, say, Kimik 2, the recently open source model.00:35:44 - Bayram:
To execute the step. So that model does not support web search. Or you may assume that, well, maybe there's some information available in the model because it was trained on intranet, and that basically that information is there. Yes, that's possible also. But sometimes for some attendees, it will either provide completely incorrect information or provide no information at all.00:36:15 - Bayram:
And last thing, just a minor actually. For instance, in the case of OpenAI, if we use the web search tool available in the model, it's way more expensive than using Firecrawl or similar services, for instance. Just so you know, for instance, NN supports another search node, which is a pretty good one and relatively.00:36:46 - Bayram:
Cheap is SERP API. So if you want to use this one, you can just use it and again, sign up for the service and input the credentials and things like that. Awesome. That's great. Probably in 30 minutes or so, we configured the whole workflow and now basically here we did that.00:37:15 - Bayram:
Like manually, but we want this to work regularly, automatically, always not require us to click the Execute workflow or things like that. In this case, you can deploy that workflow on NAN Cloud and there are different other deployment options, but I'll just show you this one again, this is a premium service.00:37:45 - Bayram:
So you're on trial now. You can try that, but it requires you to pay afterwards. But then there's an open source version of N8N and you can actually deploy on your service. But that would require some technical assistance. In the upper right corner you will see here in Inactive toggle button. So if you click Activate Workflow, you will actually activate the workflow. And as you can see here.00:38:15 - Bayram:
Now my workflow will regularly check Google Calendar in actually every minute and execute all of those steps that we had configured there. Again, upper right corner. It will be inactive by default when you click and now if I create a new event in my calendar in about a minute, it will trigger the whole workflow and execute the.00:38:46 - Bayram:
The the steps. So let me just do that. I will create a new event. Event two. I will add a guest. Let me do the my other email and let me save this. So in about a minute,00:39:17 - Bayram:
Since you recall that when we configured the Google Calendar, we poll for new events every minute. So in about a minute it should actually get that N8N event two and execute the whole workflow for me. We can proceed with the second workflow and then at the end of the session, I will just switch back and show you that this actually happened. Okay. Does it make sense so far?00:39:49 - Bayram:
Because before we proceed to the workflow, too, which will basically be another variation of the workflow, I want to make sure that you understand what NAN is about. How it's done and how it works. How to make it work for yourself or your company on a regular basis. This is the activate button, obviously. Here you will see all of the executions performed.00:40:18 - Bayram:
And if some execution was correctly performed, then we should see the logs. So in this case, about 25 seconds ago, this workflow was executed. And let's actually take a look. So we see the recently created NAN Event 2, which is basically I created after we activated the workflow, and we can see that the message was actually sent.00:40:48 - Bayram:
And I should have it in my email box. Yep, there it is. Much more information because I specified my other email which was probably provided more information about me, and that made the search results much better. Let's move on then to the workflow. 2. I would like to remind you that.00:41:18 - Bayram:
What we want to achieve here is we have a recording of our meeting, and we want to transcribe that audio recording. We want to summarize and extract information from that meeting and then do two things. Send a message and attach this call log, this call to HubSpot CRM. Okay, so for the let's start a new workflow here.00:41:50 - Bayram:
So for this to trigger this event, I will skip the hard step of integrating this with Zoom or with Google Meet and etc. I just don't want you to spend too much time today on this, but I will show a workaround but which makes actually sense if you use multiple services and you just want to have a simple.00:42:18 - Bayram:
Simple form where you could specify, you could, you know, specify the file, the audio file of the call recording and then execute the whole workflow. So as the first step, instead of picking some kind of trigger, we will actually pick the on form submission. So probably. That was fast. Sorry. Let's do that again. At first step here, you will see a bunch of what triggers this workflow and you will see.00:42:49 - Bayram:
An option on form submission. So what this is is N again, allows you to create a web form similar to, say, Google Forms. And Dennis. Yeah, it's. Vladimir is correct. It's a fire crawl issue, of course. So essentially, what you want to, you, what you want to do is, for instance, you may want to.00:43:19 - Bayram:
Extract the name of the person from email. Or you can use. There are services available that lets you convert email to say email, email to say detailed information about the person. You can find those services online. I can suggest one of them that we use, but feel free to use any you like. So basically this is.00:43:50 - Bayram:
The service that lets us to perform search by email. Essentially, an email comes in and LinkedIn, you see, email comes in and complete information about the person comes out. That's basically one of the services that you could use. This is a fire crawl issue. If you feel it's.00:44:20 - Bayram:
Issue of nan. Just click on every step of the executed workflow. Remember, in the executions we have all of the executions and we can actually click on them and see what happened on every step of the workflow. Okay, so let's get back to the second workflow. We will start with a form. So we want to create a form similar to Google Forms where.00:44:50 - Bayram:
Anyone could provide an audio file and say, an email of the person or persons that this meeting was with so that later when we look for contacts in the CRM, we could use that email to find the appropriate contact in the HubSpot and attach that call recording to that.00:45:21 - Bayram:
Person in the CRM. So that's why we will create that form. We need to give some title, let's say meeting, recording form. We will add just two elements. The first one will be the contact email and the. The type will be email. And the second element will be a file because we, we need the. The requ.00:45:51 - Bayram:
Recording file, right? We need to a file to basically process the the call recording. I will disable the multiple files and I will not specify anything here. But you can specify basically that it should be an MP4, for instance file. Basically any or dot wave file, you can specify it here.00:46:21 - Bayram:
But I'll just leave it empty. So seems that this should be enough. And so we should have a form called meeting recording form with just two elements, the email of the contact and the recording. Basically this is the email of an attendee. And you probably guessed that you can actually connect that thing from the trigger Google Calendar from the previous workflow. But I want to show it.00:46:51 - Bayram:
Independently because you may need, you know, this kind of workflow independently. So that's it. When you click on Execute Step, you will notice that what N8N will do, it will automatically show you that form. And here's that form here. I will just say since I will be connecting this to my test HubSpot account, I have contact there.00:47:22 - Bayram:
That's called Baram that's identified by this email and I want to provide a recording file, so I prepared just a clip from a recording of the previous webinar actually. So I will just choose that file here and I click submit. Ok, sorry.00:47:52 - Bayram:
Where's first? Yes. Okay, so we have so I click submit it. It will take time to upload the file, so we need to wait a.00:48:30 - Bayram:
Actually, I've given a smaller file. Okay, I'll do that next time. Let's just wait. Or something went wrong. Let's see. Okay, let me just try again. Stop listening. Start listening. Let me give him a smaller fil.00:48:53 - Bayram:
File for now. Okay, let's. Let's use this small file.00:49:25 - Bayram:
Okay. Something is obviously wrong. Let's. Let's do it this way. Okay, let's see here. Attendee. Email. Email. We're good here. Okay, step.00:50:00 - Bayram:
More time. If not, I will just try, okay?00:50:24 - Bayram:
It's good. So as soon as we have that, we will notice that now we have an output in the form of file. We will use that file later to basically ask OpenAI to transcribe this audio into text and then use that text to summarize the results of the meeting. Okay, so we're good here. Let's move on.00:50:54 - Bayram:
Let me know if you succeeded with this step. Awesome. The next step. We have the file, but we need to transcribe it. OpenAI provides way to do that. If we look for OpenAI, there is here an.00:51:24 - Bayram:
Action called transcribe a recording and this action here actually needs as an input. We still can use the credentials I shared before, but here it just needs the field name of where file is stored. We see that the file is stored in the recording file. That's why I specified here and I can click the execute.00:51:54 - Bayram:
Step, and you will see that it actually transcribed. This is a clip from one of the podcasts I created automatically, so that's why it's just seven seconds. But we actually see that it actually transcribed this audio file. And as an output from this step, when I have a text, let me know if you succeeded with this step.00:52:29 - Bayram:
So again and we pick an action from OpenAI node called Transcribe recording. We specify in the input data field name the name of the file and we can see it to the left as an input because it was provided on form submission and we click Execute Step cannot read pro okay.00:52:55 - Bayram:
Victor, make sure or share a screenshot, but basically make sure that you see an input in your file. Input here. And make sure that the name of the file is the one that you provided in the input data field name that they are identical because it seems like it can't read the file.00:53:25 - Bayram:
And probably that's why it can send the file to OpenAI and can transcribe it. You can share a screenshot in the Zoom chat, and I can help with that. Yeah. Okay.00:53:55 - Bayram:
File, so it seems like everything is correct. Okay. I think that the problem is the. Maybe the format. Let's. Let's see. Let's see. Try. Just. Just.00:54:25 - Bayram:
Just to save some time. Try the MP3 file if possible, but. So I think it may be the problem with the file. But let's check audio, no, Language should not be a problem, no.00:54:56 - Bayram:
No, it says it supports ogg, so. That's interesting. See? Okay.00:55:26 - Bayram:
The. Okay, Igor. That's great, Victor. Try again. If it doesn't work, I have an idea that maybe it's because the name of the file is called file, and maybe there's some kind of conflict. What I would do is I would go back to the previous step here.00:56:10 - Bayram:
And rename the field name to not to file, but enter something like Recording file, for instance. Execute the step again and then change the mapping.00:56:27 - Bayram:
To the field name, which should not be just file. So I have an idea that probably it's because it's file the name of the input field, and there's some conflict, because file is something that is like a reserved name, and maybe there's some conflicts there. So try renaming the field, here, for instance, enter, recording file, or whatever you want.00:56:57 - Bayram:
And then basically remap and run again and let us know. What about others? Were you able? Doesn't help. Then I think try just, just for this case, try maybe an MP3 file. Other than that, I don't have, like, an immediate idea of what's causing this, but what I would do is I would basically.00:57:27 - Bayram:
Basically ask ChatGPT to help me with that. So I'm having issues with NAN workflow where first node is form with two file with two fields and second node which gives the error has is OpenAI transcribe recording node. What.00:57:58 - Bayram:
Would be the issue and how to solve it. Let's see. Okay, Sergey. Done. That's great. Always like if you stuck with something. We always we, all of us, we sometimes.00:58:27 - Bayram:
Stuck with something. Do you use the ChatGPT or NAD has their own assistant, actually. And you can use that assistant as well, essentially. It may help in some cases. Oops, I forgot to save. Okay. Anyway, let's move on. Victor, I will.00:58:59 - Bayram:
Okay, file Cool. Then maybe the problem is in the file format. Anyway, let's move on. The next step for us is actually I'll just switch to my pre configured workflow. The next step is to message model. You already know this node how to configure it. It's pretty straightforward. You pick the model. But here you basically.00:59:27 - Bayram:
So. No, let me actually do that because I think. Okay, so transcribe a recording. Okay. I just want to do that.00:59:59 - Bayram:
Okay. There you go. Okay. Okay, we have it. So the next step is to call a model to summarize this. Meaning. Obviously, it's just second seven seconds, but I think you get the idea. We'll use the GPT 4.1.01:00:29 - Bayram:
Please summarize the meaning given the transcript. And we just need to drag and drop the text part of the transcriber recording step, which actually contains text. So we see. Of course, it's a very short meeting, but let's still implement execute the step.01:00:59 - Bayram:
And we see, yes, this is the transcript, but the problem is that it inputted some additional information, like certainly, blah, blah, blah. I don't like that. So just respond with the summary, nothing else.01:01:28 - Bayram:
Michael and another participant discussed the prosecut profile for Alexander Wong, expressing interest in nothing that is fascinating and noting that it is fascinating. Cool. We know this step. It was in the previous workflow. Nothing hard here. Again, nothing hard in creating a send message. So I will skip that in the interest of time. But let me show you how actually.01:01:59 - Bayram:
Actually to connect this to your HubSpot. So we want to log a call. In HubSpot, there's a concept of if you don't know, it's similar to all of the different CRMs out there. So essentially, there are contacts and let me find the contact that we will be working with.01:02:31 - Bayram:
Gmail.com. here's my contact. And for a given contact, you can log some activity. You see some of the tests I did before this webinar, so we'll do the same. So we will log a call with a meeting summary of the call to this contact here. To achieve this, we basically need two steps. First,01:02:59 - Bayram:
We need to find this contact to log the call for, right? So we look for the HubSpot node and we look for search contact because basically we first need to find the contact or we can use a get a contact, but many times you want to search because you probably have email or name or something else. So I suggest.01:03:29 - Bayram:
Suggest you just use search contact and here basically what you want to do is you want to specify an email of the person to search, like of the contact we were searching for. And in HubSpot you obviously need to connect your HubSpot account. Again, I will skip that step, but it's pretty straightforward. You just click connect my account and you will see.01:04:01 - Bayram:
This kind of pop up form and you need to find, since I'm part of different accounts, you just pick the one that you want to work with and that's it. Okay, so after we connect HubSpot here, we need to specify the search filter. Since we are searching by email. We want to search by email. Every contact has a.01:04:31 - Bayram:
Bunch of different properties and one of them is email. Actually, it's one of the most important ones in Hubsplot. So here we need to specify a value. Actually, I should have on the form submission created an email of the person and in fact I have it. You see in the input on form submission,01:05:01 - Bayram:
Remember I created a field called attendee email so I just drag and drop it here. So what this node will do, it will search my HubSpot for all contacts where the email property equal to what was entered on form submission. So I expect that my contact will be found and indeed it is. And.01:05:32 - Bayram:
I see the id, the properties. Some basic information here. I'm not sure if you have HubSpot or if you use Salesforce, but do be informed that Salesforce is also supported. So there's a node for Salesforce. So if you use Salesforce, feel free to replace this note with Salesforce instead of HubSpot. So we need to find the contact. We did that and.01:06:02 - Bayram:
Last but not least, we need to call to log a call. So in the actions here, we need to find an engagement, which is basically a concept in the HubSpot CRM, which is an engagement with a given object, in our case of the content. So we want to create an engagement, same HubSpot account, and then we need to.01:06:33 - Bayram:
Specify what type of engagement was a call and specify some additional information. So the first is the. Sorry. Yes. So we need to specify the status. Since this is a recording, probably this call.01:07:03 - Bayram:
Already completed. Right. So the status of this engagement of type call will be completed. And we want to. In the body, we want to just put the summary that we had from the message model node. Right. So again, drag and drop body. That's it. If we want, we can provide some additional information like URL or something else.01:07:34 - Bayram:
But that should be enough. But that's not all. At this point, we just created an engagement. We need to connect that engagement to that contact that we found on the search contacts step. So that's why in the engagement properties, you need to pick contact id, and we have that ID here.01:08:05 - Bayram:
Right. So again, we're creating an engagement to. For a. For a contact ID that we had on the search. Contacts with two fields body and completed. Okay, there is a failure. Let's see.01:08:36 - Bayram:
Oh, no, it actually it's status completed, so. Oh, good. We should see it here. Now let's refresh. Yep. You see, that is the exact engagement the locked call with this contact here with that message body that we had and with the status completed. So that's basically it. We.01:09:04 - Bayram:
Essentially what we did here, we had a form where you specify the file and the contact email, attendee email, and then we transform, extract, summarize the meeting and we automatically attach that to the HubSpot. And I bet that saves you a lot of time in this process. So let me know. I assume that not everyone has the HubSpot account ready and etc, but do.01:09:35 - Bayram:
Let me know if you're following along and if you have any questions or comments. Let's, by the way, see if Chat GPT came up with something for the issue. Victor had minor data. Yeah, it can't find.01:10:09 - Bayram:
Okay, let's try that. Victor, if you're still here. So essentially, share the screenshot of your. It says that the forum can be an issue. I'll just. Okay, cool. Sounds good then.01:10:37 - Bayram:
That's all I had. Any questions, comments? Happy to address them. Okay, I see here does any land supporting kind of evaluation if result is not good enough? Frankly, I don't.01:11:06 - Bayram:
No, but what I would do is basically set up an additional step, which is an evaluation step, and essentially evaluate the results of the workflow and run them through some kind of criteria with LLM and log the results and then basically review that. But I don't know. Frankly, I'm not like a very.01:11:36 - Bayram:
Like advanced or power user of nan because most of the stuff I can do in code, but for people like without programming skills, it's a challenge. That's why I wanted to show you that in fact, you as a head of sales or go to market leader or just an account executive, can automate some parts of your routine and free up time. Okay. Yeah. John, actually.01:12:06 - Bayram:
Actually is a power user. That's right, John. So if you want to address this question, feel free to. I'll give you. I can give you. Actually, let me unmute now. I think I can let everyone unmute themselves. So now, John, if you have anything to add, feel free.01:12:31 - johnpeslar:
So I've been. Can you guys hear me?01:12:33 - Bayram:
Yep.01:12:35 - johnpeslar:
I've been loosely paying attention. So can we expl.01:12:37 - johnpeslar:
Explain what the issue is again.01:12:38 - Bayram:
Okay, so the question is about NADN support of any kind of evaluations. Look, look into chat. The question from Vladimir.01:12:50 - johnpeslar:
Or any kind of evaluations. If the result is not good enough, will it execute the workflow again? Yeah, you can run basically a second workflow with an agent that just evaluates it. That way, you give it a criterion, like a score of 1 to 5, and the agent outputs a score based on a criterion that you give it. So. Yeah, absolutely.01:13:07 - Bayram:
Yep.01:13:08 - Bayram:
Sounds good. Thanks, John. Any other questions? Actually, John has a bunch of ready to go templates and workflows. He shared some of them with me. So do you find him? John, you want to share your LinkedIn? Do you find him on LinkedIn or he.01:13:32 - johnpeslar:
My LinkedIn is overwhelmed right now, so you message me on LinkedIn. I'm not going to reply. My bot, it will reply to you.01:13:38 - johnpeslar:
My bot LinkedIn automations are officially banned. I neither condone this or deny that I'm using it, but my newsletter is there. So if you go to my newsletter, you can pick out whatever workflow you want and it's there. The templates are all there.01:13:53 - Bayram:
Awesome. Thank you John. And just FYI, if NADN provides a bunch of paid and free workflow automation templates that you can basically copy and reuse for.01:14:08 - Bayram:
For your own purposes, so feel free. For instance, if you have a specific use case not covered like by this seminar, just search for that workflow. And the second thing is, do you use chatgpt or Cloth or what have you to help you with any kind of workflow? So let me show you here. As you can see, yes, I just asked ChatGPT to build the.01:14:40 - Bayram:
Anything and workflow for two scenarios that we covered today. And as you can see, it actually provides step by step instructions. I would just let you know that sometimes it makes up things, makes up some node triggers that are not there and things like that. Maybe sometimes it will be wrong, but you will get a sense of the workflow. And again, you can search, you can take John's or some other users.01:15:11 - Bayram:
Ready to go templates and adopt them for your purposes. Okay,01:15:16 - johnpeslar:
yeah. Just wanted to add that what Byron's saying is, yeah, chatgpt and all the AI is really good for helping you think through a workflow, but asking it to create the JSON for you, it's going to hallucinate and make containers, nodes that just don't exist. And then you're going to waste a lot of time trying to figure out why it doesn't work. Because it doesn't exist. So it's not the best. The best place to start is like, get a workflow that already works.01:15:41 - johnpeslar:
And YouTube is a really good resource for this. Just go on YouTube and type in, like, what you're trying to automate. And chances are there's already people that have done it. A lot of these people give it away for free. Like, they'll tell you to go to a school community or something, and some of them will make you pay for it. So. But they're going to have YouTube videos that kind of explain how to do this stuff. So that's how I learned how to do this stuff.01:16:02 - Bayram:
That's great. Thanks, John. Okay, then that's all I had, hopefully just to zoom out and explain the whole reason we're doing all of this.01:16:13 - Bayram:
This is one of my previous webinars was about the five levels of sales Org autonomy. And what we learned to do today is to basically implement some workflows for the first and second steps of this autonomy. So feel free to experiment and actually share with the others what you're building and your workflows, like John does. Thank you very much. And you have a good.01:16:46 - Bayram:
Rest of the week. Bye.

Key Takeaways

  1. 1. 2 Complete Workflows built from scratch in under 60 minutes
  2. 2. 50% time savings on meeting preparation through automation
  3. 3. Zero coding required - visual drag-and-drop interface
  4. 4. Automatic CRM updates - Never miss logging a call again
  5. 5. AI-powered insights - Leverage ChatGPT for meeting summaries
  6. 6. Production-ready templates you can deploy immediately

Featured Speakers

Bayram Annakov

Founder & CEO of Onsa.ai, serial entrepreneur with deep expertise in AI-driven sales transformation and autonomous business systems

Workshop Agenda

    1. Introduction to N8N: Understanding the platform and its capabilities
    2. Workflow 1 - Meeting Preparation: Building automated attendee research
    3. Workflow 2 - Recording Processing: Transcription and CRM integration
    4. Testing & Deployment: Activating workflows for production use
    5. Q&A & Advanced Tips: Troubleshooting and optimization strategies

Workflow 1: Automated Meeting Preparation

What It Does

Automatically prepares comprehensive meeting briefs whenever a new calendar event is created, saving 30-60 minutes of manual research per meeting.

Components & Steps

  1. Google Calendar Trigger: Monitors for new events
  2. Event Details Extraction: Gets attendee information
  3. Web Research (Firecrawl): Searches for attendee background
  4. AI Processing (OpenAI): Creates meeting memo
  5. Email Delivery (Gmail): Sends prep notes to organizer

Key Benefits

  • Automatic attendee research from public sources
  • Personalized conversation starters and talking points
  • Company pain points and recent highlights
  • Delivered 5-10 minutes before each meeting

Required Integrations

  • Google Calendar (OAuth)
  • Firecrawl API (500 free credits)
  • OpenAI API (GPT-4)
  • Gmail (OAuth)

Workflow 2: Meeting Recording Processing & CRM Update

What It Does

Processes meeting recordings to automatically transcribe, summarize, and log them in your CRM, ensuring consistent documentation and follow-up.

Components & Steps

  1. Form Submission: Upload recording and attendee email
  2. Audio Transcription (OpenAI): Convert speech to text
  3. AI Summarization (GPT-4): Extract key points and action items
  4. CRM Search (HubSpot): Find contact by email
  5. Activity Logging: Create call engagement in CRM

Key Benefits

  • Automatic transcription of any audio format
  • AI-generated meeting summaries
  • Direct CRM integration (HubSpot/Salesforce)
  • Consistent call logging across team

Required Integrations

  • OpenAI API (Whisper + GPT-4)
  • HubSpot or Salesforce API
  • Optional: Zoom/Google Meet for automatic recording access

Step-by-Step Implementation Guide

Step 1: N8N Setup

  • Sign up for N8N cloud (free trial available)
  • Create your first workflow
  • Understand the node-based interface

Step 2: API Credentials

  • OpenAI API key from platform.openai.com
  • Firecrawl API key (500 free credits)
  • Google OAuth for Calendar and Gmail
  • HubSpot/Salesforce connection

Step 3: Workflow Building

  • Drag and drop nodes
  • Configure triggers and actions
  • Map data between nodes
  • Test each step individually

Step 4: Testing & Deployment

  • Execute test runs
  • Debug any issues
  • Activate for production
  • Monitor execution logs

Pro Tips from the Workshop

Data Transformation

Use .toJsonString() method to convert objects to text for LLM processing - a common solution for "object object" errors.

HTML Email Formatting

Always specify HTML format in your AI prompts when generating email content for better formatting.

Error Handling

If transcription fails, check file format compatibility (MP3 works best) and ensure field names don't conflict with reserved words.

Cost Optimization

Using Firecrawl for web search is more cost-effective than OpenAI's built-in web search capabilities.

Workflow Templates

Start with existing templates from N8N's library or YouTube tutorials, then customize for your needs.

Tools & Services Used

N8N

Low-code workflow automation platform

Cost: Free trial, then from $20/month

OpenAI

GPT-4 for text generation, Whisper for transcription

Cost: Pay-per-use, ~$0.03 per meeting

Firecrawl

Web scraping and search API

Cost: 500 free credits, then $19/month

HubSpot

CRM for contact and activity management

Cost: Free tier available

Troubleshooting Common Issues

Issue: "Cannot read property" error in transcription

Solution: Check file format (use MP3), ensure field names match exactly, avoid reserved words like "file"

Issue: Object shows as [object Object]

Solution: Add .toJsonString() method to convert objects to text format

Issue: API key errors

Solution: Verify API keys are active, have sufficient credits, and are copied correctly without spaces

Issue: Workflow not triggering

Solution: Ensure workflow is activated (toggle in top-right), check polling intervals (default 1 minute)

Alternative Tools & Services

Search Alternatives

  • SERP API: Alternative to Firecrawl for web search
  • Email-to-LinkedIn services: For finding social profiles from emails
  • Horizon Data Wave: LinkedIn automation and data extraction
  • Unipile: Multi-channel outreach automation

CRM Alternatives

  • Salesforce: Full support with dedicated N8N node
  • Pipedrive: Supported via API
  • Any CRM with API: Can be integrated using HTTP nodes

Workflow Platform Alternatives

  • Zapier: More user-friendly but more expensive
  • Make (Integromat): Similar capabilities
  • Power Automate: Microsoft ecosystem

FAQs

Can I use Claude or other AI models instead of OpenAI?

Yes, N8N supports multiple AI providers. You can use Anthropic (Claude), Google Gemini, or open-source models. Just replace the OpenAI node with your preferred provider.

How do I handle evaluation if results aren't good enough?

Create a second workflow with an evaluation agent that scores outputs based on your criteria (1-5 scale). This allows quality control and automatic re-processing if needed.

Can ChatGPT create N8N workflows for me?

ChatGPT is great for planning workflows and understanding logic, but avoid asking it to generate JSON code - it often hallucinates non-existent nodes. Use it for strategy, not implementation.

Is N8N suitable for production use?

Absolutely. N8N offers both cloud and self-hosted options. The self-hosted version is free and gives you complete control over your data and workflows.

Question text goes here

Additional Resources

Learning Resources

  • N8N Documentation: Comprehensive guides and API references
  • YouTube Tutorials: Search for your specific use case - likely someone has built it
  • N8N Community: Active forum for troubleshooting and templates
  • John Peslar's Newsletter: Ready-to-use workflow templates

Template Libraries

  • N8N official template library (free and paid)
  • Community-shared workflows on GitHub
  • School communities with specialized templates