Skip to main content
Side Project · Building in the Open /

WorkRemotely.eu

A remote job board for people who live in the EU, with every job checked for which countries can apply. Designed and built end-to-end as an independent product.

Side Project /Product Design /Product-Led Growth /AI Agents
Hero image for WorkRemotely.eu

A remote job board for people who live in the EU. It reads 1,204 company job boards every day, checks every job for which EU countries can apply, and backs each answer with a quote from the posting.

The jobs page: the sentence "I live in Germany and want design jobs that pay any amount, as employee or contractor" above "63 of 170 remote design jobs open to applicants in Germany", filter chips for seniority and skills, and compact job rows with who can apply

Why I Built This

Two things kept bothering me. Many jobs labelled remote turn out to be on site, or open to people in one country only. And roles are changing: the same title asks for different skills from one company to the next, and from one month to the next. I wanted to follow that with real postings.

So I built a job board that answers one question for every job: can I apply from where I live? Every posting is also read for skills, seniority, languages and pay, and the database keeps a daily snapshot. The board doubles as a running record of the remote job market in Europe.

The Problem

Remote job boards treat “remote” as one checkbox. Of 14,366 open remote jobs WorkRemotely tracks, 65% only hire outside the EU. A quarter are open to some EU countries only. 8% are open to the whole EU, worldwide roles included. Someone in Germany scrolls through jobs they can’t get.

The flag itself is unreliable. A heat pump company listed its service technicians (“Servicetechniker (m/w/d) Wärmepumpen”) as remote. A shipping company listed its tanker crews.

Job seekers say the same. I researched 48 competitors and what their users write in reviews, on Reddit and in forums. “Remote can’t be trusted” was the most common complaint, in about 13 of 26 threads. One user wrote about We Work Remotely: “99% require US citizenship despite ‘work anywhere’.” Paywalls, stale jobs and tools that apply on your behalf followed.

The EU niche is crowded, and no one tells a person in Germany reliably which remote jobs they can be hired for. All the pieces exist somewhere. remotely.de labels jobs by country group. RemoteHunt checks eligibility, and job seekers pay for it. The gap was the combination plus the checking.

Design Decisions

Who can apply comes first, with evidence

The first line of every job says which countries can apply. Gemini reads each posting for who can apply, how you’d be employed, seniority, skills, languages and pay, and its answer only counts with a word-for-word quote from the posting. The quote is checked against the posting text. 98% of answers about who can apply carry a verified quote.

Job rows for someone living in Germany, each with a "Says:" line quoting the posting, such as "Remote from anywhere in Germany." and "Can be based in the UK/Spain/Holland/Germany/Poland/France"

Data rules carry the trust

A list people trust needs rules that hold across every job. Each one was checked against all open jobs before it shipped.

  • The title beats the location: “Brand Designer (Spain or Portugal-based role)” on a Berlin company’s board is a Spain or Portugal job. Title rules override the location field, and the conflicting location is hidden.
  • One job per role: Bjak posted some roles 36 times, once per country. Speechify posted one role 81 times, once per city. Copies merge into one job open to all those countries, and Apply opens the posting for the visitor’s country.
  • Only real remote work: trades, drivers, shop work, ship crew, staffing agencies and AI data gigs are left out.
  • Only what you can apply for: jobs that only hire outside the EU stay in the database for the market numbers and never reach the list.

Search as a sentence

“I live in Germany and want design jobs that pay at least €70k, as an employee.” Each underlined part is a dropdown or a text field. The sentence is faster to read and change than a filter sidebar, and it says the visitor’s situation back to them. Chips below it adapt to the search: seniority, “English is enough”, and the 8 skills most asked for. Design shows Figma and Design systems, engineering shows Python and Kubernetes.

The details before the exit

In the first days, 233 of 305 Apply clicks came from the job title, which sent people to the employer before they saw who can apply. A click on the title now opens a details panel. The list moves left to make room, the arrow keys step through jobs, and the Apply button on the card still goes straight to the posting.

The desktop details panel open beside the job list: who can apply, pay, how you'd be employed, the location in the posting, and an Apply button for the employer's site

Freshness the visitor can feed

Apply goes through a live check that the posting still exists. When the visitor comes back to the tab, a small drawer under the job asks whether it was still open. A “no” makes the crawler recheck that company’s board right away. A three-dot menu on every job reports the rest: not open to my country, no longer open, not remote.

Privacy as a feature

No cookies, no tracking and no third-party content. Company logos are fetched from each company’s own website and served from WorkRemotely’s server, fonts too, so the site needs no consent banner. Logos in the job email load from the same address for every reader, which keeps the promise of no tracking pixels.

Built for the phone

In the first days, two thirds of visitors came on phones. The sentence’s choices open as a bottom sheet, details open as a sheet with Apply at the bottom, and filters fold behind one button, so the first job is on the first screen.

Three phone screens: the "Where do you live?" bottom sheet with a country list, the job list under the sentence search, and a job's details as a sheet with Apply at the bottom

Product Strategy

WorkRemotely is free for job seekers and useful before anyone signs up. The growth levers sit in the product: pages generated from the data, job alerts, and a list that stays correct.

Growth built into the product

Supply without a sales team. WorkRemotely reads company job boards directly from 10 hiring systems: Greenhouse, Lever, Ashby, Workable, Personio and five more. Discovery finds new company boards on its own. Listing is free for employers, because nobody has to post anything.

