WEBVTT

00:00.160 --> 00:01.360
And so we've arrived.

00:01.400 --> 00:02.080
It's it's it.

00:02.080 --> 00:06.120
This is the last day, the finale, the conclusion.

00:06.320 --> 00:08.320
Welcome to week three.

00:08.360 --> 00:12.440
Day five, the capstone project finale.

00:12.480 --> 00:14.720
For the last time, let's do this.

00:14.720 --> 00:19.720
And it's so gratifying to see us on the top right there as we embark on the last day.

00:20.120 --> 00:22.400
And first up as as usual, a quick recap.

00:22.400 --> 00:26.880
I will keep it quick, but we covered such important material yesterday that I'd be doing a disservice

00:26.920 --> 00:28.160
if I didn't mention it again.

00:28.400 --> 00:29.840
Context engineering.

00:29.840 --> 00:31.080
It's the name of the game.

00:31.080 --> 00:37.360
It's all about squeezing into your limited input context, everything that you need to give you the

00:37.360 --> 00:43.520
best possible chance at the LM, generating outputs consistent with your business goal.

00:43.720 --> 00:44.920
That's what it's about.

00:44.920 --> 00:47.520
And we explored some of the different techniques yesterday.

00:47.680 --> 00:50.880
And one of them of course, is thinking about subagents.

00:50.880 --> 00:56.240
If you've got too many tools, maybe find a bunch of them that you can break off and give it to a separate

00:56.240 --> 01:00.160
agent that is sort of delegated to perhaps using a tool.

01:00.400 --> 01:03.100
And these were some of the points that we covered.

01:03.140 --> 01:09.620
It's it's good both for having reusable, testable steps and also for reusing the same subagent in different

01:09.620 --> 01:10.220
flows.

01:10.260 --> 01:15.780
It's good for the context window, and it's easy to implement in using sub workflows.

01:15.820 --> 01:22.220
But remember, my caveats don't just create subagents because it sounds like that's what how we would

01:22.220 --> 01:23.740
organize humans to do it.

01:24.060 --> 01:30.140
Be aware of the fact that more subagents you're kind of you're fixing the way the problem is solved

01:30.140 --> 01:34.780
by organizing it into these, into these blocks, these subagent building blocks.

01:34.780 --> 01:37.540
And that might not be the most efficient way to solve the problem.

01:37.540 --> 01:42.380
And you might want to give your agent the autonomy to decide how it wants to go about doing it.

01:42.380 --> 01:46.980
So be aware that you are you are limiting the creativity of your overall agent.

01:46.980 --> 01:51.820
If you force it into different subagents and that there's there's more to be done.

01:51.860 --> 01:58.260
Building with subagents takes more time, although it tends to be easier to test and more bulletproof.

01:58.260 --> 02:04.600
And then the whole thing was wrapped up with just this, this slide I gave you last time on what is

02:04.600 --> 02:08.960
it that makes a good agentic commercial solution?

02:08.960 --> 02:13.840
And I had started with the things that are the kind of the red flags, the anti-patterns.

02:13.880 --> 02:17.440
The first of them, once again, is what I called at the beginning of the human trap.

02:17.600 --> 02:22.120
This this time when people tend to to just sort of come up with names of agents and that's how they

02:22.120 --> 02:22.720
begin.

02:22.760 --> 02:28.560
They often start a project by drawing an agent architecture rather than starting from how do I solve

02:28.560 --> 02:29.360
this problem?

02:29.400 --> 02:31.200
Always a always a concern for me.

02:31.360 --> 02:34.400
And then similar is when people are very solution focused.

02:34.400 --> 02:36.120
I need an agent to do this.

02:36.280 --> 02:43.920
Uh, and, and then, uh, generating, building an agent whose goal it is just to generate content.

02:43.920 --> 02:46.880
And that in of itself is the goal.

02:46.880 --> 02:48.840
That's a, that's a warning sign for me.

02:48.880 --> 02:50.200
Provide a business strategy.

