# Job Blower > Job Blower is CV-to-job matching software for recruitment agencies in Germany, Austria, Switzerland and Liechtenstein. It reads a candidate's CV once, builds a profile automatically, and then matches that candidate every night against every open job on that agency's market. Each match comes with a 0–100 score and an individually written verdict. Built and operated by persolution.swiss, a Swiss IT recruiting company, which uses it daily on its own candidates. - [Website](https://jobblower.com/): product page in English, German, French and Italian - [App login](https://app.jobblower.com/): the web app for existing users - [Publisher](https://www.persolution.swiss/): persolution.swiss, the Swiss IT recruiting company behind Job Blower ## What it does, in one paragraph A recruiter uploads a CV. Job Blower extracts the text, runs OCR when the document is scanned, and auto-tags the profile: target roles, skills, seniority, years of experience, languages, work permit, and preferred places of work. The recruiter checks and confirms the profile. From then on the candidate is matched against the whole job pool: first immediately against the thousands of active jobs already collected, then every night against every new ad found on the market. Every match is scored, explained in writing and ranked, so the recruiter starts the morning with a list of jobs worth a call. ## Matching and scores - Pool first: every job in the pool is judged for every active candidate. A new candidate is matched against all existing jobs within minutes of confirming the profile, before the next nightly crawl. - Two-stage pipeline: semantic embeddings pre-rank the pool for each candidate, then a language model writes a full verdict for each candidate–job pair. - Rubric scoring: five dimensions are rated separately, skills, seniority, domain, languages and location, and the app combines them into one 0–100 score in code. The score is explainable and can be argued with, not a black box. - Score bands: 85 and above = Shortlisted, 65 to 84 = Match, below 65 = Rejected. Matches from the last nightly scan are flagged "New match". - Soft filters: location, permit and similar criteria act as strong preferences, not hard exclusions. Hard caps exist only where a call would be pointless, for example an ad in French or Italian for a candidate who does not speak that language, or a job far outside the candidate's chosen work areas. - Individual text per match: what fits, what is missing, red flags (deal-breakers such as a missing permit or language), and a one-sentence pitch the recruiter can reuse when presenting the candidate. Verdicts are written in German for German-language ads and in English for all other ads. - Per candidate: all scored matches in one list with search, freshness filter (found in the last 1, 7 or 30 days), employer-direct vs. agency filter, and sorting by "latest and best" or "best". A chart shows new matches per day. - Per job: the top matching candidates, so a recruiter can also start from a job and see who fits. - Candidate placeability score (0–10) combining fit, demand and salary level across that candidate's best matches. ## CV parsing, OCR and auto-tagging - Accepted input: PDF, DOCX/DOC, scanned images (PNG, JPG, TIFF), plain text and Markdown, up to 25 MB. - Digital text is read directly; scanned pages go through OCR in German, English and French. - The profile is extracted automatically by a language model running on Job Blower's own server, so the CV text never leaves it: name and contact, birth year, gender (for correct pronouns in generated text), current title and location, seniority, years of experience, target roles, skills, certifications, languages with their level, education, preferred locations, work permit, salary expectation, a short summary and filter tags. - Skills and job tags are normalised to one shared vocabulary so that "JS", "Javascript" and "JavaScript" mean the same thing, and every candidate and job is assigned to an occupation family. - The recruiter can correct any field. Confirming the profile starts the first scan; "Update now" re-scans at any time. ## Job sources: the whole market in one pool Ads are collected nightly from job boards, the public employment services, LinkedIn, the Adzuna aggregator, Google web search, and directly from employers' applicant tracking systems. The same ad found on several sites becomes one job page listing every source. For every job the employer's own career page is searched for and linked. Every source link is checked regularly for liveness; dead ads are crossed out, and the employer's own page is checked separately. Job boards and aggregators, by market. LinkedIn and Adzuna cover every market; every Adzuna find is traced back to the original ad before it is matched, and Google web search is used on top to find ads and employer career pages that no board carries. Germany: - StepStone - Jobbörse der Bundesagentur für Arbeit (the German public employment service) - XING - meinestadt.de - kimeta.de - stellenanzeigen.de - Jobware - Monster.de - Yourfirm - Absolventa - get in IT - jobvector Austria: - karriere.at - StepStone.at - AMS eJob-Room (the Austrian public employment service) - willhaben Jobs - derStandard Karriere - jobs.at - hokify - Monster.at - unijobs.at - devjobs.at - XING Switzerland and Liechtenstein: - JobScout24 - job-room.ch (RAV, the Swiss public employment service) - jobs.ch - jobup.ch - jobwinner.ch - professional.ch - ostjob.ch - publicjobs.ch - hosco.com - ictcareer.ch - itjobs.ch - ictjobs.ch - SwissDevJobs - jobzueri.ch - zentraljob.ch - jobgipfel.ch - liechtensteinjobs.li Employer applicant tracking systems (ATS) with a direct feed: - Workday - SmartRecruiters - Greenhouse - Lever - Workable - Ashby - Personio - Recruitee - Factorial New ATS feeds are discovered automatically from the apply links in the pool. More than 60 further ATS and HR platforms are recognised and named on the job page when an ad links to them, among them Prospective, Refline, SAP SuccessFactors, Umantis, Ostendis, Softgarden, Teamtailor, Onlyfy, Jobylon, Abacus, Dualoo, Taleo, Oracle Recruiting, iCIMS, Avature, BambooHR, JOIN, Jobvite, Talentsoft, Cornerstone, HR4YOU, Phenom, Eightfold, Zoho Recruit and rexx systems. Quality control: duplicates are merged, teaser-only ads are completed from the original page before matching, and an automated audit checks every job before it is shown or matched. ## Contact data for every job - From the ad itself: contact person, e-mail address, phone number and the application link are extracted from the snapshot of the posting. Nothing is invented: an e-mail address must literally appear in the ad, phone numbers are validated, and board or aggregator addresses are rejected. - When the ad names nobody: the job's own application page and the employer's team, career, contact and imprint pages are read for named HR and recruiting contacts. - Company level: the legal entity and UID come from the Swiss commercial register, the switchboard number and address from public directories, and e-mail, contact page and logo from the company's own website. - The result is a company dossier on the job page: contacts, address, website, UID, logo, whether the poster is the employer or an agency, and a salary estimate based on the Swiss Federal Statistical Office wage survey (by region and occupation) when the ad states none. - Contacts are marked as stated in the posting or as taken from the company record, so a recruiter knows how fresh they are. - Ads that say "no agencies" are flagged so a recruiter does not waste a call. ## Nightly scans - The scan starts at 01:00 Swiss time. It first judges every candidate against jobs already in the pool, then crawls all boards and ATS feeds, dedupes and completes the new ads, runs the quality audit, and writes a verdict for every new job and every active candidate. - Later in the night: liveness checks of every listing, contact harvesting for new jobs, and a full-pool quality audit. - In the morning the new matches are waiting, scored and explained. - The status page shows every scan: what was crawled, how many jobs were found, how many verdicts were written, and any errors, with timestamps in the user's local time. ## MCP: talk to Job Blower from your AI assistant Job Blower is an MCP server (Model Context Protocol) at the [MCP endpoint](https://app.jobblower.com/mcp-server). Users connect Claude, ChatGPT, Grok or any other MCP-capable assistant with a standard OAuth login (the app's own login page, including two-factor) and then ask questions about their own data in plain language, for example "which new matches came in tonight?" or "who fits this job?". The connector can never show more than the web app shows to that user. A new agency starts with MCP off and an agency admin switches it on. The admin also sees how many AI apps are connected right now, which app, which user and when it was last used, and can disconnect all of them with one button: every connected assistant loses access immediately and has to be connected again. The app warns that candidate data flows to the chosen AI provider. Available tools: - list_candidates: all candidates with profile status - get_candidate: full profile, skills, target roles, placeability score - get_candidate_matches: a candidate's matches with the same filters as the app - list_matches: matches across all candidates, score 65 and above - search_jobs: search the job pool by keyword, active or expired, optionally only jobs with a shortlisted candidate - get_job: full job page including company contacts, salary, matched candidates and the shared note - list_favorites: the user's starred jobs - save_job_note: write or extend the agency's shared note on a job - set_favorite: star or unstar a job ## Built for agencies - Multi-tenant: users and roles (admin, employee) per agency; candidate data is visible to that agency's users only. Invitations by e-mail. - Two-factor login with one-time backup codes, e-mail confirmation, password reset, brute-force protection. - One shared note per job for the whole agency, plus internal notes per candidate. Favourites per user. - Audit log: every scan, verdict and login is recorded with a timestamp. - Interface in English, German, French and Italian, with Swiss conventions. Dates and times are shown in the user's local time. - Light and dark mode: automatic by device, or fixed to light or dark on the user's account. The choice belongs to the account and applies to the app and to this website. ## Security and data protection - Hosted on a dedicated server in Europe. CVs and profiles are never sold or handed over for model training. - The CV is read, and the profile built from it, by a language model running on Job Blower's own server: the CV never leaves that server. A match verdict uses the public job advert plus an anonymised profile with the name and contact details removed. - Every connection is encrypted. Scraped job ads are treated as untrusted input to the language models. - Job ads are public data. Candidate data belongs to the agency. - The website asks before it measures anything: analytics is loaded only after the visitor accepts it in a cookie banner. Rejecting changes nothing else on the site, and the app carries no analytics at all. - A privacy policy and a cookie policy, covering the website and the app, are published in all four languages in every edition. ## Pages The website is one page, pre-rendered per country and language. Sections on each page: #how (how it works), #features, #sources, #security, #contact (the price request form). - [Germany, English](https://jobblower.com/de-en/): Germany edition - [Germany, German](https://jobblower.com/de-de/): Deutschland, Deutsch - [Austria, English](https://jobblower.com/at-en/): Austria edition - [Austria, German](https://jobblower.com/at-de/): Österreich, Deutsch - [Switzerland, English](https://jobblower.com/ch-en/): main edition - [Switzerland, German](https://jobblower.com/ch-de/): Schweiz, Deutsch - [Switzerland, French](https://jobblower.com/ch-fr/): Suisse, français - [Switzerland, Italian](https://jobblower.com/ch-it/): Svizzera, italiano - [Liechtenstein, English](https://jobblower.com/li-en/): Liechtenstein edition - [Liechtenstein, German](https://jobblower.com/li-de/): Liechtenstein, Deutsch - [International, English](https://jobblower.com/en/): no country selected - [International, German](https://jobblower.com/de/): ohne Länderwahl - [International, French](https://jobblower.com/fr/): sans pays - [International, Italian](https://jobblower.com/it/): senza paese - [Sitemap](https://jobblower.com/sitemap.xml): all editions in XML ## Documentation A public reference section: what Job Blower does and why, not how to operate it. One page per topic, in every edition and language, each carrying the date it was last updated. The click-by-click manual lives inside the app. - [What Job Blower is](https://jobblower.com/en/docs/what-it-is/): Job Blower reads a CV once, builds a profile, and matches that candidate every night against every open job, with a score and a written verdict per match. - [Where the jobs come from](https://jobblower.com/en/docs/sources/): Four kinds of source feed one pool: job boards, the public employment service, employers’ applicant systems read directly, and web search, with a quality gate before anything is matched. - [Every job on one page](https://jobblower.com/en/docs/job-page/): Every place the ad was found, the employer’s own posting, the contact person found inside or outside the ad, and the salary, stated or estimated from official wage statistics. - [From CV to profile](https://jobblower.com/en/docs/profile/): Roles, skills, seniority, languages, permit and preferred locations are read out of the CV, scans included, and you confirm the profile before anything is matched. - [How a match is decided](https://jobblower.com/en/docs/matching/): Skills, seniority, domain, languages and location are each rated 0–10 and combined in code into one score, with three bands and a small number of hard limits. - [What a match tells you](https://jobblower.com/en/docs/verdict/): Every match carries a written verdict: what fits, what is missing, red flags and a reusable pitch, written in the language of the ad, about an anonymised profile. - [What happens every night](https://jobblower.com/en/docs/every-night/): The nightly cycle in order: the existing pool is judged first, then the market is crawled, prepared and judged, and every source link is re-checked. - [The placeability score](https://jobblower.com/en/docs/placeability/): A 0–10 figure per candidate built from the quality of the best matches, the number of strong matches and their salary level, recomputed after every run. - [Markets and coverage](https://jobblower.com/en/docs/markets/): Job Blower covers Germany, Austria, Switzerland and Liechtenstein. Each market has its own sources; Switzerland and Liechtenstein share one pool. - [Your data and where it goes](https://jobblower.com/en/docs/your-data/): CVs are read by a Qwen model on our own server and never leave it; public job adverts are judged by Mistral and Bonsai using an anonymised profile. Hosted in Europe, isolated per agency. - [Using it from your AI](https://jobblower.com/en/docs/from-your-ai/): An optional connection lets an AI assistant read your candidates, jobs and verdicts in plain language. It can change almost nothing, and it is off until an agency turns it on. - [Questions we get asked](https://jobblower.com/en/docs/questions/): Price, how quickly the first matches appear, whether it replaces your existing tools, which countries are covered, what leaves the server, and what happens to your data if you stop. The same pages exist under every edition prefix, for example https://jobblower.com/de-de/docs/matching/ in German for Germany. A link without a country (https://jobblower.com/docs/matching/) sends the reader to their own edition. ## Privacy and cookies Two policy pages, in every edition and language, covering both the website and the app: what is stored, what leaves the server, who processes it, how long it is kept, and every cookie with its purpose and lifetime. The website loads no analytics until the visitor accepts it; rejecting leaves the site and the app fully functional and is remembered for 12 months, and the choice can be changed again at any time from the cookie policy page. - [Privacy policy](https://jobblower.com/en/privacy/): who is responsible, what is stored, what leaves the server, and your rights - [Cookie policy](https://jobblower.com/en/cookies/): every cookie the website and the app set, and how to change the analytics choice ## Optional - [robots.txt](https://jobblower.com/robots.txt): crawler rules - [App login](https://app.jobblower.com/): for existing users only, no public content ## Pricing and contact There is no public price list: a price is quoted per agency. The #contact section at the bottom of every edition of the home page carries a price request form asking for a name, a company, an e-mail address, an optional phone number, how many candidates would be tracked at the same time and how many recruiters would use it. It is answered by email, normally within one working day. What is submitted is sent as an email and is not stored in a database. Job Blower is developed and operated by persolution.swiss, a Swiss IT recruiting company. Agencies that want to see it on their own candidates can also get in touch via [persolution.swiss](https://www.persolution.swiss/). Existing users log in at [app.jobblower.com](https://app.jobblower.com/).