please summarize this transcript
# tactiq.io free youtube transcript
# This Simple Make.com Automation Generates $20K/mo on Upwork
# https://www.youtube.com/watch/P2Y_DVW1TSQ

00:00:00.080 what's going on guys in this video I'm
00:00:01.240 going to show you a very simple make.com
00:00:03.760 automation that I created four or five
00:00:06.359 months ago that's been generating well
00:00:08.599 over 15 to $20,000 every single month
00:00:11.280 like basically Clockwork and it's
00:00:13.280 incredibly simple um there are two
00:00:15.400 components to this system the first is
00:00:17.880 we have gp4 open AI which is filtering
00:00:22.240 and processing the jobs for me which
00:00:23.720 I'll show you in a sec and then we also
00:00:25.480 have air table which is where I'm
00:00:26.560 dumping all of the records into and
00:00:28.800 that's what that looks like and so in
00:00:30.119 the next few minutes I'm just going to
00:00:31.199 walk through exactly how I built this my
00:00:33.239 rationale for building it um and how it
00:00:35.399 actually like makes me the money that it
00:00:36.760 makes me so let's get into things first
00:00:39.760 things first um there is an RSS feed
00:00:43.640 module which you can use to connect to
00:00:46.680 upwork upwork
00:00:48.840 has um an RSS feed kind of feature that
00:00:52.960 allows Freelancers and people applying
00:00:54.600 to jobs like me to create very specific
00:00:57.879 job queries using Boolean connectors and
00:01:00.559 then just query the RSS feed like every
00:01:02.640 hour or two to see if there are jobs
00:01:04.040 that match those
00:01:05.159 specifications so I'm going to leave the
00:01:06.880 link in the video description feel free
00:01:08.640 to poke around and kind of learn more
00:01:09.759 about the way that RSS feeds work in
00:01:11.159 upwork but suffice to say it's just a
00:01:13.080 way to get away from the um upwork kind
00:01:16.080 of user uh interface and then kind of
00:01:18.320 you know do things that scale outside of
00:01:21.240 it and so you see here at the very top I
00:01:23.280 have a URL setup it's htps www.b.com AB
00:01:27.360 feed jobs RSS that's going of like the
00:01:30.240 the syntax and then question mark Q
00:01:32.720 equals and this is the query that we're
00:01:34.439 putting in and all I did was I put in
00:01:36.159 automate the purpose of this was to be
00:01:38.479 as broad as humanly possible for my
00:01:40.439 target category because um I'm doing the
00:01:43.240 filtering later on using AI so I you
00:01:46.240 know if you think about it logically it
00:01:47.360 makes sense to go as wide as humanly
00:01:48.880 possible on the front end so that top of
00:01:50.200 your funnel is really wide and then to
00:01:51.560 narrow it down uh using AI there's no
00:01:54.240 point to filter ahead of time here
00:01:56.200 because you know I've just I've just
00:01:57.640 been I've just sort of like um accepted
00:02:00.119 them going to use AI to do this
00:02:01.079 filtering I'm sorting based off recency
00:02:03.360 that just means that uh the most recent
00:02:05.119 jobs come first makes sense right
00:02:07.039 because people on upward typically just
00:02:08.560 hire within the first 24 hours if you're
00:02:10.440 there within the first 24 hours great if
00:02:12.280 you're there within the first two hours
00:02:13.440 even better um job type is both hourly
00:02:16.400 and then fixed budget and then I have
00:02:17.800 just a list of sort of like price ranges
00:02:19.280 here that I'm acceptable uh that I'm
00:02:21.160 accepting with a few um you know API
00:02:23.360 parameters and that sort of thing so
00:02:25.440 yeah I'm returning 200 items at a time
00:02:28.000 honestly it's normally like 10 or 15
00:02:30.080 because I query um as you see here once
00:02:32.440 every 90 minutes so I usually don't need
00:02:34.160 to go any more than that in terms of the
00:02:36.400 rest of this automation exactly how it
00:02:37.599 works first I'm parsing the description
00:02:39.920 uh that's just because the description
00:02:41.000 comes through an HTML so I use a parse
00:02:43.440 description HTML to text module which
00:02:45.040 you can find right down here to turn uh
00:02:47.920 that HTML just into plain text and strip
00:02:49.720 away you know all that stuff the next
00:02:51.840 module is basically the secret sauce the
00:02:53.440 entire system and this is why uh it
00:02:55.440 works so exceedingly well there's a
00:02:57.480 module here that I've just called filter
00:02:58.879 job and it's this this module here if
00:03:00.360 you go to open Ai and then you go
00:03:03.560 to uh create a completion yeah there you
00:03:07.319 go create a creates a completion for the
00:03:08.879 provided prompt or chat so it's this one
00:03:11.040 here um and then you access I always
00:03:14.480 like to use the GPT 40613 endpoint
00:03:17.200 although you know you might be watching
00:03:18.840 this like a year from now in which case
00:03:20.319 I'm sure there's like plenty of other
00:03:22.000 endpoints maybe in GPT 5 who knows um
00:03:25.760 and so you know if you want to always be
00:03:27.120 using the most upto-date one then just
00:03:28.439 for model select uh gp4 instead of a
00:03:31.120 specific model number and then here's
00:03:33.959 the prompt that I've set up I have a
00:03:35.760 system prompt that says you're an
00:03:36.720 intelligent administrator that filters
00:03:38.319 jobs and next I have a user prompt that
00:03:40.680 basically just explains who I am and
00:03:42.120 what I do what sorts of jobs am I
00:03:43.640 looking for now I pitched myself as an
00:03:45.519 operations agency I mean really I'm sort
00:03:47.680 of like a oneman consultancy at the
00:03:49.360 moment but I just find it performs
00:03:50.599 better this way uh that builds out
00:03:52.480 Outreach systems CRM systems project
00:03:54.040 manag systems no code systems and
00:03:55.319 integration so just giving it some some
00:03:57.439 background context and then I'm giving
00:03:59.360 it some instructions below is a job
00:04:00.920 description filter it for relevance true
00:04:02.439 or false in Json some of the platforms
00:04:04.200 we use include and then I just gave it a
00:04:05.760 big list of platforms that I'm familiar
00:04:07.239 with if relevant write a short
00:04:09.120 introductory
00:04:11.120 Icebreaker this is important because it
00:04:13.120 saves me a ton of time applying to these
00:04:15.040 jobs and I'll show you what that means
00:04:17.199 in a minute then I say note API
00:04:19.160 Integrations are good since we can
00:04:20.160 develop them using no code we don't
00:04:21.639 develop full stack apps we don't use
00:04:23.440 Python telegram blah blah blah we don't
00:04:25.120 work on very tiny projects these are
00:04:27.040 basically just things that you would say
00:04:29.360 hey I'm not interested in this you know
00:04:30.919 Mark these as irrelevant and that's just
00:04:32.800 because all of the projects that I've
00:04:34.000 ever done on these platforms tend to
00:04:35.520 suck people just don't really understand
00:04:37.600 what's involved they charge way too much
00:04:38.840 money that sort of thing and then for
00:04:40.880 the Icebreaker or introduction component
00:04:43.280 I have some example client projects here
00:04:44.759 that I've worked on and I just use that
00:04:45.960 as sort of just like a you know draw
00:04:47.759 from this um when you're when you're
00:04:50.000 pitching now the next thing I do is I
00:04:52.080 just give it a bunch of examples gp4 and
00:04:54.360 other related language uh models tend to
00:04:56.600 perform really well after you give them
00:04:58.240 at least two or three examples of the
00:05:00.520 input that you'll be giving it and then
00:05:02.479 the desired output and so in this way
00:05:04.400 it's called like in context learning
00:05:05.919 you're basically like training it uh
00:05:07.680 just within one prompt window to you
00:05:10.039 know learn and kind of like assess your
00:05:12.680 preferences here so for instance this is
00:05:15.000 um me Ro user and then I just paste it
00:05:17.160 in an upwork job description exactly how
00:05:19.000 it comes from um the upwork RSS feed so
00:05:22.360 it learns the
00:05:23.280 formatting and then the way that I am uh
00:05:26.600 pushing this out is I have like an
00:05:27.919 assistant uh prompt next and then I
00:05:31.319 teach it basically what Json format I
00:05:33.160 want it to use so result in this case is
00:05:35.360 false reason this is about writing
00:05:37.000 nothing to do with systems and then
00:05:38.199 Icebreaker because it's false there's no
00:05:41.039 Icebreaker the reason to do it this way
00:05:44.000 and the reason to have it right a reason
00:05:45.560 is both because you want it to kind of
00:05:47.400 walk you through its thought process so
00:05:49.240 to speak um if you ever need to do any
00:05:50.800 debugging or logging uh it costs like an
00:05:53.120 exceedingly small amount of money to do
00:05:54.440 this just like a few extra cents uh well
00:05:57.000 probably like a portion of a scent or
00:05:58.560 something like that um and then I find
00:06:00.160 the performance is usually a little bit
00:06:01.240 higher if it has to like speak through
00:06:02.400 its own
00:06:03.280 rationale uh and then I just yeah I just
00:06:05.360 like rinse and repeat basically all I
00:06:06.880 did was I just ran the RSS feed once and
00:06:09.639 then I just looked at the jobs and I
00:06:10.880 manually categorized them and then yeah
00:06:12.360 I did this like four or five
00:06:14.000 times um this is an example of a job
00:06:16.280 that looks good to me air table expert
00:06:18.039 needed I do tons of work in air table if
00:06:19.639 you did not already guess by the fact
00:06:20.919 that this whole RSS feed system is built
00:06:22.840 in a table um this is what the output is
00:06:25.680 going to look like so result true reason
00:06:27.560 involves automating air table which
00:06:28.720 aligns their experience and systems no
00:06:30.120 code tools Icebreaker and then I have a
00:06:32.759 very particular uh sort of like approach
00:06:36.199 I like to take to applying to these jobs
00:06:37.639 I'll always say something like hey I'm
00:06:38.880 confident I'm the guy you need for this
00:06:41.120 and it's very putting my balls on the
00:06:43.440 table so to speak uh but I find it works
00:06:45.240 extremely well and then I'll always put
00:06:47.960 some like huge social proof sort of deal
00:06:50.639 so in this case I use air table to
00:06:51.759 manage a copyrighting company that is
00:06:53.479 around 800k a year we make heavy use of
00:06:55.720 interfaces and well that's actually more
00:06:57.599 now we make heavy use of interfaces and
00:07:00.240 some less known air table features I
00:07:01.479 also routinely build air table flows
00:07:03.000 databases Etc so um if you guys kind of
00:07:05.960 see where I'm going with this I'm using
00:07:07.479 it to build like a brief little
00:07:09.280 introductory Icebreaker that'll seem
00:07:10.879 very customized to the job specifics uh
00:07:13.720 that I can just use to paste into the
00:07:15.400 application window next is some more
00:07:18.199 examples more examples and I'm not going
00:07:19.840 to beat a dead horse but suffice to say
00:07:21.560 at the very end what I finally do is I
00:07:23.720 have one user prompt with the title and
00:07:25.680 then the description that I'm pulling
00:07:26.759 from the RSS feed I have a token count
00:07:29.440 250 with like a pretty low temp because
00:07:30.960 I want it to be uh pretty consistent and
00:07:33.560 then yeah and then I'm off to the races
00:07:35.919 now the best way to work with gp4 or
00:07:38.199 just like any type of AI completion
00:07:39.919 models that arep putting in Json so
00:07:41.440 always just add a parse Json module
00:07:43.080 after so go down here and click parse
00:07:45.360 Json it's just connected hypothetically
00:07:47.520 the Json string that you're looking for
00:07:49.120 is under choices message content and you
00:07:51.759 can already see it here so all this pars
00:07:53.919 Json module is going to do is it's going
00:07:55.199 to turn result false into basically like
00:07:57.360 a make.com object like this reason
00:07:59.800 whatever result false Icebreaker yada
00:08:01.680 yada and that's just so that we can use
00:08:03.080 it later
00:08:03.960 on then uh I check to see if the job is
00:08:06.599 relevant if it is we can proceed uh if
00:08:09.280 so then we will get the budget of the
00:08:11.199 job using just a bunch of like um I
00:08:14.520 guess like true or false switch stuff so
00:08:16.960 if description contains the word hourly
00:08:18.400 range then it's probably an hourly range
00:08:19.919 job if it doesn't contain the word
00:08:21.400 hourly range then it's probably a fixed
00:08:22.800 price job if it's an hourly range job
00:08:24.840 then we're getting the split of a get of
00:08:27.599 a split the word description and divided
00:08:30.000 by you know or cut by this hourly range
00:08:32.000 thing I'm not going to go super deep
00:08:33.320 into that um because you know upwork
00:08:35.320 tends to change this every once in a
00:08:36.479 while and so sometimes I got to jump in
00:08:37.839 here every few months and then make make
00:08:39.559 a few edits uh and then just because of
00:08:42.599 the way that the like in my upwork RSS
00:08:46.440 feed I have a column called um like
00:08:49.880 budget and then I have another one
00:08:50.920 called like hourly range so just because
00:08:52.279 of the way that I've set my own up I
00:08:53.600 need a router here that cuts between
00:08:55.440 hourly and then Project based jobs and
00:08:58.200 then if it's an hourly job then I'll set
00:09:02.120 a payment model to equal to hourly I'll
00:09:03.680 set a budget Min budget Max all the
00:09:05.480 stuff here uh which basically just pulls
00:09:07.640 from fields in the RSS feed and at the
00:09:10.120 end of it I'll add an hourly job where
00:09:12.440 I'll get the title I'm removing the word
00:09:14.560 upwork just because there's no point to
00:09:16.320 including that upwork always appends the
00:09:19.079 word upwork to all their jobs the
00:09:20.320 description that we parsed earlier the
00:09:22.200 date posted introduction is an
00:09:24.360 icebreaker and uh the Icebreaker is what
00:09:26.519 we generated previously and then you'll
00:09:28.040 also see that I have a template here and
00:09:30.519 uh the template is just like a copy and
00:09:32.640 paste thing that's very long and very
00:09:34.640 exhaustive and my rationale behind this
00:09:36.920 on upwork is always the vast majority of
00:09:38.760 people are only going to read the first
00:09:39.959 paragraph and think ah this guy really
00:09:41.440 knows his stuff I got to work with him
00:09:43.040 but there are some people out there that
00:09:44.079 need just a little bit more context and
00:09:45.959 for the people that need a little bit
00:09:46.880 more context I'll always just like add a
00:09:48.480 giant like almost like a CV essay style
00:09:51.160 thing uh and so this is what my one of
00:09:53.600 my templates looks like I offer some
00:09:55.160 case studies and that sort of deal which
00:09:57.440 is pretty helpful um then I offer the
00:09:59.880 Job Link and then the Min budget Max
00:10:02.200 budget country skills whatever and I
00:10:03.920 click okay all right so that is the make
00:10:06.640 automation you'll see there are some
00:10:08.440 remnants of other systems that I've
00:10:10.160 built and other approaches this is still
00:10:12.040 very much a draft so just kept these
00:10:13.360 down here but ideally you would clean
00:10:14.760 this up a little more I'm going to save
00:10:16.720 my changes uh CU you know I made a
00:10:18.839 couple of tiny ones there and then I'll
00:10:20.720 go back to the suppork RSS feed and
00:10:22.519 here's what it looks like and how it
00:10:23.920 works we got the title in this column
00:10:27.200 the description in this column I've
00:10:29.680 added a status field equal to intake for
00:10:32.800 all new jobs that come in and this is
00:10:34.279 just so that I know which jobs I've
00:10:35.399 applied to which ones I haven't so
00:10:36.560 there's intake applied irrelevant no
00:10:37.959 longer available there's a button here
00:10:40.160 with a URL column and if I click this I
00:10:43.399 basically go directly to that upward
00:10:45.680 job uh then there's also space for a
00:10:47.839 loom video now I don't do loom video for
00:10:50.120 every application but there's some
00:10:51.279 applications out there that are very
00:10:52.440 very high value I'm talking like 15 20
00:10:54.560 $30,000 in you know let's say a 3mon
00:10:56.920 period uh for jobs that I feel or in it
00:11:00.200 that are extremely high value what I'll
00:11:02.120 do is I'll actually jump on that page
00:11:05.040 I'll click that Loom button which I'm
00:11:06.360 not going to do now because it would
00:11:07.240 screw up my recording uh and then I will
00:11:09.200 just like explain who I am and what I do
00:11:12.200 and then when I'm done with that I will
00:11:13.720 paste in the video URL right here so
00:11:16.720 let's just say this is hypothetically
00:11:18.120 Loom URL I paste it in and then there's
00:11:20.639 a copiable message um column where all I
00:11:23.560 need to do is just copy it and then
00:11:25.399 paste it into the job description and
00:11:26.760 here's what it looks like Hi here's a
00:11:28.480 video I just order to walk you through
00:11:29.800 this and a few other systems I run for
00:11:31.600 seven figure companies then I just paste
00:11:33.519 the video in um so this copyable message
00:11:36.200 is basically like a formula field which
00:11:38.959 concatenates whatever my introduction is
00:11:41.680 uh the video URL and then the template
00:11:44.200 at the very end um and so this way it's
00:11:45.959 literally just like hey copy paste copy
00:11:48.800 paste if anybody has any additional
00:11:50.440 questions to um you know anything that
00:11:53.800 I've done or or whatnot or maybe they
00:11:55.800 just ask additional questions like the
00:11:57.040 upper question field I mean I'll I'll do
00:11:59.000 do the manually um but a lot of the time
00:12:01.079 I'll just like copy the loom video URL
00:12:02.880 in those cases and I'll just say hey you
00:12:04.200 know I'd love it if you just took a look
00:12:05.360 at this this is going to blow your mind
00:12:07.279 uh and I always just lead like extremely
00:12:08.880 extremely strong because I find that
00:12:10.920 that helps um okay great so to answer
00:12:14.560 some probable questions here if you've
00:12:16.279 made it this far what is the reason why
00:12:19.040 you do an approach like this as opposed
00:12:20.440 to just do it all in upwork well there
00:12:22.079 are a couple the first is that you get
00:12:24.639 to track everything upor is an awesome
00:12:26.519 platform but it does certainly lack a
00:12:27.920 few tracking features make it difficult
00:12:29.480 to know how many proposals have I sent
00:12:31.120 in the last little while how much money
00:12:32.720 have I gotten from these proposals um
00:12:34.480 What proportion of my searches are like
00:12:36.440 irrelevant or or whatnot um number two
00:12:39.600 on upwork itself their filtering process
00:12:41.800 is kind of it's like procedural it's
00:12:43.800 based off keywords and so you can't
00:12:45.360 actually get flexible like we can with
00:12:47.639 AI like because I use an AI filter for
00:12:50.160 instance um I can if a job has the word
00:12:53.399 air table in it you know if I'm doing
00:12:55.320 things procedurally and I try and like
00:12:57.320 look for a keyword like air table and
00:12:58.680 use that to add to the thing it'll
00:13:00.079 always just add that to my upwork RSS
00:13:02.199 feed right but if I use AI to do it AI
00:13:04.399 is flexible enough that it'll look at it
00:13:05.959 and and see the word air table and it'll
00:13:08.000 say h this job may have the word air
00:13:10.360 table in it but is it a project about
00:13:12.560 like Building Systems for air table it
00:13:14.959 might not be maybe it's just uh you know
00:13:16.760 like recipient needs to understand air
00:13:18.120 table but it's actually a job about
00:13:19.279 social media marketing or something that
00:13:21.040 happens extremely extremely commonly and
00:13:23.000 so upwork still uses these procedural
00:13:24.519 filters for the most part um by getting
00:13:26.760 your data into another platform like air
00:13:28.519 table we are capable of using artificial
00:13:30.880 intelligence to filter the jobs and then
00:13:32.279 just to give us a little bit of a
00:13:33.160 helping hand uh the other benefit is of
00:13:35.680 course we can uh proceduralized a lot of
00:13:38.360 the Icebreaker stuff so we can apply to
00:13:40.279 job significantly faster than if we were
00:13:41.680 just doing everything in upw workk uh
00:13:43.360 keep in mind that the vast majority of
00:13:44.519 people on upwork are going to be copy
00:13:45.720 and pasting applications and that sort
00:13:47.120 of thing um and you know competition
00:13:49.399 wise a little bit of customization
00:13:50.959 always goes a long way but I've
00:13:52.399 personally found this to be a really
00:13:53.440 good balance between just like high
00:13:55.040 volumes of applications and then uh
00:13:57.199 still maintaining like a reasonable
00:13:58.360 level of qu quality and then providing
00:14:00.440 the ability to record a loom video is
00:14:02.000 super important too because yeah like I
00:14:04.639 mean I I think the average value of a
00:14:07.120 lot of my upward contracts for
00:14:08.440 Automation and consultation operations
00:14:10.680 and stuff probably around uh like $2,000
00:14:14.360 but every once in a while one will come
00:14:15.720 by that's like 15 grand or maybe it's
00:14:17.360 like a recurring relationship where now
00:14:18.800 I have like a bunch of clients that have
00:14:20.079 been paying me three four five $6,000
00:14:22.079 for the last half year like the value of
00:14:24.000 that contract 36k if it even gives me a
00:14:26.519 1% higher likelihood of getting it by
00:14:29.240 recording a quick little loom video that
00:14:30.720 takes me like literally two minutes then
00:14:32.480 I'm going to do it and this system
00:14:33.800 allows me just to do all of that while
00:14:35.680 also still maintaining um High Velocity
00:14:38.720 so yeah I hope that makes sense uh again
00:14:41.759 we got the air table here then we have
00:14:43.920 the upwork RSS jobs to air table um
00:14:46.440 system over here if anybody has any
00:14:47.920 questions about how this stuff works or
00:14:49.519 just wants to bounce some ideas off me
00:14:50.759 feel free to leave a comment down below
00:14:52.920 uh otherwise like subscribe do all that
00:14:54.639 fun stuff and I will catch you on the
00:14:56.040 next video thank you very much bye-bye