Personal Organizer Agents
Five local organizer projects. What each builds, how to run it, its inputs, outputs, review files and checks.
- Concepts and terms
- Tasks and commands
- Diagrams
- Comparisons
- Defaults and numbers
- Troubleshooting
- Questions and tips
Node projects side by side#
| Factor | Bookmark Path Organizer | Calendar Focus Planner | Field Notes Map Builder |
|---|---|---|---|
| Builds | Reading path page | Focus plan and ICS proposals | GeoJSON and a schematic map |
| Input | bookmarks tree, topics | sample.ics, tasks.json, a day | observations, radiusMeters |
| Outputs | bookmarks.json, progress.json, report.html | focus.ics, plan.json, plan.html | observations.geojson, groups.json, report.html |
| Review file | third argument progress.json | none | third argument group-review.json |
| Never does | Fetch links | Change an account calendar | Download photos or tiles |
From bookmark-path-organizer/README.md, solution/cli.ts, calendar-focus-planner/README.md, solution/cli.ts, field-notes-map-builder/README.md, solution/cli.ts
Python projects side by side#
| Factor | Download Folder Sort Desk | Catalog Record Linker |
|---|---|---|
| Builds | Filing plan and duplicate groups | Crosswalk and merged catalog |
| Input | folder, occupied | left_csv, right_csv, threshold |
| Outputs | moves.json, duplicates.json, review.html | crosswalk.csv, merged-catalog.json, review.html |
| Review file | --decisions decisions.json | --decisions decisions.json |
| Never does | Move a file | Merge on similarity alone |
From download-folder-sort-desk/README.md, solution/cli.py, catalog-record-linker/README.md, solution/cli.py
Run the reference#
| Command | What it does |
|---|---|
node cli.ts sample.json output | Bookmark organizer or field notes map |
node cli.ts <input.json> <dir> <review.json> | Runs again with your downloaded review |
node cli.ts sample.ics tasks.json 2026-10-14 output 10 | Calendar plan with a 10 minute buffer |
python3 cli.py samples/ | Download sort desk or catalog linker |
python3 cli.py <input.json> --output <dir> --decisions decisions.json | Applies your approvals |
python3 scripts/ | Grades the reference |
From bookmark-path-organizer/README.md, calendar-focus-planner/README.md, solution/cli.ts, download-folder-sort-desk/README.md, catalog-record-linker/README.md, field-notes-map-builder/README.md
Calendar planner steps#
From solution/main.ts, solution/cli.ts, calendar-focus-planner/README.md
Download sort desk#
From solution/main.py, solution/cli.py, download-folder-sort-desk/API.md
Scoring rules#
- Bookmark topic score
- a keyword in a title adds 3. A keyword in notes adds 1.
- Bookmark duplicates
- same URL after the fragment is removed. Query strings stay significant.
- File category
- a known extension adds 3. The words workshop and handout add 1 to documents.
- File collisions
- a taken destination gets
-2,-3before the suffix, case-insensitive. - Catalog pair score
- title Jaccard times 0.8 plus creator Jaccard times 0.2.
- Nearby observations
distanceMeters()uses a spherical earth of radius 6371008.8 m.- Map groups
- pairs within the radius join one connected component.
From solution/main.ts, download-folder-sort-desk/API.md, catalog-record-linker/API.md, solution/main.ts, field-notes-map-builder/README.md
Defaults and limits#
| Setting | Default | Note |
|---|---|---|
| Calendar buffer minutes | 10 | Allowed range 0 to 120 |
| Calendar output folder | focus-output | Fourth CLI argument |
| Max tasks | 100 | Minutes 5 to 480, priority 1 to 5 |
threshold | 0.25 | Finite, from 0 to 1 |
| Folder nesting | 32 | Deeper bookmark trees fail |
| Radius | 0..1000000 | Meters |
approved | False | Every planned move starts unapproved |
schema_version | 1 | In moves.json and merged-catalog.json |
From solution/cli.ts, solution/main.ts, catalog-record-linker/API.md, solution/main.ts, solution/main.ts, solution/main.py
Error messages and fixes#
| Symptom | Cause | Fix |
|---|---|---|
Expand recurrence and timezone values to UTC before importing | RRULE or TZID in the ICS | Expand events in the exporter first |
Event needs UID, | Implicit end or DURATION | Write an explicit DTEND |
stale approval: source content or destination plan changed | Files or plan changed after review | Use the new decisions.json |
output must be outside the input folder | Output inside the scanned folder | Pick another output path |
Progress order must contain every current id exactly once | Bookmarks changed after the download | Run without the third argument |
one-to-one match violated | One record accepted twice | Accept each record in one pair only |
From solution/main.ts, calendar-focus-planner/README.md, solution/main.py, solution/cli.py, solution/main.ts, solution/main.py, solution/main.ts
Write a review file#
| Task | Code |
|---|---|
| Split a map group | "decisions": {"<id>": "keep-separate"} |
| Keep a map group | "decisions": {"<id>": "keep-group"} |
| Save reading order | "order": [...], |
| Approve file moves | "approved": ["<path>"] |
| Accept a catalog pair | "match": true, |
| Version a Node review | "schemaVersion": 1 |
From solution/main.ts, solution/main.ts, download-folder-sort-desk/README.md, catalog-record-linker/API.md
Worked examples#
- Why is the sample busy from 09:20 to 11:10?
- Two events overlap and the 10 minute buffer widens them.
- Which task does not fit?
deepneeds 120 minutes. No gap is that long.- Why do
map-1andmap-2group? - Both URLs give the same document after normalization.
- Where does
handout.txtgo? documents/handout.txtis occupied, so it gets-2.- Are
left:map-1andright:r-7merged? - Only after you accept the pair. No record is discarded.
From solution/sample.ics, solution/tasks.json, solution/main.ts, solution/sample.json, download-folder-sort-desk/README.md, samples/input.json, catalog-record-linker/README.md
Tips#
- An all-day
DTEND;VALUE=DATEis exclusive. October 14 ends on20261015. - A file manager must recheck identity right before a move. The plan is not a transaction.
readymeans accepted merges have no open conflicts. It does not mean every pair was read.- GeoJSON uses longitude then latitude order.
- The bookmark importer reads the JSON folder tree, not browser HTML.
- Test at least one new input of your own before you integrate a tool.
From calendar-focus-planner/README.md, download-folder-sort-desk/README.md, catalog-record-linker/README.md, field-notes-map-builder/README.md, bookmark-path-organizer/README.md