DMN/Software

ProjectsJob portal

Job portal

A self hosted web application that finds fully remote jobs advertised worldwide that can actually be taken while living in Germany, and tracks your own applications with status, notes and reminders.

Remote does not mean anywhere

Many listings are marked as remote and still only apply to one country. The portal reads the residence requirements from every listing and keeps only jobs that can be accepted from Germany.

Excluded jobs do not disappear. They stay visible, together with the sentence from the listing that ruled them out. That way every decision can be checked.

Applications are always sent by hand. The portal sends nothing automatically.

Sketch with invented jobs. The excluded one stays in the list, with the sentence that ruled it out.

Finding jobs

Jobs come from several job boards and directly from the applicant tracking systems of companies. If the same job shows up in several sources, it is merged into one entry.

The company directory grows on its own. The portal recognizes the applicant tracking system from the links in job listings, uses AI once a week to look for more companies, and a crawler reads career pages. It respects robots.txt and requests each domain at most once every two seconds.

Job boards

  • Remotive
  • RemoteOK
  • Himalayas
  • Jobicy
  • We Work Remotely
  • Arbeitnow
  • Adzuna
  • Hacker News “Who is hiring”

Company applicant tracking systems

  • Greenhouse
  • Lever
  • Ashby
  • Workable
  • Recruitee
  • Personio
  • SmartRecruiters

Matching in three stages

First, hard filters sort jobs out without any AI. Then pgvector compares the profile with the remaining jobs by the similarity of their vectors. The embeddings are created locally with Transformers.js and the multilingual model multilingual e5 small.

Only what is left after that gets rated by an AI with a score from 0 to 100, with reasons and the gaps in the profile.

The provider, Claude or Gemini, can be chosen for each step. A daily limit caps the calls.

Sketch with an invented result for one job.

Tracking and mail

The portal tracks every application with status, notes and reminders.

The portal sends mail through Resend, with templates built in react email. Every day a digest of the best new matches arrives, along with reminders for follow ups that are due.

If Resend reports a hard bounce or a spam complaint, a webhook turns the digest off. The webhook signature is verified first.

Sketch of the daily mail, below it the event that turns it off.

Security

The portal holds CVs, references and GitHub tokens.

Technology

Frontend
Next.js 15, React 19, TypeScript, Tailwind CSS 4, shadcn/ui
Data
Supabase, self hosted: Postgres 17 with pgvector, GoTrue, PostgREST, Storage, Kong
Background jobs
Queues with pg boss
Embeddings
Transformers.js with multilingual e5 small
AI
Claude and Gemini, selectable for each step
Mail
Resend with react email
Tests
around 260 automated tests with Vitest and Playwright, CI on GitHub Actions
Operations
Docker Compose, Caddy

Live