WEBVTT

00:00.120 --> 00:03.520
Okay, so I double click on the AI agent.

00:03.520 --> 00:05.000
It's time to tidy this up.

00:05.240 --> 00:08.120
It thinks that it's getting its information from a connected trigger node.

00:08.120 --> 00:09.080
And it's not.

00:09.120 --> 00:11.080
It's coming from the node before.

00:11.080 --> 00:12.880
We'll define it with an expression.

00:13.120 --> 00:18.160
And I don't know if you remember from the time that we built that, that extract text that, that it

00:18.160 --> 00:22.720
comes in in a field dollar JSON like that.

00:23.040 --> 00:26.400
That's how the text flows in from the PDF extractor.

00:26.680 --> 00:28.280
And of course you don't need to remember this.

00:28.280 --> 00:32.360
You could just run the node and see what comes in and drag and drop like we did last time.

00:32.360 --> 00:35.480
Or you can look back at the previous example if you need a reminder.

00:35.960 --> 00:36.480
Okay.

00:36.640 --> 00:39.080
And now we are going to add a system message.

00:39.080 --> 00:45.840
And this is where we want to be careful and give good instructions to our AI agent okay here we go.

00:45.840 --> 00:50.960
Here is the system prompt I just wrote this, but I thought I would just paste it in and read it back

00:50.960 --> 00:54.440
to you, rather than you have to agonize and watch me type it all out.

00:54.440 --> 00:59.160
So I'm saying you are the sales manager for an accounting software firm at CTI.

00:59.520 --> 01:06.710
You are provided with the ICP for an ideal prospect, you must carry out these steps first.

01:06.750 --> 01:13.150
Use your prospecting Subagent tool once to search online for leads, providing a query based on the

01:13.150 --> 01:13.750
ICP.

01:14.150 --> 01:21.030
Next, for each of the identified prospects, use your Revops Subagent tool to store the information

01:21.030 --> 01:22.070
in the CRM database.

01:22.070 --> 01:27.950
Use the tool once for each prospect, uh, and then finally use your SDR Subagent tool.

01:27.950 --> 01:34.630
Once this tool will retrieve everyone in Pipedrive and draft an outbound sales email for each for all

01:34.630 --> 01:35.070
of them.

01:36.590 --> 01:38.990
Then reply with a summary of the outcome.

01:39.910 --> 01:42.070
And I'm going to add in the word repeatedly in there.

01:42.070 --> 01:47.750
Just so it's absolutely clear, you want to make sure that these prompts are so, so clear that it's

01:47.750 --> 01:50.110
almost impossible to misunderstand them.

01:50.110 --> 01:51.390
That is the trick.

01:51.710 --> 01:54.710
Okay, I think that's a fine prompt we've got there.

01:54.710 --> 01:59.670
You can see with this reply with a summary of the outcome that I'm quite keen to make this have structured

01:59.670 --> 02:00.470
outputs as well.

02:00.470 --> 02:01.990
I always like structured outputs.

02:01.990 --> 02:03.530
So let's turn that on.

02:03.730 --> 02:04.130
Okay.

02:04.170 --> 02:08.530
So with this I'm going to do an output parser structured output parser.

02:08.730 --> 02:13.970
The JSON example we're going to have in here it's going to have success.

02:16.650 --> 02:17.330
Colon.

02:17.330 --> 02:19.330
And that's that could be true or false.

02:19.330 --> 02:20.410
We'll do it like that.

02:20.410 --> 02:25.290
And then uh, we'll have um uh summary.

02:28.290 --> 02:37.730
Uh, a concise description of what happened that seems clear enough.

02:37.770 --> 02:38.450
Good enough.

02:38.730 --> 02:39.610
All right.

02:39.610 --> 02:43.170
So that is then going to produce something out of here.

02:43.450 --> 02:48.970
Uh, and, uh, we can then figure out what we want to do with that information that's going to come

02:48.970 --> 02:50.490
on the right here.

02:50.530 --> 02:50.890
Okay.

02:50.890 --> 02:55.090
Well, we're going to want the output to go into an if because we're going to do something different

02:55.090 --> 02:56.850
if it's successful or not.

02:56.850 --> 02:59.370
So this is going to be an expression.

02:59.410 --> 03:04.090
And we're going to want that expression to be JSON dot output.

