- Brand
- FoundRole
- Category
- HR & Recruiting
- Primary Subcategory
- Job Search Aggregators & Job Boards
Integration details
Description
FoundRole is an AI job search and job application tracker. Search a live job board by title, location, salary, date posted, and work type: remote, work-from-home, or on-site. Save the roles you want to your tracker. Every job comes with real data to judge it by: salary insights versus market rates, ghost-job signals with a trust grade, H-1B sponsor status, and E-Verify status. Add a resume or complete your FoundRole profile, and each job also shows a match score with the skills you're missing. Found a role on LinkedIn or a company careers page? Paste the link to analyze it the same way, then compare up to four jobs side by side. Move applications through Saved → Applied → Interviewing → Offered stages, keep notes, contacts, and offer details on each one, and set follow-up reminders with calendar invites. Subscribe to daily, weekly, or monthly job alerts and get job recommendations matched to your profile. When you need guidance, FoundRole answers from its library of career guides on resumes, interviews, and salary. Free to use. Everything stays in sync with FoundRole on the web.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- Job Search Aggregators & Job Boards
- Secondary Subcategories
- None listed
- Brand
- FoundRole
- Access
- Account required
- First tracked
- 2026-06-24
- Tool count
- 33
- Geography
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Your Plugin is no longer discoverable
We previously found FoundRole Jobs discoverable in ChatGPT, but ChatGPT is no longer surfacing it.Add your email below and we’ll let you know when your Plugin becomes discoverable again, and send you alerts about it.
No spam. Unsubscribe any time.
What discovery looks like

