← jlog

Privacy

Last updated: 25 September 2026

jlog holds your job search, which is about as personal as work data gets. This page says plainly what is stored, who else sees it, and how to get rid of it. No cookie banners, no advertising networks, no selling anything to anyone.

Who this covers

This policy covers the hosted instance at jlog.bhargav.dev. jlog is open source and MIT licensed, so anyone can run their own copy — if you are using someone else's instance, or your own, then whoever runs it holds the data and this page does not describe their practices.

What is stored

Your account

Your name, email address and avatar URL, as supplied by whichever sign-in method you used — GitHub, Google, or an emailed sign-in link. jlog also stores that provider's own account identifier, so that signing in again recognises you. No password is ever stored, because jlog does not use passwords.

Your job applications

Everything you record about an application: company, role, location, status, the link you applied through, dates, salary ranges, your notes, and the job description if you saved one. A timeline of status changes is kept alongside it.

Your CV and generated documents

If you import a CV, jlog stores the file itself and the text extracted from it, along with the individual facts pulled out of it — roles, bullet points, skills — so that tailored documents can be traced back to something you actually wrote. Generated CVs and cover letters are stored against the application they were written for.

Your LLM provider key

If you configure your own AI provider, the API key is encrypted with AES-GCM-256 before it is written to the database and is never returned to the browser after you save it. The provider and model names are stored in the clear.

Billing

For the paid plan, jlog stores your Stripe customer and subscription identifiers, your plan, and its renewal date. Card details never reach jlog — payment happens on Stripe's own hosted checkout page, and jlog only ever sees the result.

Extension keys

Keys you generate for the Chrome extension, with their label and expiry, so you can see and revoke them from Settings.

The Chrome extension

The extension is the one part of jlog that runs inside pages you visit, so it is worth being exact about what it reads and when.

On the six job boards it supports — LinkedIn, Wellfound, Ashby, Greenhouse, Lever and Y Combinator's job board — applying is detected automatically, and four things are recorded: the company, the role, the link to the posting, and the time. This happens without asking you first, and it does not read the job description. Anything it records can be deleted.

On any other site it reads nothing at all until you click the jlog icon and choose to extract the page. Only then does it read that one tab — and that route does read the posting text, so that company, role and location can be pulled out of it. Nothing from it is saved until you have seen the result and confirmed it.

The extension itself contacts one server and one only: jlog's API. It does not track which pages you visit, does not read pages you have not asked it to, and contains no analytics or advertising code of any kind.

Once a posting reaches jlog the ordinary rules below apply to it, and for AI extraction that means it does not stop with jlog. The posting text is sent on to whichever AI provider you configured, and on the hosted instance a record of that request also goes to Langfuse, which exists so a failed or expensive generation can be investigated. Both are described under Who else sees your data.

Worth being precise about the case where you have configured no provider at all. Clicking Extract with AI still sends the page text to jlog's own API — that happens first, and is how the request is made. jlog then refuses it, so the text is not forwarded to any AI provider and no extraction takes place. The distinction is between the text reaching jlog, which it does, and the text reaching a third party, which it does not.

In your browser it stores the key that links it to your account, and a note of whether that key still works so it can tell you when one has expired rather than just failing. Both stay in the browser.

If you extract a page with AI, the text of that posting goes to whichever provider you configured, exactly as described under Who else sees your data below. Uninstalling the extension removes the key from your browser; to revoke it everywhere, delete it under Settings.

Analytics, which currently do nothing

jlog has a single analytics setting, in Settings, and it is off by default. It is worth being exact about what it does today: it records your preference and nothing else. No analytics data is collected, aggregated or shared with anyone.

The intention behind it is to share anonymised aggregates one day — response rates, time to offer, ghosting patterns, with no company names, role titles, notes or anything identifying you — so that jlog can tell job seekers what the market is actually doing. None of that is built. If it ever is, it will apply only to accounts that have switched the setting on, and this page will say so before it starts rather than after.

There is no third-party analytics script on this site, no advertising pixel, and no cross-site tracking.

Cookies

One cookie in normal use: the one holding your sign-in session. It is HttpOnly, so page scripts cannot read it, and it expires after 30 days.

Signing in adds no second cookie. The half-finished sign-in — the bit that lets the answer coming back from GitHub, Google or Apple be matched to the attempt you actually started — is held as a short-lived row in the database instead, which expires after ten minutes and is swept nightly.

Your light/dark theme preference is kept in your browser's local storage and never sent anywhere. That is the lot — no tracking cookies of any kind.

Who else sees your data

These are the only third parties involved, and each one gets only what its job requires:

Nothing is sold, rented, or shared with advertisers. Data is disclosed otherwise only if the law actually requires it.

Getting your data out, or deleting it

You can delete your account yourself, from Settings → Delete account. It does not go into a queue and nobody reviews it: it happens when you confirm.

Deletion is permanent and covers your applications and their timelines, your imported CV and the facts taken from it, every generated document, your stored provider key and your extension keys — including the uploaded and generated files themselves, which live outside the database and are removed with it rather than left behind. If you are on the paid plan, the subscription is cancelled at the same time, so deleting your account does not leave you being billed for it.

Email hello@bhargav.dev for a copy of everything held about you, or if you would rather someone did the deletion for you.

If you self-host, none of this applies to you in the first place — the database is yours, and deleting a row is the whole procedure.

How long things are kept

Your data stays until you delete it or ask for your account to be removed.

Credentials that have run out are swept by a job that runs once a day. Spent and expired sign-in links go as soon as they lapse, along with the short-lived rows recording a sign-in that was started and not finished, and expired browser sessions. Expired extension keys are kept for a further 30 days and then removed — deliberately, so that an extension which has stopped working can still tell you when its key expired rather than saying it has never seen it.

During those 30 days the row is still there in full: the key value itself, the account it belonged to, its label and when it was made. An expired key cannot be used to sign in from the moment it lapses, but it has not been erased yet either.

Changes

If this policy changes in a way that affects what is collected or who sees it, the date at the top changes and material changes are announced in the app.

Contact

hello@bhargav.dev