03:04.090 --> 03:10.360
That's what's coming out of the LM dot success, because that's the field we care about.

03:10.400 --> 03:15.480
And if that is true, we're going to want to do one thing, otherwise something else.

03:15.520 --> 03:18.800
Let's tidy up and let's see what happens.

03:18.800 --> 03:21.240
If we want to move that over there a bit.

03:21.280 --> 03:22.880
We want to have the true.

03:23.280 --> 03:26.640
Uh, then uh, let's use pushover.

03:26.880 --> 03:31.440
Uh, and of course, you can certainly, uh, do something different if you wish.

03:31.440 --> 03:36.000
You can use slack, you can use telegram, whatever you wish.

03:36.320 --> 03:42.840
Uh, and I'll have to paste in my user key there and then put in a message and bam, I've done that.

03:42.840 --> 03:43.920
I've added in a user key.

03:43.920 --> 03:49.960
I've put in two pushovers, one with a suitably jubilant message and one with a woeful message.

03:50.200 --> 03:55.520
And I've also, while I was at it, I've put in three stickies so that we could see everything that's

03:55.520 --> 03:56.240
going on.

03:56.240 --> 03:59.200
And doesn't it look tidy and professional and nice?

03:59.480 --> 04:04.280
I think we're ready to try out a multi-agent business development system.

04:04.640 --> 04:06.900
Let's give this a try first.

04:06.940 --> 04:11.020
We probably have to tidy up some data first to reset everything.

04:11.340 --> 04:12.180
Let's go do that.

04:12.180 --> 04:13.620
I've just gone back to Pipedrive.

04:13.620 --> 04:14.700
I'm just going to come in here.

04:14.700 --> 04:17.020
I'm looking here, back at the leads again.

04:17.020 --> 04:21.060
Number one, I'm just going to click on John Smith and delete John.

04:21.060 --> 04:22.580
We don't want John still in there.

04:22.620 --> 04:23.820
Off goes John.

04:23.980 --> 04:29.860
And I'm going to come down here to contacts I'm going to delete this organization.

04:30.660 --> 04:33.580
Go away IBM and I'm going to delete people.

04:33.620 --> 04:36.220
Go away John Smith nice.

04:36.460 --> 04:37.260
Delete.

04:37.980 --> 04:39.140
Done okay.

04:39.300 --> 04:43.740
It should now all be nice and empty okay.

04:43.900 --> 04:46.220
Pipedrive is cleared.

04:46.340 --> 04:48.980
Next up we got to make ourselves a PDF.

04:49.020 --> 04:49.740
Okay.

04:49.820 --> 04:52.660
So I've made a PDF and this is what it looks like.

04:52.700 --> 04:53.740
It's just a simple PDF.

04:53.740 --> 04:57.260
It's got a PDF and it says ideal customer profile.

04:57.300 --> 05:00.900
Senior member of the finance team at a mid-market consulting firm in the US.

05:01.180 --> 05:05.340
Ideally not C-suite, but a director, something like that.

05:05.380 --> 05:08.010
Senior enough to be a decision maker, but still hands on.

05:08.010 --> 05:13.410
So it's like a blurb that you might get to describe the perfect customer that you're looking for to

05:13.450 --> 05:14.850
hunt for leads.

05:15.130 --> 05:16.650
Okay, we've got that.

05:16.650 --> 05:19.850
And now all we need to do is execute the workflow.

05:20.010 --> 05:26.050
I think we can keep this one in test mode, or we try it out once and then drop this PDF into our ICP

05:26.090 --> 05:28.170
file drop and see what happens.

05:28.210 --> 05:29.890
Well, look, I'm not gonna fib.

05:30.130 --> 05:36.010
I just ran it and it didn't work because there were a couple of bugs which I have tracked down and fixed.

05:36.090 --> 05:40.610
So rather than just go back and pretend that it worked, first time I thought I'd be honest, it didn't.

05:40.610 --> 05:45.290
And you may have spotted the mistakes I made, in which case, congratulations and foolish me.

05:45.330 --> 05:46.770
Let me fix them now and show you.

05:46.770 --> 05:50.370
And also, it's sort of insightful to see how you you figure out what's going wrong.

05:50.410 --> 05:51.210
The first.

