mirror of
https://github.com/feder-cr/Jobs_Applier_AI_Agent.git
synced 2026-11-07 10:36:05 -10:00
Plugins: what real forms taught about each site, and a confirmed send on Teamtailor (#1464)
This commit is contained in:
9 files changed
+26
-24
No files matched your search
@@ -62,7 +62,7 @@ The model fills the form and names the submit button; it is told not to send, an
|
||||
|
||||
## Sites
|
||||
|
||||
Sites vary a lot: Greenhouse, Ashby, Breezy and Recruitee have one confirmed real send each, the others fill forms without sending, stop at a captcha or at questions, or need an account. [docs/sites.md](docs/sites.md) gives each site's status and what stops it. Other postings are listed for applying by hand. The Gmail and Outlook plugins take a code or a link from your mailbox. They tell the model to read only, which is an instruction, not a guarantee: the code refuses only clicks that look like sending, Enter, and visits to sites other than the form's and the mailbox's. A click that deletes or archives mail is not refused. They have not been tried on a real mailbox yet.
|
||||
Sites vary a lot: Greenhouse, Ashby, Breezy, Recruitee and Teamtailor have one confirmed real send each, the others fill forms without sending, stop at a captcha or at questions, or need an account. [docs/sites.md](docs/sites.md) gives each site's status and what stops it. Other postings are listed for applying by hand. The Gmail and Outlook plugins take a code or a link from your mailbox. They tell the model to read only, which is an instruction, not a guarantee: the code refuses only clicks that look like sending, Enter, and visits to sites other than the form's and the mailbox's. A click that deletes or archives mail is not refused. They have not been tried on a real mailbox yet.
|
||||
|
||||
A plugin is a Markdown file in [`src/aihawk/plugins/`](src/aihawk/plugins) that explains one site's form to the model. Add a site with a file and no code: see [docs/plugins.md](docs/plugins.md). Your own go in `~/.aihawk/plugins/`.
|
||||
|
||||
|
||||
+4
-4
@@ -10,20 +10,20 @@ What AIHawk can do on each site, from the real forms it has been run on. Posting
|
||||
| JazzHR (applytojob.com) | ~154k | stops at a captcha most of the time | reCAPTCHA did not pass with a click on 5 postings; it often turned into an image puzzle. |
|
||||
| BambooHR (bamboohr.com) | ~87k | stops at a captcha most of the time | reCAPTCHA did not pass with a click on 5 postings; it often turned into an image puzzle. |
|
||||
| Personio (jobs.personio.de, jobs.personio.com) | ~64k | stops at a captcha about half the time | Turnstile passed on 2 of 4 postings. A real Allgeier Inovar form ended blocked. |
|
||||
| SmartRecruiters (jobs.smartrecruiters.com) | ~519k | does not finish yet | Five real postings (ServiceNow, Delivery Hero, Wise, LinkedIn, Wabtec), none reached a send control. The CV attaches (the dropzone `[data-test='resume-upload'] >> div`, confirmed by screenshot) and the UK phone was accepted, with the country chosen in the picker. LinkedIn and Wabtec stopped at the required Experience (and Education) sections, which the test CV cannot fill; Delivery Hero passed step 1 and stopped at Preliminary questions it has no answers for; ServiceNow and Wise ran out of the 7-minute limit. The test phone was changed to a placeholder UK number: the widget refuses numbers in the 07700 900000 to 900999 range. |
|
||||
| SmartRecruiters (jobs.smartrecruiters.com) | ~519k | filled on real forms, no send tried yet | The CV attaches and the phone is taken. Seven real postings stopped before a send control: some at required questions, some at the right to work or a statement that the answers are true, which a test cannot answer. Two ran out of steps there. |
|
||||
| Recruitee (recruitee.com) | ~26k | sent and confirmed on a real form | One real send, Accso (one send only). Other forms stopped at required questions that test answers do not fit. |
|
||||
| Teamtailor (teamtailor.com) | ~30k | filled on real forms, send not confirmed | One click on knowmad mood: the page refused the test phone number, so nothing was sent. Four other forms (Huawei, Grupo Timestamp, Jüster Group) stopped at required questions. |
|
||||
| Teamtailor (teamtailor.com) | ~30k | sent and confirmed on a real form | One real send, knowmad mood (one send only). The first click there was refused for its test phone number, so nothing went then. Other forms stopped at required questions. |
|
||||
| Workable (apply.workable.com) | ~35k | filled on real forms, no send tried yet | Two Activate Interactive forms stopped at a required work-authorisation question, which the test does not answer. The earlier send attempt found a closed posting. Nothing sent. |
|
||||
| Paylocity (recruiting.paylocity.com) | ~228k | filled on real forms, no send tried yet | Two forms (Hartz, Advanced Air Systems) asked many required questions, one of them about the right to work, which the test does not answer. The earlier send attempt found a closed posting. Nothing sent. |
|
||||
| Breezy (breezy.hr) | ~50k | sent and confirmed on a real form | One real send, Eureka Robotics (one send only). |
|
||||
| Workday (myworkdayjobs.com, myworkdaysite.com) | ~1,481k | not supported | Needs an account. |
|
||||
| iCIMS (icims.com) | ~622k | not supported | Needs an account. |
|
||||
|
||||
Postings per status, in the index: sent and confirmed ~353k; filled, send not confirmed ~131k; filled, no send tried yet ~263k; stops at a captcha most or half of the time ~305k; does not finish yet ~519k; not supported ~2,103k.
|
||||
Postings per status, in the index: sent and confirmed ~383k; filled, send not confirmed ~101k; filled, no send tried yet ~782k; stops at a captcha most or half of the time ~305k; not supported ~2,103k.
|
||||
|
||||
Notes:
|
||||
|
||||
- "Sent and confirmed" rests on one send per site. Treat it as "it can send", not "it sends reliably".
|
||||
- A form asks the person for whatever the CV and answers do not cover, then tries again. In trials with test answers most forms stopped there, as they should.
|
||||
- Greenhouse's confirmation page was not saved, so its plugin keeps generic wording. Ashby's, Breezy's and Recruitee's are quoted in their plugins.
|
||||
- Greenhouse's confirmation page was not saved, so its plugin keeps generic wording. Ashby's, Breezy's, Recruitee's and Teamtailor's are quoted in their plugins.
|
||||
- A captcha shown as a box is clicked, twice at most, as a person would. It is not solved: on a puzzle the form stops as blocked, for the person to do by hand.
|
||||
@@ -5,9 +5,9 @@ apply_path: /apply
|
||||
---
|
||||
The page follows the browser's language, so labels may not be in English: go by the field's name.
|
||||
|
||||
Fields are named `cName`, `cEmail` and `cPhoneNumber`, which is one text field with no country list. Some forms also have `cSummary` for a summary of experience and `cCoverLetter`. A required summary may be written only from the CV's own words. Leave `smsConsent` unticked unless the answers file says otherwise. Do not use the Indeed or LinkedIn links.
|
||||
Fields are named `cName`, `cEmail` and `cPhoneNumber`, which is one text field with no country list. `cAddress` and a desired salary, with its currency and period beside it, may be required. Some forms also have `cSummary` for a summary of experience and `cCoverLetter`. A required summary may be written only from the CV's own words. Leave `smsConsent` unticked unless the answers file says otherwise. Do not use the Indeed or LinkedIn links.
|
||||
|
||||
The CV upload is a link, "Carica Curriculum", near the top, with no file input and no id: select it by that text. It carries a "Required" mark when the CV is required. Uploading may fill fields from the CV, so read the page again afterwards and correct them.
|
||||
The CV upload is a link, "Carica Curriculum" on an Italian page and "Attached" once a file is in place, near the top, with no file input and no id: select it by that text. It carries a "Required" mark when the CV is required. Uploading may fill fields from the CV, so read the page again afterwards and correct them.
|
||||
|
||||
"Aggiungi posizione" (add position) and "Aggiungi Studi e formazione" (add education) are links that add an entry: leave them empty unless required.
|
||||
|
||||
@@ -15,6 +15,6 @@ Questions a company adds have names like `section_..._question_0`, as radio butt
|
||||
|
||||
Race, gender and veteran questions (`race_ethnicity`, `gender`, `eeoc.veteran_status`) have an "unspecified" choice: pick that. Their ids do not match their labels (`#race_hispanic` is labelled "asian"), so choose by the label, not the id.
|
||||
|
||||
The send control is the button "Invia candidatura" (submit application), the form's last control.
|
||||
The send control is `button[type='submit']`, the form's last control, labelled "Invia candidatura" on an Italian page.
|
||||
|
||||
After sending: the page says "Application Submitted" and "Your application has been submitted successfully. Good luck!", at an address ending in `/apply/submitted`. A submitted application can show as applied while the candidate's email is still unverified, because Breezy counts it as applied at submit. Breezy may send a four-digit verification code by email. Read the page: if the form is still there, the application was not received.
|
||||
@@ -9,9 +9,9 @@ Upload the CV first. The "ATTACH RESUME/CV" link wraps the file input `#resume-u
|
||||
|
||||
Fields are named: `name`, `email`, `phone`, `location`, `org` for the current company. Questions a company adds come after them, often in `name="cards[...]"` fields. A required field has a ✱ after its label.
|
||||
|
||||
The location field, `#location-input`, suggests places as you type: pick one of the suggestions.
|
||||
The location field, `#location-input`, suggests places as you type: pick one of the suggestions. The field may then show it shortened, such as "Milan, ITA", which is correct.
|
||||
|
||||
Some forms show a captcha when sending: a box to tick is handled as the rules say; a puzzle means the form is blocked.
|
||||
Some forms show a captcha when sending, from an hCaptcha widget with no size that is already on the page: a box to tick is handled as the rules say; a puzzle means the form is blocked.
|
||||
|
||||
The submit control is `#btn-submit`, "Submit application".
|
||||
|
||||
|
||||
@@ -4,11 +4,11 @@ hosts: [recruiting.paylocity.com]
|
||||
---
|
||||
If the page shows a job's details rather than a form, follow its Apply link. A closed posting goes to "Job Not Found" (/Recruiting/Jobs/JobNotFound): report the form as blocked.
|
||||
|
||||
The form has several steps ("Step 1 of 3" or "Step 1 of 5"): fill each, then go on with its next button, "Next Step" (`#btn-submit`), and read the page again. Report ready only on the last step, with the control that sends the form.
|
||||
The form has several steps ("Step 1 of 3" or "Step 1 of 5"): fill each, then go on with its next button, "Next Step" (`#btn-submit`), and read the page again. Report ready only on the last step, with the control that sends the form. These forms are long: when a step needs what the files do not say, report needs_input with all of that step's questions at once, rather than going field by field.
|
||||
|
||||
Upload the CV under "Select Resume to Upload". "Fill out application with my resume" (`#useAttachedResumeToFillOutApplication`) is ticked when the page opens: untick it, since you fill the fields.
|
||||
Upload the CV under "Select Resume to Upload". "Fill out application with my resume" (`#useAttachedResumeToFillOutApplication`) is ticked when the page opens: untick it, since you fill the fields. The site's "Apply with resume" dialog can still fill the email, the mobile number and the address from the file: read them afterwards and correct what is wrong.
|
||||
|
||||
Fields have ids such as `#info\.firstName`, `#info\.lastName`, `#info\.email`, `#info\.cellPhone` and `#info\.phone`. Escape the dot in the selector. The address uses `#public-site-address-address-1` (a combobox: read the page after typing), `-city`, `-county`, `-zip`, and a state list at `#public-site-address-us-state`. These forms often require a full home address, work history and references: what the files do not say goes back to the person.
|
||||
Fields have ids such as `#info\.firstName`, `#info\.lastName`, `#info\.email`, `#info\.cellPhone` and `#info\.phone`. Escape the dot in the selector. The address uses `#public-site-address-address-1` (a combobox: read the page after typing), `-city`, `-county`, `-zip`, and a state list at `#public-site-address-us-state`. The mobile number is written with no spaces, such as `+447700900123`: with spaces it is refused as "Invalid phone number format". The country starts on United States: set it first, since it changes the address fields. The postal code takes at most 10 characters. An address the site doubts shows "This appears to be an invalid email, please verify before proceeding", which does not stop the step. These forms often require a full home address, work history and references: what the files do not say goes back to the person.
|
||||
|
||||
Dropdowns are `div[role="combobox"]` showing "--" until a choice is made, such as `#info\.haveYouAppliedWithUsBefore`. "How did you hear about us" is a radio list (`info.howDidYouHearAboutUs`): choose what the answers say.
|
||||
|
||||
|
||||
@@ -3,18 +3,18 @@ name: recruitee
|
||||
hosts: [recruitee.com]
|
||||
apply_path: /c/new
|
||||
---
|
||||
The form is on the posting's Application tab (Sollicitatie or Application), at /c/new. The page is often in Dutch. A cookie banner may cover the page: click "Agree to necessary" first. A Cookiebot banner may show instead, with Dutch labels: "Weigeren" declines.
|
||||
The form is on the posting's Application tab (Sollicitatie or Application), at /c/new. The page is often in Dutch or German. A cookie banner may cover the page: click "Agree to necessary" first. A Cookiebot banner may show instead, with Dutch labels: "Weigeren" declines.
|
||||
|
||||
Fields are named `candidate.name`, `candidate.email` and `candidate.phone`. Their ids change on each load, so select by name, such as `input[name="candidate.email"]`. The phone has a country code list in a button just before it, whose label names the country: set it to the country of the number in the answers.
|
||||
Fields are named `candidate.name`, `candidate.email` and `candidate.phone`. Their ids change on each load, so select by name, such as `input[name="candidate.email"]`. The phone has a country code list in a button just before it, whose label names the country: set it to the country of the number in the answers. A number typed whole with its + code is taken too: the list then reads "International" and keeps the number.
|
||||
|
||||
Upload the CV to `input[name="candidate.cv"]`. `candidate.photo` is a photo and `candidate.coverLetterFile` a cover letter: leave them empty unless they are required, and if a required one is not among your files, ask. The cover letter has a switch button, "Write it here instead" (in Dutch, "Schrijf je motivatiebrief in plaats daarvan hier"): do not click it.
|
||||
|
||||
Questions a company adds come under "Questions" (Vragen). Yes and No questions are radio buttons named `candidate.openQuestionAnswers.<id>.flag`; a written answer is `candidate.openQuestionAnswers.<id>.content`. Answer in the company's language only where the answers file gives the words; a required answer it does not give is a question for the person.
|
||||
Questions a company adds come under "Questions" (Vragen). Some forms ask them as a dropdown, a radio list or a group of boxes, and some have no agreement box at all. Yes and No questions are radio buttons named `candidate.openQuestionAnswers.<id>.flag`; a written answer is `candidate.openQuestionAnswers.<id>.content`. Answer in the company's language only where the answers file gives the words; a required answer it does not give is a question for the person.
|
||||
|
||||
`candidate.agreements.0.consent` is a checkbox under "Legal Agreements", worded "Yes, I give my consent for <company> to hold my details for GDPR compliance". Tick it only if the answers file says the person accepts that.
|
||||
|
||||
A required field has a * with the title "This field is required and can not be left empty".
|
||||
|
||||
The submit control has `data-testid="submit-application-form-button"`, labelled "Send" or "Versturen".
|
||||
The submit control has `data-testid="submit-application-form-button"`, labelled "Send", "Versturen" or "Senden".
|
||||
|
||||
After sending: the page says "Fertig!" and "Danke für deine Bewerbung!" on a German form, at an address ending in `/applied`. Recruitee usually sends an auto-confirmation email only for applications made on the careers site, not for applications by email or added by hand. Its wording is written per job. Read the page: if the form is still there, the application was not received.
|
||||
@@ -10,13 +10,15 @@ Name and email: type each with browser_type, using the selector that browser_sna
|
||||
|
||||
City: type the city, then click the suggestion that matches the CV (for example "Milan, Italy", not another Milan) as described under Menus.
|
||||
|
||||
Phone, in two parts. First the country: the combobox labelled "Country code" shows a flag and "+1" by default. Click it with browser_click_at, at the point browser_snapshot gives in its `at`. A list opens with a search field, "Search by country/region or code": type the country name into it with browser_type (`input[placeholder='Search by country/region or code']`), for example "United Kingdom". Choose its row as described under Menus. The button then shows the dial code, "+44". Then the number: type into the field labelled "Phone number", with browser_type and its snapshot selector (`#spl-form-element_5 >> #spl-form-element_5 >> #spl-form-element_5`), the national number without the dial code and without a leading 0, written as `<national number>` here. The page shows it in groups and keeps "+44". Do not type the dial code into the number field. Read the field under the phone: if it says "Please provide a valid phone number", the page refused the number. Numbers in the range 07700 900000 to 07700 900999 are refused this way: the page turns them into "1481 7700900123" (Guernsey). Then report the form as needs_input and say so; do not try other spellings of that number.
|
||||
Phone, in two parts. First the country: the combobox labelled "Country code" shows a flag and a dial code, which differs per posting (+1, +971). If it is already the number's country, leave it. Click it with browser_click_at, at the point browser_snapshot gives in its `at`. A list opens with a search field, "Search by country/region or code": type the country name into it with browser_type (`input[placeholder='Search by country/region or code']`), for example "United Kingdom". Choose its row as described under Menus. The button then shows the dial code, "+44". Then the number: type into the field labelled "Phone number", with browser_type and its snapshot selector (`#spl-form-element_5 >> #spl-form-element_5 >> #spl-form-element_5`), the national number without the dial code and without a leading 0, written as `<national number>` here. The page shows it in groups and keeps "+44". Do not type the dial code into the number field. Read the field under the phone: if it says "Please provide a valid phone number", the page refused the number. Numbers in the range 07700 900000 to 07700 900999 are refused this way: the page turns them into "1481 7700900123" (Guernsey). Then report the form as needs_input and say so; do not try other spellings of that number.
|
||||
|
||||
Upload the CV with browser_upload_files and the selector `[data-test='resume-upload'] >> div`: the dropzone "Choose a file or drop it here" in the Resume section. Do not use the file input `#spl-dropzone-file-input-1` or the label that points at it: the input covers the dropzone, so a click on the label lands on the input and fails. Leave the input inside `apply-with-resume-container` alone. Confirm the attachment with a screenshot: the file name (test-application.pdf) appears under the dropzone with a trash icon. The page's text does not show the name, and the tool may say the input is empty again: the page clears the input once it has read the file, and that is normal. Do not upload again when the name shows.
|
||||
|
||||
Menus (the country list, City suggestions, a dropdown's answers) open a list under their field, inside the shadow root. browser_snapshot does not list their rows. To choose a row: type in its search field if it has one; take a screenshot to see the list; then read the row's centre with browser_evaluate, which only reads: walk into shadow roots and take the innermost element whose text starts with the row's text and whose box has a width. Its centre is in viewport pixels, the same units as the snapshot's `at`. Click that point with browser_click_at. Do not take a point from the picture itself: a screenshot's pixels are not the viewport's on every screen. Check the choice took: the closed field shows the chosen text (the country button shows "+44"), and the error under the field is gone.
|
||||
|
||||
The footer "Next" button has no selector in browser_snapshot: read its centre the same way (browser_evaluate reads, then browser_click_at). Other buttons on the step, such as "Add" for Experience or Education, are not part of the application: leave them alone.
|
||||
The footer "Next" button has no selector in browser_snapshot: read its centre the same way (browser_evaluate reads, then browser_click_at). Leave "Add" under Experience and Education alone unless the page requires an entry: "Please provide at least one work experience entry" under Experience means it does. Then add one from the CV: Title, Company and Office location suggest as you type, and From and To take MM/YYYY.
|
||||
|
||||
The "Preliminary questions" step often asks for the right to work, sponsorship, and a block of required boxes with the person's name and today's date, stating that the answers are true. Never tick those for the person: if the files do not answer them, report needs_input with all of them at once, rather than trying field by field.
|
||||
|
||||
The last step's footer control sends the application. Its label is what the page says, for example "Submit application". Never click it. If a plain CSS selector matches only that control, name it as the submit control; if none does, call finish_form with status blocked and say that the send control could not be named.
|
||||
|
||||
|
||||
@@ -3,14 +3,14 @@ name: teamtailor
|
||||
hosts: [teamtailor.com]
|
||||
apply_path: /applications/new
|
||||
---
|
||||
The application form is one page. Questions come first, then "Personal details", the attachments, the consent box and "Submit application". Read the whole page before you fill it.
|
||||
The application form is one page, and its labels follow the company's language, so go by each field's name. Questions come first, then "Personal details", the attachments, the consent box and "Submit application". Read the whole page before you fill it.
|
||||
|
||||
Questions are inputs named `candidate[answers_attributes][N][...]`. A yes/no is a radio whose visible label is "Yes"/"No" (or "Ja"/"Nej"); its input is hidden, so click the label. A list of boxes is a checkbox group. A number is a slider with an "Edit number" button. Some questions are custom menus: a button with aria-haspopup="menu" shows the current value as its text, and a hidden required input behind it holds the value the form sends. To answer one, click the button to open it, then read the options from the page (browser_read_text, or a snapshot taken after it opens). Where the options are buttons with role="menuitem" and a data-v attribute, click the one that matches the answer by its selector, for example `button[role="menuitem"][data-v="Engineering"]`. Check that it took: the button's text shows the chosen value and the hidden input reads the same value (browser_evaluate). A click by coordinates is the last resort.
|
||||
|
||||
Phone: `input[name="candidate[phone]"]`, with the country set by the button "Change country" beside it. Location: `candidate[location][query]` is a combobox with "Start typing your address". Type and pick from the suggestions, then check it was taken.
|
||||
Phone: `input[name="candidate[phone]"]`, with the country set by the button "Change country" beside it. The number is checked only when the form is sent, and an error such as "Phone is not valid" (in the page's language) then shows beside the field, with the form still there. Numbers in the range +44 7700 900000 to 900999 are refused this way. A number typed whole with its + code sets the country by itself. Location: `candidate[location][query]` is a combobox with "Start typing your address". Type and pick from the suggestions, then check it was taken.
|
||||
|
||||
A tag field (Skills, for example) turns each typed skill into a chip when Enter is pressed in its input. The chips are what the form sends; text left in the input is not sent. The browser tool refuses Enter unless the field's own placeholder or aria-label asks for it. Do not send the key by script to get around that, and do not submit with a required tag missing. If a required tag cannot be added, call finish_form with status blocked, name each missing tag, and say why.
|
||||
|
||||
Upload the CV to `#candidate_resume_remote_url` ("Upload resume"). Do not click "Apply with LinkedIn". The cookie banner is open on the page: decline or leave it, do not treat it as a question. Sign-in is not needed. The send control is `input[name=commit]`, "Submit application": report ready only on the page before it.
|
||||
|
||||
After sending: Teamtailor usually sends a "thank you for your application" email, for applications through the job's application email and through the career site. Read the page: if the form is still there, the application was not received.
|
||||
After sending: the address gains `/thanks/` and the page says it received the application, in Spanish "Gracias por la solicitud" and "Hemos recibido tu solicitud". Teamtailor usually sends a "thank you for your application" email, for applications through the job's application email and through the career site. Read the page: if the form is still there, the application was not received.
|
||||
@@ -7,13 +7,13 @@ The form loads a moment after the page: if it looks empty, read the page again.
|
||||
|
||||
The sections are headed "Personal information", "Profile", "Resume", "Details" and "Cover letter", and some have "(Optional)" after the title.
|
||||
|
||||
`#firstname`, `#lastname`, `#email` and `#input_phone` are the basics, and the phone has a country button before it. Some forms also ask for an address: `#address`, `#city`, `#postcode` and `#country`.
|
||||
`#firstname`, `#lastname`, `#email` and `#input_phone` are the basics, and the phone has a country button before it: choose the country there and type the national number. An "invalid phone" error that shows while typing can clear when the number is typed again whole. Some forms also ask for an address: `#address`, `#city`, `#postcode` and `#country`.
|
||||
|
||||
Upload the CV to the file input under the "Resume" heading, which has an id like `#input_files_input_...`: select it with `input[type="file"]` in that section. Do not use "Autofill application" or "Import resume from".
|
||||
|
||||
"Experience" and "Education" with a "+ Add" button are usually optional: leave them empty unless required.
|
||||
|
||||
Questions a company adds have names like `CA_30078` or `QA_11839078`: find each by its label. A field showing "Select an option…" is a list: type, then click the option; its input has an id like `#input_CA_30080_input`.
|
||||
Questions a company adds have names like `CA_30078` or `QA_11839078`: find each by its label. A required "Work Authorization" list is common, with options that depend on the job's country: what the files do not say goes back to the person. A field showing "Select an option…" is a list: type, then click the option; its input has an id like `#input_CA_30080_input`.
|
||||
|
||||
Radio answers have generated ids. Select them by `input[name="CA_41201"]` with the right position, or by the `div[role="radio"]` beside it that shows YES or NO, and check the result by reading the page.
|
||||
|
||||
|
||||
Reference in new issue
Block a user