Tell us the job you actually want.
Every day, WebZap Jobs scans thousands of open positions and emails you only the ones that match what you wrote. No profile to fill in, no account, no CV upload. Just your own words.
↳ free & open source – read exactly what we do with your data · github.com/Kipperlenny/webzap-jobs
This is 100% free. Your text is used for exactly one thing: emailing you tailored job offers.
We never sell or share your data. No tracking. Emails may include clearly marked sponsored content – that's how the service stays free – but advertisers never see who you are or what you wrote. Every email has a link to change the frequency, pause, or delete everything – one click, any time.
how it works
- describeWrite freely what you're looking for. Messy is fine.
- confirmClick the link in the email we send you. Unconfirmed entries vanish after 48 h.
- receiveGet matching open positions, daily or weekly. Only real, current postings.
- controlNo account, no password. Every email contains your personal links to edit, pause, export or delete.
don't trust us – read the code
WebZap Jobs is open source. Everything this site does with your data is public on GitHub.
Privacy promises are cheap. Code is verifiable. Read it, audit it, run your own instance, or open an issue if you find something you don't like.
- MIT license
- email + text encrypted (Fernet/AES)
- links stored only as SHA-256 hashes
- zero cookies, zero trackers
- no third-party fonts or scripts
- deployed commit shown in the footer
def add_pending(email: str, text: str, frequency: str) -> dict:
"""Store an unconfirmed signup; returns its fresh tokens {confirm, manage, delete}."""
t = {k: secrets.token_urlsafe(32) for k in ("confirm", "manage", "delete")}
with _conn() as c:
c.execute("""INSERT INTO signups (email_hash, email_enc, text_enc, confirm_hash, manage_hash, manage_token_enc,
delete_hash, frequency, created_at) VALUES (?,?,?,?,?,?,?,?,?)""",
(email_hash(email), _fernet.encrypt(email.strip().encode()), _fernet.encrypt(text.encode()),
_h(t["confirm"]), _h(t["manage"]), _fernet.encrypt(t["manage"].encode()), _h(t["delete"]),
frequency, int(time.time())))
return t