Bowmark AIdocs

Pacific Companies

Pacific Companies' own physician-recruiting job board — real open roles by specialty and state, straight off the site's own WP REST API — plus its live…

Pacific Companies' own physician-recruiting job board — real open roles by specialty and state, straight off the site's own WP REST API — plus its live Gravity Forms 'Apply For This Job' schema, validated and assembled ready to submit (name/email/phone; resume upload is a real multipart field this package never fills).

Domain: pacificcompanies.com

Also known as: Pacific Companies, pacificcompanies.com

Call it directly

bowmark.providers.pacificcompanies.searchJobs(args?: { specialty?: string; state?: string; query?: string; limit?: number }): Promise<PacificCompaniesJob[]>
bowmark.providers.pacificcompanies.getJobCategories(): Promise<PacificCompaniesTerm[]>
bowmark.providers.pacificcompanies.getJob(idOrSlug: string): Promise<PacificCompaniesJob>
bowmark.providers.pacificcompanies.getApplicationSchema(idOrSlug: string): Promise<ApplicationSchema>
bowmark.providers.pacificcompanies.assembleApplication(idOrSlug: string, input: object): Promise<AssembledApplication>

Functions

FunctionWhat it does
searchJobsRuns Pacific Companies' own job-board search — filters real open physician/APP roles by specialty (slug, e.g. "cardiovascular-surgery" — see getJobCategories) and/or US state, or free-text…
getJobCategoriesLists every specialty Pacific Companies recruits for, with a live open-posting count — the exact slug vocabulary searchJobs's specialty argument takes.
getJobReads one posting in full, by its numeric id or its URL slug (both returned by searchJobs). THROWS on an unknown id/slug.
getApplicationSchemaReads one posting's own live 'Apply For This Job' Gravity Forms structure — First/Last Name, Email, Phone, and the CV-upload field name.
assembleApplicationValidates a caller's name/email/phone against the posting's live apply-form requirements and maps it onto the site's own Gravity Forms field names, ready to submit.

Types

interface PacificCompaniesJob {
  id: number;
  slug: string;
  title: string;
  url: string;
  publishedAt: string;
  specialty: string[]; // job-category term ids, as strings
  state: string[]; // job-state term ids, as strings
  jobType: string[]; // job-type term ids, as strings
  city: string | null;
  stateName: string | null;
  client: string | null;
  salary: string | null; // "0" is normalized away to null — most roles have no published number
  recruiterName: string | null;
  recruiterEmail: string | null;
  recruiterPhone: string | null;
  summary: string; // content.rendered with HTML tags stripped, truncated
}
interface PacificCompaniesTerm {
  id: number;
  slug: string; // e.g. "cardiovascular-surgery" — matches the site's own /job-category/<slug>/ URLs
  name: string;
  count: number; // live open-posting count
}
interface ApplicationField { gfName: string; label: string; type: "text" | "email" | "tel"; required: boolean; }
interface ApplicationSchema {
  entryUrl: string; // the specific job's own URL — the form posts back to itself
  jobTitle: string;
  fields: ApplicationField[];
  cvFieldName: string; // the multipart field a resume would ride on; never filled by this package
}
interface AssembledApplication {
  valid: boolean;
  errors: string[];
  entryUrl: string;
  jobTitle: string;
  formFields: Record<string, string>; // the site's own GF field names, e.g. { input_1: "Jordan" }
  cvFieldName: string;
  summary: string;
}

Examples

const openCardiology = await bowmark.providers.pacificcompanies.searchJobs({ specialty: "cardiology-interventional" });
return openCardiology.map(j => `${j.title} — ${j.city ?? j.stateName ?? "location on request"}`);
const app = await bowmark.providers.pacificcompanies.assembleApplication(
  "cardiothoracic-surgery-job-in-the-oklahoma-city-metro-2m-earning-potential-16624",
  { firstName: "Jordan", lastName: "Avery", email: "jordan@example.com", phone: "423-555-0100" },
);
return { ready: app.valid, fields: app.formFields, submitAt: app.entryUrl, resumeField: app.cvFieldName };