Important:Read DISCLAIMER.md first.

Docs / Tracking Replies

Tracking Replies

Seekter's job application tracker in plain markdown: log rejections, interviews and offers with /seekter-log, sweep your inbox, or import a spreadsheet.

Seekter's job application tracker is plain markdown: every posting it touches is recorded once in applications/, applied or skipped, with its status. You can read it, grep it and diff it. /seekter-log keeps it true after the run, as rejections, interviews and offers come in.

The Job Application Tracker

applications/
  README.md          ← generated: needs you, in progress, last 30 days, one row per month
  2026-10/
    README.md        ← generated: that month's applications with status
    2026-10-22--acme--senior-product-designer.md
    skipped.md       ← one row per posting passed over, with the reason
  • Applications and hand-offs are files. The status (pending, applied, interviewing, offer, rejected, closed) is in the file's front matter. Files never move: a rejection a month later edits one line and adds a log entry.
  • Skips are rows. Most skips have a one-line reason, so each month keeps them in one table. Dedup reads it too, so a skipped posting is never weighed twice.
  • Read the generated pages, not the folders. applications/README.md is rebuilt after every change.

Each application file keeps the answers that were submitted, so no sentence goes to two companies.

Telling Seekter What Happened

Run /seekter-log and say it in a sentence:

You sayWhat happens
"Acme rejected me"Moved to rejected, with the date and a line from the mail
"I have a call with Globex on Thursday"Moved to interviewing, and you're offered interview prep
"Got an offer from Initech"Moved to offer, with the amount and deadline
"I applied to Umbrella myself"Checked against the tracker, then added as a manual application
"Don't apply to Hooli again"Moved to skipped and added to your blacklist

When a company has several roles in the tracker, it asks which one.

Sweeping Your Inbox

Ask for a sweep ("check my inbox for replies") with your webmail open in Chrome. Seekter reads every folder your profile lists and reads each message body, because subjects are unreliable: many rejections are titled just "Your application with X".

  • Each reply is matched to its application and moved to rejected, interviewing or offer.
  • A reply from a company with no record is added as a new one.
  • Anything that asks you to act, such as a scheduling link or a take-home, is listed for you and moved to your Action Required folder. Seekter never answers an email.
  • Your junk folder is read row by row, not skimmed: employer replies and recruiters' messages land there often. A recruiter reaching out is shown to you and moved to Action Required; when Seekter moves a mail out of junk, it does not mark the sender as safe for you.

Any webmail you can read in Chrome works.

The Tracker Commands

Seekter runs these for you. They're also there when you want to look yourself.

Everything waiting on you:

node scripts/seekter.mjs list --status pending

Counts by status since a date:

node scripts/seekter.mjs stats --since 2026-10-01

Whether a posting is already tracked. It answers 1 when it is, and 2 when the company is on hold:

node scripts/seekter.mjs check <url> --company Acme

Tidy the values after you've edited files by hand. --dry-run shows what would change:

node scripts/seekter.mjs normalize --dry-run

Importing an Existing Tracker

If you already track applications in Notion, Airtable or Google Sheets, export it as CSV. See what would be created first:

node scripts/import_csv.mjs export.csv --dry-run

Then import it:

node scripts/import_csv.mjs export.csv

Column names are matched loosely (Position, Role, Title, Company, Status, Job URL, Applied on…). Rows that point to the same posting are merged. Fill in URLs where you can: a row without one can only be matched by company name later.

/seekter-init offers the import during setup, so nothing you've already applied to is applied to again.

Updated October 28, 2026.