Purpose
Complete the authenticated provider profile on ServiceChannel and improve its completeness score by reviewing coverage, industries, clients, and business information.
When to Use
Use for any provider-profile completion or profile-score improvement task on fixxbook.servicechannel.com. The caller must supply the actual business information and coverage choices; never invent profile data.
Workflow
- Navigate directly to
https://fixxbook.servicechannel.com/Company/ProviderProfilein the existing authenticated session. - Run the extractor below to identify incomplete sections, completion controls, and available profile navigation.
- If the page exposes
button[aria-label="Complete Profile"], activate it once; otherwise open the relevant section'sUpdate InformationorUpdate Coveragecontrol. - For coverage updates, use
button[aria-label="Update Coverage"], then select the caller-provided coverage options in the opened dialog. The profile flow exposes adiv[aria-label="Detailed"]view; use it when detailed coverage selection is required. Save using the dialog's visible Save/Update action, not an arbitrary button. - Review profile navigation for
Profile,Industries, andClients. Complete only the sections requested or needed for the score, using the caller's supplied values. - For business information, choose the appropriate
button[aria-label="Update Information"]associated with the Business Information section. The business-description field observed in this flow isinput[name="35"]; replace its value with{business-description}and dispatch input/change events before saving. Do not assume this field is the only required field. - If the UI routes to the staged wizard, the observed direct wizard URLs are
https://fixxbook.servicechannel.com/Company/ProviderProfileWizard?stage=4,?stage=6, and?stage=9. Use a stage URL only after confirming the corresponding incomplete section from the current page; stage numbers are navigation shortcuts, not semantic labels. - Return to
https://fixxbook.servicechannel.com/Company/ProviderProfile, wait for the page to settle, and run the extractor again to verify that the relevant section status or score improved.
Concrete extractor (run with evaluate() on the loaded profile or wizard page):
(() => {
const text = (s) => (s || "").replace(/\\s+/g, " ").trim();
const leaf = [...document.querySelectorAll("*")].filter(
(e) => e.children.length === 0,
);
const sectionLeaves = leaf.filter((e) =>
/^(Business Information|Coverage|Industries|Clients|Profile)\\s*:/i.test(
text(e.textContent),
),
);
const sections = sectionLeaves.map((e) => {
const container =
e.closest('section,article,[role="region"],div') || e.parentElement;
return {
heading: text(e.textContent),
containerText: text(container && container.innerText).slice(0, 800),
updateButtons: [...(container ? container.querySelectorAll("button") : [])]
.map((b) => ({
aria: b.getAttribute("aria-label"),
text: text(b.innerText),
}))
.filter((b) => b.aria || b.text),
};
});
return {
url: location.href,
completeProfileVisible: !!document.querySelector(
'button[aria-label="Complete Profile"]',
),
updateCoverageVisible: !!document.querySelector(
'button[aria-label="Update Coverage"]',
),
updateInformationCount: document.querySelectorAll(
'button[aria-label="Update Information"]',
).length,
businessDescriptionField: (() => {
const e = document.querySelector('input[name="35"]');
return e
? {
value: e.value,
disabled: e.disabled,
visible: !!(e.offsetWidth || e.offsetHeight),
}
: null;
})(),
wizardStage: new URL(location.href).searchParams.get("stage"),
profileNavigation: [...document.querySelectorAll("a")]
.map((a) => ({ text: text(a.textContent), href: a.href }))
.filter((a) => /^(Profile|Industries|Clients)$/i.test(a.text)),
sections,
};
})();Site-Specific Gotchas
- The profile destination is a separate
fixxbook.servicechannel.comhost from the ServiceChannel console; direct navigation works only with the appropriate authenticated session. - The console's profile card resolves to
/Company/ProviderProfile; avoid replaying console navigation when the destination URL is already known. - The completion flow uses
ProviderProfileWizard?stage={number}URLs. Stage numbers are opaque and should be selected from observed incomplete-section links rather than guessed. - Coverage and information edits open dialogs or staged forms. Scope button selection to the active dialog or section; generic
button:nth-of-type(...)selectors are fragile. input[name="35"]was observed for the business-description field, but field identifiers may be implementation-specific. Confirm its surrounding label before editing.- Preserve existing profile values unless the caller explicitly requests a change, and do not fabricate industries, clients, coverage, or business claims.
Expected Output
Return the final profile URL, the sections updated, the resulting completion/score status when visible, and any sections that remain incomplete or require caller-provided information.