job-application-agent 2.0.2 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -8,10 +8,11 @@
8
8
  [![MIT License](https://img.shields.io/badge/license-MIT-2563EB.svg)](LICENSE)
9
9
  [![Codex Skill](https://img.shields.io/badge/Codex-skill-111827)](job-application-agent/SKILL.md)
10
10
  [![Node 20+](https://img.shields.io/badge/Node.js-20%2B-339933?logo=nodedotjs&logoColor=white)](https://nodejs.org/)
11
+ [![npm](https://img.shields.io/npm/v/job-application-agent?logo=npm&color=CB3837)](https://www.npmjs.com/package/job-application-agent)
11
12
 
12
13
  **Discover better roles · Apply with verified facts · Keep private data local · Learn from outcomes**
13
14
 
14
- [Quick start](#-quick-start) · [How it works](#-how-it-works) · [Safety](#-safety-by-design) · [Privacy](#-privacy-model) · [Analytics](#-usage-analytics) · [Security](SECURITY.md)
15
+ [Quick start](#-quick-start) · [How it works](#-how-it-works) · [Safety](#-safety-by-design) · [Privacy](#-privacy-model) · [Public dashboard](https://job-application-agent-telemetry.varora1406.workers.dev/) · [Analytics](#-usage-analytics) · [Security](SECURITY.md)
15
16
 
16
17
  </div>
17
18
 
@@ -19,13 +20,25 @@
19
20
 
20
21
  Job Application Agent helps Codex discover, qualify, complete, and track your own job applications—without inventing credentials or hiding consequential decisions. It combines browser-assisted form filling with a verified résumé, candidate-defined targeting, secure local profile storage, duplicate detection, and an application ledger.
21
22
 
22
- ## Install once, stay current automatically
23
+ ## Install for humans and agents
24
+
25
+ Run this one canonical command in a terminal:
23
26
 
24
27
  ```bash
25
28
  npx job-application-agent@latest install
26
29
  ```
27
30
 
28
- Requires Node.js 20 or newer. The installer places the skill at `~/.codex/skills/job-application-agent` and enables automatic updates by default. It checks npm at login and every hour on macOS, Linux, and Windows, then installs the newest published version without asking users to reinstall. Candidate profile data, the canonical résumé, telemetry identity, and application ledgers remain outside the replaceable skill directory.
31
+ If you are asking a coding agent to set it up, paste this:
32
+
33
+ ```text
34
+ Install the Job Application Agent by running:
35
+ npx job-application-agent@latest install
36
+
37
+ Then confirm the installed version with:
38
+ npx job-application-agent@latest status
39
+ ```
40
+
41
+ Requires Node.js 20 or newer. The installer places the skill at `~/.codex/skills/job-application-agent` and enables automatic updates by default. Restart Codex after the first installation so it discovers the skill. The updater checks npm at login, every hour on macOS, Linux, and Windows, and at the start of a job-application workflow. Candidate profile data, the canonical résumé, telemetry identity, and application ledgers remain outside the replaceable skill directory.
29
42
 
30
43
  ```bash
31
44
  # See the installed version and update mode
@@ -73,12 +86,10 @@ It never reads browser cookies or session files, and it records an application a
73
86
  ### 1. Install the skill
74
87
 
75
88
  ```sh
76
- git clone https://github.com/vaibhavarora14/job-application-agent.git
77
- mkdir -p ~/.codex/skills
78
- cp -R job-application-agent/job-application-agent ~/.codex/skills/
89
+ npx job-application-agent@latest install
79
90
  ```
80
91
 
81
- Restart Codex so it discovers the skill.
92
+ This is the supported installation path for both people and coding agents. Restart Codex so it discovers the skill.
82
93
 
83
94
  ### 2. Onboard your profile
84
95
 
@@ -138,6 +149,8 @@ Structured anonymous usage analytics are enabled by default so the project can l
138
149
 
139
150
  It never includes candidate identity, profile fields, résumé content, prompts, form answers, notes, browser data, IP addresses, or raw errors. A Cloudflare relay validates the schema before forwarding personless events to a private PostHog dashboard.
140
151
 
152
+ The [public usage dashboard](https://job-application-agent-telemetry.varora1406.workers.dev/) shows aggregate installations, activity, applications, outcomes, ATS mix, and role seniority. The relay increments a separate aggregate-only Cloudflare D1 store after PostHog accepts each event. The public API exposes no raw events or installation identifiers and suppresses small segments.
153
+
141
154
  ```sh
142
155
  node ~/.codex/skills/job-application-agent/scripts/job-application.mjs telemetry status
143
156
  node ~/.codex/skills/job-application-agent/scripts/job-application.mjs telemetry disable
@@ -61,5 +61,7 @@ Only documented enums, bounded numbers, Booleans, bounded company/title/country
61
61
  - The project does not call PostHog identify, alias, group, person-property, autocapture, or session-replay features.
62
62
  - Anonymous installation IDs remain stable until reset.
63
63
  - The product retention policy is 24 months and dashboards are private. Dashboard queries exclude data older than 24 months.
64
+ - A public usage dashboard exposes only fixed aggregate metrics. It never exposes raw events or anonymous installation IDs, rolls segment counts below three into `other`, and caches results at the edge for 15 minutes.
65
+ - After PostHog accepts an event, the relay best-effort increments a separate Cloudflare D1 store containing daily counters and HMAC-derived installation hashes. The public endpoint reads only this aggregate store; it has no PostHog read credential.
64
66
  - PostHog US Cloud must be configured with a 24-month raw-event TTL before production telemetry is considered fully retention-compliant. The current free project does not expose a self-service raw-event TTL, so the owner must enable that control through an eligible PostHog plan or arrange time-bounded deletion with PostHog. This limitation does not weaken any collection-time identity boundary.
65
67
  - The Worker does not forward client IPs or request headers, and Worker observability is disabled.
@@ -36,7 +36,7 @@ async function writePrivate(file, value) {
36
36
  }
37
37
 
38
38
  export class TelemetryClient {
39
- constructor({ stateDir, endpoint = DEFAULT_TELEMETRY_ENDPOINT, fetch: fetchFn = globalThis.fetch, stderr = (value) => process.stderr.write(value), now = () => new Date(), timeoutMs = Number(process.env.JOB_APPLICATION_AGENT_TELEMETRY_TIMEOUT_MS ?? 750) }) {
39
+ constructor({ stateDir, endpoint = DEFAULT_TELEMETRY_ENDPOINT, fetch: fetchFn = globalThis.fetch, stderr = (value) => process.stderr.write(value), now = () => new Date(), timeoutMs = Number(process.env.JOB_APPLICATION_AGENT_TELEMETRY_TIMEOUT_MS ?? 3000) }) {
40
40
  this.stateDir = stateDir;
41
41
  this.endpoint = endpoint.replace(/\/$/, '');
42
42
  this.fetch = fetchFn;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "job-application-agent",
3
- "version": "2.0.2",
3
+ "version": "2.0.4",
4
4
  "description": "A self-updating Codex skill for evidence-based job discovery, application completion, and outcome tracking.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -37,7 +37,7 @@
37
37
  "test": "node --test job-application-agent/tests/*.test.mjs telemetry-worker/tests/*.test.mjs installer/tests/*.test.mjs",
38
38
  "privacy-audit": "node --test job-application-agent/tests/privacy-audit.test.mjs",
39
39
  "smoke:package": "node scripts/smoke-package.mjs",
40
- "check": "node --check job-application-agent/scripts/job-application.mjs && node --check job-application-agent/scripts/telemetry-client.mjs && node --check job-application-agent/scripts/telemetry-schema.mjs && node --check telemetry-worker/src/worker.mjs && node --check installer/src/cli.mjs && node --check installer/src/installer.mjs && node --check installer/src/runner.mjs && node --check installer/src/scheduler.mjs && node --check bin/job-application-agent.mjs",
40
+ "check": "node --check job-application-agent/scripts/job-application.mjs && node --check job-application-agent/scripts/telemetry-client.mjs && node --check job-application-agent/scripts/telemetry-schema.mjs && node --check telemetry-worker/src/worker.mjs && node --check telemetry-worker/src/public-stats.mjs && node --check telemetry-worker/public/dashboard.js && node --check installer/src/cli.mjs && node --check installer/src/installer.mjs && node --check installer/src/runner.mjs && node --check installer/src/scheduler.mjs && node --check bin/job-application-agent.mjs",
41
41
  "prepack": "npm run check && npm test && npm run privacy-audit"
42
42
  },
43
43
  "engines": {