Privacy
What this app does with your data
Last updated 2026-07-12
KarirKalyan stores resumes, which are close to the most personal document a person owns. This page says exactly what it holds, where it lives, and who else can see it. Every claim here is checkable against the source.
Who runs this
KarirKalyan is run by Chairul Akmal, an individual — there is no company behind it. It is a portfolio project that is also used in earnest, not a business. Being an individual does not make the operator any less responsible for the data on this page, and this policy is written on that basis.
What is collected
Your email address and password (stored only as a bcrypt hash, never in the clear), the job applications you enter, the status history the app writes as you move them through the pipeline, and — if you upload them — one resume and one cover letter per application. Nothing else is asked of you — there is no profile, no phone number, no address field: whatever is in the PDFs you upload is whatever the app holds about you. One thing is collected without being asked for, and it would be dishonest to leave it out: your IP address. The rate limiter counts requests against it, and if something breaks, the error report carries it. The request log does not — it records the time, a request ID and the parameters, but not who sent them. Your IP is not used for anything else, and it feeds no profile.
Where it lives
One PostgreSQL database, managed by Railway. The PDFs are rows in that same database (bytea columns), not a separate file host. A backup runs daily — a pg_dump stored as an archive in a private repository, where it expires after 60 days. The database is not replicated anywhere else, and the operator keeps no working copy on a personal machine; restoring a backup to confirm it still restores is the exception, and that copy is deleted afterwards.
Who else touches it
Five services, each doing one job: Railway hosts the app and the database; GitHub runs the nightly backup and stores it, which means an archive of the entire database — resumes included — sits in GitHub's storage for the 60 days before it expires; Resend delivers reminder digests to your address; Honeybadger receives error reports — only errors, never a record of the requests that worked — with request parameters filtered so passwords and email addresses do not appear in them; and Anthropic receives the text of the job posting you use the AI pre-fill on, and nothing else: never a resume, never a cover letter, never anything else from your account. That is the entire list. Nothing is sold, and nothing goes to an advertiser or a data broker. One thing worth saying because it works in your favour: the pre-fill is fetched by the server, not by your browser, so the site hosting the job posting sees a request from the server and never learns that you were the one reading it.
What is not here
No analytics. No tracking pixels. No advertising. No third-party JavaScript — the content security policy blocks any that got injected. No cookie banner either, because there is nothing to consent to: two cookies, both strictly functional, neither one a tracker — the one that holds your session, and the one that remembers whether you chose English or Japanese.
Getting your data out
The dashboard has two export buttons and they are not decorative. The CSV is a spreadsheet of your applications; the account archive is a zip holding every field, every timeline entry, and every PDF you uploaded — enough to reconstruct the account somewhere else. Both are one click, no request, no waiting.
Getting it erased
Email the address below and the operator will delete the account — expect a reply within a few days, since it is one person reading a mailbox rather than a queue. The deletion itself is total: the user row, every application, every timeline entry, and every uploaded PDF go with it in a single cascade, and the backup archives that still hold them expire within 60 days. There is deliberately no self-service delete button in the app. The endpoint exists (DELETE /api/v1/auth/account) and is what the operator runs; it is not wired to a button, because an irreversible action with no recovery path does not belong one mis-click away.
Contact
Questions, data requests, or erasure requests: karirkalyan@cypherpunkzero.com. It is a mailbox a person reads.