Proof that you're
actually applying.
A job search is invisible work. You send applications into a void, hear nothing back, and have nothing to point at when someone asks how it's going. This makes the void countable — and gives you one link to send instead of an answer.
Free. Your log is private until you share its link.
Log it when you apply
Role, company, location, pay, and the date. Thirty seconds, right after you hit submit.
Send one link
You get a private URL. Nobody finds it without it, and you can switch it off or reissue it whenever.
Let the numbers argue
Applications sent, replies back, and how long each one has sat in silence. Counted, not claimed.
About this
Built by Kyle Foley. It started as one page so my girlfriend would stop asking whether I'd applied to anything. It turned out other people wanted the same receipt, so now anyone can keep one.
Every row belongs to an owner, and isolation is enforced in Postgres rather than in the app: Row Level Security restricts each table to the signed-in user's own rows, so the queries carry no user filter at all and there is no client-side check to forget or bypass. Public share links go through two parameterized, read-only database functions that return only the columns a visitor should see, for a 96-bit token, and only while its owner leaves sharing on — which is why the app ships no service-role key and holds no credential that can read anyone else's data.
- Next.js 15 · App Router
- TypeScript
- Supabase Postgres
- Row Level Security
- Supabase Auth
- Edge Functions
- Tailwind v4
- Vercel