Importable automation blueprints

Make job data to Google Sheets

Watch a completed Apify Task, verify its exact run, validate the Actor-specific completion contract, and update or append one destination row per stable key.

Three blueprintsTask-owned inputInactive after import

Choose the matching blueprint

  • LinkedIn to Google Sheets: Apify Task selects LinkedIn build latest.
  • EURAXESS to Google Sheets: Task selects EURAXESS latest and records the returned immutable build.
  • AI Job Fit to Google Sheets: Task uses scorer selector latest, uses shortlist mode at delivery score 2, validates fit output, and uses candidate-specific matchKey.

The saved Apify Task owns the complete Actor input, build selector, item limit, and maximum charge. The scenario begins only when that Task run completes.

Set up one safe smoke

  1. Create an Apify Task with the chosen Actor, complete strict input, latest release selector, conservative item limit, and maximum charge cap.
  2. Import the matching blueprint and select that Task in Watch completed Task runs.
  3. Set the blueprint’s build value to the same latest selector and import the matching CSV headers into a disposable Google Sheet.
  4. Replace spreadsheet placeholders and attach the Apify and Google Sheets connections.
  5. Keep optional translation, enrichment, analytics, raw output, and cross-run deduplication off. Use one LinkedIn result or five EURAXESS/fit results for the first smoke.
  6. Run the Task and scenario manually; verify the exact named row before activation.

How completion is gated

The source workflows require terminal success, the configured build, and nomad-agent-run-summary-v4 from the completed run. A valid empty status writes nothing. Only a usable partial can enter the one bounded repeat route; failed, aborted, timed-out, wrong-build, or count-mismatched runs stop.

The fit blueprint instead accepts scorer v3 or v4 and has separate v4 shortlist and audit routes. Shortlist rows must be scored and meet the declared delivery threshold; audit requires no filtered rows. Native Make filters check declared values, but cannot prove closed schemas or aggregate arithmetic; repository tests and the Python adapter remain the stronger contract oracle.

Upsert keys and preserved data

LinkedIn and EURAXESS rows use the shared 32-column flat projection and upsert by jobKey = source:externalId. Arrays are serialized as JSON text so null, [], and populated values remain distinguishable. Retain the canonical dataset if you need nested evidence or source-specific extensions.

The fit blueprint uses the separate 21-column fit projection and upserts by matchKey. Never reuse the source-only key for candidate evaluations.

Import is not delivery proof

The blueprint graphs, filters, mappings, one-retry bound, and credential hygiene are covered offline. Importing the file does not add credentials or activate a scenario. Only a manually observed Task-to-named-Sheet run proves that destination path.

Troubleshooting

  • Scenario never starts: verify it watches the exact configured Task and that the Task run reached completion.
  • Filter rejects the run: compare the Task build, summary schema, status, and dataset count before relaxing anything.
  • Rows duplicate: verify lookup uses jobKey for scraper rows or matchKey for fit rows.
  • Academic detail is absent: inspect the canonical EURAXESS record; the table intentionally does not flatten every custom field.