02:50.200 --> 02:55.800
I have an agent that makes business strategies when they haven't yet identified the core problem.

02:56.120 --> 02:58.240
These are all quite similar, these red flags.

02:58.280 --> 02:59.920
And they often come together.

03:00.160 --> 03:00.560
All right.

03:00.560 --> 03:01.880
So those are the things to watch out for.

03:01.880 --> 03:08.460
What are the things that you want to see in an agentic solution, you want to see three things a clearly

03:08.460 --> 03:14.740
identifiable business problem that makes sense, that resonates, that hasn't just been cooked up to

03:14.780 --> 03:16.740
to match a solution that someone wants to build.

03:16.740 --> 03:20.460
It really is a pain point, something concrete to be fixed.

03:20.620 --> 03:26.500
And then along with that, a metric or multiple metrics that will allow you to evaluate whether that

03:26.500 --> 03:32.500
business problem is solved with, ideally with with something established up front that says if we reach

03:32.500 --> 03:34.940
this level, then we've achieved success.

03:35.260 --> 03:41.860
And then along the way, rigorous testing to demonstrate you're meeting that criteria.

03:41.860 --> 03:49.100
And you know that my usual go to rant that a lot of this field is about R&amp;D and experimentation.

03:49.100 --> 03:53.820
And so when people say, I'm not sure whether I should use this architecture or this architecture,

03:53.820 --> 03:57.540
this approach or this approach, should I use tools or structured outputs?

03:57.580 --> 04:01.340
The typical go to answer is look, you should try both.

04:01.380 --> 04:02.420
Experiment.

04:02.460 --> 04:08.920
Measure your evaluation metric with both of them and pick the one that gives you the best business outcome.

04:09.040 --> 04:14.640
This is a very empirical experimental science, and there's no shortcut for R&amp;D.

04:14.880 --> 04:16.480
And there you have it in a nutshell.

04:16.480 --> 04:19.120
That's my big takeaways for the course.

04:19.440 --> 04:21.520
And I know probably some of you are like okay.

04:21.520 --> 04:24.120
Yeah, we know that because you've said it five times already.

04:24.160 --> 04:24.680
And I know.

04:24.680 --> 04:28.000
But sometimes repetition helps and it's important to get this across.

04:28.040 --> 04:33.280
This is this is, I think, the most common way that people go off track when they're applying, particularly

04:33.280 --> 04:38.800
people who tend to come from a technical background, who are used to doing things the software way,

04:38.800 --> 04:41.320
when there often is a set way of doing things.

04:41.320 --> 04:43.400
This is something that does tend to trip people up.

04:43.400 --> 04:48.080
And since I'm from that background, I can say with confidence that it's something that in the early

04:48.080 --> 04:49.960
days I struggled with too.

04:50.560 --> 04:55.120
Okay, thank you for bearing with me for that final recap.

04:55.160 --> 04:56.160
The last recap.

04:56.160 --> 04:57.480
You don't have to put up with it anymore.

04:57.640 --> 05:02.720
It's time for us to go back to our capstone project and finish things off.

05:02.800 --> 05:09.100
And the capstone project you'll remember called Amplify Your Business, something that is great that

05:09.100 --> 05:16.180
it can be applied to your own personal work that you do to your company, to your day job, to to your

05:16.180 --> 05:17.980
agency, to your clients.

05:18.100 --> 05:20.620
It's so generally applicable.

05:20.620 --> 05:26.460
It's about building a platform that can generate new business, bring in revenue.

05:26.460 --> 05:28.220
And I'm giving you a starting point.

05:28.260 --> 05:29.980
There's many different directions you can take it.

05:29.980 --> 05:36.500
So the agent we started working on last time is the first of two agents, the outbound sales agent.

05:36.820 --> 05:37.900
We we built.

05:37.940 --> 05:40.020
We've now built all three sub agents.

05:40.060 --> 05:43.020
A few days ago, we built the prospecting Subagent.

05:43.340 --> 05:47.740
Then yesterday we built the Revops and SDR sub agents.

