On-demand Scout service (replaces the nightly aggregator): - FastAPI agent-mesh service; card name "matchmaking-service" (HTTP /a2a/tasks + Redis-stream worker matching the sibling-service pattern) - run_search: parallel multi-board sweep (Naukri/blackfalcondata + Foundit + LinkedIn), city-filtered at the board, cheapest-per-result first - per-board adapters + normalizers -> ScoutJob with rich read-only details and offsite apply links; recall mode + MVQ guard - result cache for dev replay ($0); per-board cost knobs; retry-on-5xx - research/: engine design, board cost economics, India-actor shortlist, POC
41 lines
1.4 KiB
Python
41 lines
1.4 KiB
Python
"""
|
|
login_once.py — one-time LinkedIn login into the dedicated Chrome profile.
|
|
|
|
Run this ONCE (or whenever the session expires). A Chrome window opens on LinkedIn's login page.
|
|
YOU type your email/password (and any 2FA) directly in that window — nothing is sent to our code.
|
|
When the feed loads, come back to this terminal and press Enter; the session is saved in
|
|
./chrome-profile and reused by apply.py.
|
|
|
|
python login_once.py
|
|
"""
|
|
import asyncio
|
|
|
|
from browser_use import BrowserSession
|
|
from browser_config import make_profile
|
|
|
|
|
|
async def main():
|
|
session = BrowserSession(browser_profile=make_profile())
|
|
await session.start()
|
|
await session.navigate_to("https://www.linkedin.com/login")
|
|
|
|
print("\n" + "=" * 70)
|
|
print(" A Chrome window opened on LinkedIn.")
|
|
print(" 1. Log in there (email, password, 2FA if asked).")
|
|
print(" 2. Wait until your LinkedIn FEED is visible.")
|
|
print(" 3. Then press Enter here to save the session.")
|
|
print("=" * 70)
|
|
await asyncio.get_event_loop().run_in_executor(None, input, "\nPress Enter once logged in... ")
|
|
|
|
try:
|
|
url = await session.get_current_page_url()
|
|
print(f"Current page: {url}")
|
|
except Exception:
|
|
pass
|
|
print("Session saved to ./chrome-profile — you can close the window. Run apply.py next.")
|
|
await session.kill()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|