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
- Fetch. A scheduled GitHub Actions run collects public listings from the feeds you enable, then normalises and de-duplicates them.
- Filter. Cheap rules remove jobs in the wrong location, at the wrong seniority, below your salary floor, or that hit a dealbreaker.
- 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.
- Deliver. You get an email digest. The same matches are encrypted with your passphrase and published here, where only your browser can unlock them.
- 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.
| Data | Where it lives |
|---|---|
| Profile / CV | FITTO_PROFILE Actions secret |
| Jobs, scores, statuses, drafts | Encrypted state.enc on the fitto-state branch |
| Matches on this site | data/matches.enc.json, encrypted with your site passphrase |
| Your statuses and tokens on this site | This browser's storage only (export or erase at any time) |
| What GitHub sees when you send to The Next Chapter | Opaque job ids only, never URLs or titles |