madebyfavor · open source

Jobs that fit you, found while you sleep.

Fitto is a small agent that runs on GitHub Actions. Every day it reads public job feeds, filters out the ones that don't fit, asks an AI model to score the rest against your profile, and emails you a short list with the reasons. Your profile and matches stay encrypted.

What it does

Public feeds only

Greenhouse, Lever, Ashby and Workable job boards for the companies you watch, plus Remotive, We Work Remotely, RemoteOK and HN "Who is hiring". It respects robots.txt and rate limits. No LinkedIn or Indeed scraping.

Filters, then scores

Hard filters for location, seniority, salary floor and dealbreakers come first. Then a model scores each job 0–100, with matched skills, gaps, red flags and a confidence level.

Daily digest

A short email with your top matches and why they fit. Jobs don't repeat unless their status changed. A weekly summary comes every Monday.

Learns from you

Saved, applied and dismissed jobs nudge future scores. Every learned boost is visible and editable.

Drafts, never sends

Strong matches (80 or more) get draft CV bullets and a short cover note. Fitto never applies or contacts employers for you.

The Next Chapter

Pick jobs on this site and send only the ones you selected to The Next Chapter, in one go.

How it works

  1. Fetch. A scheduled GitHub Actions run collects public listings from the feeds you enable, then normalises and de-duplicates them.
  2. Filter. Cheap rules remove jobs in the wrong location, at the wrong seniority, below your salary floor, or that hit a dealbreaker.
  3. Score. The rest are scored against your profile by GitHub Models (or OpenAI if you choose). Calls are capped and cached, and results are adjusted by what Fitto has learned from your feedback.
  4. Deliver. You get an email digest. The same matches are encrypted with your passphrase and published here, where only your browser can unlock them.
  5. Act. Mark jobs as saved, applied or dismissed. Tick the ones you want and send them to The Next Chapter with one button and one confirmation.

Private by design

The code is public; your data isn't. Your profile is a GitHub Actions secret. Fitto's state (jobs, scores, statuses and drafts) is encrypted with AES-256-GCM before it is stored. This site publishes only an encrypted file. Your browser decrypts it with your passphrase using WebCrypto, and the passphrase never leaves your device.

DataWhere it lives
Profile / CVFITTO_PROFILE Actions secret
Jobs, scores, statuses, draftsEncrypted state.enc on the fitto-state branch
Matches on this sitedata/matches.enc.json, encrypted with your site passphrase
Your statuses and tokens on this siteThis browser's storage only (export or erase at any time)
What GitHub sees when you send to The Next ChapterOpaque job ids only, never URLs or titles