BERKAN
ASLAN
0%

OfferTunity

Job hunting turns into a spreadsheet you stop updating. OfferTunity keeps every application, interview stage and silent week in one native macOS window — and never sends a byte of it anywhere.

Version 1.3 | Requires macOS 14.0 or later.

The app follows your system language, in English or Turkish.

Paste the posting, keep the typing

Filling the same five fields by hand for every application is the reason tracking spreadsheets get abandoned. Select a job posting, copy it, and OfferTunity reads it — company, position, location, salary, link — and hands you a filled form to check.

  • Copied text

    ⌘A then ⌘C on the posting, ⌘V in the app. Read straight from the text, so it is more accurate than working from a picture of it.

  • A screenshot on the clipboard

    ⌃⇧⌘4 puts the shot on the clipboard without leaving a file behind. Paste it and the text is recognised from the image.

  • Image files

    Drag screenshots onto the list, or ⇧⌘O. Drop several at once and they arrive in one table you correct row by row.

Nothing is saved until you say so. Every field carries a confidence badge, and the magnifier beside it shows the line it came from.

It counts the silence for you

The hardest part of a job hunt is not the interviews, it is the not knowing. Every open application shows how many days it has been waiting, colour-coded, so the ones going quiet are obvious at a glance. The counter stops the moment a process closes.

  • 0-6 days

    Still early — no need to chase.

  • 7-13 days

    A good moment for a follow-up email.

  • 14+ days

    Two weeks of silence — worth chasing.

Reads the text, not a picture of it

When the clipboard holds text, the parser works on the characters themselves rather than recognising them from pixels — which is why pasting beats screenshotting. Images still go through recognition when that is all you have.

Recognition that stays on the machine

Screenshots are read with Apple's Vision framework, on your Mac. The app ships with no network permission at all, so an image physically cannot be uploaded anywhere.

Five clear stages

Applied, HR interview, technical interview, offer, rejected. Every change is recorded with its date, so you can see how long each stage actually took.

Follow-up dates

Set a date to come back to an application and it is flagged when the day arrives. Filter by status, sort by longest waiting, and search across company, position and notes.

Expected vs offered

Record what you asked for and what you were offered, in TRY, USD, EUR or GBP. The gap between the two is worked out for you.

Rejections worth learning from

Note how the rejection arrived and why — another candidate, experience, budget, relocation or visa, position closed — so patterns across a search become visible.

The people, not just the company

Keep the HR contact and the technical interviewer with each application, with the posting link and your own notes alongside them.

Export and import

⇧⌘E writes a JSON backup, ⇧⌘I reads one back. Importing only ever adds — it never clears what you have, and the same file twice will not give you duplicates.

Your last note is not lost

⌘S saves on demand, and the app also saves when it goes to the background and when it quits. Deleting always asks first, whether from the button, the ⌫ key or the Edit menu.

Stays on your Mac

Built with SwiftUI and SwiftData. No account, no sync, no analytics — and it is sandboxed without network access, so your salary expectations and rejection notes cannot leave the machine even in principle.