| name | search |
| description | This skill should be used when the user wants to check if a company or job URL is already in their tracker, or list all applications for a company. Triggers on phrases like "have I applied to [company]", "is [company] in tracker", "check [url]", "already applied [url]", "search [company]", "what jobs do I have at [company]", "did I apply to [company]", "[company] already in tracker?". |
Search Tracker
Look up a company or URL across both sheets of List.xlsx (Sheet1 = active applications, Rejected = rejected/closed applications).
What to do based on input
User gives a URL
- Open
List.xlsx with openpyxl (use temp copy if PermissionError).
- Search column C in both sheets for that URL (exact or substring match). Also handle cells with
=HYPERLINK(...) formula — extract the URL from inside the formula.
- If found → show all matching rows (see Output Format below).
- If not found → use
requests to fetch the page and extract the <title> tag. Parse the company name from the title (format is usually "Job Title - Company | Platform"). Then search column A in both sheets by that company name.
- Report clearly: "Not in tracker" if nothing matches after both attempts.
User gives a company name only
- Open
List.xlsx with openpyxl (use temp copy if PermissionError).
- Search column A in both sheets — case-insensitive substring match.
- Show all matching rows across both sheets (see Output Format below).
- Report "Not in tracker" if nothing found.
Output Format
Group results by sheet, show row number, company, role, status (with emoji), URL, and any comments:
Found 3 match(es) for "Theodo":
[Sheet1]
Row 45 — Theodo | AI Engineer | ✅ Applied
URL: https://welcometothejungle.com/...
Row 67 — Theodo | Tech Lead | 🕐 In Progress
URL: https://...
[Rejected]
Row 12 — Theodo | Backend Engineer | ❌ Rejected
Note: French required
Status emoji mapping:
done / applied → ✅ Applied
in progress / under review → 🕐 In Progress
rejected → ❌ Rejected
not available / nothing to apply → ⏸️ No Jobs Available
- empty / other → ⬜ Not Contacted
Always show the Comments column (col F) if it has content — it often has useful notes like "Job posting CLOSED" or "French required".
Rules
- Always search BOTH sheets — Sheet1 and Rejected.
- Skip header row (row 1) when iterating.
- Company match is case-insensitive substring both ways:
query in company OR company in query. Skip empty cells — empty string always matches any substring check, so guard with if company and if url before comparing.
- For URL search, also check if the URL is wrapped in a HYPERLINK formula.
- If the user gave a URL that's not in the tracker, always attempt to identify the company from the page before saying "not found".