Search pages from real demand. I read the Google Ads search terms and the Umami events side by side. Germany brought the most visitors, design was the most searched field, Junior the most used chip, and “work from home” keywords had the best click rates. That became 85 pre-rendered pages: 31 countries, 9 fields, 5 topics and 40 country and field pairs. Each has its own title, live numbers and the 30 newest jobs, and only goes live with at least 10 matching jobs.

Alerts that bring people back. Every search can become a job email, every morning or once a week on Mondays, with double opt-in and one-click unsubscribe. Signing up stays one step.

Visitors keep the data correct. Every “was it still open?” answer and every report makes the crawler recheck that company’s board.

The data is content. The insights page shows the market in chapters that each make one point, such as “Remote rarely means anywhere”. The same numbers feed LinkedIn posts and a planned monthly report.

The insights page: an EU-blue hero with the flag's 12 gold stars and "3,073 remote jobs for people living in the EU", with companies hiring, the share that states pay, and analysis progress

Growth framework

LeverStrategyState
Acquisition85 search pages planned from Ads and Umami data, the insights page as shareable content, LinkedInLive. Sitemap in Search Console
ActivationSentence search with no account, adaptive chips, who can apply on the first lineLive. 305 Apply clicks in the first four days
RetentionDaily or weekly job email for any searchLive. 7 confirmed subscriptions in the first four days
ReferralEvery search is a link, a share image for social postsLive
RevenueFeatured jobs for employers: a top slot only where the job fits, same checks as every jobDesigned, demo in the live list

Revenue that keeps the promise

Basic listing is free. The first paid product is a featured job, and it buys attention without buying relevance. A featured job only shows for people who live in a country it’s open to and search for that kind of job. It needs a salary range, carries a clear “Featured” label, and goes through the same checks as every other job.

I designed the look in five rounds. A bigger logo broke the rhythm of the list, a left stripe fought the rounded corners, and a 2px border felt heavy. The result is a soft blue tint with the only filled Apply button in the list. Every normal Apply became a quiet outline button.

The featured jobs demo: two jobs on a soft blue tint with a blue Apply button and a Featured label, above a normal job with a quiet outline Apply button

What I Built

Data pipeline: A crawler for 10 hiring systems and three discovery sources. Gemini reads every posting for who can apply, employment, seniority, skills, languages and pay, with a verified quote. Roles posted per country or per city merge into one. Quality filters leave out on-site work, agencies and gig work.

Product: Sentence search with adaptive chips, compact job rows with company logos and pay in euros, a desktop details panel with keyboard navigation, phone sheets, the live check behind Apply, “was it still open?” feedback, and problem reports.

Growth and operations: 85 pre-rendered search pages with a sitemap and structured data, the daily and weekly job email with settings, the insights page, a page for employers, and cookieless analytics with Umami.

Company job boards read daily1,204
Hiring systems supported10
Remote jobs tracked14,366
Open to people in the EU3,073, from 705 companies
Answers with a verified quote98%
Search landing pages85
Automated tests224
Running cost€0 for hosting, database, email and analytics. AI about half a cent per posting

The first week after launch, October 6 to 12, 2026:

Visitors857
Visits939
Page views1,340
Biggest sourcesGoogle 184, LinkedIn 168
Top countriesGermany 193, Poland 42, Spain 36

Stack: Python, Postgres on Neon, React, Tailwind CSS, Vercel for the site, API and scheduled jobs, Brevo for email, Gemini API, Umami. Hosted in Frankfurt.

How I worked

I made the product, design, copy and technical calls, and directed Claude Code agents that wrote the code. For bigger work I wrote a contract first: the target architecture, who owns which files, the environment variables and the schedule. Four agents then rebuilt the backend in parallel, each in its own git worktree, and the result was checked against a copy of the real data before it went live. A separate model audited security before launch and found that a prompt-injected job posting could steer an AI agent in the pipeline. That path was closed before launch.

What the Data Shows

The board doubles as a record of the market. From 14,576 open remote jobs and 5,918 postings read in full, at launch:

Who remote jobs are open to: a split bar of 8% open to all of the EU, 25% only some EU countries, 65% outside the EU only, 1% doesn't say, above a map of Europe shaded by jobs open per country

  • Junior roles are rare: 5% junior, 1% intern. Mid-level 29%, senior 27%.
  • Language: 45% name English as a requirement, 9% German.
  • Employment: 57% employee, 19% contractor, 23% don’t say.
  • Pay: 17% state a salary in the description.
  • Most jobs open to: Germany, Poland and Spain.

The most used chip on the site is Junior, in a market where 5% of postings are junior roles.

What I Learned

Trust on a job board is built from data rules. The title override, the merged roles and the quote check shaped the product more than any screen. Each rule needed checking against every open job before it shipped.

The data picks the next feature. The search pages came from the Ads search terms and the Umami events. The details panel came from one number: 233 of 305 Apply clicks skipped the information the site exists for.

With serverless and a metered database, every scheduled job is a bill. One query loaded every job’s full text on each of six daily builds. Measuring what each job reads cut the database transfer from about 1.2 GB a day to 130 MB.

What Is Next

  • Search pages per skill and country: “Remote Python jobs open to people in Portugal”, per language and per seniority.
  • A monthly “Remote Europe” report: which skills rise and fall, built from the daily snapshots.
  • Featured jobs: open to employers once traffic is there.
  • workremotely.world: the same product for the world. Region is a data field, so it runs on the same database.

Independent product. Product strategy, design, copy and technical direction, built with Claude Code agents.

Live at workremotely.eu.