Table destination preset

Airtable job tracker data model

Create one reusable Jobs table for the versioned 32-field flat projection, then update or create records by stable source identity instead of display text.

32 fieldsjobKey upsertsDestination only

What the preset contains

  • airtable-jobs-import.xlsx: import-ready Jobs headers plus a Field Setup reference sheet.
  • airtable-fields.json: field order, Airtable types, descriptions, and source options.
  • A clearly marked example row for type inference; delete it after setup because it is not production data.

The files contain no credentials, real applicant data, or connection to an Airtable account.

Create the Jobs table

  1. Create or open an Airtable base and choose Add or import → Microsoft Excel.
  2. Import the workbook, use its first row as field names, and name the table Jobs.
  3. Apply the field types from Field Setup or airtable-fields.json.
  4. Keep jobKey as the primary field. It is derived as source:externalId.
  5. Delete the marked example row.
  6. Connect an upstream n8n, Make, or custom API workflow only after that workflow validates the exact Actor run.

Duplicate-safe upsert

Search the table for the exact incoming key. Update one match, create when none exists, and treat multiple matches as a data-quality error.

{jobKey} = 'linkedin:4446226935'

Escape any single quote before inserting a dynamic value. EURAXESS uses the same rule with a different source prefix. Never deduplicate by title, company, URL, or Airtable record ID.

What the flat row leaves out

nomad-agent-flat-job-v1 is convenient for tables, not a replacement for the six-root canonical record. It serializes array fields as JSON text and can include a bounded record JSON copy, but it does not expose every nested requirement, contact, EURAXESS taxonomy field, raw fact, or provenance receipt.

Preserve null as unknown and [] as explicitly empty. Converting both to a blank cell destroys source meaning. Confirm retention and access policy before storing descriptions or named contacts.

Upstream proof is required

Airtable receives rows; it does not run or validate the Actor. The maintained upstream examples must prove terminal success, the resolved build identity of their LinkedIn or EURAXESS run, a valid v4 RUN-SUMMARY, the one-retry bound, and dataset reconciliation. Maintained upstream clients select latest. The preset itself does not prove an authenticated Airtable write.

Troubleshooting

  • Duplicate records: confirm jobKey is primary and the automation searches before creating.
  • Arrays become inconsistent text: keep JSON serialization and escaping; do not map arrays to uncontrolled multi-select fields.
  • EURAXESS research detail is missing: retrieve the canonical record instead of expanding the common flat projection.
  • A date fails import: use Airtable date fields and enable time only for postedAt when the source provides it.