Competing in ChatGPT Job Search Aggregators & Job Boards
View Category33 tools agents can invoke
Analyzes one job found outside FoundRole using the authenticated user's FoundRole profile and the same signals used for FoundRole jobs: resume match, missing skills, H-1B sponsorship history, E-Verify, ghost-job risk, posted compensation, and market salary estimates. Use tracker_add_external only when the user asks to save without analysis. The input represents the direct posting URL and all job content already available in the conversation. The five text identity fields are required; every structured fact field is optional, with a fact the source does not state simply omitted (or null). The optional `client_extraction` object carries evidence-backed skills, technology, benefits, bonuses, seniority, industry, management, clearance, visa, and remote-scope labels when source excerpts for them exist. FoundRole validates the evidence, stores the client extraction separately, derives missing deterministic facts, and reports which values were provided, derived, accepted, rejected, or remain unknown. The output includes `comparisonRef`; retain it exactly for a later jobs_compare call. The analysis is a decision aid, not a guarantee about sponsorship, legitimacy, compensation, or hiring outcome.
jobs_analyze_external
Checks resume text for machine-readable sections, recognized skills, contact channels, a headline, and experience date ranges using FoundRole's deterministic parser. Pass resume_text to check plain text supplied in the conversation. If resume_text is omitted, the tool reads the previously extracted text of the primary resume in the authenticated user's FoundRole account. It returns a readability band (strong, good, partial) and the single biggest loss. Depending on the account it also returns additional findings and the parsed facts (headline, years of experience, sections, contact channels, recognized skill count). Each finding includes a suggested fix. A saved report link is returned only when the account already has access to that report. This is FoundRole's text-readability assessment, not a test against a named ATS, a hiring prediction, or a file-layout check. Pasted text does not preserve the original PDF or DOCX layout. The tool does not upload a file, create a saved resume or report, change the user's profile, submit an application, or fetch URLs found in the text. It may return a FoundRole website link; opening that link and uploading or editing a resume are separate user actions. Operational request records and diagnostics may retain tool inputs; this tool does not promise that submitted text is never stored.
resume_check
Compares 2 to 4 jobs side by side using the same FoundRole analysis fields: resume match, missing skills, H-1B and E-Verify signals, ghost-job risk, posted pay, and market salary estimates. `comparison_refs` accepts exact FoundRole job IDs returned by jobs_search and exact external `comparisonRef` URLs returned by jobs_analyze_external. Analyze each outside job first; a bare URL that has not been analyzed cannot be compared because FoundRole does not have its posting facts. Preserve every reference exactly, keep the user's requested order, and do not send duplicates.
jobs_compare
Subscribes the authenticated user to job alerts for a specific saved job search. **Input:** - `job_search_id`: The job search identifier to subscribe to (required). Accepts either the job search UUID or the composite job ID returned by `jobs_search` / `jobs_details` (format: "seo_id--job_search_id"). - `delivery`: digest, fast (optional). Fast email is not available on every account and needs enough new matches for the exact saved search. Unsupported fast selection returns a validation error and keeps the existing delivery mode. - `frequency`: Alert frequency — one of daily, weekly, monthly (optional, defaults to "weekly") **Output:** Returns the created or updated job alert with id, status, and frequency. Idempotent: calling this tool for an already-subscribed search updates the existing alert without creating a duplicate. An existing active alert with the same query text, location, company and filters, and at least the same radius, is returned instead of a new one, with the requested frequency applied to it. A user keeps one alert per query and place. When they already have an active alert for the same query and place with other filters, radius or sort, this tool changes that alert to the new search instead of adding a second one: the returned `jobAlert.id` is the existing alert, `jobSearchId` is the new search, and `message` says the alert was changed. **Delivery:** Digest alerts arrive together in one email, one section per query and place. Opted-in fast alerts are sent separately while the account has them: matches found overnight arrive in one morning email at the hour the user usually starts the day, and later matches follow at least 3 hours after the previous email, up to 3 emails per local day. A fast email carries only jobs found since the previous one, never a job already sent to the user, a role from the same employer sent in the last 30 days, or a job in the user's tracker. When the account no longer has fast alerts they return to the ordinary digest and retain the saved fast preference. Each section applies every filter and the sort of its saved search, the same way `jobs_search` does for that account. A job appears in the digest once, even when it matches several alerts, and no email is sent when there are no new matches. The digest follows the most frequent alert, and arrives less often when the user has not used FoundRole for a while.
job_alert_subscribe
Deletes a reminder from a tracked job. **Input:** - `tracked_job_id`: The tracked job ID — `trackedJobs[].id` from tracker_list output, distinct from `trackable.id` and `job.id` (required) **Output:** Returns the updated tracked job with reminderAt cleared.
reminder_delete
Fetches full details for one job by the `id` returned from jobs_search — the deeper view behind a search result. **Input:** - `job_id`: The exact ID string from the `id` field of a `jobs_search` result. - `result_item_id`: The matching occurrence ID from that result's `resultItemId` field, when available. **Output:** Complete job details: description, skills, benefits, requirements, salary benchmark, resume match, H-1B and E-Verify signals, job-trust analysis, and application link. A posting that passed the fully-remote check carries `remoteCheck`: the posting lines that make the role remote and where the employee may work from, or an unknown scope when the posting does not say. Personalized and extended insight fields follow the authenticated user's current entitlements.
jobs_details
Lists what FoundRole's published career-guidance blog covers: every category and the most-used tags, each with its published-article count and url, plus the total number of published articles. This is the factual source for questions about the blog's topics or overall coverage. It takes no parameters and reflects the live published corpus. It does not retrieve articles for a specific question; knowledge_search does that.
knowledge_topics
Lists the authenticated user's job alerts across all subscription sources (regular, company page, MCP). **Input:** - `status`: Filter by status — one of pending, active, unsubscribed (optional, default: all statuses) - `limit`: Number of results to return (default 20, max 50) - `offset`: Number of results to skip (default 0) **Output:** Returns the user's job alerts with pagination info and a summary of the underlying job search (query, location, company where available). Each response includes a system_instruction describing how to present the results for the current client.
job_alert_list
Lists tracked jobs that have reminders set, ordered by reminder time (soonest first). **Input:** - `limit`: Number of results to return (default 20, max 50) **Output:** Returns a list of tracked jobs with active reminders.
reminder_list
Lists the user's tracked jobs with optional filtering and pagination. **Input:** - `status`: Filter by status (saved, applied, interviewing, offered, archived) - `limit`: Number of results per page (default 20, max 50) - `offset`: Number of results to skip (default 0) **Output:** Returns a list of tracked jobs grouped by status with pagination info. Each response includes a system_instruction describing how to present the results for the current client.
tracker_list
Changes a tracked job's status or sub-status and returns only the updated record, without rendering a tracker widget. FoundRole widgets call it for the in-place status dropdown; conversation-driven status changes go through tracker_update_status, which renders the tracker UI. It takes the same input.
tracker_update_status_data
Updates the status of a tracked job. **Input:** - `tracked_job_id`: The tracked job ID — `trackedJobs[].id` from tracker_list output, distinct from `trackable.id` and `job.id` (required) - `status`: New status: saved, applied, interviewing, offered, archived (required) - `sub_status`: Sub-status within the main status, valid only for that status (optional): saved: interested, researching_company, preparing_application, ready_to_apply; applied: application_submitted, followed_up; interviewing: interview_scheduled, phone_screen, technical, onsite, final_round, pending_feedback; offered: negotiating, considering, offer_received, accepted; archived: ghosted, rejected_by_company, withdrawn_by_candidate, not_interested, employed_by_this_company, employed_by_another_company **Output:** Returns the updated tracked job.
tracker_update_status
Returns the authenticated user's personalized job recommendations built from their resume, skills, target roles, and preferred location. Results are ranked by fit, may include related roles, and carry the same salary, match, H-1B, and job-trust insight payload used by job search. The search filters and sort parameters apply to this personalized feed too. One call returns one answer: there is no next page, and the response links to the same feed on the FoundRole website. An explicit query for a different or unrecognized profession uses the same general job search as jobs_search, preserving the query and filters instead of substituting the profile's target roles. A processing status means the personalized feed is still being prepared; a later call returns the completed feed.
jobs_recommendations
Lists the authenticated user's job alerts and returns only the data, without rendering an alerts widget. FoundRole widgets call it to populate and refresh an already rendered panel in place; conversation-driven listing goes through job_alert_list, which renders the alerts UI. It takes the same input.
job_alert_list_data
Re-runs personalized recommendations against the caller's current FoundRole profile and returns the refreshed feed without rendering a recommendations widget. FoundRole widgets call it to refresh an already rendered panel in place; conversation-driven requests go through jobs_recommendations, which renders the recommendations UI.
jobs_recommendations_data
Re-runs a job search with the caller's current FoundRole profile and returns the refreshed results without rendering a search widget. FoundRole widgets call it to refresh an already rendered panel in place; conversation-driven searches go through jobs_search, which renders the search UI.
jobs_search_data
Lists the authenticated user's tracked jobs and returns only the data, without rendering a tracker widget. FoundRole widgets call it to load more rows and refresh an already rendered panel in place; conversation-driven listing goes through tracker_list, which renders the tracker UI. It takes the same input.
tracker_list_data
Removes a job from the user's job tracker. **Input:** - `tracked_job_id`: The tracked job ID — `trackedJobs[].id` from tracker_list output, distinct from `trackable.id` and `job.id` (required) **Output:** Confirms the job was removed from tracking.
tracker_remove
Removes a tracked job and returns only the result, without rendering a tracker widget. FoundRole widgets call it for the in-place Remove control; conversation-driven removals go through tracker_remove, which renders the tracker UI. It takes the same input.
tracker_remove_data
Saves a job from jobs_search results into the user's tracker by its job_id and returns only the saved tracked job, without rendering a tracker widget. FoundRole widgets call it for in-place Save buttons; conversation-driven saves go through tracker_add, which renders the tracker UI. Repeated saves return the existing tracked job.
tracker_save
Saves a job posting found outside FoundRole search into the user's tracker and returns only the saved tracked job, without rendering a tracker widget. FoundRole widgets call it for in-place Save buttons on analyzed external jobs; conversation-driven saves go through tracker_add_external, which renders the tracker UI. It takes the same input as tracker_add_external: `url`, `company_name`, `title_name`, `location_name`, and `description` are required, every structured fact field is optional, and repeated saves return the existing tracked job.
tracker_save_external
Saves a job posting found anywhere on the open web into the user's tracker. For jobs that came from jobs_search results, tracker_add (which takes a job_id) is the right tool instead. A job seen elsewhere in the conversation needs no prior jobs_search call — its URL and details from the conversation are sufficient input. `url`, `company_name`, `title_name`, `location_name`, and `description` identify the posting and are the only required fields. Every structured fact field (salary, dates, employment type, education, experience) is optional: a fact the source does not state is simply omitted (or null), and FoundRole's own extractors derive missing salary, employment, work-arrangement, education, experience, skills, benefits, and bonuses from the description. A save never waits on facts the source did not provide. The optional `client_extraction` object carries evidence-backed skills, technology, benefits, bonuses, seniority, industry, management, clearance, visa, and remote-scope labels when source excerpts for them exist; FoundRole validates and stores those labels separately. Fields: - `url`: the job posting's direct URL (required; not a company homepage) - `company_name`: company name (required) - `title_name`: job title (required) - `location_name`: location, e.g. "New York, NY" (required) - `description`: the posting's description from the source result; a short summary is acceptable (required) - `salary_min_value` / `salary_max_value`: salary range bounds (numbers) - `salary_value`: a single salary figure when there is no range (number) - `posted_at`: ISO 8601 posting date - `salary_currency`: ISO 4217 currency code - `salary_type`: one of year, month, week, day, hour - `employment_type`: array of full_time, part_time, contractor, temporary, intern, volunteer, per_diem, other - `work_location_type`: one of on_site, remote, hybrid - `education_requirements`: array of no_requirements, high_school, associate_degree, bachelor_degree, professional_certificate, postgraduate_degree - `experience_months`: minimum required experience in months (number) - `client_extraction`: evidence-backed extraction object; fields without source evidence are omitted - `status`: initial tracking status (saved, applied, interviewing, offered, archived); defaults to "saved" - `sub_status`: sub-status within the main status: saved: interested, researching_company, preparing_application, ready_to_apply; applied: application_submitted, followed_up; interviewing: interview_scheduled, phone_screen, technical, onsite, final_round, pending_feedback; offered: negotiating, considering, offer_received, accepted; archived: ghosted, rejected_by_company, withdrawn_by_candidate, not_interested, employed_by_this_company, employed_by_another_company - `notes`: notes about the job Returns the tracked job. Repeated saves return the existing tracked job.
tracker_add_external
Tracks a job from jobs_search results in the user's job tracker, identified by its job_id. For a job found elsewhere on the open web (with a URL but no jobs_search job_id), tracker_add_external is the right tool instead. Fields: - `job_id`: the job ID from jobs_search results (required) - `status`: initial status (saved, applied, interviewing, offered, archived); defaults to "saved" - `sub_status`: sub-status within the main status: saved: interested, researching_company, preparing_application, ready_to_apply; applied: application_submitted, followed_up; interviewing: interview_scheduled, phone_screen, technical, onsite, final_round, pending_feedback; offered: negotiating, considering, offer_received, accepted; archived: ghosted, rejected_by_company, withdrawn_by_candidate, not_interested, employed_by_this_company, employed_by_another_company - `notes`: notes about the job Returns the tracked job with its details. Repeated saves return the existing tracked job. A job that was previously removed from the tracker is restored with its earlier status and notes.
tracker_add
Searches FoundRole's published content by semantic similarity and returns the most relevant sources for a job-search question: career-guidance blog articles plus FoundRole site pages that describe the product's features (job tracker, H1B salary data, AI job search) and industry/sector career landings. Each article carries a title, url, summary, a content excerpt, publication date, and tags; each page carries a title, url, description, and its FAQ entries — enough material to answer the question and link the source. Two optional facets add further result groups: company returns FoundRole's employer profile pages matching that company name; location returns the market landing page for that city, state, or country — an analytical page about that labour market, not a list of openings. The facets describe what the user is asking about — a company mentioned only in passing does not need the company facet. Returns empty groups when nothing is relevant rather than padding with off-topic content. Results are the closest matches to the given question, not an index of the site's full coverage; questions about overall topic coverage are answered by knowledge_topics, which lists the blog's categories and tags with article counts. It does not search job listings and reports no open-job counts — jobs_search covers live roles, including questions about openings for a particular job title. Each response includes a system_instruction describing how to present the sources.
knowledge_search
Searches a database for real-time job listings matching the user's criteria. The query is the full job title or role: "Ruby Developer" rather than a bare keyword like "Ruby", which is too broad and matches unrelated fields. Results may be filtered by location, company, and how recently a job was posted. Each result carries an `id` and `resultItemId`; jobs_details takes that `id` with the corresponding `result_item_id` and returns the job's full description, requirements, and benefits. One call returns one answer: there is no next page, and the response links to the same search on the FoundRole website for the rest of the list. With a ready profile, a query for the profile's target profession or an omitted query uses the same personalized feed as jobs_recommendations and the website. Alternative titles matching that same profile target return the same ranked feed: parallel calls for those title variants can repeat jobs in separate widgets. Each call represents a distinct search intent, rather than a spelling variant of the same requested role. A different or unrecognized profession uses general job search, preserving the explicit query and filters. An omitted location uses the profile location. Without a ready profile, search uses the general job listings. Job details include FoundRole salary benchmarks, H-1B sponsorship signals, E-Verify status, and job-trust analysis; list-level employer signals follow the user's current entitlements. Constraints in the user's request — remote-only work, H1B sponsorship, a minimum salary, a minimum match grade — are the search parameters remote, h1b_sponsors_only, salary_floor, and min_match; sort orders the results by relevance, newest, salary or personal match. The search enforces only constraints passed as parameters; a constraint left out of the call is not applied to the result set. Job type, work mode, required education, experience level, benefits, bonuses, employers to include or exclude, and the search radius are the parameters employment_types, work_modes, education, experience_levels, benefits, bonuses_only, companies, exclude_companies and radius. Remote and hybrid are independent work modes: a remote search never returns hybrid jobs. A job that does not state the filtered attribute is left out while that filter is set. Fully remote work that can be done from the requested location is strict_remote, with confirmed_work_from to require a stated work-from area; one brand inside a company is hiring_brand next to company. Advanced filters (sort, min_match, h1b_sponsors_only, salary_floor, remote, strict_remote, confirmed_work_from, work_modes, benefits, bonuses_only, companies, exclude_companies; sort only when ordering by salary or match, companies only when it names more than one employer) apply for every account. One answer lists the first matching jobs and states how many further jobs match. Each response includes a system_instruction describing how to present the results for the current client.
jobs_search
Sets a reminder for a tracked job. Sends a confirmation email with .ics calendar attachment. **Input:** - `tracked_job_id`: The tracked job ID — `trackedJobs[].id` from tracker_list output, distinct from `trackable.id` and `job.id` (required) - `remind_at`: Reminder date/time in ISO 8601 format, e.g. "2025-03-15T10:00:00Z" (required, must be in the future) **Output:** Returns the updated tracked job with reminderAt field.
reminder_set
Sets or replaces a tracked job's reminder and returns only the result, without rendering a tracker widget. FoundRole widgets call it when saving a deadline from an inline card edit; conversation-driven reminders go through reminder_set, which renders the tracker UI. It takes the same input.
reminder_set_data
Subscribes the authenticated user to job alerts for a saved job search and returns only the job alert, without rendering an alerts widget. FoundRole widgets call it for the in-place "Get alerts for this search" bar and alert toggles; conversation-driven subscriptions go through job_alert_subscribe, which renders the alerts UI. It takes the same input: `job_search_id` (UUID or composite job id) plus optional `frequency` and `delivery`, and repeated calls update the existing alert.
job_alert_enable
Unsubscribes the authenticated user from job alerts for a saved job search and returns only a success confirmation, without rendering an alerts widget. FoundRole widgets call it for in-place alert toggles; conversation-driven unsubscribes go through job_alert_unsubscribe, which renders the alerts UI. It takes the same `job_search_id` input, the status flip is reversible with job_alert_enable, and repeated calls stay successful.
job_alert_disable
Unsubscribes the authenticated user from job alerts for a specific job search. **Input:** - `job_search_id`: The job search identifier to unsubscribe from (required). Accepts either the job search UUID or the composite job ID returned by `jobs_search` / `jobs_details` (format: "seo_id--job_search_id"). **Output:** Confirms the alert has been unsubscribed. Idempotent: returns success even when the user was not subscribed or is already unsubscribed.
job_alert_unsubscribe
Unsubscribes the authenticated user from ALL of their job alerts at once, across every subscription source (regular, company page, MCP). **Input:** - `confirm`: Must be `true` to execute. The call is rejected when omitted or not true — this guards against an unintended bulk unsubscribe. **Output:** Confirms how many alerts were unsubscribed. Idempotent: returns success even when the user has no active alerts.
job_alert_unsubscribe_all
Updates a tracked job's notes, deadline, or reminder and returns only the updated record, without rendering a tracker widget. FoundRole widgets call it when saving inline card edits; conversation-driven updates go through tracker_update, which renders the tracker UI. It takes the same input.
tracker_update_data
Updates details of a tracked job (notes, deadline, salary, tags). **Input:** - `tracked_job_id`: The tracked job ID — `trackedJobs[].id` from tracker_list output, distinct from `trackable.id` and `job.id` (required) - `notes`: Updated notes - `deadline`: Deadline date (ISO 8601 format) - `salary_offered`: Salary amount - `salary_offered_type`: Salary type: year, month, week, day, hour - `tags`: Comma-separated tags (e.g., "remote,startup,tech") - `reminder_at`: Reminder date/time in ISO 8601 format, e.g. "2025-03-15T10:00:00Z" (must be in the future, or empty to clear) **Output:** Returns the updated tracked job.
tracker_update
FoundRole Jobs ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve FoundRole Jobs's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are FoundRole Jobs alternatives on ChatGPT?
As of 2026-10-10, FoundRole Jobs competes with Indeed Job Search, ai.jobs, AmbitionBox, Apna Jobs, Ausbildung.de, Backstage, Boussole Carrière, Chili's Careers and 53 more in ChatGPT Job Search Aggregators & Job Boards, ranked by public Discoverability Score.
Where does FoundRole Jobs rank in Job Search Aggregators & Job Boards on ChatGPT?
As of 2026-10-10, FoundRole Jobs ranks #16 of 62 in ChatGPT Job Search Aggregators & Job Boards with a Discoverability Score of 0/100 (Invisible).
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.