05:47.740 --> 05:51.700
And now we need to put them together into a business development manager agent.

05:51.700 --> 05:53.980
That's going to take advantage of these sub agents.

05:54.020 --> 05:55.180
We're going to go and do that now.

05:55.180 --> 06:01.940
And the first step is that the sub agents are set up to, to to have like a chat trigger or one of them

06:01.940 --> 06:03.740
I think is just a button to trigger it.

06:03.740 --> 06:08.690
And we need to change that so that it can be triggered by the business development manager.

06:08.690 --> 06:11.530
So we'll go and do that and turn them into real subagents.

06:11.530 --> 06:18.170
And then then we're going to be ready to make our manager agent and bring together this agent number

06:18.170 --> 06:19.730
one outbound sales.

06:19.890 --> 06:21.770
Let's go back to Nan okay.

06:21.810 --> 06:29.210
Here I am back in and in the home overview page I'm going to flip over to the amplify project, go into

06:29.250 --> 06:36.410
business development, bring up our SDR sub agent, the sub agent that grabs people and Pipedrive shoves

06:36.410 --> 06:39.570
them and creates draft Gmail emails.

06:39.970 --> 06:44.850
Okay, this is currently triggered by pressing the Execute Workflow button.

06:44.850 --> 06:47.570
Let's get rid of that trigger instead of that.

06:47.770 --> 06:48.610
Sorry, that's what I meant to do.

06:48.610 --> 06:49.010
There we go.

06:49.010 --> 06:49.570
Delete.

06:49.610 --> 06:51.970
Now press tab to create a new trigger.

06:52.010 --> 06:56.050
The trigger we want is this one when executed by another workflow.

06:56.250 --> 06:58.970
And we're going to say over here input data mode.

06:59.010 --> 07:00.330
Just accept all data.

07:00.330 --> 07:01.330
We don't actually care.

07:01.330 --> 07:05.770
This thing is something which is just going to kick off this process.

07:05.930 --> 07:06.650
There we go.

07:07.070 --> 07:11.350
Uh, and now save that, and you may remember, there's one more thing we need to do for this to work,

07:11.390 --> 07:13.830
for it to be able to be executed by another workflow.

07:13.870 --> 07:17.030
This SDR subagent needs to be published.

07:17.150 --> 07:18.150
So there we go.

07:18.190 --> 07:19.110
We publish it.

07:19.150 --> 07:20.870
Workflow is published.

07:20.910 --> 07:22.470
Got it done.

07:22.830 --> 07:23.870
Uh, okay.

07:24.190 --> 07:24.750
That's that.

07:24.750 --> 07:26.390
That's the SDR subagent.

07:26.430 --> 07:30.030
Now we go back here and back into business development.

07:30.030 --> 07:31.710
It's time for us to do Revops.

07:31.710 --> 07:33.030
So here is Revops.

07:33.070 --> 07:38.790
It is, of course, the agent that first takes some message, turns it into structured outputs, and

07:38.790 --> 07:41.830
then stores that in Pipedrive.

07:42.070 --> 07:47.470
Okay, just before we do this, let me just remove this chat message received right here before we put

07:47.470 --> 07:48.710
it in the right trigger.

07:48.710 --> 07:53.230
I think we can make this a little bit tidier to clean it up for the fact that we are we are going going

07:53.270 --> 07:54.270
live with this.

07:54.270 --> 08:00.230
Let's add some stickies, which is a nice practice to make it able to be easily able to be read by other

08:00.230 --> 08:00.710
people.

08:00.750 --> 08:00.990
Okay.

08:01.030 --> 08:04.790
So you remember you press the sticky button over here, we get a sticky note.

08:05.070 --> 08:06.110
Bring this up.

08:06.110 --> 08:10.690
We're going to it's a little bit fiddly this thing, but you get used to it after a little bit.

08:10.730 --> 08:14.570
You bring that up, make it resize it so it fits nicely.

08:14.770 --> 08:21.090
Let's call this, uh, vase data.

