From 7fab996407a015a729d50c14c18ab1eefb91f42e Mon Sep 17 00:00:00 2001 From: cesnimda Date: Thu, 30 Jul 2026 22:42:49 +0200 Subject: [PATCH] docs: reconcile phase 6 status --- docs/implementation-roadmap.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/implementation-roadmap.md b/docs/implementation-roadmap.md index 24e003d..e5bf9a7 100644 --- a/docs/implementation-roadmap.md +++ b/docs/implementation-roadmap.md @@ -162,18 +162,18 @@ Goal: polish. This is the healthiest area — grounding in the structured profil ## Phase 6 — Job discovery -Goal: help users find opportunities. **Zero code exists.** Explicitly an enhancement — the guide: "Job discovery supports tracking. It does not replace job boards." +Goal: help users find opportunities. **URL preview and bookmarklet/PWA capture are complete.** Explicitly an enhancement — the guide: "Job discovery supports tracking. It does not replace job boards." **Order decided 2026-07-17:** (a) manual URL import → (b) browser extension → (c) official APIs where available. **Scraping is explicitly not the starting point.** This reorders the original plan: the extension now comes *before* a search backend. | # | Task | Priority | Difficulty | Dependencies | Expected value | |---|---|---|---|---|---| -| 6.1 | **(a) Harden manual URL import** — `POST /jobimport/preview` is preview-only (a 27-line controller, no persistence, no import history, no dedup at import time). | **P2** | **M** | Phase 0 | Step (a) of the decided order and **already mostly built**. Cheapest discovery win; the wizard already calls it. | -| 6.2 | **(b) Browser extension / bookmarklet capture** — reuse `jobimport/preview`; land captures in `Saved`. | **P2** | **L** | 6.1, 1.1 | Step (b). Teal/Huntr/Simplify all ship one; Jobjakt is server-side parse only. **Kills the single biggest friction (manual entry)** and needs no search backend. Start with a bookmarklet — a full Chrome-store extension is high maintenance. | +| 6.1 | **DONE (2026-07-30)** — manual URL import previews into the existing reviewed add-job flow, which persists through the normal create endpoint and warns on duplicate URLs. No second import-history store was added. | **P2** | **M** | Phase 0 | The existing flow delivers the discovery win without another persistence model. | +| 6.2 | **DONE (2026-07-30)** — bookmarklet/PWA share capture reuses `jobimport/preview` and opens the reviewed add-job flow in `Saved`. A store extension remains deliberately unnecessary. | **P2** | **L** | 6.1, 1.1 | Capture is available without Chrome-store maintenance. | | 6.3 | **(c) Official job-board APIs where available** | **P3** | **L** | 6.2, 6.6 | Step (c). Legal and low-maintenance where an API exists. | | 6.4 | **Search UI + filters** (title, location, remote, industry) | **P3** | **M** | 6.3 | Only worth it once (c) supplies real data. | | 6.5 | **One-click import into tracker** | **P3** | **S** | 6.3 | Lands in `Saved` — which exists as of Phase 0. | -| 6.6 | **Make market a data dimension, not an assumption** — Finn/NAV/Jobbnorge/LinkedIn are Norway-specific. **Decided: Norway first, but no hardcoding Norway.** | **P2** | **M** | none | `Job.CountryCode` and `Job.Source` already exist (added in Phase 0) — the entity is ready. The *plugins*, locale and currency handling still assume NO. Doing this before 6.3 stops each new market being a rewrite. | +| 6.6 | **PARTIAL** — `Job.CountryCode` and `Job.Source` exist, but the live `JobApplication` create flow does not yet dual-write `Job`, and import results do not carry market metadata. **Decided: Norway first, but no hardcoding Norway.** | **P2** | **M** | none | Complete this with the first official API so its provider market contract drives the write path. | | 6.7 | **Explicitly out of scope: scraping.** | — | — | — | Recorded so it is not re-proposed. Also out: auto-apply bots (ToS/ethics/quality; contradicts "apply to more *suitable* jobs"). | ---