# Flow 4 — Jobs · Find · ~8 min · Oli=Chrome · Oscar=Firefox > Bring jobs in two ways: scan your **personal email** (Gmail / Yahoo) for job alerts, and pull from **live job boards**. Everything lands in one place — the Job Exchange — tagged by where it came from. **▶ Start here** - **Link:** `…/?startflow=inbox` — the landing's **Jobs → "Personal emails"** card. · Live boards: `…/?startflow=exchange`. - **Lands on:** the **"Which inbox?"** chooser (**Gmail** / **Yahoo**), with a "browse live job boards" option below. - **Voice:** none in this flow. ## Preconditions - [ ] **P1.** Logged in (any account). A résumé loaded helps (jobs get scored), but not required to see the feeds. - [ ] **P2.** For the email scan: a **Gmail** account with some job-alert emails (LinkedIn/Indeed/recruiters), and/or a **Yahoo** account + a Yahoo **app-password** if you're testing Yahoo. - [ ] **P3.** DevTools → Console open. ## Stage 1 — Job boards (no setup) ⭐ (P0) | # | Action | Expected result | |---|--------|-----------------| | 1 ⭐ | Open the **Job Exchange**. | Live roles load from job boards (RemoteOK, Remotive, Greenhouse, etc.); a flashing **"N live roles from job boards"** counter shows on top of the cards. | | 2 | Look at a card's source. | Each card shows where it came from (e.g. "via Remotive"). | | | | **RED FLAG** | the board stays empty / "Loading…" forever, or console errors on the feed. | ## Stage 2 — Personal emails · Gmail (manual / OAuth) | # | Action | Expected result | |---|--------|-----------------| | 3 | From the **Jobs** entry, choose **Personal emails → Gmail** → connect (Google consent). | OAuth round-trip returns you to the app connected. The consent asks only to **read/view** your email (read-only) — **not** to manage/modify it. | | 3b ⭐ | (Testing-mode note) On prod today the Google app is in **Testing** — only Google accounts **allow-listed** as test users can connect. If you see *"Access blocked / app not verified,"* that's the allow-list, not a code bug — tell Jorge your Google address. | Allow-listed accounts connect; others are blocked by Google (expected until publish). | | 4 | Run the scan. | A progress indicator, then job-alert emails are pulled in, deduped, and added to the Exchange tagged **"via Gmail inbox."** No new Gmail **labels or filters** are created (read-only by design — your inbox is left untouched). | | | | **RED FLAG** | the scan hangs forever, returns an error, bounces you to a "Welcome back" lock on return (see Flow 1), or the consent asks for **modify/manage** permission (should be read-only). | ## Stage 3 — Personal emails · Yahoo (manual / app-password) | # | Action | Expected result | |---|--------|-----------------| | 5 | Choose **Personal emails → Yahoo**. The connect screen shows a **4-step "create a Yahoo app password" guide** + an **Open Yahoo app passwords ↗** button. | Guide is clear; the button opens Yahoo's app-password page in a new tab. | | 6 ⭐ | Follow the guide: generate a **16-char app password** (name it "XJobs"), paste it + your Yahoo email, connect. | Connects (the server validates the IMAP login); scan runs and pulls Yahoo job-alert emails, tagged **"via Yahoo inbox."** | | 7 | Try a **wrong/garbled** app password once. | Clear, actionable error: "Could not sign in to Yahoo — use a Yahoo **APP PASSWORD**, not your login password." No crash. | | | | **RED FLAG** | "email and app password required" after you entered both; a correct app password is rejected; or the scan errors out. | ## Stage 4 — It all lands in one place ⭐ (P0) | # | Action | Expected result | |---|--------|-----------------| | 8 ⭐ | Back in the Job Exchange, switch to **By source** tabs. | You see a tab per source — **Gmail · Yahoo · RemoteOK · Remotive · Greenhouse…** — each with its own count. Inbox jobs show alongside board jobs. | | | | **RED FLAG** | scanned inbox jobs don't appear, or appear with no source tab. | ## Report 🐞 **Found a bug?** any screen — or **Submit a run**: step # · browser · expected · actual · screenshot. ⭐ = P0. Note which inbox you tested. ## 🎥 Video (what to record · ≤3 min) Record: open the Exchange (boards already loaded, live counter) → connect Gmail → scan → jobs appear tagged "via Gmail" → switch to By-source tabs and show Gmail/Yahoo/boards each as a tab. (Yahoo optional if you have an app-password.)