apply
無料Searches for jobs on LinkedIn, filters by profile Must-haves, applies via Easy Apply, registers each application in DB.
日本語の概要は準備中です。原文の説明を表示しています。
Periodic routine that runs news, cleans up inbox and applies if there's no recent activity. Designed to run 1-2 times per day.
日本語の概要は準備中です。原文の説明を表示しています。
実行スコア 未検証
インストール方法を見るインストールする前に、エージェントに与えられる指示の中身を確認できます。
Keyword: daily
The user says daily (or variants: "routine", "check and apply", "check everything") and the full routine is triggered.
Compose the news and apply flows with decision logic to keep the job search active without manual intervention. Designed to run 1-2 times per day.
node .agents/skills/browser-automation/scripts/browser.js open <url> --headed (Gold Rule 5) → notify user → wait for confirmationnode .agents/skills/browser-automation/scripts/browser.js for open/close/goto. See AGENTS.md "Browser session" for details. Never call agent-browser open directly, never open Chrome directlymemory skill):
node scripts/db.js "SELECT category, key, value, confidence, source FROM preferences WHERE user_id = <user_id> AND status = 'active' ORDER BY category, key"
node scripts/db.js "SELECT data->'strategy' AS strategy FROM users WHERE id = <user_id>"
Respect: daily_frequency (on-demand / 1x/day / 2x/day), sources_active (which pillars to activate), apply_batch_size and targets_batch_size (passed to sub-flows). If daily not in sources_active, warn the userRun the full news flow:
Scan the user's LinkedIn feed for job/hiring posts that fit the profile. The feed re-sorts on every load and new posts surface constantly — run this every daily, even if the last scan was recent.
https://www.linkedin.com/feed/<main> element (NOT window — the feed scrolls main, window.scrollBy does nothing)main.innerText on Feed post markers — post containers have no stable classusers.data.profile + users.data.job_preferences (long-term only, remote LATAM, seniority, stack). Apply autonomously only if fit is strong AND no doubts — otherwise reportlnkd.in links by navigating to them — they show an interstitial with the real URL (Ashby, Google Forms, etc.)window.fetch and intercept flagship-web/rsc-action/actions/pagination responses (3MB+ Flight/RSC payloads). Extract long strings /"([^"\\]|\\.){160,}"/g, JSON.parse them, filter out noise (urn:, http, commentBox, tracking, ariaLabel, base64). Captures post text the DOM scrape misses — including job modules without "Feed post" markers/messaging/ don't navigate — use profile → Message or thread URL insteadRecruiters post vacancies as feed posts before/instead of job listings. Run /search/results/content/?keywords=<kw>&sortBy=%22date_posted%22 with employer-voice queries (see docs/post-mining.md for the validated set, skip patterns, and apply-channel priority: mailto > form > DM > board). Copy-link every relevant tech job post to train the feed.
The feed scan only sees what the algorithm serves. For complete coverage, run LinkedIn Jobs search with profile keywords:
https://www.linkedin.com/jobs/search/?keywords=<KW>&location=Worldwide&f_WRA=true&sortBy=DD — f_WRA=true filters remote, sortBy=DD sorts by dateusers.data.job_preferences.search_keywords (exec-level title set learned from real postings: "Head of AI", "Chief AI Officer", "Director de IA", "Forward Deployed Engineering Director", "AI Transformation Lead", etc.) — run 3-4 searches, dedupe by job ID. Fall back to users.data.profile keywords if search_keywords is missing.Check for connection invites awaiting acceptance with an approved follow-up message:
node scripts/db.js "SELECT id, company, url, data->'pending_dm' AS dm FROM applications WHERE user_id = <user_id> AND status = 'invite_pending' AND data->>'pending_dm_approved' = 'true'"
For each: open the contact's profile — if the invite was accepted (Message button works / no "Pending"), send the stored pending_dm via LinkedIn messaging, then set status = 'contacted' and remove pending_dm. If still pending, leave as is. Never post public comments (Gold Rule 6b).
Check du -sh .browser-profile at the start of the round. If combined > 1 GB, mention it in the summary and offer to purge — never purge without informing the user first.
Safe to delete (all in .gitignore, preserves logins):
rm -rf .browser-profile/Default/Cache .browser-profile/Default/Code\ Cache .browser-profile/Default/Service\ Worker .browser-profile/Default/GPUCache .browser-profile/GraphiteDawnCache
Never delete (would force re-login): .browser-profile/Default/Cookies, Local Storage, IndexedDB, .browser-profile/auth-state.json. Full reset (rm -rf .browser-profile) only if the user explicitly wants a clean profile.
Query DB via db CLI:
node scripts/db.js "SELECT max(applied_at) AS last_application FROM applications WHERE user_id = <user_id>"
Decision logic respects strategy:
strategy.daily_frequency = on-demand → don't auto-run apply/targets, only run newsstrategy.daily_frequency = 1x/day → run apply/targets if last application > 2 days agostrategy.daily_frequency = 2x/day → run apply/targets if last application > 1 day agostrategy.sources_active:
apply in sources_active and apply_batch_size > 0 → run apply with N = apply_batch_sizetargets in sources_active and targets_batch_size > 0 → run targets with batch = targets_batch_sizeapply and targets internally run referrals as step 0 (warm sourcing pre-check) if referrals is in sources_active. No separate daily step is needed for referrals — it is embedded. Staged referral/outreach drafts are surfaced by the news step above.last_application is recent enough → done. Report: "Last application: X. No need to apply today."If a campaign file exists at data/*-outreach.json (e.g: alitrio-outreach.json) and has targets with status: "pending":
high then medium)data/*-outreach.json):
strategy/config)users.data.profile — never hardcode)users.data.profile + career_goal at runtime — lead with the user's flagship transformation result, then the non-linear impact thesis (AI in processes = adoption/resilience, AI in product = revenue) → soft CTA 20-min call. Never hardcode company names or metrics (Gold Rule 9)strategy.auto_send = true (or user granted it). Otherwise draft + wait for approval. Anti-LLM checklist always applies before sending.status: "sent", sent_on, personalization_hook in the JSON. Report the sent email in the summary.status: "pending" and an angle notestatus: "invite_pending". If a bounce happens, mark target linkedin_only and stop emailing that domain.Max 1 CEO email per daily round. Quality over volume: each email must have a real personalization hook.
Present the user with a consolidated session summary:
node scripts/pipeline.js --funnel and include the funnel summary so the user sees the current state of all applications/contacts at a glancenews (check updates, surface staged referral/outreach drafts)apply (apply if no recent activity)targets (alternative to apply for direct sourcing)referrals (embedded as step 0 of apply/targets when in sources_active)onboarding (DB to query last_application)profile (Must-haves for apply)This flow is designed to eventually be automated via cron (GitHub Action scheduled or local cron that triggers a Devin cloud session with prompt daily). In the meantime, the user triggers it manually by saying daily.
まだレビューはありません。使ってみた感想をお寄せください。
ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。
まだコメントはありません。最初のコメントを書いてみませんか。
Searches for jobs on LinkedIn, filters by profile Must-haves, applies via Easy Apply, registers each application in DB.
日本語の概要は準備中です。原文の説明を表示しています。
Control a dedicated browser via agent-browser (Vercel). Use when automating web apps, scraping authenticated sites, filling forms, or navigating SPAs. Do NOT use for desktop apps or API-only integrations.
日本語の概要は準備中です。原文の説明を表示しています。
Opens a local web dashboard that visualizes the job application pipeline, funnel stats, recent messages, and target company status. The agent opens it at the end of a round so the user can visually review the pipeline.
日本語の概要は準備中です。原文の説明を表示しています。
Safe Postgres CLI. Reads DATABASE_URL from .env, runs SQL, prints JSON. Read-only by default.
日本語の概要は準備中です。原文の説明を表示しています。
Autonomous user preference detection, storage and injection. The agent detects preferences from conversation, saves them to Postgres, and loads active ones at the start of every flow.
日本語の概要は準備中です。原文の説明を表示しています。
Reviews job application updates from Gmail, LinkedIn and platforms. Prepares drafts, presents executive summary by priority, validates with the user and sends replies.
日本語の概要は準備中です。原文の説明を表示しています。