applyr 0.1.0__tar.gz

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.
applyr-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Deiby Gorrin
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
applyr-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,234 @@
1
+ Metadata-Version: 2.4
2
+ Name: applyr
3
+ Version: 0.1.0
4
+ Summary: CLI job application tracker designed for AI coding agents
5
+ Author-email: Deiby Gorrin <deibygorrin@gmail.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/DeibyGS/applyr
8
+ Project-URL: Repository, https://github.com/DeibyGS/applyr
9
+ Project-URL: Issues, https://github.com/DeibyGS/applyr/issues
10
+ Keywords: job,tracker,cli,ai,career,applications
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Topic :: Office/Business
20
+ Classifier: Topic :: Utilities
21
+ Requires-Python: >=3.10
22
+ Description-Content-Type: text/markdown
23
+ License-File: LICENSE
24
+ Dynamic: license-file
25
+
26
+ # applyr
27
+
28
+ CLI job application tracker designed for AI coding agents.
29
+
30
+ Track applications, measure your funnel, spot skill gaps, and generate tailored CVs — all from your terminal. Built to work with [Claude Code](https://claude.ai/claude-code), [Cursor](https://cursor.sh), [Aider](https://aider.chat), or any AI coding agent.
31
+
32
+ ## Why applyr?
33
+
34
+ I built this while applying to **200+ jobs**. Most job trackers are web apps that don't talk to your AI tools. applyr is different:
35
+
36
+ - **CLI-first** — runs in your terminal, pipes into anything
37
+ - **AI-agent native** — your coding agent reads/writes offers, generates CVs, and gives you insights
38
+ - **Zero dependencies** — Python 3.10+ stdlib only. No frameworks, no API keys
39
+ - **Local & private** — your data stays in a SQLite file on your machine
40
+
41
+ ## Install
42
+
43
+ ```bash
44
+ pip install applyr
45
+ ```
46
+
47
+ Or clone and install locally:
48
+
49
+ ```bash
50
+ git clone https://github.com/DeibyGS/applyr.git
51
+ cd applyr
52
+ pip install .
53
+ ```
54
+
55
+ ## Quick Start
56
+
57
+ ```bash
58
+ # 1. Initialize (creates ~/.applyr/ with config and database)
59
+ applyr init
60
+
61
+ # 2. Edit your CV master (source of truth for all CVs)
62
+ # Open ~/.applyr/cv-master.md in your editor
63
+
64
+ # 3. Add your first offer
65
+ applyr add '{"title": "Backend Developer", "company": "Acme", "work_mode": "remote", "salary_min": 35000, "salary_max": 45000, "seniority_level": "junior", "tech_stack": "Python, FastAPI, PostgreSQL"}'
66
+
67
+ # 4. Check your pipeline
68
+ applyr pipeline
69
+
70
+ # 5. See your stats
71
+ applyr stats
72
+ ```
73
+
74
+ ## Commands
75
+
76
+ | Command | Description |
77
+ |---------|-------------|
78
+ | `applyr init` | Set up ~/.applyr/ (config, database, templates) |
79
+ | `applyr add '<json>'` | Register a new job offer |
80
+ | `applyr list [--status S] [--sort F]` | List offers (default: last 50) |
81
+ | `applyr pipeline [--min-score N]` | View offers grouped by status |
82
+ | `applyr show <id>` | Show full offer details |
83
+ | `applyr update <id> <status>` | Update offer status |
84
+ | `applyr delete <id>` | Delete an offer |
85
+ | `applyr search <keyword>` | Search by company/title/notes/tech |
86
+ | `applyr stats` | Conversion funnel and metrics |
87
+ | `applyr gaps` | Skill gap analysis |
88
+ | `applyr followups` | Pending/overdue follow-ups |
89
+ | `applyr trends` | Application trends over time |
90
+ | `applyr summary [--json]` | Weekly summary (LLM-optimized) |
91
+ | `applyr export [--format csv\|json]` | Export all data |
92
+ | `applyr cv generate <id>` | Generate CV instructions for an offer |
93
+ | `applyr cv pdf <file.html>` | Convert HTML CV to PDF via Chrome |
94
+ | `applyr version` | Show version |
95
+
96
+ ## Offer Statuses
97
+
98
+ `pending` > `applied` > `waiting` > `in_process` > `offer`
99
+
100
+ Side tracks: `discarded`, `rejected`
101
+
102
+ ## Offer Fields
103
+
104
+ All fields are optional except `title`. Your AI agent fills in what it can from the job posting:
105
+
106
+ ```json
107
+ {
108
+ "title": "AI Engineer",
109
+ "company": "Acme Corp",
110
+ "summary": "Building LLM-powered features...",
111
+ "date_received": "2026-08-06",
112
+ "date_applied": "2026-08-06",
113
+ "compatibility_pct": 78,
114
+ "status": "applied",
115
+ "canal": "linkedin_easy",
116
+ "work_mode": "remote",
117
+ "location": "Madrid",
118
+ "salary_min": 30000,
119
+ "salary_max": 40000,
120
+ "seniority_level": "junior",
121
+ "role_category": "ai",
122
+ "tech_stack": "Python, LangChain, AWS",
123
+ "cover_letter": 1,
124
+ "contact_name": "Ana Garcia",
125
+ "contact_role": "Recruiter",
126
+ "job_url": "https://...",
127
+ "notes": "Referred by John",
128
+ "topics": {
129
+ "tech_stack": {"score": 85, "detail": "Python strong, LangChain learning"},
130
+ "education": {"score": 70, "detail": "DAM completed"},
131
+ "english": {"score": 60, "detail": "B1 level"},
132
+ "experience": {"score": 40, "detail": "6 months internship"},
133
+ "projects": {"score": 90, "detail": "3 production projects"},
134
+ "cultural_fit": {"score": 80, "detail": "Startup culture match"}
135
+ }
136
+ }
137
+ ```
138
+
139
+ ## Scoring
140
+
141
+ Compatibility is auto-calculated from topic scores using configurable weights:
142
+
143
+ | Topic | Default Weight |
144
+ |-------|---------------|
145
+ | Tech Stack | 30% |
146
+ | Education | 15% |
147
+ | English | 10% |
148
+ | Experience | 15% |
149
+ | Own Projects | 20% |
150
+ | Cultural Fit | 10% |
151
+
152
+ Customize weights, topic names, and threshold in `~/.applyr/applyr.toml`.
153
+
154
+ ## Using with AI Agents
155
+
156
+ applyr is designed to be used **through** your AI coding agent. Here's the workflow:
157
+
158
+ ```
159
+ You: "Analyze this job posting for AI Engineer at Acme"
160
+ Agent: Reads the posting + your cv-master.md
161
+ Evaluates compatibility per topic
162
+ Runs: applyr add '<json with all fields>'
163
+ Output: "Registered as #42 — 78% match. Gaps: English, Experience"
164
+
165
+ You: "What should I focus on improving?"
166
+ Agent: Runs: applyr gaps
167
+ Output: "English appears in 15 offers. Consider getting B2 cert."
168
+
169
+ You: "Generate a CV for offer #42"
170
+ Agent: Runs: applyr cv generate 42
171
+ Reads cv-master.md + offer details
172
+ Creates tailored HTML CV
173
+ Runs: applyr cv pdf cv-acme.html
174
+
175
+ You: "Weekly summary"
176
+ Agent: Runs: applyr summary --json
177
+ Output: structured JSON with metrics, trends, and recommendations
178
+ ```
179
+
180
+ ### CLAUDE.md Integration
181
+
182
+ Add this to your project's `CLAUDE.md` for automatic agent behavior:
183
+
184
+ ```markdown
185
+ ## Job Application Tracking
186
+ - Use `applyr` CLI for all job tracking operations
187
+ - Read `~/.applyr/cv-master.md` as source of truth for CV content — never invent
188
+ - When analyzing an offer: evaluate all topics, calculate score, register with `applyr add`
189
+ - When applying: generate ATS CV with `applyr cv generate <id>`, create PDF
190
+ - Threshold to apply: >= 65% compatibility
191
+ ```
192
+
193
+ ## Configuration
194
+
195
+ Edit `~/.applyr/applyr.toml`:
196
+
197
+ ```toml
198
+ [general]
199
+ threshold = 65 # Min compatibility % to recommend applying
200
+ followup_days = 10 # Days before follow-up reminder
201
+
202
+ [weights]
203
+ tech_stack = 0.30
204
+ education = 0.15
205
+ english = 0.10
206
+ experience = 0.15
207
+ projects = 0.20
208
+ cultural_fit = 0.10
209
+
210
+ [topics]
211
+ tech_stack = "Tech Stack"
212
+ education = "Education"
213
+ english = "English"
214
+ experience = "Experience"
215
+ projects = "Own Projects"
216
+ cultural_fit = "Cultural Fit"
217
+
218
+ [cv]
219
+ # chrome_path = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
220
+ # cv_master = "~/.applyr/cv-master.md"
221
+ # output_dir = "~/.applyr/cv"
222
+ ```
223
+
224
+ ## Data Storage
225
+
226
+ All data is stored locally in `~/.applyr/jobs.db` (SQLite). Export anytime:
227
+
228
+ ```bash
229
+ applyr export --format json --file my-applications.json
230
+ ```
231
+
232
+ ## License
233
+
234
+ MIT
applyr-0.1.0/README.md ADDED
@@ -0,0 +1,209 @@
1
+ # applyr
2
+
3
+ CLI job application tracker designed for AI coding agents.
4
+
5
+ Track applications, measure your funnel, spot skill gaps, and generate tailored CVs — all from your terminal. Built to work with [Claude Code](https://claude.ai/claude-code), [Cursor](https://cursor.sh), [Aider](https://aider.chat), or any AI coding agent.
6
+
7
+ ## Why applyr?
8
+
9
+ I built this while applying to **200+ jobs**. Most job trackers are web apps that don't talk to your AI tools. applyr is different:
10
+
11
+ - **CLI-first** — runs in your terminal, pipes into anything
12
+ - **AI-agent native** — your coding agent reads/writes offers, generates CVs, and gives you insights
13
+ - **Zero dependencies** — Python 3.10+ stdlib only. No frameworks, no API keys
14
+ - **Local & private** — your data stays in a SQLite file on your machine
15
+
16
+ ## Install
17
+
18
+ ```bash
19
+ pip install applyr
20
+ ```
21
+
22
+ Or clone and install locally:
23
+
24
+ ```bash
25
+ git clone https://github.com/DeibyGS/applyr.git
26
+ cd applyr
27
+ pip install .
28
+ ```
29
+
30
+ ## Quick Start
31
+
32
+ ```bash
33
+ # 1. Initialize (creates ~/.applyr/ with config and database)
34
+ applyr init
35
+
36
+ # 2. Edit your CV master (source of truth for all CVs)
37
+ # Open ~/.applyr/cv-master.md in your editor
38
+
39
+ # 3. Add your first offer
40
+ applyr add '{"title": "Backend Developer", "company": "Acme", "work_mode": "remote", "salary_min": 35000, "salary_max": 45000, "seniority_level": "junior", "tech_stack": "Python, FastAPI, PostgreSQL"}'
41
+
42
+ # 4. Check your pipeline
43
+ applyr pipeline
44
+
45
+ # 5. See your stats
46
+ applyr stats
47
+ ```
48
+
49
+ ## Commands
50
+
51
+ | Command | Description |
52
+ |---------|-------------|
53
+ | `applyr init` | Set up ~/.applyr/ (config, database, templates) |
54
+ | `applyr add '<json>'` | Register a new job offer |
55
+ | `applyr list [--status S] [--sort F]` | List offers (default: last 50) |
56
+ | `applyr pipeline [--min-score N]` | View offers grouped by status |
57
+ | `applyr show <id>` | Show full offer details |
58
+ | `applyr update <id> <status>` | Update offer status |
59
+ | `applyr delete <id>` | Delete an offer |
60
+ | `applyr search <keyword>` | Search by company/title/notes/tech |
61
+ | `applyr stats` | Conversion funnel and metrics |
62
+ | `applyr gaps` | Skill gap analysis |
63
+ | `applyr followups` | Pending/overdue follow-ups |
64
+ | `applyr trends` | Application trends over time |
65
+ | `applyr summary [--json]` | Weekly summary (LLM-optimized) |
66
+ | `applyr export [--format csv\|json]` | Export all data |
67
+ | `applyr cv generate <id>` | Generate CV instructions for an offer |
68
+ | `applyr cv pdf <file.html>` | Convert HTML CV to PDF via Chrome |
69
+ | `applyr version` | Show version |
70
+
71
+ ## Offer Statuses
72
+
73
+ `pending` > `applied` > `waiting` > `in_process` > `offer`
74
+
75
+ Side tracks: `discarded`, `rejected`
76
+
77
+ ## Offer Fields
78
+
79
+ All fields are optional except `title`. Your AI agent fills in what it can from the job posting:
80
+
81
+ ```json
82
+ {
83
+ "title": "AI Engineer",
84
+ "company": "Acme Corp",
85
+ "summary": "Building LLM-powered features...",
86
+ "date_received": "2026-08-06",
87
+ "date_applied": "2026-08-06",
88
+ "compatibility_pct": 78,
89
+ "status": "applied",
90
+ "canal": "linkedin_easy",
91
+ "work_mode": "remote",
92
+ "location": "Madrid",
93
+ "salary_min": 30000,
94
+ "salary_max": 40000,
95
+ "seniority_level": "junior",
96
+ "role_category": "ai",
97
+ "tech_stack": "Python, LangChain, AWS",
98
+ "cover_letter": 1,
99
+ "contact_name": "Ana Garcia",
100
+ "contact_role": "Recruiter",
101
+ "job_url": "https://...",
102
+ "notes": "Referred by John",
103
+ "topics": {
104
+ "tech_stack": {"score": 85, "detail": "Python strong, LangChain learning"},
105
+ "education": {"score": 70, "detail": "DAM completed"},
106
+ "english": {"score": 60, "detail": "B1 level"},
107
+ "experience": {"score": 40, "detail": "6 months internship"},
108
+ "projects": {"score": 90, "detail": "3 production projects"},
109
+ "cultural_fit": {"score": 80, "detail": "Startup culture match"}
110
+ }
111
+ }
112
+ ```
113
+
114
+ ## Scoring
115
+
116
+ Compatibility is auto-calculated from topic scores using configurable weights:
117
+
118
+ | Topic | Default Weight |
119
+ |-------|---------------|
120
+ | Tech Stack | 30% |
121
+ | Education | 15% |
122
+ | English | 10% |
123
+ | Experience | 15% |
124
+ | Own Projects | 20% |
125
+ | Cultural Fit | 10% |
126
+
127
+ Customize weights, topic names, and threshold in `~/.applyr/applyr.toml`.
128
+
129
+ ## Using with AI Agents
130
+
131
+ applyr is designed to be used **through** your AI coding agent. Here's the workflow:
132
+
133
+ ```
134
+ You: "Analyze this job posting for AI Engineer at Acme"
135
+ Agent: Reads the posting + your cv-master.md
136
+ Evaluates compatibility per topic
137
+ Runs: applyr add '<json with all fields>'
138
+ Output: "Registered as #42 — 78% match. Gaps: English, Experience"
139
+
140
+ You: "What should I focus on improving?"
141
+ Agent: Runs: applyr gaps
142
+ Output: "English appears in 15 offers. Consider getting B2 cert."
143
+
144
+ You: "Generate a CV for offer #42"
145
+ Agent: Runs: applyr cv generate 42
146
+ Reads cv-master.md + offer details
147
+ Creates tailored HTML CV
148
+ Runs: applyr cv pdf cv-acme.html
149
+
150
+ You: "Weekly summary"
151
+ Agent: Runs: applyr summary --json
152
+ Output: structured JSON with metrics, trends, and recommendations
153
+ ```
154
+
155
+ ### CLAUDE.md Integration
156
+
157
+ Add this to your project's `CLAUDE.md` for automatic agent behavior:
158
+
159
+ ```markdown
160
+ ## Job Application Tracking
161
+ - Use `applyr` CLI for all job tracking operations
162
+ - Read `~/.applyr/cv-master.md` as source of truth for CV content — never invent
163
+ - When analyzing an offer: evaluate all topics, calculate score, register with `applyr add`
164
+ - When applying: generate ATS CV with `applyr cv generate <id>`, create PDF
165
+ - Threshold to apply: >= 65% compatibility
166
+ ```
167
+
168
+ ## Configuration
169
+
170
+ Edit `~/.applyr/applyr.toml`:
171
+
172
+ ```toml
173
+ [general]
174
+ threshold = 65 # Min compatibility % to recommend applying
175
+ followup_days = 10 # Days before follow-up reminder
176
+
177
+ [weights]
178
+ tech_stack = 0.30
179
+ education = 0.15
180
+ english = 0.10
181
+ experience = 0.15
182
+ projects = 0.20
183
+ cultural_fit = 0.10
184
+
185
+ [topics]
186
+ tech_stack = "Tech Stack"
187
+ education = "Education"
188
+ english = "English"
189
+ experience = "Experience"
190
+ projects = "Own Projects"
191
+ cultural_fit = "Cultural Fit"
192
+
193
+ [cv]
194
+ # chrome_path = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
195
+ # cv_master = "~/.applyr/cv-master.md"
196
+ # output_dir = "~/.applyr/cv"
197
+ ```
198
+
199
+ ## Data Storage
200
+
201
+ All data is stored locally in `~/.applyr/jobs.db` (SQLite). Export anytime:
202
+
203
+ ```bash
204
+ applyr export --format json --file my-applications.json
205
+ ```
206
+
207
+ ## License
208
+
209
+ MIT
@@ -0,0 +1,3 @@
1
+ """applyr — CLI job application tracker designed for AI coding agents."""
2
+
3
+ __version__ = "0.1.0"