If you've ever tried to push physician postings to MDsearch or nurse practitioner roles to NPPA, you already know the script: you export an XML feed from your ATS, paste it into the board's bulk-upload page, and watch the validator throw back a wall of red. Missing specialty. Missing jobtype. Title too long. Wrong state code. No degreetype. Repeat for every board, every week.That's the problem we set out to fix this month. Flowxtra now ships two new XML feeds on every tenant subdomain — /jobs-mdsearch.xml and /jobs-nppa.xml — built natively to each board's strict schema. Combined with our existing Indeed-style /jobs.xml, every Flowxtra tenant now has three healthcare-ready feeds out of the box, with zero paid integrations and zero IT involvement.Why we built dedicated feedsThe story starts with a healthcare staffing customer pushing 119 live job postings through Flowxtra. They wanted reach: MDsearch for physicians, NPPA for advanced practice providers, Indeed and ZipRecruiter for everything else. They were already running our generic Indeed-style feed, which is what most ATS vendors ship — a single <source>/<job> file that tries to be everything to everyone.It worked for Indeed. It worked for ZipRecruiter. It did not work for MDsearch or NPPA.Both of those boards run strict schemas with required numeric IDs, hard length caps, and field-order rules. MDsearch wants a numeric specialty code (Radiology = 46, Cardiology = 7, Emergency Medicine = 14), a numeric jobtype code (Permanent = 2, Locum Tenens = 1, Telemedicine = 9), titles capped at 200 characters, descriptions capped at 6,000, two-letter US state abbreviations, and salary fields routed differently based on whether the role is permanent or locum. NPPA goes further: it filters out MD/DO postings entirely and requires a <degreetype> field that maps to one of CNM, CNS, CRNA, NP, or PA — each with its own numeric ID.The recruiter's options at that point are usually two: pay for a custom integration (most legacy ATSs charge per board), or hand-edit XML files and pray the next sync doesn't break them. Neither one is a serious solution when you're trying to ship 119 postings across multiple boards on a weekly refresh.So we built the schemas natively into Flowxtra. Each board gets the file it expects./jobs-mdsearch.xml — physician postings, mapped automaticallyThe MDsearch feed is built strictly to MDsearch.com's published schema. It reads the tenant's existing custom fields and maps them to MDsearch's numeric IDs without any data re-entry:The role custom field maps to MDsearch specialty IDs (Radiology = 46, Radiology-Telemedicine = 71, Cardiology = 7, Internal Medicine-Geriatrics = 21, Emergency Medicine = 14, and the rest of the MDsearch specialty list).The job_type custom field maps to MDsearch jobtype IDs (Permanent = 2, Locum Tenens = 1, Telemedicine = 9, Government = 8, Any = 5).US state names are auto-converted to two-letter abbreviations — Arizona becomes AZ, North Carolina becomes NC, no manual cleanup.Every job is automatically truncated to MDsearch's strict limits: title 200 chars, description 6,000, reference 50, city 50.Salary fields are routed correctly: a Locum Tenens role's pay rate goes into travelsalary, every other job into permsalary.For our staffing customer, 112 of their 119 postings — 94% — mapped cleanly into the MDsearch feed on the first try. The remaining 7 were edge cases (allied health and operations roles MDsearch doesn't accept, which is the correct outcome). The mapping pulled entirely from custom fields they had already filled in for their internal pipeline filtering. Zero manual data entry./jobs-nppa.xml — and why it filters MD/DO postings outNPPA is the strict one. NPPAJobSearch.com only accepts advanced practice provider roles — Nurse Practitioners, Physician Assistants, Certified Registered Nurse Anesthetists, Clinical Nurse Specialists, and Certified Nurse Midwives. Send them a physician posting and the entire batch gets rejected.The Flowxtra /jobs-nppa.xml feed handles this in two ways:It combines the tenant's role and candidate_type custom fields into NPPA's specialty list. For example, Internal Medicine-Geriatrics + NP resolves to NPPA specialty ID 55. The mapping covers the full NPPA specialty matrix without per-job manual assignment.It adds the NPPA-only <degreetype> field, mapping to the five accepted credentials: CNM = 1, CNS = 2, CRNA = 3, NP = 4, PA = 5.Any job whose candidate_type isn't one of those five — every MD and DO posting — is filtered out before the file is generated. The feed validates clean every time.Our staffing customer had 10 advanced practice roles in their pipeline. All 10 mapped cleanly into the NPPA feed. The previous setup — exporting a generic file and hand-stripping the MD/DO rows in a spreadsheet — is gone.The existing /jobs.xml is unchangedThe original Indeed-style /jobs.xml still does its job. After we tightened the <source> tag and field validation a few weeks back, NPPA's bulk validator was happy with it as a fallback, and Indeed, ZipRecruiter, Monster, and the long tail of generic-format aggregators continue to consume it without issue. Tenants don't have to choose — all three feeds run side by side.How to use them (no IT involvement)Every Flowxtra tenant subdomain exposes all three feeds at fixed paths. If your career page lives at yourcompany.apply-link.net, your feeds are at:https://yourcompany.apply-link.net/jobs.xml — Indeed/ZipRecruiter/generalhttps://yourcompany.apply-link.net/jobs-mdsearch.xml — MDsearch physician feedhttps://yourcompany.apply-link.net/jobs-nppa.xml — NPPA advanced practice feedAll three are paginated server-side, refreshed on a 60-second cache, and validated as well-formed XML on every request. The workflow for the recruiter is one step: open the board's bulk-upload page, paste the URL, save. The board pulls the file directly on its own schedule — no exports, no FTP, no scheduled scripts.You'll find the feed URLs inside Flowxtra under Career Page → Robots.txt, or you can construct them by hand from your tenant subdomain. Every fill of a custom field on a job — specialty, role, candidate_type, job_type — flows into the right feed automatically the next time the file is requested.Why this matters for healthcare recruitingMost applicant tracking system software ships one feed and tells you "good luck" when a board rejects it. Healthcare boards reject a lot. We've watched recruiters lose two and three weeks per quarter bouncing between support tickets, saved files, and validation errors over fields like specialty, jobtype, and degreetype that their generic feed simply doesn't carry.Building the schemas natively into a free recruiting software stack means the recruiter never sees those errors. Each board gets exactly the file it expects — correct numeric IDs, correct length caps, correct field order, correct CDATA escaping — and the postings show up on the board the same day they go live in the ATS. For healthcare recruiting software users specifically, that's the difference between a board partnership that works and one that quietly stops syncing.This also lays the groundwork for what's coming next. Healthcare boards are the first wave of a wider job-board partnership roadmap; the same per-board native-schema approach will roll out to additional verticals over the next few quarters. The point isn't to ship "an XML feed" — every ATS does that. The point is to ship the file each board actually accepts, on every tenant, by default.If you want to read about how the rest of the Flowxtra automation stack ties together, our piece on the AI recruiting agent and automated hiring covers the screening, ranking, and interview-scheduling layers that sit on top of these feeds.Get startedIf you're already on Flowxtra, your /jobs-mdsearch.xml and /jobs-nppa.xml are live right now — find them under Career Page → Robots.txt, or paste them straight into the board's bulk-upload page. The Indeed-style /jobs.xml is still where it always was.If you're not on Flowxtra yet, every one of these feeds — plus the ATS, the career page, the AI screening, and unlimited free job posting — ships on the free tier on day one. Sign up free →