05:51.250 --> 05:57.690
The first mistake I made is in the Revops subagent right here that I did a silly thing.

05:58.050 --> 05:59.410
You look at this field right here.

05:59.450 --> 06:00.970
Sales lead description.

06:01.010 --> 06:05.770
And what I put in here was the description of what the sales lead description should be.

06:05.810 --> 06:07.490
Well, that was all getting confused.

06:07.530 --> 06:11.430
This is here as if that's the value that that field should always take.

06:11.470 --> 06:12.910
That's not what I meant to do.

06:12.910 --> 06:14.390
So remove that.

06:14.390 --> 06:15.070
Cut it.

06:15.070 --> 06:17.590
This should be set by the model.

06:17.590 --> 06:20.350
It needs to provide the sales lead description.

06:20.350 --> 06:22.870
And then I can click here to add a description.

06:22.870 --> 06:25.030
And that's where I can put in my text.

06:25.070 --> 06:28.270
That is the actual description I put that in.

06:28.270 --> 06:32.270
So it was always passing that description to the Subagent I was like, what's going on?

06:32.430 --> 06:36.230
Uh, is it such a classic kind of flub that you can make?

06:36.270 --> 06:38.350
And once you've made it, it's quite hard to see it.

06:38.470 --> 06:39.710
Uh, so there we go.

06:39.710 --> 06:41.750
So that fixes that one.

06:41.790 --> 06:43.550
There's always a simple explanation.

06:43.870 --> 06:45.750
Uh, and then, uh, what was another thing?

06:45.750 --> 06:51.670
I did this if, uh, this if here, uh, you can see that this is taking this output and asking if it's

06:51.670 --> 06:52.870
equal to true.

06:52.870 --> 06:55.150
But this test is confusing.

06:55.150 --> 06:57.710
This is a test that's in the string category.

06:57.710 --> 07:02.350
This is saying is the result of this equal to the text true as a word.

07:02.350 --> 07:03.510
That's not what we want.

07:03.510 --> 07:07.190
We want to be thinking of this as a boolean a true or a false.

07:07.230 --> 07:11.060
And we want to say if it's true, then then take the true route.

07:11.060 --> 07:12.780
That's the right way of doing it.

07:12.780 --> 07:13.340
Okay.

07:13.380 --> 07:15.220
Maybe you saw both of those, in which case.

07:15.220 --> 07:15.860
Great.

07:16.140 --> 07:18.700
And then there was another thing that's that's a little bit more subtle.

07:18.740 --> 07:19.180
Okay.

07:19.220 --> 07:25.780
And the other mistake is over in our revops subagent.

07:25.940 --> 07:30.740
Um, and this is a curious one because I thought this was working, so I think maybe I didn't save it

07:30.740 --> 07:31.460
or something.

07:31.660 --> 07:36.980
But if you go into create a person, we need to make sure that in addition to creating the person record,

07:36.980 --> 07:39.580
it's also saving their email address.

07:39.580 --> 07:40.700
And this doesn't seem to be happening.

07:40.700 --> 07:41.660
It's not populated.

07:41.700 --> 07:43.860
I need to add a field email.

07:43.860 --> 07:50.780
This needs to be an expression, and we need to set the email based on the the agent data that's coming

07:50.780 --> 07:52.220
in the AI agent.

07:52.220 --> 07:53.940
This email right here.

07:54.180 --> 07:55.620
That's what's needed.

07:55.620 --> 07:59.100
Save that uh, so that wasn't there.

07:59.100 --> 08:04.100
And so emails were being put in there blank, which means that it couldn't draft emails.

08:04.340 --> 08:07.940
And now I've got to republish that now that I have saved it.

08:08.180 --> 08:09.780
Uh, so I don't know what happened there.

08:09.780 --> 08:15.680
I don't know whether I somehow didn't save it properly or whether I never put it in there, but but

08:15.720 --> 08:16.960
for whatever reason, that wasn't there.

08:16.960 --> 08:18.720
Maybe it is for you, maybe it's not.

08:18.720 --> 08:20.760
But now we've done that, right.

08:20.920 --> 08:21.600
Okay.

08:21.760 --> 08:22.160
All right.

08:22.160 --> 08:27.760
Back we go to Project Amplify business development business development manager.

08:27.760 --> 08:29.520
Here's our beautiful agent.

