TRY THE WORKFLOW / EXAMPLE V1

Four vacancies.
One worth a closer look.

Find a role that actually uses Haskell. Keep the sentence that explains why. Then repair the extraction when the feed changes.

Runs in your browser · No account · No model calls

A JavaScript exercise using invented vacancies, inspired by Beyond Tabs' niche-job discovery work. Guida Studio runs separately; this page lets you try the extraction and correction loop.

GUIDA / EXAMPLE V1

Inspect. Run. Repair.

Download the same code ↗

Read the four inputs, then run the extraction. An optional mention alone should not select a role.

01 / Source feed

Original input

job-001 · Example Compiler Co.

Compiler engineer

Remote, Europe

description

Build our compiler and analysis tools in Haskell. Work with a small language engineering team.

job-002 · Example Interface Co.

Frontend engineer

London

description

Build product interfaces in TypeScript. Haskell experience is optional.

job-003 · Example Messaging Co.

Distributed systems engineer

Remote

description

Develop messaging services in Elixir. Help maintain reliable delivery between services.

job-004 · Example Analytics Co.

Risk tooling developer

Warsaw

description

Maintain our calculation tools in F#. Work alongside Python and C# developers.

02 / Extraction

collect.mjs
language: "Haskell"
textField: "description"

The rule looks for a language in a sentence describing core work or a requirement. You can read and change it in the downloaded module.

03 / Result

Ready to run

Loading the example…

THE WORK BEHIND THE EXAMPLE

A match you can explain.

Beyond Tabs curates niche programming jobs. A language appearing somewhere in a vacancy is only a clue. Retaining the supporting sentence makes a candidate easier to review.

This small English rule makes its decisions visible. Real sources need their own reviewed logic; the output here is a candidate for a person's attention.

Read the Beyond Tabs case study →

KEEP GOING

Take the working example with you.

The ZIP contains the exact module used above, original and changed inputs, expected output, schemas, a command-line runner and context for your coding assistant. Example files are MIT licensed; Enterprise remains proprietary.

node run.mjsNode.js 24 · No npm dependencies

Inspect the code. Bring your assistant.

Use the versioned context file to explain the example's input, output and execution contract to your own coding assistant.

Read the complete extraction module
// Niche jobs exercise v1. MIT licensed; see LICENSE.txt.
// Pure JavaScript: the website, Node.js and a Studio source use this same module.
const languages = ['Haskell', 'Elixir', 'F#'];

export function inspect(input) {
  const { jobs, language = 'Haskell', textField = 'description' } = input ?? {};
  if (!languages.includes(language)) throw new Error('Choose Haskell, Elixir or F#.');
  if (!['description', 'details'].includes(textField)) throw new Error('Choose description or details.');
  if (!Array.isArray(jobs) || jobs.length < 1 || jobs.length > 25) {
    throw new Error('Supply between 1 and 25 jobs.');
  }
  const ids = new Set();
  return jobs.map((job, index) => {
    for (const field of ['id', 'title', 'company', 'location', textField]) {
      if (typeof job?.[field] !== 'string' || !job[field].trim() || job[field].length > 2000) {
        throw new Error(`Job ${index + 1}: missing or invalid "${field}". Check the feed and textField.`);
      }
    }
    if (ids.has(job.id)) throw new Error(`Job ${index + 1}: duplicate id.`);
    ids.add(job.id);
    const sentences = job[textField].split(/(?<=[.!?])\s+/);
    // An intentionally small, inspectable rule for these English fixtures.
    // Optional mentions alone do not establish that a role uses the language.
    const escaped = language === 'F#' ? 'F#' : language;
    const mention = new RegExp(`\\b${escaped}(?=\\s|[.,;:!?)]|$)`, 'i');
    const sentence = sentences.find((line) =>
      mention.test(line) &&
      /\b(build|develop|maintain|required)\b/i.test(line) &&
      !/\b(optional|nice to have|not required)\b/i.test(line));
    return {
      id: job.id,
      title: job.title.trim(),
      company: job.company.trim(),
      location: job.location.trim(),
      language,
      selected: Boolean(sentence),
      reason: sentence?.trim() ?? 'No explicit core-work requirement for this language.'
    };
  });
}

export async function collect({ input }) {
  const decisions = inspect(input);
  const items = decisions.filter((job) => job.selected).map(({ selected, ...record }) => record);
  return { items, evidence: { resultCount: items.length, inspectedCount: decisions.length } };
}
IN GUIDA ENTERPRISE

Use this loop in Studio.

Save source code, run its draft, inspect errors and reuse returned records in mappings and API previews.

Follow the Studio exercise →
YOUR NEXT STEP

Choose your setup.

Continue with the local exercise, join an existing workspace, or prepare a guided Enterprise evaluation.

Find your starting point →