Compiler engineer
Remote, Europe
description
Build our compiler and analysis tools in Haskell. Work with a small language engineering team.
TRY THE WORKFLOW / EXAMPLE V1
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.
Read the four inputs, then run the extraction. An optional mention alone should not select a role.
Remote, Europe
description
Build our compiler and analysis tools in Haskell. Work with a small language engineering team.
London
description
Build product interfaces in TypeScript. Haskell experience is optional.
Remote
description
Develop messaging services in Elixir. Help maintain reliable delivery between services.
Warsaw
description
Maintain our calculation tools in F#. Work alongside Python and C# developers.
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.
Loading the example…
Why this failed and how to fix it →THE WORK BEHIND THE EXAMPLE
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
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 dependenciesUse the versioned context file to explain the example's input, output and execution contract to your own coding assistant.
// 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 } };
}
Save source code, run its draft, inspect errors and reuse returned records in mappings and API previews.
Follow the Studio exercise →Continue with the local exercise, join an existing workspace, or prepare a guided Enterprise evaluation.
Find your starting point →