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.
Run locally
Section titled “Run locally”Install Node.js 24, extract the ZIP, and open a terminal in the extracted directory. Windows, macOS and Linux use the same command:
node run.mjsThere 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.
Repair a changed feed
Section titled “Repair a changed feed”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:
node run.mjs --changedExpected 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.
node run.mjs --changed --repairExpected: 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.
Adapt the exercise
Section titled “Adapt the exercise”node run.mjs --language=Elixirnode 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.
Run in Studio
Section titled “Run in Studio”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.
- Open a disposable draft in Workspace Studio. Beside Sources, choose Add source, then Write a custom source.
- Use source name
Niche jobs exercise, Collect withAPI / HTTP requests, Default URLhttps://example.com/and Target domainsexample.com. The declared URL is a placeholder; this module reads the supplied input. - Under Source identity and files, use
niche-jobs-example, then choose Create source and write code. - Replace the generated
lib/niche-jobs-example.jswith the contents ofcollect.mjs. Keep the generated filename andcollectexport. - In Files, replace the generated input and output schemas with
input.schema.jsonandoutput.schema.json. Save them. Keep the descriptor’s references andguida.extractorResult.v1envelope. The output schema validatesresult.items, not the outer envelope. - Open Test draft. Paste the full
input.jsoninto the test input and choose Save and run draft. Compare the returned record withexpected-result.json. - Repeat with
changed-input.json. Inspect the failure. ChangetextFieldin that input todetails, 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.
Files and sharing
Section titled “Files and sharing”| File | Purpose |
|---|---|
| collect.mjs | The same extraction module used in the website exercise. |
| input.json | Original feed and extraction settings. |
| changed-input.json | Renamed field, with the old setting left in place. |
| expected-result.json | Exact default output. |
| Input schema / output schema | Contracts for the exercise. |
| Assistant context | Version, contracts, code and fixtures for your coding assistant. |
| ZIP checksum | SHA-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.
When something fails
Section titled “When something fails”| Symptom | Next action |
|---|---|
node is not recognized | Install Node.js 24 and open a new terminal. |
Cannot find module | Extract the whole ZIP and run the command from that directory. |
Missing description | Inspect the changed feed and set textField to details. |
| An unexpected role is selected | Inspect the exact supporting sentence and the rule in collect.mjs. |
| Studio reports runner unavailable | Use the runner troubleshooting steps. |
| Studio rejects the input/output | Keep the generated paths and use the two supplied schemas; paste the full input object. |
For confusing instructions or a reproducible issue, use feedback.