pathscout 0.3.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.
- pathscout-0.3.0/LICENSE +21 -0
- pathscout-0.3.0/PKG-INFO +260 -0
- pathscout-0.3.0/README.md +237 -0
- pathscout-0.3.0/pathscout/__init__.py +5 -0
- pathscout-0.3.0/pathscout/__main__.py +6 -0
- pathscout-0.3.0/pathscout/artifacts.py +505 -0
- pathscout-0.3.0/pathscout/cli.py +841 -0
- pathscout-0.3.0/pathscout/config.py +379 -0
- pathscout-0.3.0/pathscout/db.py +50 -0
- pathscout-0.3.0/pathscout/digest.py +18 -0
- pathscout-0.3.0/pathscout/doctor.py +210 -0
- pathscout-0.3.0/pathscout/fetchers.py +355 -0
- pathscout-0.3.0/pathscout/runner.py +151 -0
- pathscout-0.3.0/pathscout/scoring.py +154 -0
- pathscout-0.3.0/pathscout/sources.py +40 -0
- pathscout-0.3.0/pathscout/watchlist.py +68 -0
- pathscout-0.3.0/pathscout/workflow.py +478 -0
- pathscout-0.3.0/pathscout.egg-info/PKG-INFO +260 -0
- pathscout-0.3.0/pathscout.egg-info/SOURCES.txt +26 -0
- pathscout-0.3.0/pathscout.egg-info/dependency_links.txt +1 -0
- pathscout-0.3.0/pathscout.egg-info/entry_points.txt +2 -0
- pathscout-0.3.0/pathscout.egg-info/top_level.txt +1 -0
- pathscout-0.3.0/pyproject.toml +36 -0
- pathscout-0.3.0/setup.cfg +4 -0
- pathscout-0.3.0/tests/test_config_artifacts.py +1034 -0
- pathscout-0.3.0/tests/test_runner.py +48 -0
- pathscout-0.3.0/tests/test_scoring.py +95 -0
- pathscout-0.3.0/tests/test_sources.py +214 -0
pathscout-0.3.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 PathScout contributors
|
|
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.
|
pathscout-0.3.0/PKG-INFO
ADDED
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: pathscout
|
|
3
|
+
Version: 0.3.0
|
|
4
|
+
Summary: Local-only role discovery for finding high-fit startup opportunities.
|
|
5
|
+
Author: PathScout contributors
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/ckoglmeier/pathscout
|
|
8
|
+
Project-URL: Repository, https://github.com/ckoglmeier/pathscout
|
|
9
|
+
Project-URL: Issues, https://github.com/ckoglmeier/pathscout/issues
|
|
10
|
+
Keywords: job-search,career,role-discovery,local-first
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
17
|
+
Classifier: Topic :: Office/Business
|
|
18
|
+
Classifier: Topic :: Utilities
|
|
19
|
+
Requires-Python: >=3.9
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
License-File: LICENSE
|
|
22
|
+
Dynamic: license-file
|
|
23
|
+
|
|
24
|
+
# PathScout
|
|
25
|
+
|
|
26
|
+
PathScout is a local-only role discovery CLI for finding high-fit startup opportunities before they become obvious job posts.
|
|
27
|
+
|
|
28
|
+
It fetches broad signals, scores them against a personal fit profile, stores deduped observations in SQLite, and emits a canonical JSON artifact plus a readable Markdown digest.
|
|
29
|
+
|
|
30
|
+
## What PathScout Is
|
|
31
|
+
|
|
32
|
+
- A local-only CLI for monitoring companies, careers pages, RSS feeds, portfolio lists, and manual notes.
|
|
33
|
+
- A fit-profile engine for surfacing target roles, hidden-search hypotheses, and weaker watch signals.
|
|
34
|
+
- An explainable findings scanner: every surfaced item includes score, tier, reasons, flags, source metadata, and suppression state.
|
|
35
|
+
|
|
36
|
+
## What PathScout Is Not
|
|
37
|
+
|
|
38
|
+
- It is not a hosted marketplace.
|
|
39
|
+
- It is not a recruiting CRM.
|
|
40
|
+
- It is not a general-purpose job board scraper.
|
|
41
|
+
- It does not provide hosted storage, sync, or remote persistence.
|
|
42
|
+
|
|
43
|
+
## Install
|
|
44
|
+
|
|
45
|
+
From GitHub:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
pipx install git+https://github.com/ckoglmeier/pathscout.git
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
From a local checkout:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
pipx install .
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
For development:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
python3 -m pathscout doctor
|
|
61
|
+
python3 -m pathscout run --dry-run --format both
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Quick Start
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
pathscout start
|
|
68
|
+
pathscout next
|
|
69
|
+
pathscout init
|
|
70
|
+
pathscout setup
|
|
71
|
+
pathscout doctor
|
|
72
|
+
pathscout run --format both
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
`pathscout start` is a read-only startup checklist. It shows what exists, what is missing, and the next recommended command without creating or editing files.
|
|
76
|
+
|
|
77
|
+
`pathscout next` prints only the next recommended action. `/next` is also accepted as an alias.
|
|
78
|
+
|
|
79
|
+
`pathscout setup` is an interactive guided setup flow. It walks through environment, role/function, locations, avoid terms, background, proof points, constraints, and network context in order, saving answers into local JSON files as it goes.
|
|
80
|
+
|
|
81
|
+
During `init`, PathScout asks two onboarding questions in this order:
|
|
82
|
+
|
|
83
|
+
1. What is the right environment for you?
|
|
84
|
+
2. What is the right role for you?
|
|
85
|
+
|
|
86
|
+
For scripted setup, pass answers directly:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
pathscout init \
|
|
90
|
+
--environment "Remote AI startups" \
|
|
91
|
+
--role "Founding Product Lead"
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Use `--no-input` to create default sample config without prompts.
|
|
95
|
+
|
|
96
|
+
Outputs:
|
|
97
|
+
|
|
98
|
+
- `data/pathscout.sqlite`: local state and dedupe history.
|
|
99
|
+
- `outputs/latest.json`: canonical machine-readable findings artifact.
|
|
100
|
+
- `outputs/latest.md`: human-readable digest rendered from the JSON findings.
|
|
101
|
+
- `outputs/packages/`: optional portable opportunity packages created from findings.
|
|
102
|
+
- `config/profile.json`: personal fit profile.
|
|
103
|
+
- `config/background.sample.json`: tracked example candidate context.
|
|
104
|
+
- `config/background.local.json`: private candidate context and proof points.
|
|
105
|
+
- `config/sources.json`: source adapter configuration.
|
|
106
|
+
- `config/watchlist.json`: curated company list.
|
|
107
|
+
- `config/suppressions.json`: structured ignored findings.
|
|
108
|
+
|
|
109
|
+
## Configuration
|
|
110
|
+
|
|
111
|
+
PathScout uses schema-versioned JSON files.
|
|
112
|
+
|
|
113
|
+
`config/profile.json` is the personal fit model. It contains target roles, stages, domains, excluded domains, location preferences, travel constraints, authority terms, and scoring thresholds.
|
|
114
|
+
|
|
115
|
+
`config/sources.json` describes inputs. Each source uses this adapter contract:
|
|
116
|
+
|
|
117
|
+
```json
|
|
118
|
+
{
|
|
119
|
+
"id": "watchlist_careers",
|
|
120
|
+
"type": "watchlist_careers",
|
|
121
|
+
"name": "Watchlist careers pages",
|
|
122
|
+
"enabled": true,
|
|
123
|
+
"config": {
|
|
124
|
+
"path": "config/watchlist.json"
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
`id` is stable and scriptable. `name` is display-only. `type` selects the adapter. `config` is adapter-specific.
|
|
130
|
+
|
|
131
|
+
`config/suppressions.json` stores structured ignores:
|
|
132
|
+
|
|
133
|
+
```json
|
|
134
|
+
{
|
|
135
|
+
"schema_version": 1,
|
|
136
|
+
"suppressions": [
|
|
137
|
+
{
|
|
138
|
+
"id": "finding-content-hash",
|
|
139
|
+
"scope": "finding",
|
|
140
|
+
"reason": "Not a fit",
|
|
141
|
+
"expires_at": "2026-12-31",
|
|
142
|
+
"created_at": "2026-06-29"
|
|
143
|
+
}
|
|
144
|
+
]
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Suppressions affect output visibility. They do not delete observations from SQLite.
|
|
149
|
+
|
|
150
|
+
## Source Types
|
|
151
|
+
|
|
152
|
+
The v0.2 runner supports standard-library fetches for:
|
|
153
|
+
|
|
154
|
+
- `manual`: config-entered notes for companies or opportunities you want tracked.
|
|
155
|
+
- `watchlist`: turns every active watchlist company into a hidden-search observation.
|
|
156
|
+
- `watchlist_careers`: probes active watchlist companies' careers pages for posted role evidence.
|
|
157
|
+
- `portfolio`: turns companies from `config/portfolio.json` into relationship-context observations.
|
|
158
|
+
- `web_page`: fetches a single web page.
|
|
159
|
+
- `rss`: fetches an RSS or Atom feed.
|
|
160
|
+
|
|
161
|
+
`radar_portfolio` remains as a deprecated alias for one release. Use `portfolio` for new config.
|
|
162
|
+
|
|
163
|
+
## Commands
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
pathscout start
|
|
167
|
+
pathscout next
|
|
168
|
+
pathscout init
|
|
169
|
+
pathscout setup
|
|
170
|
+
pathscout doctor
|
|
171
|
+
pathscout watchlist
|
|
172
|
+
pathscout portfolio
|
|
173
|
+
pathscout review
|
|
174
|
+
pathscout explain <finding-id>
|
|
175
|
+
pathscout notes <finding-id> --add "Question to verify before outreach"
|
|
176
|
+
pathscout thesis <finding-id>
|
|
177
|
+
pathscout package <finding-id>
|
|
178
|
+
pathscout suppress <finding-id> --reason "Not a fit"
|
|
179
|
+
pathscout run --format json
|
|
180
|
+
pathscout run --format markdown
|
|
181
|
+
pathscout run --format both
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Useful paths can be overridden:
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
pathscout run \
|
|
188
|
+
--profile config/profile.json \
|
|
189
|
+
--sources config/sources.json \
|
|
190
|
+
--watchlist config/watchlist.json \
|
|
191
|
+
--suppressions config/suppressions.json \
|
|
192
|
+
--db data/pathscout.sqlite \
|
|
193
|
+
--json-out outputs/latest.json \
|
|
194
|
+
--out outputs/latest.md
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
## Digest Tiers
|
|
198
|
+
|
|
199
|
+
- `Act Now`: explicit target role or recruiter-visible mandate with strong fit signals.
|
|
200
|
+
- `Hidden Search Hypothesis`: no role posted, but company signals suggest a likely hiring need.
|
|
201
|
+
- `Watch Signal`: weaker signal, lower-level posting, or incomplete evidence.
|
|
202
|
+
- `Filtered`: captured for history but excluded from the main digest.
|
|
203
|
+
|
|
204
|
+
## Review And Suppress
|
|
205
|
+
|
|
206
|
+
Use `review` to scan findings from the latest JSON artifact without opening the file:
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
pathscout review --limit 10
|
|
210
|
+
pathscout review --tier "Act Now"
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
Use `explain` to inspect why a finding surfaced:
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
pathscout explain <finding-id>
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
Use `notes` to keep local judgment attached to a finding or company:
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
pathscout notes <finding-id> --add "Ask a former employee whether this team is still founder-led"
|
|
223
|
+
pathscout notes --company "Northstar Robotics"
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
Use `thesis` to generate a local role-thesis package from a finding. Copy `config/background.sample.json` to `config/background.local.json` first if you want the thesis to include private candidate context:
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
pathscout thesis <finding-id>
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
Thesis packages are written to `outputs/theses/` and are generated from the same JSON finding objects used by review and Markdown digests. They include the company moment, problem map, proposed function, fit argument, 90-180 day wedge, notes, and evidence gaps. They are thinking artifacts, not generated job descriptions or send-ready outreach.
|
|
233
|
+
|
|
234
|
+
Use `suppress` to hide a finding from later Markdown digests while keeping the raw observation in SQLite and the finding marked in JSON:
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
pathscout suppress <finding-id> --reason "Not a fit" --expires 2026-12-31
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
Careers pages are parsed into separate role findings when PathScout can identify role-title rows. If a page does not expose clear role titles, PathScout falls back to one page-level finding.
|
|
241
|
+
|
|
242
|
+
## Package Exports
|
|
243
|
+
|
|
244
|
+
Use `package` to create a portable, human-readable and agent-readable opportunity package from a finding in `outputs/latest.json`:
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
pathscout package <finding-id>
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
Each package includes a manifest, a human Markdown brief, agent instructions, and canonical JSON data under `outputs/packages/`. See `docs/artifacts.md` for the artifact contract.
|
|
251
|
+
|
|
252
|
+
`config/background.local.json`, legacy `config/background.json`, `data/notes.json`, `outputs/theses/`, and `outputs/packages/` are ignored by default because they may contain private candidate context.
|
|
253
|
+
|
|
254
|
+
See `DATA_CONTRACT.md` and `docs/source_of_truth.md` for the local-only storage boundary and agent-readable artifact contract. Network source fetches collect evidence for local runs; they are not hosted storage or sync.
|
|
255
|
+
|
|
256
|
+
## Design Borrowed From
|
|
257
|
+
|
|
258
|
+
PathScout follows scanner-style findings: stable IDs, evidence, severity-like tiers, reasons, flags, and suppressions.
|
|
259
|
+
|
|
260
|
+
The config split borrows from dbt-style separation of personal profile from project config. Source IDs follow the pre-commit convention: stable machine IDs plus human names. Suppressions borrow from security scanners: structured ignores with reasons and optional expiration dates.
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
# PathScout
|
|
2
|
+
|
|
3
|
+
PathScout is a local-only role discovery CLI for finding high-fit startup opportunities before they become obvious job posts.
|
|
4
|
+
|
|
5
|
+
It fetches broad signals, scores them against a personal fit profile, stores deduped observations in SQLite, and emits a canonical JSON artifact plus a readable Markdown digest.
|
|
6
|
+
|
|
7
|
+
## What PathScout Is
|
|
8
|
+
|
|
9
|
+
- A local-only CLI for monitoring companies, careers pages, RSS feeds, portfolio lists, and manual notes.
|
|
10
|
+
- A fit-profile engine for surfacing target roles, hidden-search hypotheses, and weaker watch signals.
|
|
11
|
+
- An explainable findings scanner: every surfaced item includes score, tier, reasons, flags, source metadata, and suppression state.
|
|
12
|
+
|
|
13
|
+
## What PathScout Is Not
|
|
14
|
+
|
|
15
|
+
- It is not a hosted marketplace.
|
|
16
|
+
- It is not a recruiting CRM.
|
|
17
|
+
- It is not a general-purpose job board scraper.
|
|
18
|
+
- It does not provide hosted storage, sync, or remote persistence.
|
|
19
|
+
|
|
20
|
+
## Install
|
|
21
|
+
|
|
22
|
+
From GitHub:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
pipx install git+https://github.com/ckoglmeier/pathscout.git
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
From a local checkout:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
pipx install .
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
For development:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
python3 -m pathscout doctor
|
|
38
|
+
python3 -m pathscout run --dry-run --format both
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Quick Start
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
pathscout start
|
|
45
|
+
pathscout next
|
|
46
|
+
pathscout init
|
|
47
|
+
pathscout setup
|
|
48
|
+
pathscout doctor
|
|
49
|
+
pathscout run --format both
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
`pathscout start` is a read-only startup checklist. It shows what exists, what is missing, and the next recommended command without creating or editing files.
|
|
53
|
+
|
|
54
|
+
`pathscout next` prints only the next recommended action. `/next` is also accepted as an alias.
|
|
55
|
+
|
|
56
|
+
`pathscout setup` is an interactive guided setup flow. It walks through environment, role/function, locations, avoid terms, background, proof points, constraints, and network context in order, saving answers into local JSON files as it goes.
|
|
57
|
+
|
|
58
|
+
During `init`, PathScout asks two onboarding questions in this order:
|
|
59
|
+
|
|
60
|
+
1. What is the right environment for you?
|
|
61
|
+
2. What is the right role for you?
|
|
62
|
+
|
|
63
|
+
For scripted setup, pass answers directly:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
pathscout init \
|
|
67
|
+
--environment "Remote AI startups" \
|
|
68
|
+
--role "Founding Product Lead"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Use `--no-input` to create default sample config without prompts.
|
|
72
|
+
|
|
73
|
+
Outputs:
|
|
74
|
+
|
|
75
|
+
- `data/pathscout.sqlite`: local state and dedupe history.
|
|
76
|
+
- `outputs/latest.json`: canonical machine-readable findings artifact.
|
|
77
|
+
- `outputs/latest.md`: human-readable digest rendered from the JSON findings.
|
|
78
|
+
- `outputs/packages/`: optional portable opportunity packages created from findings.
|
|
79
|
+
- `config/profile.json`: personal fit profile.
|
|
80
|
+
- `config/background.sample.json`: tracked example candidate context.
|
|
81
|
+
- `config/background.local.json`: private candidate context and proof points.
|
|
82
|
+
- `config/sources.json`: source adapter configuration.
|
|
83
|
+
- `config/watchlist.json`: curated company list.
|
|
84
|
+
- `config/suppressions.json`: structured ignored findings.
|
|
85
|
+
|
|
86
|
+
## Configuration
|
|
87
|
+
|
|
88
|
+
PathScout uses schema-versioned JSON files.
|
|
89
|
+
|
|
90
|
+
`config/profile.json` is the personal fit model. It contains target roles, stages, domains, excluded domains, location preferences, travel constraints, authority terms, and scoring thresholds.
|
|
91
|
+
|
|
92
|
+
`config/sources.json` describes inputs. Each source uses this adapter contract:
|
|
93
|
+
|
|
94
|
+
```json
|
|
95
|
+
{
|
|
96
|
+
"id": "watchlist_careers",
|
|
97
|
+
"type": "watchlist_careers",
|
|
98
|
+
"name": "Watchlist careers pages",
|
|
99
|
+
"enabled": true,
|
|
100
|
+
"config": {
|
|
101
|
+
"path": "config/watchlist.json"
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
`id` is stable and scriptable. `name` is display-only. `type` selects the adapter. `config` is adapter-specific.
|
|
107
|
+
|
|
108
|
+
`config/suppressions.json` stores structured ignores:
|
|
109
|
+
|
|
110
|
+
```json
|
|
111
|
+
{
|
|
112
|
+
"schema_version": 1,
|
|
113
|
+
"suppressions": [
|
|
114
|
+
{
|
|
115
|
+
"id": "finding-content-hash",
|
|
116
|
+
"scope": "finding",
|
|
117
|
+
"reason": "Not a fit",
|
|
118
|
+
"expires_at": "2026-12-31",
|
|
119
|
+
"created_at": "2026-06-29"
|
|
120
|
+
}
|
|
121
|
+
]
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Suppressions affect output visibility. They do not delete observations from SQLite.
|
|
126
|
+
|
|
127
|
+
## Source Types
|
|
128
|
+
|
|
129
|
+
The v0.2 runner supports standard-library fetches for:
|
|
130
|
+
|
|
131
|
+
- `manual`: config-entered notes for companies or opportunities you want tracked.
|
|
132
|
+
- `watchlist`: turns every active watchlist company into a hidden-search observation.
|
|
133
|
+
- `watchlist_careers`: probes active watchlist companies' careers pages for posted role evidence.
|
|
134
|
+
- `portfolio`: turns companies from `config/portfolio.json` into relationship-context observations.
|
|
135
|
+
- `web_page`: fetches a single web page.
|
|
136
|
+
- `rss`: fetches an RSS or Atom feed.
|
|
137
|
+
|
|
138
|
+
`radar_portfolio` remains as a deprecated alias for one release. Use `portfolio` for new config.
|
|
139
|
+
|
|
140
|
+
## Commands
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
pathscout start
|
|
144
|
+
pathscout next
|
|
145
|
+
pathscout init
|
|
146
|
+
pathscout setup
|
|
147
|
+
pathscout doctor
|
|
148
|
+
pathscout watchlist
|
|
149
|
+
pathscout portfolio
|
|
150
|
+
pathscout review
|
|
151
|
+
pathscout explain <finding-id>
|
|
152
|
+
pathscout notes <finding-id> --add "Question to verify before outreach"
|
|
153
|
+
pathscout thesis <finding-id>
|
|
154
|
+
pathscout package <finding-id>
|
|
155
|
+
pathscout suppress <finding-id> --reason "Not a fit"
|
|
156
|
+
pathscout run --format json
|
|
157
|
+
pathscout run --format markdown
|
|
158
|
+
pathscout run --format both
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Useful paths can be overridden:
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
pathscout run \
|
|
165
|
+
--profile config/profile.json \
|
|
166
|
+
--sources config/sources.json \
|
|
167
|
+
--watchlist config/watchlist.json \
|
|
168
|
+
--suppressions config/suppressions.json \
|
|
169
|
+
--db data/pathscout.sqlite \
|
|
170
|
+
--json-out outputs/latest.json \
|
|
171
|
+
--out outputs/latest.md
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## Digest Tiers
|
|
175
|
+
|
|
176
|
+
- `Act Now`: explicit target role or recruiter-visible mandate with strong fit signals.
|
|
177
|
+
- `Hidden Search Hypothesis`: no role posted, but company signals suggest a likely hiring need.
|
|
178
|
+
- `Watch Signal`: weaker signal, lower-level posting, or incomplete evidence.
|
|
179
|
+
- `Filtered`: captured for history but excluded from the main digest.
|
|
180
|
+
|
|
181
|
+
## Review And Suppress
|
|
182
|
+
|
|
183
|
+
Use `review` to scan findings from the latest JSON artifact without opening the file:
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
pathscout review --limit 10
|
|
187
|
+
pathscout review --tier "Act Now"
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
Use `explain` to inspect why a finding surfaced:
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
pathscout explain <finding-id>
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Use `notes` to keep local judgment attached to a finding or company:
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
pathscout notes <finding-id> --add "Ask a former employee whether this team is still founder-led"
|
|
200
|
+
pathscout notes --company "Northstar Robotics"
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
Use `thesis` to generate a local role-thesis package from a finding. Copy `config/background.sample.json` to `config/background.local.json` first if you want the thesis to include private candidate context:
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
pathscout thesis <finding-id>
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
Thesis packages are written to `outputs/theses/` and are generated from the same JSON finding objects used by review and Markdown digests. They include the company moment, problem map, proposed function, fit argument, 90-180 day wedge, notes, and evidence gaps. They are thinking artifacts, not generated job descriptions or send-ready outreach.
|
|
210
|
+
|
|
211
|
+
Use `suppress` to hide a finding from later Markdown digests while keeping the raw observation in SQLite and the finding marked in JSON:
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
pathscout suppress <finding-id> --reason "Not a fit" --expires 2026-12-31
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
Careers pages are parsed into separate role findings when PathScout can identify role-title rows. If a page does not expose clear role titles, PathScout falls back to one page-level finding.
|
|
218
|
+
|
|
219
|
+
## Package Exports
|
|
220
|
+
|
|
221
|
+
Use `package` to create a portable, human-readable and agent-readable opportunity package from a finding in `outputs/latest.json`:
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
pathscout package <finding-id>
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
Each package includes a manifest, a human Markdown brief, agent instructions, and canonical JSON data under `outputs/packages/`. See `docs/artifacts.md` for the artifact contract.
|
|
228
|
+
|
|
229
|
+
`config/background.local.json`, legacy `config/background.json`, `data/notes.json`, `outputs/theses/`, and `outputs/packages/` are ignored by default because they may contain private candidate context.
|
|
230
|
+
|
|
231
|
+
See `DATA_CONTRACT.md` and `docs/source_of_truth.md` for the local-only storage boundary and agent-readable artifact contract. Network source fetches collect evidence for local runs; they are not hosted storage or sync.
|
|
232
|
+
|
|
233
|
+
## Design Borrowed From
|
|
234
|
+
|
|
235
|
+
PathScout follows scanner-style findings: stable IDs, evidence, severity-like tiers, reasons, flags, and suppressions.
|
|
236
|
+
|
|
237
|
+
The config split borrows from dbt-style separation of personal profile from project config. Source IDs follow the pre-commit convention: stable machine IDs plus human names. Suppressions borrow from security scanners: structured ignores with reasons and optional expiration dates.
|