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.
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
- Create or open an Airtable base and choose Add or import → Microsoft Excel.
- Import the workbook, use its first row as field names, and name the table
Jobs. - Apply the field types from Field Setup or
airtable-fields.json. - Keep
jobKeyas the primary field. It is derived assource:externalId. - Delete the marked example row.
- 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
jobKeyis 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
postedAtwhen the source provides it.