{"id":49849371,"url":"https://github.com/farzamhejazik/codex_linkedin_assistant","last_synced_at":"2026-05-14T14:05:21.642Z","repository":{"id":357000668,"uuid":"1233344259","full_name":"FarzamHejaziK/codex_linkedin_assistant","owner":"FarzamHejaziK","description":"Repo-first Codex workspace for LinkedIn job search: CSV tracker, job discovery, referral orchestration, resume tailoring, application folders, screening-answer memory, and approval-gated browser workflows via Codex Chrome.","archived":false,"fork":false,"pushed_at":"2026-05-10T20:37:36.000Z","size":5078,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-10T22:24:42.579Z","etag":null,"topics":["application-tracking","applications","automation","browser-automation","codex","codex-desktop","job-search","linkedin","prompt-first","referrals","resume","resume-tailoring"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FarzamHejaziK.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":"MAINTAINERS.md","copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-08T21:25:53.000Z","updated_at":"2026-05-10T20:37:41.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/FarzamHejaziK/codex_linkedin_assistant","commit_stats":null,"previous_names":["farzamhejazik/codex_linkedin_assistant"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/FarzamHejaziK/codex_linkedin_assistant","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FarzamHejaziK%2Fcodex_linkedin_assistant","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FarzamHejaziK%2Fcodex_linkedin_assistant/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FarzamHejaziK%2Fcodex_linkedin_assistant/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FarzamHejaziK%2Fcodex_linkedin_assistant/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FarzamHejaziK","download_url":"https://codeload.github.com/FarzamHejaziK/codex_linkedin_assistant/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FarzamHejaziK%2Fcodex_linkedin_assistant/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33028203,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["application-tracking","applications","automation","browser-automation","codex","codex-desktop","job-search","linkedin","prompt-first","referrals","resume","resume-tailoring"],"created_at":"2026-05-14T14:05:19.314Z","updated_at":"2026-05-14T14:05:21.589Z","avatar_url":"https://github.com/FarzamHejaziK.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/logo-animation.gif\" width=\"600\" alt=\"Codex LinkedIn Assistant\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg alt=\"License: MIT\" src=\"https://img.shields.io/badge/License-MIT-green.svg\"\u003e\u003c/a\u003e\n  \u003cimg alt=\"Codex App\" src=\"https://img.shields.io/badge/Codex%20App-Ready-111827\"\u003e\n  \u003cimg alt=\"LinkedIn\" src=\"https://img.shields.io/badge/LinkedIn-via%20Codex%20Chrome-0A66C2?logo=linkedin\u0026logoColor=white\"\u003e\n  \u003cimg alt=\"Prompt First\" src=\"https://img.shields.io/badge/Prompt--First-Markdown-blue\"\u003e\n  \u003ca href=\"CONTRIBUTING.md\"\u003e\u003cimg alt=\"PRs Welcome\" src=\"https://img.shields.io/badge/PRs-welcome-brightgreen.svg\"\u003e\u003c/a\u003e\n  \u003cimg alt=\"Maintained\" src=\"https://img.shields.io/badge/Maintained-yes-success\"\u003e\n  \u003ca href=\"SECURITY.md\"\u003e\u003cimg alt=\"Security policy\" src=\"https://img.shields.io/badge/Security-policy-blue\"\u003e\u003c/a\u003e\n  \u003cimg alt=\"Privacy\" src=\"https://img.shields.io/badge/Private%20Data-local%20only-success\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#prerequisites\"\u003e\u003cstrong\u003ePrerequisites\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"#quick-start\"\u003e\u003cstrong\u003eQuick Start\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"#how-it-works\"\u003e\u003cstrong\u003eHow it works\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"#what-it-does\"\u003e\u003cstrong\u003eWhat it does\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"#daily-flow\"\u003e\u003cstrong\u003eDaily flow\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"#privacy\"\u003e\u003cstrong\u003ePrivacy\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"#contributing\"\u003e\u003cstrong\u003eContributing\u003c/strong\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nA Codex assistant for LinkedIn. Track jobs in a single CSV, discover openings via LinkedIn + web search, orchestrate referrals, tailor resumes, prepare application materials, and keep application state in one local workspace.\n\n\u003e **Scope on purpose:** Codex handles the repetitive organization, drafting, browser navigation, and file preparation. You approve anything externally visible or judgment-heavy: messages, emails, uploads, applications, sensitive screening answers, and final submissions.\n\nThis is intentionally prompt-first: Markdown instructions and local files, no helper programs or hidden services.\n\nLooking for the Claude Code version? See [claude-linkedin-assistant](https://github.com/FarzamHejaziK/claude-linkedin-assistant).\n\n## Prerequisites\n\nYou need these before the job-search flows can work end to end:\n\n- **[Codex app](https://developers.openai.com/codex/app)** - open this repository in the Codex desktop app so Codex can read and write the local workspace files. The browser-only experience is not enough for this repo because the assistant needs local resumes, tracker files, application folders, and git commits.\n- **[Codex Chrome extension](https://developers.openai.com/codex/app/chrome-extension)** - this lets Codex use your signed-in Chrome session for LinkedIn, Gmail, company career pages, and ATS forms. Set it up from Codex with `Codex -\u003e Plugins -\u003e Chrome`, follow the setup flow, then confirm the Chrome toolbar extension shows `Connected`.\n- **Chrome signed in to LinkedIn** - use the same Chrome profile where the Codex extension is connected.\n- **Git** - used to clone the repo and create end-of-day commits.\n\nFor resume uploads and referral/application attachments, also enable file access:\n\n```text\nChrome -\u003e Extensions -\u003e Manage Extensions -\u003e Codex extension -\u003e Details\nAllow access to file URLs\n```\n\n## Quick Start\n\n### 1. Clone and open in Codex\n\n```bash\ngit clone https://github.com/FarzamHejaziK/codex_linkedin_assistant.git\ncd codex_linkedin_assistant\n```\n\nOpen the folder in Codex. Codex reads:\n\n```text\nAGENTS.md\n```\n\nThat file points to the project skill:\n\n```text\n.agents/skills/jobs/SKILL.md\n```\n\n### 2. Add your resume\n\nBest path: attach/upload your resume in Codex chat during `jobs setup`, or paste its absolute local file path. Codex should copy it into `resumes/` for you.\n\nYou can also put one or more resume files in:\n\n```text\nresumes/\n```\n\nSupported formats:\n\n- `.pdf`\n- `.tex`\n- `.docx`\n- `.md`\n- `.html`\n\n### 3. Add search preferences\n\nCodex can create this for you during setup by asking about target roles, locations, salary, work authorization, sponsorship, and dealbreakers.\n\nOptional manual file:\n\n```text\nresumes/search_profile.md\n```\n\nUse it for must-haves, deal-breakers, locations, salary floor, level, industries, company stage, and role preferences.\n\n### 4. Confirm browser file access\n\nFor application uploads and referral materials:\n\n```text\nChrome -\u003e Extensions -\u003e Manage Extensions -\u003e Codex extension -\u003e Details\nAllow access to file URLs\n```\n\n### 5. Run setup\n\n```text\njobs setup\n```\n\nIf no real resume is present yet, setup should pause and ask you to upload one here, paste an absolute local path, or drag a file into `resumes/`. After that, Codex should ask onboarding questions and create the search/profile files itself.\n\n## How it works\n\nThe assistant is built around local files:\n\n- `job_tracker.csv` is the source of truth.\n- `resumes/` describes who you are and what jobs fit.\n- `profile/` stores reusable application fields and screening answers.\n- `base_resumes/` can hold editable resume sources.\n- `applications/` stores per-job materials.\n- `outreach/` stores referral contact logs.\n- `.agents/skills/jobs/references/` contains workflow instructions.\n\nThere is no database. Open the CSV and folders to inspect the current state.\n\nAt the start of every operational `jobs ...` workflow, Codex should confirm the Codex Chrome extension/tool is exposed and connected, open LinkedIn, and verify the active LinkedIn profile name matches the name on the resume. Installing the Chrome extension is not the same as exposing a working Chrome connection to a Codex session; both have to be true. If Chrome-specific tools are not exposed or not communicating after discovery/connection attempts, Codex should explain the exact state and help you reconnect Chrome instead of falling back to Computer Use. If the resume is missing, setup pauses for resume intake first.\n\n## Repository Structure\n\n```text\nCodex_Linkedlin_assistant/\n├── AGENTS.md\n├── CONTRIBUTING.md\n├── LICENSE\n├── MAINTAINERS.md\n├── README.md\n├── REQUIREMENTS.md\n├── SECURITY.md\n├── job_tracker.csv\n├── .gitignore\n├── assets/\n│   ├── logo-animation.gif\n│   └── logo.png\n├── .github/\n│   ├── CODEOWNERS\n│   └── PULL_REQUEST_TEMPLATE.md\n├── .docs/\n│   ├── PRD.md\n│   └── plan.md\n├── .agents/\n│   └── skills/\n│       └── jobs/\n│           ├── SKILL.md\n│           └── references/\n│               ├── apply.md\n│               ├── browser-preflight.md\n│               ├── check.md\n│               ├── daily.md\n│               ├── find.md\n│               ├── overview.md\n│               ├── referral.md\n│               ├── resume-backends.md\n│               ├── setup.md\n│               ├── tracker-schema.md\n│               ├── workspace-files.md\n│               └── writing-style.md\n├── resumes/\n│   ├── README.md\n│   └── search_profile.example.md\n├── profile/\n│   ├── personal_info.example.json\n│   └── screening_answers.example.md\n├── base_resumes/\n│   └── README.md\n├── applications/\n│   └── README.md\n└── outreach/\n    └── README.md\n```\n\n## What it does\n\n| Intent | What it does |\n|---|---|\n| `jobs setup` | Verifies workspace files, tracker schema, resume intake, resume backend, and browser preflight |\n| `jobs check` | Shows dashboard, deadlines, ready-to-apply jobs, and outreach queues |\n| `jobs find` | Searches LinkedIn Jobs in Chrome first, supplements with web/company boards, or intakes a pasted job link |\n| `jobs referral` | Handles replies, referral materials, email-vs-LinkedIn decisions, follow-ups, outreach, and deadlines |\n| `jobs apply` | Prepares materials, tailors resume when possible, fills forms, uploads files, and submits after approval |\n| `jobs daily` | Runs the daily sequence and commits at the end when appropriate |\n\nThere is no standalone `jobs add` or `jobs update`.\n\n## Daily flow\n\n```text\n1. jobs check\n2. jobs apply        # ready jobs\n3. jobs referral     # replies, follow-ups, outreach, deadlines\n4. jobs find         # discovery and manual-link intake\n5. instant apply     # newly found no-referral jobs, with approval\n6. commit\n7. summary\n```\n\n## Resume Backends\n\n| Backend | Use when | Notes |\n|---|---|---|\n| LaTeX | You maintain `.tex` resume sources | Codex can edit source and use local LaTeX tools if available |\n| DOCX | You maintain Word-style resumes | Codex can use available document tools or prepare edits for manual export |\n| Markdown/HTML | You want simple editable sources | Codex edits source and uses available export tools |\n| PDF-only | You only have a final PDF | Works as an attachment, but true tailoring needs editable source |\n\nCodex must never invent experience. Tailoring means truthful emphasis and wording, not fabrication.\n\n## Tracker Format\n\nDo not change the header:\n\n```csv\nPriority,Company,Role,Location,Type,Salary,Status,Applied Date,Next Action,URL,Notes,Discovered Date,Referral Needed,Referral Status,Referral Deadline,Apply Via\n```\n\n## Privacy\n\nPrivate files are ignored by default:\n\n- Real resumes\n- Real profile data\n- Screening answers\n- Application folders\n- Outreach contact logs\n- Base resume sources\n\nDo not commit private job-search data unless you intentionally change `.gitignore`.\n\n## Contributing\n\nPull requests only. Direct pushes to `main` should be blocked on the public project.\n\n- See [`CONTRIBUTING.md`](CONTRIBUTING.md) for the workflow.\n- See [`MAINTAINERS.md`](MAINTAINERS.md) for the approval model.\n- For security reports, see [`SECURITY.md`](SECURITY.md) and do not open a public Issue.\n\n## Design Docs\n\n- `.docs/PRD.md`\n- `.docs/plan.md`\n\n## Related\n\n- Claude Code version: [claude-linkedin-assistant](https://github.com/FarzamHejaziK/claude-linkedin-assistant)\n\n## License\n\nMIT. See [`LICENSE`](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffarzamhejazik%2Fcodex_linkedin_assistant","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffarzamhejazik%2Fcodex_linkedin_assistant","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffarzamhejazik%2Fcodex_linkedin_assistant/lists"}