08:29.760 --> 08:32.080
And now we should be all ready to go.

08:32.120 --> 08:36.960
We go to the ICP file drop I'm going to drop in the PDF file.

08:37.320 --> 08:37.920
Here it goes.

08:37.960 --> 08:38.480
Uploading.

08:38.480 --> 08:39.280
There it is.

08:39.280 --> 08:40.760
Come back over here.

08:40.800 --> 08:42.720
Execute the workflow.

08:42.840 --> 08:45.280
Fingers crossed the trigger is hit.

08:45.280 --> 08:46.320
It's downloading the file.

08:46.320 --> 08:47.600
It's extracting.

08:47.600 --> 08:49.040
It's going over here.

08:49.320 --> 08:50.440
Everything is underway.

08:50.440 --> 08:52.200
We are now prospecting.

08:52.320 --> 08:54.600
The first of our subagents is running.

08:54.600 --> 09:01.280
This is presumably now connecting through Fire Crawl and through Hunter.io, choosing its tools as it

09:01.320 --> 09:04.120
wishes in order to find us some leads.

09:04.120 --> 09:06.160
They will then be placed into Pipedrive.

09:06.160 --> 09:10.760
It will then draft emails and it will then send me a push notification.

09:10.760 --> 09:12.430
This takes a couple of minutes.

09:12.430 --> 09:15.230
So I'm not I'm not going to give you the running commentary.

09:15.270 --> 09:19.310
Well, I bite my nails and see if I can, uh, work nicely this time.

09:19.310 --> 09:24.230
I will see you in a second, when I will hopefully be the proud recipient of a push notification.

09:24.230 --> 09:27.070
And yes, I am the proud recipient of a push notification.

09:27.070 --> 09:27.990
And here it is.

09:27.990 --> 09:29.270
It is a success.

09:29.270 --> 09:31.630
It is the, uh, the happy path.

09:31.870 --> 09:33.190
Okay, well, that's good news.

09:33.190 --> 09:35.990
Let's go back to Pipedrive and we'll be the judge of it.

09:35.990 --> 09:36.870
As usual.

09:36.870 --> 09:41.790
Let's go into let's start with looking at the, um, contacts.

09:41.990 --> 09:42.790
Look at that.

09:42.790 --> 09:49.030
We appear to have five people in here and they appear to have email addresses right here.

09:49.030 --> 09:49.550
That's great.

09:49.550 --> 09:50.830
Do we have their organizations?

09:50.830 --> 09:53.070
We do indeed have their organizations.

09:53.070 --> 09:56.150
And finally, let's go over to leads.

09:56.350 --> 09:57.870
There they are in there.

09:57.990 --> 09:59.630
That's when the lead was created.

09:59.750 --> 10:01.190
It's all set up.

10:01.190 --> 10:06.390
We have people discovered and presumably these are real people and real email addresses.

10:06.510 --> 10:07.750
Uh, they've been discovered.

10:07.750 --> 10:13.050
They've been put there in our database by our agent system.

10:13.250 --> 10:14.770
Anything else that we should be checking?

10:15.050 --> 10:16.210
Let's go take a look.

10:16.250 --> 10:21.970
And yes, the other thing was whether it had drafted emails and yes, it has drafted emails.

10:21.970 --> 10:29.330
There are five nice, crisp, concise emails in my drafts folder sent to the different people here,

10:29.330 --> 10:34.810
and they all seem to be quite well written and they don't have hallucinations, and they are exactly

10:34.810 --> 10:36.010
what we were looking for.

10:36.210 --> 10:44.170
And so here you have it, the first of our agents, which is an autonomous AI agent integrated with

10:44.170 --> 10:45.610
many different platforms.

10:45.610 --> 10:51.170
It's integrated with Fire Crawl, it's integrated with Hunter, it's integrated with Google Drive and

10:51.170 --> 10:55.810
with Gmail and with Pipedrive, and then also with pushover at the end.

10:55.970 --> 11:02.690
And all of these integrations are being nicely orchestrated together to achieve a business goal.

11:02.850 --> 11:09.370
A bunch of emails drafted ready for me to review, tweak and send in order to generate new business

11:09.370 --> 11:12.850
from my Agentic business development team.

11:12.970 --> 11:14.090
Fantastic.
