Import jobs from CSV or XML

Bulk import jobs from a CSV or XML file with AI column mapping, location resolution, and multi-layer deduplication.

Upload a spreadsheet or XML feed and Cavuno maps columns, resolves locations, deduplicates against existing listings, and posts the batch in the background. This is the path for migrations, ATS exports, and employers the scraper cannot backfill.

For an always-on feed URL that stays in sync on a schedule, see Recurring XML feeds.

Open the importer

  1. Go to Jobs in the sidebar
  2. Click Import
  3. Upload a .csv or .xml file (max 10 MB)

The import runs in the background. You can leave the page while it processes.

File formats

CSV

Use a standard CSV with a header row, UTF-8 encoding, and comma delimiters. Column names do not need to match Cavuno field names — AI maps them on the first upload from a given source and reuses that mapping on later uploads when the header fingerprint matches.

Common columns include title, company, location, description, salary, employment type, application URL, and external ID. Unrecognized columns can still be mapped if the AI recognizes them, or left unmapped.

XML

Drop in a flat job feed (<source><job>…</job></source>) or an RSS-style channel feed (<rss><channel><item>…</item></channel></rss>). Nested elements become dotted paths (salary.min), attributes become @-prefixed keys, and namespace prefixes are stripped so <gj:title> reads as title. HTML inside CDATA is preserved through sanitization.

What happens on import

  • AI column mapping: header (or XML field) names map to Cavuno job fields. Repeat uploads from the same shape reuse the previous mapping
  • Location resolution: locations geocode to canonical cities, regions, and countries so browse pages stay consistent
  • Deduplication: three layers — application URL, external ID / reference number, then company + normalized title, location, and description fingerprint. Re-import updates the existing listing instead of creating a duplicate
  • Background processing: large files process without blocking the UI. Progress streams as rows land

When to use import vs backfill

GoalUse
Migrate from another board or ATS exportOne-shot CSV/XML import
Keep a partner or aggregator feed in syncRecurring XML feed
Continuously pull from company careers pagesBackfill
Company careers page is custom or LinkedIn-onlyOne-shot or recurring import of their export

Frequently asked questions