Landing page refresh
Verified payment, a matching budget, and strong profile evidence.
Score opportunities and draft tailored proposals on Upwork. Start controlled LinkedIn runs for Easy Apply and external employer websites—all with the AI access you already use.
Verified payment, a matching budget, and strong profile evidence.
Upwork stays review-first and manually submitted. LinkedIn runs work through the jobs you choose, with auto-submit you can turn off.
Compare job scores, saved filters, and AI qualification against your profile.
Generate a tailored proposal or reply and place it into the right fields.
Check every claim, edit the words, and press Upwork’s Send or Submit button.
Set your search, filters, application type, and target number of roles.
It handles Easy Apply and supported external employer forms with your saved answers.
Pause, skip, or quit anytime. Turn auto-submit off when you want final review.
Explore Upwork drafting and job selection, LinkedIn application runs, and the AI tools shared across both workflows. Submission controls depend on the platform.
See what’s new in this releaseon job posts and on the "Submit a Proposal" form, including invitation forms. One click reads the full post (expanding truncated descriptions), your imported profile and your standing instructions, then drafts the cover letter, the screening answers and the dropdown choices and fills them into the form for review. It never submits.
answers in the client's own order and vocabulary, states a concrete plan, includes one proof sentence when the post asks for expertise, and keeps letters at proposal length. Length, tone and sign-off follow your settings.
when a post asks for a code word or phrase, it is placed on the first line, verified after drafting, and kept out of the screening answers. Only words the client actually wrote in the post count.
type a few words into the cover-letter box before clicking and they steer the draft (a price to quote, a point to make, a tool the client uses).
a second model call checks every draft against a checklist (instructions followed, deliverables mapped, no invented facts, no filler) and rewrites it when it fails.
picks up to four of your portfolio items, past Upwork jobs and certificates that match the post and attaches them to the proposal.
when a post asks for something outside your facts, the letter says the closest true thing and leads with the plan; it never invents experience and never apologises for a gap.
(Claude providers): identifies the client's company from the post, confirms it, and folds one or two sourced facts into the letter when they change the plan.
any domain named in the post is checked (SPF lookup count, DMARC policy, DKIM selectors, mail host) and the finding can be quoted in the letter.
the writer sees the sentences used in your last proposals and a past proposal that got a reply, and avoids repeating itself.
if page insertion is unavailable, the draft is shown for copying instead of being inserted.
in any conversation: reads the whole thread and the proposal behind it, then either suggests the best next message or writes what you tell it to say.
the draft is placed in the message box; a panel takes change requests ("shorter", "propose Tuesday instead") and regenerates. Sending is always done by you with Upwork's own send button.
(search results, Best Matches, Most Recent): a 1–5 badge computed from client quality (payment verified, money spent, rating), budget fit against your profile rate, keyword hits, competition (proposals already sent) and freshness, with a short "why" beside it.
include and exclude keywords (title, description, skills; any or all), hourly and fixed-price ranges, hide jobs without a budget, experience level, payment verified, minimum client spend and rating, client countries to include or exclude, a cap on proposals already sent, posted-within hours, and a minimum score. Cards that fail can be shown as usual, dimmed or hidden; the failing rule is shown on the card.
a filter runs as an Upwork search with its keywords and rules applied, so the results page arrives already scored and ranked.
docked to the page: pick the filter, set the minimum score, see the page's jobs newest first (or best first), switch between All, Qualified and Worth-it views, and see which rules are failing most.
one job or the top five at once are judged against your facts and profile. Each gets Qualified, Maybe or Skip, a fit score, two concrete reasons and a "worth a proposal" mark; results are remembered per job.
in Settings → Jobs.
when Upwork or LinkedIn change their pages, the extension keeps reading them. It first finds the job cards by the page's structure; if a page still shows jobs it cannot read, it asks your own AI once for a new way to read that page, tests the answer on the live page and keeps it only if it works. Covers Upwork's job lists (search, Best Matches, Most Recent), the Upwork job panel, LinkedIn's job search, LinkedIn conversations, LinkedIn people search results, LinkedIn profiles, and from 0.13.0 also LinkedIn posts and their comment boxes (Comment with AI, Post with AI), the home feed's post cards and their Like, Comment, Repost and Attend buttons (engagement campaign) and the people list in an event's invite window. Settings → Page reading shows what each page uses, with a switch for the AI repair and "Forget learned rules".
when Claude's or ChatGPT's session was revoked, the key is wrong or your access ended, the run says the AI needs reconnecting and waits, charging no job for it, and carries on by itself the moment the provider is connected again in Settings (or on Try now, or after half an hour). A real outage or rate limit is waited out with waits that grow across jobs.
in the toolbar popup: two side-by-side buttons. Upwork opens first unless you make LinkedIn the default (one click in the popup, or Settings → LinkedIn).
type a job title or describe the role in your own words (LinkedIn's AI job search understands descriptions), add a location, pick On-site / Remote / Hybrid, date posted, experience level, job type and sort order, set a target number of jobs, and press Start. LinkedIn opens on that search with the Easy Apply filter already on.
the classic job search and the new AI-powered job search, plus Recommended / Collections pages and single job pages.
docked to the LinkedIn page: scans every job on the results page, marks which are Easy Apply and which you already applied to, and lets you tick the ones to apply to. "Apply to N selected" starts; the panel shows Job i of N, the current job and step, applied / skipped / failed counts, a speed control (1x to 3x) and Pause, Skip and Quit buttons, like a human assistant working through the list.
opens each job, presses Easy Apply, picks your resume by name, fills every step of the form, presses Submit, closes the confirmation and continues to the next job; when the page is done it turns to the next results page until the target is reached. Jobs applied to earlier are never repeated.
phone, email, city, years of experience (overall and per skill), salary, notice period, work authorization, visa sponsorship, relocation, on-site and remote preferences, education, languages and a standard message are saved once under Settings → LinkedIn and used on every form. Your own rules ("when the question contains X, answer Y") come next. Only questions none of that covers go to your chosen AI provider, which answers from your Facts Bank and profile; every AI or hand-typed answer is remembered and reused, and you can edit or delete remembered answers at any time.
an AI answer it is not confident about is filled in and shown for a quick check; a question nobody can answer pauses the run on that job so you answer in LinkedIn's own form and press Continue (or choose "skip the job" behaviour instead). If nobody answers within a few minutes, the run moves on by itself.
auto-submit is on by default and can be turned off per run or in settings; the agent then stops on the review step for you to press Submit, and continues once you have.
when a run finishes or is stopped, a results tab opens with the status, jobs applied out of the target, the success rate and the per-job outcomes, and a form to start the next search.
with the answers given on each form, exportable as JSON.
jobs that send you to the employer's own careers site are applied to as well, in the same run. The agent follows LinkedIn's Apply link into a tab of its own, reads the page, fills the form from your saved answers and the Facts Bank (phone widgets with a country picker get your country chosen first, then the national number), uploads the resume you keep in Settings → LinkedIn → External websites, writes a short cover letter when a box asks for one, ticks the required consents (also the ones drawn as a styled box over a hidden checkbox, and required declarations), and submits. It works its way through multi-step forms, forms embedded in a frame from another site (Jobvite, Talemetry, Greenhouse) and job pages that need an "Apply" press first, signs in or creates an account with the email and password kept in settings when a careers portal insists on one, and stops for you (with a Continue button on the site and in the panel) when a CAPTCHA, an email verification or an unknown login is in the way. One approval covers every site; each site gets a time budget (6 minutes by default, counted from the last time the page moved on, three budgets at most) and is marked failed with the reason if it cannot be finished. When a page stops moving, the agent asks the AI for a different way with the page facts (what is scrolled, covered, disabled, empty, and the messages shown) and a wider set of moves (a press by mouse, keyboard or script, a scroll, a key, closing what covers the page, a step back); on the round after that it shows the AI a picture of the tab (Claude and ChatGPT; taken only then, never kept) so icons, steppers, widgets and overlays the outline cannot carry are seen; a job is given up only after five unchanged rounds, and the way that worked is kept in the site's notes. A three-way choice in the popup, the panel and settings — Easy Apply only (the default), External websites only or All jobs — decides which jobs a run applies to; choosing external websites on a filtered results page reloads it without LinkedIn's Easy Apply filter so those jobs are listed, and choosing it while the run waits for LinkedIn's daily limit continues at once with the external-website jobs. The panel explains, with a button to Settings, when the one-time website access has not been granted yet. With "All jobs", LinkedIn's daily Easy Apply limit does not stop the external-website jobs: they continue, and the Easy Apply ones wait for tomorrow. With auto-submit off, the agent fills everything and waits for you before the final Submit on the site too.
an entry Workday has already taken in one of its search boxes ("Sweden (+46)" under Country Phone Code, "LinkedIn" under How did you hear about us?) is read as the field's value, so it is not chosen again every round; the phone number goes into the Phone Number box alone, never into the code box beside it.
on company sites every typed field and every chosen pick list is left for real once filled, and the field being edited is left before a button is pressed, so sites that check or save a field when you leave it (Workday among them) take the value instead of calling it empty after Save; a phone box with its own country picker keeps your country whatever digits it reformats; buttons are named by their own words; the second address line and a referrer's email box are left to the AI; and a page bouncing between two states, or reloading after a press, is recognised as standing still rather than repeated.
the panel shows "External website: <step>" while it works, the popup and settings show the step and any question the site has for you, the history marks these applications as external-website ones with a link to the application page, and the site's tabs close when the application ends.
every wait is random so no two applications take the same time, there is always a pause of several seconds before Submit and between jobs, and after a handful of applications the agent takes a longer break. 3x is the pace of 0.10.0; 1x, the default, waits about two and a half times longer.
when LinkedIn answers "Save this job and apply tomorrow", Easy Apply waits 24 hours and then continues by itself (the LinkedIn tab is reopened if it was closed), with a "Try now" button if you want to check earlier. Meanwhile jobs that apply on company websites keep the run going when website access is allowed. The limit is never guessed from a stuck page: when Easy Apply forms stop opening, the results are loaded afresh and those jobs get another go first.
the first time the LinkedIn answers form opens, blank fields are filled from what the extension already knows — the imported Upwork profile and the Facts Bank (name, email, phone, LinkedIn URL, website, city and country, years of experience, education, languages) — and marked as prefilled until you check and save them.
the agent panel docks to the right edge of LinkedIn's page, next to the job details, and its pop-ups ("Your application was sent", "Update profile") are closed with "Not now" so the next job proceeds.
a run does not stop halfway. When LinkedIn's daily Easy Apply limit is reached, an "All jobs" run carries on with jobs that apply on company websites until Easy Apply is available again; an "Easy Apply only" run asks you first (Yes, company websites / No, wait for Easy Apply) and goes on with company-website jobs by itself if you do not answer within a minute, so your choice of jobs is respected and an unattended run still keeps applying. A failed job is recorded and the run moves on to the next; a streak of failures leads to a quick recovery (pop-ups closed, page read again or reloaded), not a stop. If your AI can't be reached, nothing is sent and the job is tried again after a short wait. When every job in the results is done, it looks for new jobs every 20 minutes. Jobs that failed twice recently are not ticked again automatically.
when an Easy Apply step will not move on (a field the agent does not recognise, a message that keeps coming back, a button in another language), the form is shown to your AI, which fills what is missing and presses the button that moves on. It never presses Submit or anything that leaves the form, and its answers are remembered once LinkedIn accepts the application, so the same question is answered without the AI next time.
on employers' websites the agent keeps notes per site (and per hiring platform, such as Workday or Greenhouse): the route that worked and the last thing that failed, used on the next application there. It asks your AI again after a hiccup before giving up, and changes approach when a page does not react.
when an employer's Apply button opens the form in a new tab or window, or a chain of them, the agent carries on there; sign-in windows are left to the site and a tab that closes leads back to the one before. When the application ends, sent or not, every tab it opened is closed (a switch in Settings → LinkedIn → External websites), and the outcome with its reason stays in the results.
on employers' websites the cookie or consent banner is accepted first, in any frame, so the form behind it (or one that loads only after consent) can be filled.
when a careers site wants an account and no portal password is set, the agent makes a strong one, creates the account and keeps the password in Settings → LinkedIn → External websites so you can sign in later. Your AI only ever sees a placeholder; the extension types the real password, and passwords are never saved with an application's answers.
on careers sites that want an account first, the agent fills the whole form, including styled dropdowns such as a country list, ticks the terms, privacy and data-notice boxes (never newsletter, job-alert or talent-pool ones), answers "How did you hear about this job" with LinkedIn, and presses Register (or the form's Save or Continue) once nothing required is empty.
the Control page on applywithai.app lists the questions waiting and takes the answer right there (a text box, or the question’s own choices); it goes straight to the extension, which remembers it for every later form and lets a run that is going try the jobs that waited. The answer is never kept by the website, never cached and never sent anywhere but the extension; every waiting question is reachable, 25 a page.
when a form asks something only you know and nothing saved answers it (a date of birth, a driving licence, a certificate), the agent never guesses and never stops the run: the question waits in Settings → LinkedIn → Questions for you (the toolbar icon shows how many), the job is set aside, and the run goes on. Answer once and every later form, Easy Apply and company sites alike, uses the answer; the jobs that waited are tried again. Whatever plainly follows from your facts is derived rather than asked: today's date, a start date from your notice period, a salary converted to the currency and period asked, salary expectations, conflict-of-interest and planned-leave declarations, a location you are outside of, a language you do not list, years with a tool or industry.
say once whether you hold one and which categories (such as B); licence questions on every form are answered from it.
forms that take only PDF get a PDF, made by itself from your Word resume (real text, simple layout) or uploaded by you, with a download to check it; a site that turns a Word file down gets the PDF instead.
every "Needs you" moment on a company website (a CAPTCHA, an emailed code, a sign-in) ends by itself after a few minutes; the job is skipped and the run continues towards your target. Sign-in pages with a way to register ("Create a candidate profile") are registered on, and fields meant as bot traps are left alone.
a "Needs you" moment on a company site waits three minutes for you; once two in a row in a run went by with nobody pressing anything, the next ones wait one minute, so an unattended run loses less time to sites it cannot get through. The card on the site, the LinkedIn panel and the popup say which wait applies, and your first press on Continue, Pause, Skip or Stop puts the waits back to three minutes. The hand-over before Submit with auto-submit off always keeps its full time.
on company sites the agent attempts the verification checkbox and Google's supported 3×3 or 4×4 image grids using your existing vision-capable Claude or ChatGPT connection. It sends only the puzzle image and instruction, rechecks replacement tiles, and continues only after a fresh verification response. Stops, uncertain answers, blocks and unsupported challenges are handed back to you rather than retried indefinitely.
file fields carry their section's heading and words, documents/attachments fields take the resume, uploads are checked against what the site shows (PDF fallback, refusals named), and a stuck page gets the resume attached before another way is tried.
your own `@ailavo.com` address on every application, Easy Apply and company sites (company sites since 0.14.8); the agent reads verification codes and links from it and continues by itself. "Email on applications" in Settings → LinkedIn → Company sites chooses the mailbox (default) or your own email; Easy Apply offers the mailbox once it is added to the LinkedIn account's verified addresses.
company websites open in the same window as the LinkedIn tab, so a run keeps going there while you use another Chrome window.
a LinkedIn job run's waits are timed by the extension's background rather than by the tab, so Chrome slowing a hidden tab's timers does not slow the run; the run's tab is kept from being discarded by the memory saver; and a watchdog reloads a page whose run has gone quiet, which carries on from where it was. As long as the computer is on, the run continues. (0.14.3) Since 0.14.4 the same holds for every page the extension works on: company-site applications, all LinkedIn campaigns and Upwork forms. (0.14.4) A run whose tab LinkedIn signed out (it landed on LinkedIn's public site) pauses with a note for you instead of being sent back again and again.
the wait ends on its own even if Chrome was restarted, the extension updated or the computer slept through the time, and the LinkedIn tab is reopened if it was closed.
an entry sorted under a heading in Workday's search results (LinkedIn under Social Media) is chosen from the opened entries, and a pick counts as chosen only once Workday shows it beside the box; otherwise the agent is told what the list offers instead of the form stalling at Save on a field it believed filled.
when a page stops moving, the resume goes into an empty file field once per field and never when the page already shows the file (sites that list uploads apart from the drop zone, such as Oracle Recruiting), so an application no longer carries the same file five times over.
Workday's hidden radios ("Have you worked here before?", "Previously employed by…") are read whole, so No can be chosen and the form moves on; radio questions on other sites that only have a generated name get their real question from the words around them.
Workday's "Select One" style buttons open a list the agent now reads and picks from; when its guess is not in the list, the options the list offers are reported and the right one is chosen next. Job links on a careers search page and forms inside a frame of any container are read too.
iCIMS careers portals, which draw the sign-in, the form and the questions in a frame of their own site, are worked inside that frame step after step; and on every company site a plan such as "open the list, type, choose, Save and Continue" is carried out to its button, where a click that merely opened something used to end the turn.
on company job pages the agent finds the apply control when it says "Solliciteer direct", "Jetzt bewerben", "Postuler" or "Candidati", when only its address says apply, or when its words are drawn beside an empty link laid over a styled button, instead of reporting a page with no apply button.
pressing Enter in a search box with suggestions (Oracle Recruiting's Country, Workday's prompts) picks from the list and never sends the page's form the plain way, which used to land some sites on a server error page and lose the application.
when a site says "Please correct the errors below", the agent is told which fields the site marked as wrong and what they hold, even when they sit in a collapsed section, so the fix goes to the right field.
on a company site the "Give up after" minutes count from the last time the page moved on, and a new page now counts as moving on, so a portal that takes you through eligibility, sign-in, account, form and upload as separate pages (iTrent) is no longer cut off as "standing still" while it is going forward.
when a company site's form is filled, saved and comes back exactly as it was (the same step, the same empty fields, the same words), the agent treats it as a page that did not move rather than as progress, tells the AI the site kept nothing and asks for another way, and gives the job up after its rescue rounds instead of repeating the lap for twenty minutes; a site that keeps each entry is unaffected.
verification-code boxes named "digit 1 of six" (Oracle Recruiting) are counted like one-character boxes, a code drawn one character per cell in the email is read as one, and a number of the wrong length (a job number) is never taken for the code; the form's own required CV field is fed even when a resume parser on the page already holds the file; and a Hebrew "we will be in touch shortly" after sending the CV is read as the confirmation it is.
a country or phone-code list that does not know "+46" is searched for your country's name instead, and when the form has a separate code field the phone number box gets the national digits the site accepts.
on company sites a city box's suggestions (Google's place list on SmartRecruiters), a country picker that draws only part of its list (Recruitee's phone code), and search boxes whose list offers other things are all read and chosen from; when nothing matches, the agent is told what the list offers and picks from that. SuccessFactors boxes that suggest only entries starting with the typed words ("How did you hear about us?") are opened by their own arrow and chosen from the whole list.
when a company-site form has several buttons saying the same thing (an "OK" under every question, as on Typeform), each is named by the question before it, so the agent presses the one that belongs to what it just filled.
an "Apply now" that is only an email address is reported as such straight away, instead of being pressed again and again.
when a company site empties the resume field after an upload and asks for the CV again, the agent attaches it once more instead of insisting it is already there.
a LinkedIn tab sent to sign in pauses the run with a note for you, a tab that left the jobs pages is sent back to your search, and after three fresh loads without an answer the run waits an hour before trying again.
a job LinkedIn says is no longer accepting applications is skipped with that reason; a pane slow to show its apply button is waited for and opened again, then tried once more later before anything is recorded. Company-site applications are cut off only when they stand still for the "Give up after" minutes, not for being long, and the record says which it was.
on the Messaging page and in LinkedIn's chat windows, a Reply with AI button just left of LinkedIn's Send button reads the whole conversation and suggests the next message, or writes the one you describe, in the conversation's language, from your facts, saved answers, resume and the jobs you applied to at their company. The draft goes into LinkedIn's message box; you read it, ask for changes or discard it, and press Send yourself.
a small AI button in the icon row of every comment box on LinkedIn (the feed, a post's own page, your profile's and your pages' posts, anyone else's posts, and the Reply box under a comment). Pick a tone from eight (💼 Professional, 🙂 Friendly, 😄 Funny, 😏 Witty, 🙌 Supportive, 💡 Insightful, ❓ Curious, 🎉 Congratulate), add a note if you like, and your AI reads the whole post, its author and the comments already there (and the comment you are answering) and drafts one comment in that tone into the box. Ask for changes or regenerate; nothing is posted until you press LinkedIn's Comment or Reply. Written from your own LinkedIn perspective: the extension reads your profile (headline, About, Experience) and writes as the person it shows, in your field, never as an Upwork pitch.
the same button in LinkedIn's share box, posting as yourself or as one of your pages. Give it a topic, notes, or paste an article or a link with its text, pick a tone, and your AI writes the post in your voice from your profile and Facts Bank into the box. You read it, change it, and press Post yourself. Written from your own LinkedIn perspective: the extension reads your profile (headline, About, Experience) and writes as the person it shows, in your field, never as an Upwork pitch.
a day's numbers of comments, reactions, reposts and event attendances from your home feed (recommended 30, 100 and 50; each with its own switch and number), in a tone you pick, with a blocklist of people, companies or "people from <company>" (a company on the list also keeps the campaign off posts about it, whoever wrote them) it never touches. It opens your feed in a small LinkedIn window of its own and works through it a few posts at a time with pauses like a person reading: ads, your own posts, posts already engaged with and anyone on the blocklist are passed by, your AI passes by anything it should not touch (politics, illness, sales, job posts, polls, engagement bait) and decides per post which reaction fits, writes one comment worth reading, and the line to repost with; only what LinkedIn shows as done is counted. When the day's numbers are done it stops and starts again about 24 hours after it began; it never runs at the same time as a connection, message or event campaign. Replies to your comments are answered too: the campaign looks back at each post it commented on over the following days (its page is known even on the new feed, where LinkedIn keeps the post's identity out of the page) and gives every reply a fitting reaction and an answer in the thread, never twice; "Check replies now" looks right away. An action LinkedIn refuses for now ("could not be created at this time", a limit) is held for a day while the other actions go on, and tried again by itself after.
part of the engagement campaign, on by default. Once a day the extension opens LinkedIn's Catch up page and sends every connection with a new role, a birthday, a work anniversary or a graduation a short note written for them in the campaign's tone, through LinkedIn's own Message button in place of its canned line, and reacts to the post behind the card. One note per person per occasion, up to 10 a day within the messages' daily number; a draft of your own in the box is never touched.
two kinds, in Settings → LinkedIn. *My topics*: subjects one per line, a day's number, a tone; each post takes the least recently used topic and makes one point from your own seat (40–120 words, a first line that stops the scroll, a reason to react, never a pitch) with a picture — generated with OpenAI's image model when an OpenAI API key is on hand (under Provider, or pasted for pictures; the ChatGPT sign-in covers chat only), else a drawn card with the post's first line. *Watched profiles*: paste LinkedIn or X profile links and an interval, a `*` in front of the ones whose new posts come first; when more is found than the day allows, the AI scores the candidates for likely reaction and the best go first; a new post of theirs becomes a post of yours ("Tibo just posted this on X…") with your take (news, your angle, support, critique, friendly, in turn) and a screenshot of the original attached, taken from the watcher's own window; ads, politics, illness and personal matters passed by. Both run in a small window of their own between 07:00 and 22:00, spread over the day, never alongside another LinkedIn step, paused a day on LinkedIn's refusal; every post listed under the campaign. X needs your permission for x.com (asked once) and your X sign-in in this Chrome. Comments under the campaign's posts get a reaction and an answer in the post's context, once each, for two weeks (on by default). A quick post takes one pasted profile's latest post right away; "review first" on any of these leaves each post in LinkedIn's share box for you, with a notification and a list in Settings, instead of posting it. Campaigns are edited in place.
the auto-reply card has a Remove button (the campaign and its lists go; replies already sent stay sent), beside "Clear this list" which only empties the threads left for you. A running posting campaign can be removed too; its tab closes.
every few hours (your interval) the unread conversations where the other person wrote last are answered for you in your voice, one to three sentences in their language, with no promises, times or prices, from your profile, Facts Bank and your standing notes. What you tick is always left for you — money, offers and contracts; commitments and scheduling; negative or sensitive; a recruiter about a job — and so is anything the AI is unsure of, listed with the reason and a link. One answer per message of theirs, at most your number a day; your own draft in a box is never touched. (0.14.7) Conversations are opened the way you open them (the row pressed, the named person's conversation read, LinkedIn's renamed layouts learned), and one that will not open is left until the next check or until they write again, never retried all night.
paste a LinkedIn people search, a Sales Navigator people search or one of its lead lists (0.14.9: each lead's public profile is read from its lead page, then everything else runs on LinkedIn as usual; the campaign's background tab gets Sales Navigator to draw its results), or just describe who you want to meet (such as "CEO USA"): your AI turns the words into a search and keeps only the people who fit. For each person the extension reads their profile and sends a connection invitation with a short personal note written for them.
its invitations a day, the personal-note switch and the note itself, the purpose and the follow-up messages can all be changed while it runs; a changed note applies from the next invitation.
start another campaign without replacing the one running; each has its own source, note, purpose, follow-ups, invitations a day and its own Pause, Stop, Remove and Duplicate. They share one background tab and one pace: invitations go out one at a time, 4 to 14 minutes apart whichever campaign sends, the campaigns take turns, and a person already in one campaign is not invited by another. LinkedIn's limits are per account, so the card shows the invitations a day of all running campaigns together, warns above 20, and LinkedIn's invitation limit pauses every campaign for the day. Up to 10 campaigns; the campaign running before the update carries on as the first of the list. The website's Control page shows each campaign as its own card.
the campaign card's Duplicate button fills the form with the campaign's source, numbers, note and messages, to change and start as a new one.
It starts the moment you press Start, at any hour. 20 invitations a day by default, 4 to 14 minutes apart, with a clear caution before you choose more; each day's batch begins about 24 hours after the last one. The campaign carries on by itself, in a background tab, until the list is done; people already connected or already invited are skipped.
add one or more messages to a campaign, each a set number of hours or days after the one before, written with placeholders such as {{first_name}} and {{company}} (with fallbacks). Your AI rewrites each for the person, keeping your meaning and links, and anyone who replies gets nothing more. (0.11.8) The messages sit inside the campaign's own box on the Connect page, each with its delay and how many people are waiting, with an Edit messages button.
message your own connections, all of them, a described group or a pasted LinkedIn search, in one or several steps with delays, a set number a day, stopping for anyone who replies.
write the note once with placeholders; your AI fits it to each person within LinkedIn's limit.
paste the address of an event you organize or attend (wherever LinkedIn offers Invite, as a button or under the event's Share button) and invite all your connections, or only the ones who fit your description ("people in Sweden", "founders in Stockholm"): your AI turns the description into the invite window's own filters (Locations, Current company, School, Industry), LinkedIn narrows the list, and your AI checks on each headline whatever the filters cannot say; if LinkedIn does not take a filter, nobody is invited on that pass. Batches of up to 25 run in a tab of your own browser window and hand the window back when done, 100 a day by default (your number), people already invited are passed by, a 24-hour pause on LinkedIn's limit, and a clear notice when the event has ended or LinkedIn offers no Invite on it.
optional messages with delays and the placeholders {{event_name}}, {{event_date}} and {{event_link}}; your AI rewrites each, and anyone who replies gets nothing more.
LinkedIn warns about "unusual activity" when an account loads many profile pages, so the extension now opens as few as it can while doing the same work. A connection campaign invites each person from their card on the search results page (LinkedIn's invitation window opens right there) and writes the note from what the card shows, so no profile page is loaded for an invitation; "Read each profile first" is a per-campaign choice for a deeper note. Withdrawals go through LinkedIn's Sent invitations page and visit a profile only when the list does not show the person. Messages reuse a person's Message route once it is known. What a profile said is remembered for a month, so nobody is read twice. One budget for the account, "Profile pages a day" in Settings → LinkedIn and on the website's Control page (40 by default; today and this week are shown): every step that opens a profile page counts against it and waits for tomorrow when it is used up. Invitations go 8 to 20 minutes apart and at most 50 a day per campaign; withdrawals at most 20 a day.
on by default, an invitation a campaign sent that is still pending after 20 days (your choice, 7 to 180) is withdrawn by itself, on the person's profile or LinkedIn's Sent invitations page, one at a time and at most 40 a day. Invitations you sent yourself are never touched; switch it off in Settings → LinkedIn.
on by default; while a run, an application or a campaign is working or due within a quarter of an hour, the system is kept from sleeping (the screen may dim). Chrome's power permission is asked for at the first start, shown in Settings → LinkedIn with a button to ask again.
when your access can't be verified for a moment (the licensing service is slow or unreachable), a campaign sends nothing, checks again by itself a few minutes later and carries on once access is verified, instead of stopping until you press Resume. The safety policy the service confirmed within the last ten minutes keeps serving through a slow or dropped request, so one blip never turns a working Upwork page into "unavailable".
the campaign answers only LinkedIn's own invitation window, never a tray or promo that happens to be open on the profile; an invitation the profile shows as pending is recorded as sent even when LinkedIn leaves a follow-up window open, and a window that does stay is closed with the reason noted.
when LinkedIn says the invitation limit is reached, the campaign stops at once, waits 24 hours and resumes by itself, even if Chrome was restarted. When LinkedIn stops personal notes on a free account, invitations go without one until the next month.
from your Upwork profile page: title, overview, skills, rate and work history feed every draft.
of every application drafted, with the letter and answers, and a sync of outcomes (submitted, interviewing, hired, archived) from your proposals page. Syncing runs when you click, never automatically.
in the toolbar popup.
Claude (claude.ai subscription sign-in), ChatGPT (ChatGPT subscription sign-in), Claude API key, OpenRouter (including its free tier and the openrouter/free router), OpenCode Zen (with free models), any OpenAI-compatible endpoint (Groq, Together, Fireworks, your own gateway), or a local model (Ollama, LM Studio, llama.cpp, vLLM).
OpenRouter, OpenCode, custom and local endpoints list their models in Settings, with a free-only filter for OpenRouter; ChatGPT lists exactly the models your account can use through Codex, including GPT-6 Astra and the GPT-5.6 family.
Claude's model list (subscription and API key) is read live from Anthropic, the other providers' lists load by themselves when Settings opens, and the Model tab marks the newest model and offers to switch to it.
from Off to Ultra, mapped to each provider's reasoning setting.
for providers that support it.
in Settings: how to get a free OpenRouter key and its limits, local-server commands, and a connection test for every provider.
If your Control session expires or you pair this Chrome to another account while saving, the answer is refused without changing saved answers or waiting questions.
pair the extension with your Apply with AI account from Settings; two installations per subscription; plan, billing and device management links; approved-update notices.
once connected, a monthly or annual subscription stays connected; access is renewed quietly in the background and re-verified before each drafting action. If the service can't be reached for a moment, Settings → Account says so, keeps the connection and retries on its own; it asks you to connect again only for a new browser or a removed device.
on by default, with a switch in Settings → Account to turn it off. Apply with AI reports only the time and type of an action (a proposal or reply drafted, a job qualified, an application started or confirmed and its outcome, and each connection request, message, event invitation and withdrawn invitation the LinkedIn campaigns send), Upwork or LinkedIn, direct or agent-run use, the extension version, approximate country and a one-way job identifier that prevents duplicate application counts. It never includes job or company text, URLs, generated writing, application answers, profiles, resumes, prompts, provider credentials or passwords. Turning it off stops reporting, clears unsent events and requests deletion of the account's detailed usage history. License checks remain separate. Under the same switch, an automation that could not finish sends a short failure report (the reason as a code, the form's field labels and button texts, the last turns and short site messages, each cut to 80 characters, your own name, email and phone taken out; never typed values, page text, job text, screenshots or prompts) so the extension can be fixed for that site.
with the extension paired, the customer panel on applywithai.app shows the extension’s own Outreach cards (connection campaigns, their messages, withdrawals, event invitations) with the same fields, buttons and wording as Settings, live, and operates this installation from there: start, pause, resume, stop, duplicate, save. The website only ever sees what those cards show, never credentials, cookies or page contents, and only while this Chrome is open with the extension running; every press is checked by the extension exactly as a press in Settings.
the customer panel's Control page shows every section the extension has, from the extension's own description of itself: Setup (provider and model, account, mailbox, website access, the usage-reporting switch; keys, profile and answers stay in the extension), Jobs (start and follow a LinkedIn job-agent run, pause, resume, skip, stop; the questions waiting for you; the latest applications), Outreach (connection campaigns, messages, withdrawals, event invitations), Presence (posting campaigns, the engagement campaign, the auto-reply, each started, changed, paused and stopped from there) and Activity (what the website asked the extension to do and whether it was done). A control added to the extension appears on the website with the next extension release, with no website change.
a box at the bottom of the popup and of Settings sends exactly what you write, when you press Send, to the makers. Under the usage-reporting switch, the extension also notes as fixed codes when one of its own sections is opened again and again, a page is closed with nothing changed, a switch is flipped back within a minute, a run is stopped by hand, a hold is skipped, or a campaign is set up (its kind only), naming its own controls and never any text from a page or from you, so hard-to-find controls get moved and unused features reconsidered. (0.14.2) A skipped hold on a company site names which hold it was (a CAPTCHA, an emailed code, a sign-in, the Submit hand-over…). (0.14.7) A "Skip this job" pressed while the agent is still working names, in fixed words, what it was doing (signing in, filling, waiting for the AI, a page that did not move…) and roughly how long the page had stood still, so a wait people never sit out can be shortened. A LinkedIn run stopped by hand names where it was (waiting out the daily limit, paused for a question or a review, on a company website, in an Easy Apply form, before the first job, between jobs), whether nothing, some or the target's worth had been applied, and roughly how long it had run.
the extension fills forms and message boxes; it never presses Submit or Send on Upwork, never polls Upwork in the background, and every generated text is yours to edit before it goes anywhere. On LinkedIn and external websites, applications are submitted only inside a run you start, and auto-submit can be turned off; LinkedIn replies are only drafted, and connection invitations go out only inside a campaign you start.
provider keys, drafts, filters, LinkedIn answers and history are stored locally in the extension; job content and form questions go only to the AI provider you chose.
the service can pause a provider connection or page insertion for everyone if a provider or Upwork changes; the extension explains what is paused.
stalled AI requests time out with the model and effort named; refused requests say why; an unactivated installation is told to activate first.
on custom, local, OpenRouter and OpenCode endpoints a model that spends its output budget thinking is retried with a larger budget and reduced reasoning, and told apart from a model that is simply unavailable. Settings and on-page messages name the real failure.
Automation should be explicit. Upwork remains manual at the final step. LinkedIn only applies inside a run you start, and you can require final review.
You review, edit, and press Send or Submit.
Use auto-submit, or stop at the final review step.
Every supported connection and model control below comes from the promoted inventory for release 0.18.2.
Claude (claude.ai subscription sign-in), ChatGPT (ChatGPT subscription sign-in), Claude API key, OpenRouter (including its free tier and the openrouter/free router), OpenCode Zen (with free models), any OpenAI-compatible endpoint (Groq, Together, Fireworks, your own gateway), or a local model (Ollama, LM Studio, llama.cpp, vLLM).
OpenRouter, OpenCode, custom and local endpoints list their models in Settings, with a free-only filter for OpenRouter; ChatGPT lists exactly the models your account can use through Codex, including GPT-6 Astra and the GPT-5.6 family.
Claude's model list (subscription and API key) is read live from Anthropic, the other providers' lists load by themselves when Settings opens, and the Model tab marks the newest model and offers to switch to it.
from Off to Ultra, mapped to each provider's reasoning setting.
for providers that support it.
in Settings: how to get a free OpenRouter key and its limits, local-server commands, and a connection test for every provider.
Use the Upwork and LinkedIn workflows with the same subscription. Start with 3 days free, then continue on monthly or annual billing. The annual plan saves $81 compared with twelve monthly payments.
Explore the complete feature list and available AI connections. AI provider access and usage charges are separate.
3 days free · Save $81 each year
Start 3-day free trial $0 today · then USD $99 per year · cancel any timePayment method required. Renews until cancelled. Stripe shows tax and local-currency options before you confirm.3 days free · Flexible monthly billing
Start 3-day free trial $0 today · then USD $15 per month · cancel any timePayment method required. Renews until cancelled. Stripe shows tax and local-currency options before you confirm.No. On Upwork, you choose the opportunity and start the draft. The extension scores, drafts, and fills; you review and press Send or Submit. It never submits an Upwork application or polls Upwork in the background.
No. It drafts, scores, and fills on Upwork. You review and edit every draft, then press Upwork’s Send or Submit button yourself.
Yes, but only inside a run you start. Auto-submit is on by default and can be turned off per run or in Settings. With it off, the agent fills the application and waits for you at the final review step.
Choose monthly or annual billing and add a payment method in Stripe. You pay $0 today. Unless you cancel before the trial ends, Stripe automatically charges the selected plan and the subscription renews at that interval.
Download the protected ZIP from your account, extract it to a permanent folder, enable Developer mode on Chrome’s extensions page, and choose Load unpacked. Read the installation guide before starting your trial.
No. Because it is installed in Developer mode, Apply with AI alerts you when an approved release is available. You download it, replace the files in the same permanent folder, and reload the extension manually.
Yes. The subscription covers Apply with AI, not model usage. Bring your own AI access using one of the available AI connections. Subscription connections are unofficial and may change. Provider credentials stay in your browser.
No. Apply with AI is an independent product and is not endorsed by or affiliated with Upwork or LinkedIn. You remain responsible for your accounts, your content, and compliance with platform rules.
Use these guides to choose work carefully and check the details before applying.
Check project fit, budget, and the evidence you can bring to a proposal.
Read the Upwork job selection guideKeep your answers consistent and review fields that need special attention on employer forms.
Read the Workday application guideDraft thoughtful Upwork proposals and manage LinkedIn application runs with your own AI.
Get Apply with AI