0:00 I'm going to show you what I think is 0:02 the most practical opportunity in the AI 0:04 space for freelancers, agencies, and 0:07 anybody that's looking to build some 0:09 kind of SAS product. The best part is 0:11 you don't need to be some kind of AI 0:12 expert or go allin to build the next big 0:15 thing. It's easy to learn and it's 0:17 something that businesses will pay money 0:19 for. Trust me, you don't want to miss 0:21 this. So, for some context, I've been in 0:23 the web development space for over a 0:25 decade now. I started my career as a 0:27 freelancer, eventually went on to 0:29 building my own agency, and I've even 0:31 built and sold a couple of my own SAS 0:33 products. So, I know what businesses 0:35 want and I know how to sell to them. 0:37 Now, the funny thing is is that in all 0:39 of this, I never really cared to work on 0:41 exciting products that revolutionize 0:43 markets. I always prefer to focus on 0:45 what people would call the boring stuff 0:47 because I wanted to focus on things that 0:49 I knew were already selling and things 0:51 that businesses were paying money for. 0:53 Now, I know that doesn't sound exciting, 0:55 but one of the things that I teach newer 0:57 developers that are trying to get into 0:58 freelancing or maybe are looking for 1:00 their first job, I always tell them that 1:02 if you want good, consistent money, then 1:04 boring is good. Now, there's nothing 1:06 wrong with chasing exciting markets. But 1:09 the problem with those is that they're 1:10 unproven and they're often high risk. 1:13 So, if stability and money is what 1:15 you're after, then not reinventing the 1:17 wheel and doing things that have already 1:18 been proven to make people money is the 1:20 safest route. So, this is what's kept me 1:22 profitable for over a decade now. Now, 1:25 when all this AI stuff became mainstream 1:27 around November of 2022, I knew this is 1:29 going to change the market forever. And 1:31 my strategy with all of this was to pay 1:33 attention, try everything, but don't 1:35 chase. And I ended up incorporating a 1:38 lot of the stuff into my life. So, for 1:40 example, these AI code editors have 1:42 significantly improved my productivity. 1:44 AI surge has changed the way that I do 1:46 research now. And honestly, I can't 1:49 imagine going back to not using these. 1:51 Now, there's a lot of exciting business 1:52 opportunity that's popping up because of 1:54 all of this. There's people like Peter 1:56 Levelvels on Twitter, for example, whom 1:58 some of you might know. He's building a 2:00 lot of these AI products. One of those 2:02 being an AI profile picture generator, 2:05 and he made great money with that. He's 2:07 building a bunch of other products, 2:08 basically everything AI related 2:10 nowadays. There's also products like 2:12 site GPT which is basically a chatbot 2:15 that you can use to integrate into any 2:17 website and we're starting to see this 2:18 being used in documentation websites and 2:21 this just creates a great chat support 2:23 experience. Now these are cool and a lot 2:26 of people are going to make money from 2:27 this but honestly I always prefer the 2:30 boring stuff so I never really got the 2:32 edge to build anything like this. In all 2:34 of these new business opportunities, 2:35 there was one that did catch my eye. And 2:38 this is something that I realized was 2:40 the missing piece to something that 2:41 businesses were already paying money for 2:43 in one form or another. And what made 2:45 this possible is a combination of 2:47 technology improvements in the AI space 2:50 that now has made all of this readily 2:52 available to everyone. So what's changed 2:54 and what's this thing that businesses 2:56 are willing to pay money for? Well, in 2:58 order to understand this, I want to take 3:00 a step back and see how we got here. So 3:02 when I first started selling to 3:03 businesses, I understood a very simple 3:06 concept early on. And this is that 3:08 businesses will pay for anything that 3:10 allows them to make more money. And this 3:12 can come in the form of increasing 3:14 revenue through some kind of marketing 3:15 services like SEO or digital marketing, 3:18 all things that I've done. Or it can 3:20 come in the form of automation that 3:22 allows a business to capitalize on more 3:24 by doing less. And this way they can 3:26 stay more competitive in their industry. 3:28 The automation part of what I and other 3:29 web developers often sell is usually 3:31 first the website, right? It's a form of 3:34 automation because it allows a business 3:35 to be present in areas where they're not 3:37 physically there themselves. It allows a 3:39 customer to gain some insight without 3:41 any staff intervention in this process 3:43 and then hopefully they can make some 3:45 kind of decision like show up at the 3:46 business or place some kind of order. 3:48 Now, the other form of automation is 3:51 going to be like the contact form or 3:52 hopefully an order form on your website. 3:55 This allows a customer to make some kind 3:57 of purchasing decision again without 4:00 staff intervention. Now, these are of 4:02 course very simplified examples, but 4:03 these are the first two that I can just 4:04 come up with off the top of my head. 4:06 Now, there are two other forms of 4:08 automation that I want to point out 4:10 because they're relevant to this 4:11 scenario. So, the first form of 4:13 automation is going to be some kind of 4:15 robot that a business can set up. So 4:17 whether you are having some kind of 4:19 inbound call from a customer and the 4:21 answer machine picks up and it tries to 4:23 maybe guide you through some process 4:24 which usually is terrible, it's limited 4:26 and none of us like talking to robots 4:28 over a phone and this can also be some 4:30 kind of outbound robocall. Now the other 4:33 one is outsourcing a call center. Now 4:36 the robot answering machine is a 4:38 nightmare. None of us like dealing with 4:39 this and usually it's only for simple 4:42 edge cases and it never really 4:44 understands what you're actually trying 4:45 to say. And I think all of us know this 4:47 is a quite frustrating process when you 4:50 have a real problem to deal with. So for 4:52 me, what I usually do is I just press 4:54 zero a bunch of times if the robot 4:56 doesn't get what I'm trying to say. And 4:58 I just try to brute force my way into 5:00 getting a human agent and hopefully 5:01 that'll solve my issues. And this system 5:04 is used quite sparingly at companies. 5:06 Usually it's a company that maybe can 5:08 afford to lose some customers. I noticed 5:10 airlines often have it. Banks have it 5:12 because you have no other option and 5:14 it's the best solution they have. Now 5:16 the other thing is the call center and 5:19 this is extremely expensive and my issue 5:21 with this is that it also lowers the 5:23 quality of service you can provide for 5:25 your business because you're giving the 5:27 service over to people that don't 5:29 actually work at your company. Now I 5:31 know this firsthand because I was tasked 5:33 with solving this issue at my company 5:35 and I had to come up with a solution for 5:37 some kind of call center system. And the 5:39 problem we had was that we ran national 5:42 ad campaigns across the US. And we were 5:44 a West Coast company. And the issue was 5:47 that in our campaign, we would advertise 5:49 all over the US. And a lot of our 5:51 customers would call very early on from 5:53 the East Coast. So 9:00 a.m. on the East 5:55 Coast is 6:00 a.m. on the West Coast. 5:57 And by the time our staff would come 5:59 into the office and we can actually call 6:01 back or maybe respond to some kind of 6:02 lead, that customer, there was always a 6:05 chance that they found someone else and 6:06 went with another provider. So, we spent 6:08 money and then we often left money on 6:10 the table because we didn't get there in 6:12 time. Now, I eventually was able to 6:13 solve this problem, but the issue was 6:15 that it cost us $30,000 a year, plus or 6:18 minus a little bit, probably on the 6:19 higher end, actually, and we basically 6:21 just had to staff the office with 6:23 somebody showing up very early on. And 6:25 that wasn't the ideal solution, and it 6:26 was very expensive. So, we know that 6:28 robocalls suck, and call centers are 6:30 expensive and usually not practical for 6:32 most businesses. But something has 6:34 changed over the last couple of years 6:36 with the advancements of AI and other 6:38 technologies that we have that really 6:40 provides an alternative to both of these 6:42 issues and solves most of these 6:44 problems. Okay, so let's break this 6:46 down. So first we had these large 6:48 language models that were released and 6:50 these really changed the world forever, 6:52 but they still had their limitations, 6:54 right? So, if you ask a chatbot what the 6:57 current weather is today or what 6:58 happened yesterday in London, uh it 7:00 doesn't know that information because 7:02 it's only trained and has its current 7:04 knowledge set and that's it. So, it 7:06 wasn't until we started plugging these 7:08 into our own custom data sources, 7:10 feeding it some kind of PDF or letting 7:12 it make some kind of API request to our 7:14 own database where we can actually ask 7:17 at the weather, have the LLM make some 7:19 kind of external request. This is what 7:21 really made them powerful and made 7:23 platforms like site GPT which allow you 7:26 to add a chatbot into your own website 7:28 and a lot of these other tools. It's 7:30 when we mix them together. So this was 7:33 amazing. But the other part of this 7:34 equation is the advancements in the 7:36 voice AI space. And honestly, it's 7:39 incredible. It's getting so good and so 7:41 customizable. It's often hard to tell 7:43 whether you're hearing some kind of AI 7:45 or an actual human voice. You can 7:47 customize the inflection points, how it 7:49 carries a conversation and mix that up 7:51 with the knowledge base, it's getting 7:53 really difficult. So with this 7:55 combination with the LLMs and the custom 7:57 data and voice AI, we now have the power 8:00 to create amazing bots and amazing 8:03 agents that can actually carry on an 8:05 intelligent conversation and can 8:07 actually provide information and even 8:09 take in information from a user and 8:11 perform certain actions like maybe place 8:13 a reservation, offer a refund, and so 8:16 much more. I want to take a moment to 8:18 show you how powerful these can be with 8:20 a quick example. So, I'm going to play 8:22 you a clip from a video posted by 8:24 Ibrahim Kosov, who builds and sells 8:26 these voice AI agents as a service. And 8:29 in this example, Ibraim demonstrates how 8:32 one of these can sound. And the thing I 8:34 want you to pay attention to is how the 8:37 conversation flows. So, the conversation 8:39 goes in various directions, and the 8:41 agent is smart enough to be able to take 8:43 in various types of input and still 8:45 carry on the conversation, which would 8:47 normally make an algorithmic bot just 8:49 freeze up. So, let's take a quick look. 8:51 Thank you for calling Wolf Gang Puck. 8:53 This is Sophie. How can I assist you 8:55 today? Hey, Sophie. I wanted to go ahead 8:58 and do a reservation. Can you help me 9:00 out? 9:02 Of course. I'd be happy to help with 9:03 your reservation. Could you please 9:04 provide the date, time, and number of 9:06 guests for your booking? Yeah. So, it's 9:08 going to be four guests, and we want to 9:10 come in some like tomorrow, 400 p.m. 9:14 Got it. May I have your name and email 9:16 address to confirm the reservation? 9:17 Yeah, of course. So, my name is going to 9:19 be Ibrahim Kashiff and my full email 9:21 address is going to be IBR Ibrahim 9:24 Kashif. 9:25 Thank you, Ibraim. Let me quickly check 9:27 availability for tomorrow at 4 p.m. for 9:29 four guests. One moment, please. Great 9:31 news, Ibrahim. We have availability for 9:33 tomorrow at 4 p.m. for four guests. Uh, 9:36 go ahead and reserve the table for you. 9:37 One moment, please. You'll receive a 9:38 confirmation email shortly. Is there 9:40 anything else I can assist you with? So, 9:42 the first thing that I noticed about 9:44 this was the agent's tone and ability to 9:46 actually listen and not force him into a 9:48 certain structure in the conversation, 9:50 but instead actually taking that input. 9:52 So, that means that regardless of how 9:54 the question was asked, the agent can 9:56 actually make sense of it as long as 9:57 there is a legitimate question in there. 9:59 Something that typically a robot would 10:01 have difficulty with because they're 10:03 programmed for only certain keywords and 10:05 maybe certain key clicks on the phone. 10:07 So, the agent, if needed, can ask for 10:09 clarification. It can ask for a 10:11 rephrasing. This is all things that a 10:13 normal robocall would have issues with. 10:16 The other part is that the agent 10:17 actually has access to certain 10:19 endpoints. So, it's actually able to 10:20 update a database. It's able to make the 10:23 reservation and even send out a custom 10:25 email to the email that was provided. 10:27 Now, the rest of this conversation I 10:29 want to demo because Abraham actually 10:31 asks it a series of questions, things 10:33 that might not have been by default 10:35 programmed into this bot, but it does 10:38 have access to this information. So, 10:40 he's going to ask it some questions, and 10:41 I just want to I want to make sure you 10:43 pay attention to the flow of this 10:44 conversation and the type of data that 10:46 it actually pulls up and how it responds 10:48 to questions that again would throw off 10:50 a normal robot. Yeah. So, actually, I 10:53 had a quick question. Can I request a 10:56 specific table or seating area? Yes, 10:59 absolutely. You can request a specific 11:01 table or seating area. Would you like me 11:03 to note down a request for you? Yeah. 11:05 So, I actually had a quick question 11:07 actually. Um, do you guys have any 11:09 vegetarian options? Any halal options? 11:11 Yes, we do offer vegetarian options such 11:13 as our seasonal vegetable risoto and 11:15 roasted cauliflower steak. As for halal 11:17 options, while we don't have a dedicated 11:19 halal menu, we can certainly accommodate 11:21 dietary preferences where possible. 11:23 Yeah. Do you guys do private uh dining 11:26 options? Is that an you know thing that 11:27 you guys do? Okay. So when I saw this 11:30 example and others like this, I realized 11:32 this is going to be something big and I 11:34 can absolutely see businesses paying for 11:36 something like this. I mean, if IM 11:38 approached me and my company when we 11:40 were facing our issue, I would have 11:41 absolutely paid for something like this. 11:43 And I'm also pretty sure it would have 11:44 solved most of our issues. I also think 11:47 that a lot of our customers would 11:48 probably have no idea they talked to a 11:50 bot. And this could totally solve that 11:53 3-hour window that we had and probably a 11:56 lot of other calls that we handled. Now, 11:58 you know how I like boring businesses. I 12:00 like going for the safe bet. Well, I did 12:02 some research and I found dozens of 12:04 examples of people actually selling this 12:07 kind of service and making money with 12:09 it. So, I want to look at a few of these 12:11 and I want to show you that this isn't 12:13 some kind of theory. This isn't some new 12:14 market that no one knows. It's new, but 12:17 it's also been battle tested. And I like 12:19 that idea. I like the idea of letting 12:21 others test it and then coming into play 12:24 once things have already been proven. So 12:26 let's take a look at these real 12:27 examples. For our first example, we have 12:29 an outbound solution and this is an 12:31 agency called Ingratagus run by Giannis 12:34 Moore. And what they do is they provide 12:36 AI lead nurturing, qualification, and 12:39 reactivation services. And they 12:41 specifically don't do any cold calling. 12:43 So anybody that they're going to call 12:44 for you has to have some kind of 12:46 relationship with your business already. 12:48 Now, the way this could work is if your 12:50 business has some kind of CRM or a 12:52 database and maybe you have a bunch of 12:54 leads from your website or customers 12:56 that maybe order a product once a year, 12:58 this service here, Giannis can set this 13:00 up where they can go down this list and 13:02 call thousands of potential customers 13:04 for you and try to reestablish that 13:06 relationship, try to get them to maybe 13:08 make some kind of decision on another 13:10 purchasing order. And Giannis sells this 13:13 for about $3 to $8,000 in most cases and 13:16 has sold it for as much as $23,000 to a 13:19 single business. Now, for an example for 13:21 inbound solutions, we have an AI digital 13:24 receptionist for property management 13:26 companies created by Brendan Joit and 13:30 this company is called Inflate AI. So, 13:32 what this system does is it handles 13:34 maintenance requests, general inquiries, 13:36 and even transfers emergency calls. So, 13:38 for property management companies that 13:40 maybe manage hundreds, if not thousands 13:42 of properties, this can be very useful. 13:44 And in one case, he's even sold this 13:46 service for $12,500 13:48 and a monthly retainer. So, I can go all 13:51 day with these examples. I found quite a 13:53 bit of them. And it's definitely a 13:55 proven industry that people are already 13:57 making money with. So, the facts add up. 14:00 Now, if you made it this far, you're 14:01 probably curious about the tools people 14:03 are using to build systems like this, 14:04 and you maybe want to get a sneak peek 14:06 into how this works. So, in this next 14:08 step, what we're going to do is we're 14:09 going to get our hands dirty and we're 14:11 going to build our own voice AI agent 14:13 and we're going to add data from this 14:15 phone call that the agent's going to 14:16 take and we're going to add it into a 14:18 database. Now, we're going to build a 14:20 very simplified application. We're going 14:22 to try to replicate like a pizza shop. 14:23 So, we're going to call this pizza shop. 14:25 This agent will take our order. They'll 14:27 take our customer information and 14:29 they're going to add this into an Excel 14:30 file. Now, the actual database that you 14:32 add this to, that's up to you. you'll 14:34 see how to customize this, but we're 14:36 just going to make this work and by the 14:37 end of this video, we're going to have 14:39 this working product. So, let's go ahead 14:41 and just dive right into it and see how 14:43 this works. All right, so let's build 14:44 out our voice AI assistant. Now, the 14:46 platform we're going to use for this is 14:48 a tool called VPY. And this is one of 14:50 the tools that I kept seeing come up in 14:52 all of these examples. So, clearly, a 14:54 lot of people like this and it's been 14:56 working for people. So, that's what 14:57 we're going to stick to. I've used it 14:59 myself for a little bit and I really 15:00 enjoy the interface. It's super easy to 15:02 set up your assistant, set up the 15:04 prompts, create a custom phone number, 15:06 and so on. So, you're going to see how 15:07 simple this actually is. Now, if you 15:09 want to follow along, go ahead and use 15:11 the coupon code linked up in the video 15:13 description. This way, you get 100 15:15 minutes free. You can get started and 15:16 follow along and even have minutes left 15:19 over to build whatever you want after 15:20 this for a little bit. So, make sure to 15:22 use it. No reason not to use a free 15:24 coupon code. So, this is our VPY 15:26 interface and we're going to go through 15:28 this pretty quick and we're going to 15:29 start by building out an assistant. Now, 15:31 there's a few ways to do this. We can 15:33 use the new workflows, which VPY is 15:36 building on top of still, but workflows 15:38 allow us to build these more complex 15:40 workflows. So, if your assistant needs 15:41 to handle different kind of scenarios, 15:43 this is one way to do it, and they even 15:45 have some examples. Now, we're going to 15:47 go with the simple route. We're just 15:48 going to go with the assistant here, and 15:50 we're just going to start building this 15:51 out. So, we're going to create a new 15:52 assistant. We'll go into blank template, 15:55 and we're going to call this Jane Pizza 15:57 Shop. So, it looks like it already 15:58 filled it in for me because I was 16:00 testing this out before. And we're going 16:02 to create the assistant. Now, this is 16:04 our interface to create the assistant. I 16:05 just want to recap a few things real 16:07 quick. So, here, this is where we can 16:08 set up our provider. We're going to go 16:10 with Open AI as a default. We can 16:12 configure our model here. And this is 16:14 where we set up our prompt. So, we have 16:17 the first message mode. So, does your 16:19 assistant speak first or do you want the 16:20 user who's calling to talk first? Then 16:23 we also have the first message. The 16:25 system prompts. This is where we can add 16:27 in all the information to the assistant 16:29 and then actually let it know how to 16:30 handle certain cases and so on and then 16:33 any files that we want to upload like 16:35 any knowledge sources, menus for our 16:37 restaurant, whatever we're doing here. 16:39 Now for the temperature, this is where 16:41 we can configure how much do we want our 16:43 assistant to follow our flow. Do we want 16:45 to deviate from that and maybe use its 16:47 own language or do we want to stick to 16:48 the script here? So we're just going to 16:50 set this and leave it at 0.5 here. And 16:53 then we have our voice configuration 16:54 here. So, our provider is by default set 16:57 to Voppy. And our voice for this, I'm 17:00 just going to go with let's see, we'll 17:02 go with Kylie here. So, we'll use a 17:04 female voice. And for the additional 17:07 configuration, we have a restaurant. We 17:09 can upload some kind of background 17:10 noise. I'm not going to worry about 17:12 that, but this just gives you an idea of 17:14 how customizable this really is. Now, 17:15 we're not going to go over everything, 17:17 but one thing I did want to quickly show 17:18 you here is the tools here. So when our 17:21 assistant is actually updating a 17:23 database or maybe querying some data, 17:25 this is where we create a custom tool 17:27 and we add it to this specific 17:29 assistant. So we're going to do this in 17:30 the next step, but really quickly, let's 17:32 just go back to our prompt here. And 17:35 what I like to do is paste in some 17:36 layout here for the assistant. Now, you 17:38 can set up whatever structure you want. 17:40 There's really no predefined rules, but 17:42 I find that this system right here works 17:44 pretty well. So first, we tell our 17:46 assistant its role. We give it a task. 17:48 We give it some specifics. We provide 17:51 context and then we tell it about the 17:52 business, what the business does, 17:54 provide examples, and then some kind of 17:56 notes here. So, let's go ahead and just 17:58 add in each one here. So, first for the 18:00 welcome message. So, first message, I'm 18:03 going to paste in, hello, welcome to 18:05 John Doe's Pizza Shop. How can I help 18:06 you? I think that's a good starter 18:07 message. For the role, we're just going 18:09 to go ahead and say you are Jane, a 18:10 receptionist from John Doe's Pizza Shop. 18:12 You are here to take orders and assist 18:14 customers with any questions. And by the 18:16 way, we're going to be doing this in 18:17 markdown format. So this way it's able 18:20 to understand the structure a little bit 18:21 better. For the task, we're going to 18:23 tell it your task is to help take 18:24 orders. Add items into the system 18:26 database while collecting customer and 18:29 order details. For specifics, we're 18:30 going to say refer to the menu 18:32 information provided when answering 18:33 questions about food options. Gather all 18:35 order information with specifics. Now, 18:37 for context, we're just going to add a 18:39 little bit of information about the 18:40 business. So this is John Doe's Pizza 18:42 Shop. Authentic New York pizza serving 18:44 the Upper East Side of New York for 10 18:45 years. You can add in store hours, 18:47 whatever extra context you want to add, 18:49 go ahead and do that. We're just going 18:51 to keep this very simple. The what we 18:53 do, we're just going to say we offer 18:54 dine in and takeout orders. And then one 18:57 of the things that's really good to do 18:59 here is to provide an example of a 19:01 conversation. Now, it doesn't mean that 19:02 this is exactly how every conversation 19:04 is going to flow, but it's really good 19:07 to help an agent actually understand 19:09 this flow. So, if we provide an example, 19:11 it's more likely to follow it. So, for 19:13 this example, I'm just going to provide 19:15 an example conversation. So, we're going 19:16 to say for the agent, you're going to 19:18 welcome the customer. Customer is going 19:20 to try to place an order. We're going to 19:21 try to get their name and phone number. 19:23 And we're just going to provide it some 19:25 sample conversations that could happen. 19:26 And this is really going to help here. 19:28 So, with that, the additional notes that 19:31 we want to add here, I'm just going to 19:33 paste in a menu here. So, I'm going to 19:35 go ahead and grab this. I created a 19:36 quick menu and we're just going to throw 19:38 this in here. And you could provide this 19:41 menu in an alternative file. So you 19:43 could go ahead and select a file, upload 19:45 something here, and you can even make a 19:46 query to an external database. For now, 19:49 we're just going to throw everything in 19:50 here just to make it work. So let's go 19:52 ahead and paste in that menu. And here, 19:54 I'm just going to go ahead and expand 19:55 this. We're just going to see the menu 19:58 itself. So we have the signature pizza 20:00 menus. So we'll have pepperoni, meat 20:02 lovers, Mediterranean, spicy Italian 20:04 sausage. We have the price, some extra 20:07 information about it, and then we have 20:08 the price for gluten-free options, 20:11 certain sizes, and then extra toppings. 20:13 So, this should be enough for our agent 20:15 to understand our business. Now, it's 20:17 going to go off of this, and this is how 20:18 we're able to price details and so on. 20:21 Now, let's go ahead and hit update. We 20:23 are going to publish this agent, and I 20:25 could try to talk to it this way by just 20:26 clicking talk to assistant, but instead, 20:29 what I'm going to do is I'm going to go 20:30 with a phone number, and we'll add this 20:32 right here. So, let's go ahead and use a 20:34 free VPY phone number. And for the area 20:37 code, uh, let's just do 941. Let it 20:40 create one. And this is our phone 20:43 number. So, I'm going to dial this. I 20:44 need to tune this to this specific 20:47 assistant. So, Jane Pizza Shop, that's 20:50 our assistant. And once this is ready, 20:52 I'm going to go ahead and make this 20:53 call. Okay. So, it looks like the phone 20:54 number is ready. I'm going to go ahead 20:56 and make a call. Put this on speaker. 20:57 Hopefully, we can hear it. 21:01 Hello. Welcome to John Doe's Pizza Shop. 21:03 How can I help you? Hi, I'd like to 21:04 place an order for takeout. 21:08 Sure. May I please have your name and 21:09 phone number to start the order? Yeah, 21:12 my name is Dennis and the phone number 21:14 is going to be 5552637418. 21:23 Just to confirm, your phone number is 21:25 55526 21:26 [Music] 21:28 37418. 21:31 Yeah, that sounds right. 21:34 Great. Thank you, Dennis. What would you 21:36 like to order today? Um, I'd like a 21:38 large pepperoni pizza. 21:42 Okay, that's one large pepperoni pizza. 21:44 Is there anything else you would like to 21:46 add to your order? Uh, no. But what's 21:48 the total price to that? 21:52 The price for a large pepperoni pizza is 21:54 $16.95. 21:56 So, I'll go ahead and place the order. 21:58 All right. Wonderful. Thank you. In 21:59 about So, you get the idea. The agent 22:02 can definitely use some finetuning. 22:04 There was a little bit of interruption 22:05 there. Uh, this is something you can do 22:07 through the Vappy interface. That's all 22:09 highly customizable. Now, one thing that 22:11 we didn't do is we didn't actually place 22:14 an order. So, the agent's going to try 22:15 to do something, but it doesn't really 22:16 know what to do. The way that we can do 22:18 this is we can create custom tools. And 22:21 these are basically custom actions that 22:23 we can have our agent perform. So we can 22:25 query some kind of data source. We can 22:27 transfer a call, perform an API request, 22:30 integrate with Slack, Google Sheets, and 22:32 so on. But what I'm going to do here is 22:34 I'm going to create a custom function. 22:36 Now, this function is going to be called 22:38 place order. and we're going to go ahead 22:40 and just send a web hook where call a 22:42 certain endpoint, take the order summary 22:45 like the size of the pizza, the name of 22:46 the customer, phone number, and we're 22:48 going to send this off there. So now 22:50 this assistant can actually call this 22:51 function, and the function will take 22:53 care of the rest. So let's go ahead and 22:55 add a description, and we're going to 22:56 connect this function or tool to our 22:58 agent. So for the description, I'm going 23:00 to say send order details to URL. And 23:05 then for the options here, we're going 23:06 to leave that as is, but I am going to 23:09 enforce strict parameters here. So I 23:11 only want specific parameters. And this 23:13 is where we're going to add them. So 23:15 first, we want the size of the pizza. 23:17 We'll leave that as a string. We'll say 23:19 size of pizza. And we're just going to 23:21 add in some details just in case, just 23:22 so the agent knows more. Go ahead and 23:24 hit apply. And then we'll just add in 23:26 the rest quick here. We'll add a 23:28 property for pizza type. For the 23:31 description, we'll say type of pizza. 23:33 We'll add that one. Then we'll add in 23:36 customer name. Leave that as a string. 23:42 Save that. And for the last property, 23:45 this is where we want extra toppings. So 23:47 extra toppings. And we want a customer 23:51 to be able to add multiple. So we'll 23:52 just set this to an array. For the 23:54 description, we'll just say list of 23:56 extra toppings. Customer added. And then 24:00 for the type, let's just set that to a 24:02 string. We'll hit apply and that should 24:05 be all the parameters. Now I do want to 24:07 make sure that some of these are 24:08 required. So the size is required. Type 24:10 of pizza is very important. Uh customer 24:14 phone number that's going to be 24:15 required. And then the others I can 24:17 leave. So this is just ensuring that we 24:18 have these. Now I'm going to go ahead 24:20 and save this. For the actual URL, we're 24:24 going to add this in a second. So we 24:25 need an external tool to actually use 24:27 this. Now to connect this to our 24:28 assistant, we want to go to our 24:30 assistant. Then we'll go into tools here 24:32 and we just want to make sure that place 24:34 order is selected so that way we can 24:36 actually use the tool. And then I'm 24:38 going to update specifics here. I'm 24:40 going to add in a comma and I'm going to 24:42 say once we get the specifics of the 24:44 order then call the place order function 24:46 to add the order to the database. Do not 24:48 end the call without actually adding the 24:50 order to the database or before adding 24:52 it. So I just want to make sure to 24:53 publish this and that's all updated. So 24:56 this is how we can actually call this 24:57 tool. Now in the last step here, what we 25:00 want to do is we want to take in this 25:01 information that we collect and we want 25:03 to pass this along over to some kind of 25:05 backend. So we can actually save this to 25:06 a database. So all this order 25:08 information like the size, type, 25:10 customer name, and phone number. What 25:12 we're going to do is we're going to add 25:13 in some kind of URL here and we're going 25:15 to pass along a payload to that URL. Now 25:18 the way that you do this can be any way 25:20 you want. You can build your own custom 25:21 backend, create some kind of API 25:23 endpoint, and then send it there. But 25:25 what we're going to do here is we're 25:26 going to use a tool called N8N. And 25:29 we're going to let that handle 25:30 everything from this point on. Now, if 25:32 you don't know what N8N is, this is 25:34 basically an automation flow builder. 25:36 And it's great for building these 25:37 processes here. So on the website, the 25:39 first thing I see for an example here is 25:41 an automation flow that we can piece 25:43 together in these steps. So there's 25:45 always some kind of trigger action here. 25:47 In this case, it's whenever a user 25:49 submits a form. Then we can take this to 25:51 the next step, pass the data along to an 25:53 agent, add this to a database, and then 25:55 move on to the next step. And then we 25:57 can decide what action we want to take 25:59 from here, like add this message to a 26:01 channel or update a profile depending on 26:03 what data was passed along to it and 26:05 what actions we're performing. Now, 26:07 these processes can get very dynamic 26:09 here. So, we can do quite a bit here and 26:11 it's a great tool for that. So, let's go 26:13 ahead and actually build out a very 26:14 simple flow. And our first action is 26:17 going to be that web hook URL that we're 26:18 going to trigger. And then we're going 26:20 to add this to a database. So you can go 26:23 ahead and sign up for free. You get 14 26:24 days free with nan. Go ahead and create 26:26 an account. And we're going to go ahead 26:28 and start from scratch here. And we're 26:30 going to start our workflow with our 26:32 first action. So I can go ahead and 26:34 click plus right here or in the first 26:35 step. We're just going to select on web 26:38 hook call. And this is going to give us 26:40 a URL. So what I want to do is I want to 26:42 send a post request. So from voppy by 26:45 default this is going to be a post 26:46 request. So we're going to select that 26:48 as the HTTP method. We're going to leave 26:51 this in test URL mode and we're going to 26:53 copy this URL. So that's our endpoint 26:56 that we're going to send data to. Now 26:58 from here what I'm going to do is go 27:00 ahead and leave authentication as none. 27:02 And as an option I want to set cores 27:05 here and I'm going to leave this as a 27:06 wild card. So we're just going to leave 27:07 an asterisk here. This just means that 27:10 anybody can send a request to this 27:12 endpoint and we don't need to specify 27:14 anything. Now, if we want to test this 27:16 out, let's go ahead and click on listen 27:18 for test event. So, it's currently 27:20 listening. We can go ahead and go into 27:22 VPY and I'm going to add in the URL 27:24 right here. So, this is the endpoint 27:26 that we're going to send data to. And 27:28 we're going to click on test here. And 27:29 what I'm going to do is go ahead and 27:31 just paste in an example of an API call 27:33 that we can make. So, this is going to 27:35 be JSON data. If you don't know what 27:36 that is, this is just a key value pair. 27:38 So we have a name and then a value and 27:40 then we have a type and then a value. So 27:42 key and value. This is the way that 27:44 we're going to send data to this 27:45 endpoint. So I'm going to save this and 27:47 I actually want to call this and we're 27:49 going to hit send request. And if it 27:51 goes through we should see a status code 27:53 of 200 message workflow started. And if 27:56 we go into n here we can actually see 28:00 the data that was sent over. So if we go 28:02 into schema here we can actually see the 28:04 body. So we'll go down here and then we 28:07 can actually see the information that 28:08 was sent. So we see the name, type, 28:10 phone number, size, toppings and so on. 28:13 So we just pass the data along here and 28:15 I can see this in different formats 28:17 here. So if I look at this in JSON 28:18 format, this is the way that we sent the 28:21 data. So that's the first step. This is 28:23 how we trigger an action. Now in the 28:25 next step, what we're going to do is go 28:26 ahead and pass this information along to 28:29 a Google sheet. So I'm going to go ahead 28:31 and select Google sheet here. and I want 28:34 to select append and update row sheet. 28:36 So I just created a very simple Google 28:39 sheet and what we need to do here is go 28:41 ahead and actually connect to our Google 28:42 Drive account to a specific sheet. So on 28:45 Google Drive I went ahead and created 28:47 this simple sheet with these headers 28:48 here. So we have name, size, type, extra 28:51 toppings and phone number. Then in here 28:53 I'm going to go ahead and create 28:55 credentials and I'm going to sign in 28:57 with Google and I'm going to use the 28:58 account that I created my document with. 29:01 So I'm selecting that specific account 29:03 here. And then once that is 29:05 authenticated, I can try to connect to 29:07 this actual sheet. So I'm going to go 29:08 ahead and close this out. And within 29:10 here, I'm going to go ahead and select a 29:13 sheet within a document. For the 29:15 operation, I want to select append and 29:17 update row. And then we need to find the 29:19 actual document. So mine is called pizza 29:22 orders. So that's my Google sheet. And 29:24 then for the actual sheet name, I just 29:26 have this named as sheet one. So we'll 29:29 select sheet one. And automatically once 29:31 we select the sheet, what's going to 29:33 happen here is it's going to take all 29:34 these headers and it's automatically 29:36 going to map these values here. So now 29:39 we need to actually figure out how do we 29:40 add this data that's being passed over 29:43 from the web hook into these values and 29:45 this is what actually adds it to the 29:46 Google sheet. So if we go into our web 29:49 hook, so basically when we trigger the 29:51 web hook, the next step is to go to the 29:53 Google sheet and it passes that data 29:55 along. So from Voppy to the web hook to 29:58 the Google sheet and here we can 30:00 actually see that body right here. So we 30:02 have the name, the type, the phone 30:04 number. This is that test that we just 30:05 ran. And what we can do is we can take 30:08 these values and simply drag them in 30:10 here. So here it goes ahead and adds 30:12 that in. So the next request that we 30:14 make, it's going to take the name value 30:16 and add it into this field which will 30:18 add it into the Google sheet. Now this 30:20 is going to look a little bit different 30:22 when the actual agent makes this 30:24 request. So right now we're just testing 30:26 this through our test tool. So what I'm 30:28 going to do is I'm quickly going to make 30:30 a phone call. We're going to see the new 30:32 data type here. So we're going to take 30:33 that data and then we're going to append 30:35 it to the sheet. So let's quickly just 30:37 make this call and then I'm going to 30:38 fast forward through it and then we'll 30:39 actually analyze the data. So I'm going 30:41 to go ahead and save that. And in order 30:43 to actually test this, we want to click 30:44 on execute flow. And we want to wait for 30:46 this event to trigger in test mode. So 30:48 I'm going to go ahead and make that 30:49 phone call. Hello, welcome to John Doe's 30:51 Pizza Shop. How can I help you? Hi, I'd 30:53 like to place an order. Thank you for 30:55 your order. Dennis, you have a large 30:57 pesto pepperoni pizza with pickles and 31:00 it should be okay. So, I just completed 31:03 that call. We can see that flow trigger 31:05 through, but it didn't add anything to 31:07 this Google sheet. And this is because 31:08 we still need to map all of this to the 31:11 sheet. So, let's go ahead and go into 31:14 open here. And now that the agent sent 31:16 this request, the data is going to look 31:17 a little bit different. So if we go into 31:19 body now we see that we have message and 31:22 then we see tool calls and then function 31:25 arguments and the actual data now sits 31:27 within arguments. So it looks a little 31:28 bit different from that test call. So 31:30 now what I want to do is I just want to 31:32 go ahead and map all of these to our 31:34 actual Google sheet. So we're going to 31:35 start with the customer name. We can put 31:37 that in here and we'll just make sure 31:39 that's saved. Then the actual size, 31:42 we're going to throw that in here. For 31:44 the pizza type, we'll throw that into 31:45 type. And then toppings looks a little 31:47 bit different because it's an array. So 31:49 we'll throw that in here. It's going to 31:50 map it in its own way here. And then 31:52 last, we want the phone number. Now, we 31:54 added all of our values, but one thing 31:56 that we need to do is we need a column 31:58 to match on. And what this means is that 32:00 if we have a customer, let's say with a 32:02 phone number, and if that customer calls 32:05 again and they want to update their 32:06 order, we're going to find this one 32:07 unique value to match on. So it's kind 32:09 of like an ID that we identify that 32:11 customer with. So from there, a customer 32:13 can actually modify their order. If they 32:15 don't have a number, it's just going to 32:16 add in a new order into the database, 32:18 and we don't want that. So we want some 32:20 kind of unique value here. So here, 32:22 we're just going to select phone. And 32:23 then this way, we can actually modify 32:25 certain orders and so on. So at this 32:28 point, this should be good enough. So 32:30 I'm going to go ahead and close out 32:31 here. And I should be able to re-execute 32:33 this. So again, I'm going to go ahead 32:35 and click on execute workflow, and we're 32:37 going to test this out. Okay. So I put 32:39 these side by side so we can see this 32:40 entire flow. Let's go ahead and give it 32:42 a call and see how this works. 32:46 Hello. Welcome to John Doe's Pizza Shop. 32:48 How can I help you? Yeah, I'd like to 32:50 place an order. 32:53 Great. Can I start by giving your name 32:55 and phone number? Yeah, my name is 32:57 Dennis and my phone number is 32:59 5552361234. 33:05 Just to confirm, your phone number is 33:07 5552361234. 33:10 [Music] 33:12 That's correct. 33:14 Perfect. Thank you, Dennis. What can I 33:17 get started for you today? Um, I'll have 33:19 a large 16inch pepperoni pizza, please. 33:24 Just to confirm, that's one large 33:26 16-inch pepperoni pizza. Is there 33:28 anything else you would like to add to 33:29 your order? Um, I want to add onions to 33:32 that. I think that's going to be good 33:34 for me then. 33:38 Got it. So, that's one large 16-inch 33:42 pepperoni pizza with one extra topping 33:44 of onions. I'll go ahead and place this 33:46 order for you now. Just a sec. Actually, 33:49 you know what? I want to make a change 33:50 to that. Can I remove the onions? 33:54 No problem. I will remove the onions 33:56 from your order. So now it will just be 33:59 one large 16 in pepperoni without any 34:02 extra toppings. Is that correct? Yeah, 34:05 that's correct. 34:08 This will just take a sec. 34:11 Awesome. Thank you. I placed your order 34:12 for one. 34:15 So just cut it off there. But there you 34:17 go. We were able to add the order. It 34:19 went through the flow and it added it to 34:21 our Google sheet here. And you notice 34:23 how it updated the topping. Well, the 34:25 way that it was able to do that was 34:26 because of this unique value with the 34:28 phone number. So, because we were still 34:30 using the phone number, it actually knew 34:31 what sheet to update. If we didn't have 34:33 a unique value, it would basically just 34:35 add a new row to the database. So, we 34:37 don't want that. We were actually able 34:39 to modify by having this value. So, 34:41 that's just a quick preview of one of 34:43 the ways you can build something like 34:44 this and the tools you can use. I know 34:46 our example was super simplified, but 34:48 even with only a few minutes of building 34:50 and tuning this, we were able to make it 34:52 sound pretty good. I know it had some 34:54 issues with it, but that also was with 34:57 us not really doing much with it. So, if 34:59 you're able to actually provide it the 35:00 right data, tune the model, really train 35:02 it on what you need it to do, you can 35:04 build out something truly amazing. I 35:06 hope this sparks some ideas in you. If 35:08 you've ever built something like this or 35:10 you have some ideas, leave them down in 35:12 the comment section. I would love to 35:13 hear from you. So, that's going to be it 35:15 for now. Until next time, I'll see you 35:17 all in the next