08:23.890 --> 08:28.850
Use an agent with structured outputs.

08:29.410 --> 08:31.250
There we go, here we go.

08:31.290 --> 08:32.770
That's our parse data.

08:32.770 --> 08:33.370
Sticky.

08:33.370 --> 08:36.890
And then I'm going to have another sticky note right here.

08:36.890 --> 08:38.210
Make it a little bit bigger.

08:38.450 --> 08:39.690
Move it up there.

08:39.810 --> 08:41.850
Make it even bigger.

08:42.410 --> 08:44.530
Make it nice and flush like that.

08:44.530 --> 08:46.130
And this is going to say.

08:48.530 --> 08:50.450
Load data.

08:53.890 --> 09:05.010
And this is going to say store uh, the um prospect data in Pipedrive.

09:06.530 --> 09:07.690
There we have it.

09:07.690 --> 09:08.990
I think that's a go.

09:09.430 --> 09:10.510
Let's have a look at how that looks.

09:10.550 --> 09:12.510
Yeah, that looks nice and clean now.

09:12.550 --> 09:13.350
Very good.

09:13.390 --> 09:14.670
Okay, now we've done that.

09:14.670 --> 09:15.310
Housekeeping.

09:15.350 --> 09:16.350
Let's add the trigger.

09:16.390 --> 09:17.870
Okay, here we go.

09:17.910 --> 09:18.670
Add the trigger.

09:18.670 --> 09:20.470
We are not going to trigger manually.

09:20.470 --> 09:24.710
We're going to trigger when executed by another workflow.

09:24.990 --> 09:25.950
All right.

09:25.990 --> 09:28.310
And now we're going to have to be a little bit more careful with this.

09:28.310 --> 09:29.790
Let's first connect it in.

09:29.830 --> 09:32.950
Remind ourselves what this agent does.

09:32.950 --> 09:38.790
It has a system prompt based on the input from the user which describes a sales lead.

09:39.150 --> 09:41.070
Okay fine.

09:41.110 --> 09:42.670
Let's go back here.

09:42.670 --> 09:44.950
So there should be a field in here.

09:44.950 --> 09:50.790
And that field name should be something like sales lead description.

09:52.510 --> 09:54.710
And this is a type string.

09:54.870 --> 09:57.190
So that is the input schema.

09:57.230 --> 09:59.430
Sales lead description.

09:59.790 --> 10:00.470
Okay.

10:00.790 --> 10:02.910
Now of course we still need to do something.

10:02.910 --> 10:07.390
We need to update this so that it's expecting that to come in.

10:07.390 --> 10:10.650
Right now it's expecting a chat trigger node to be coming in.

10:10.850 --> 10:14.450
Okay, so this assumes a connected chat trigger node which is wrong.

10:14.450 --> 10:16.370
We want to define it ourselves.

10:16.370 --> 10:22.890
We want to have an expression and we want this to be dollar JSON dot.

10:22.890 --> 10:26.970
And then the field that we just defined which is sales lead description.

10:27.010 --> 10:29.530
Sales lead description is what will be passed in.

10:29.650 --> 10:33.210
So that is hopefully now going to be exactly what it's expecting.

10:33.490 --> 10:35.650
And then that's going to be nice.

10:35.650 --> 10:41.250
It's going to make sense and everything is hopefully going to work okay.

10:41.610 --> 10:45.170
What else to be done I think you know I hope you know one more thing to do.

10:45.210 --> 10:48.770
Yes we should we should publish it, save it first and then publish.

10:49.050 --> 10:50.010
Off it goes.

10:50.170 --> 10:52.530
That is now workflow published.

10:52.690 --> 10:55.610
We have everything set up properly.

10:55.650 --> 11:02.650
Here is our very robust looking Revops sub agent waiting to be executed by another workflow.

11:02.650 --> 11:06.850
An example of a sub agent that we've implemented using a sub workflow.

11:07.410 --> 11:10.890
Okay, now it's time for the agent.
