Skip to content

Find a relevant job, then repair the extraction

Example v1 · Node.js 24 or a prepared Enterprise 0.1.0-alpha.1 installation.

Start with four invented vacancies. Select a role that actually uses Haskell, retain its supporting sentence, then repair the extraction when a field changes. The problem is inspired by Beyond Tabs’ niche-job discovery work; these fixtures contain no real vacancies or customer data.

Try the interactive exercise or download the complete example ZIP.

Install Node.js 24, extract the ZIP, and open a terminal in the extracted directory. Windows, macOS and Linux use the same command:

Terminal window
node run.mjs

There are no npm dependencies. After downloading, the exercise needs no network connection, Guida server, account, provider or API key.

Expected: one item with id: "job-001", title Compiler engineer, language Haskell and reason Build our compiler and analysis tools in Haskell. The result’s evidence reports one selected record from four inspected inputs. Compare the complete JSON with expected-result.json in the ZIP.

The frontend role mentions Haskell as optional. It is skipped. This is a small, inspectable sentence rule for the English fixtures; real editorial decisions need richer source-specific logic.

In the browser: after running Change the feed, the error means the input now contains details but the extraction still expects description. Choose Use details and rerun beside the error. The setting changes and the same record returns. You can also open 03 Repair & rerun, inspect the setting, then choose Run repaired extraction.

Return to the browser exercise.

In your terminal: run the same extraction against the changed input:

Terminal window
node run.mjs --changed

Expected failure: Job 1: missing or invalid "description". Check the feed and textField. The command exits with a failure code. Open changed-input.json: the source has renamed description to details, but the extraction still reads the old field.

Terminal window
node run.mjs --changed --repair

Expected: the original successful record. The repair sets textField to details; it does not turn a missing source field into an empty success. You can make the same change directly in the input JSON and rerun.

Terminal window
node run.mjs --language=Elixir
node run.mjs --language=F#

Expect job-003 for Elixir and job-004 for F#. Read collect.mjs, edit a description in input.json, and observe which record and reason change. IDs stay stable while titles and descriptions can change.

The rule selects a sentence containing the chosen language and a core-work term such as build, develop, maintain or required. It excludes optional and not required mentions. It does not infer seniority, employment terms or whether a job is still open.

Use an existing authorized workspace with a connected Studio draft runner. If you need that setup, follow your setup path. This guide uses the established custom-source and draft-test controls. Running the browser or Node.js example alone does not verify an Enterprise installation.

  1. Open a disposable draft in Workspace Studio. Beside Sources, choose Add source, then Write a custom source.
  2. Use source name Niche jobs exercise, Collect with API / HTTP requests, Default URL https://example.com/ and Target domains example.com. The declared URL is a placeholder; this module reads the supplied input.
  3. Under Source identity and files, use niche-jobs-example, then choose Create source and write code.
  4. Replace the generated lib/niche-jobs-example.js with the contents of collect.mjs. Keep the generated filename and collect export.
  5. In Files, replace the generated input and output schemas with input.schema.json and output.schema.json. Save them. Keep the descriptor’s references and guida.extractorResult.v1 envelope. The output schema validates result.items, not the outer envelope.
  6. Open Test draft. Paste the full input.json into the test input and choose Save and run draft. Compare the returned record with expected-result.json.
  7. Repeat with changed-input.json. Inspect the failure. Change textField in that input to details, rerun, and confirm the repaired result.

You can now use the successful sample to define fields and mappings in the product workflow. Publication and activation remain separate actions.

FilePurpose
collect.mjsThe same extraction module used in the website exercise.
input.jsonOriginal feed and extraction settings.
changed-input.jsonRenamed field, with the old setting left in place.
expected-result.jsonExact default output.
Input schema / output schemaContracts for the exercise.
Assistant contextVersion, contracts, code and fixtures for your coding assistant.
ZIP checksumSHA-256 of the downloadable archive.

The example files are MIT licensed. You may adapt and share them under those terms. Guida Enterprise remains proprietary; its software is distributed separately.

Use Copy link to this step in the interactive exercise to share the selected language and original, broken or repaired state. It shares those choices only.

SymptomNext action
node is not recognizedInstall Node.js 24 and open a new terminal.
Cannot find moduleExtract the whole ZIP and run the command from that directory.
Missing descriptionInspect the changed feed and set textField to details.
An unexpected role is selectedInspect the exact supporting sentence and the rule in collect.mjs.
Studio reports runner unavailableUse the runner troubleshooting steps.
Studio rejects the input/outputKeep the generated paths and use the two supplied schemas; paste the full input object.

For confusing instructions or a reproducible issue, use feedback.