gw.Gareth WalshResearch · Design · Development
← Selected work
MULTI-AGENT SYSTEMS / 2026

Agents propose, a person decides

A job-search tool where AI agents read, judge and score adverts, and every proposal waits for a person to accept, correct or reject it.

MY ROLE

Designer & product owner · AI-assisted build

TOOLS & METHODS

Python · FastAPI · SQLite · D3.js · Claude API · built with AI coding agents (Codex, Claude Code)

CONTEXT

Independent project · my own job search, built as a research instrument

EDITORIAL ILLUSTRATION · THE SCREENS BELOW SHOW INVENTED DATA
THE APPLICATION

Five screens, invented data.

Captured from the running application loaded with 200 invented roles at fictional employers, and 58 proposals reviewed for the purpose. The real data never leaves my computer.

Diagram of how adverts move through Trig: sources, rules, Claude agents that read, score, match and give a second opinion, then the person's review and the ranking.
How it works: which steps are rules, which are Claude agents, and where you decide. Line thickness is how many roles take each step.
The Inbox: agent proposals grouped by kind, each with a count, a small histogram of proposed scores, and Accept all, Reject all or see them.
Needs your review: proposals grouped by kind, so a person can check the outliers instead of every verdict.
Two agent cards, Matcher and Assessor, each showing how often the person agreed with its proposals, with a 95% range and a split by verdict.
Trust: how often you agreed with each agent, with its likely range, and where you overturn it more often.
The skill space: open roles drawn as separate contour islands of related skills, each labelled with its subject and count, with the person placed among them.
Skill space: roles grouped by what they ask for into named clusters, with you placed by your evidence.
The Trig overview: a ranked list of roles, a desirability matrix, a world map and the skill space, under a numbered navigation bar.
Overview: one ranked list, linked to the matrix, the map and the skill space.
6Claude agent roles
3evaluations kept apart
437automated tests
01 / THE CHALLENGE

The challenge

A search across countries, job boards and languages turns up far more adverts than one person can read well. Language models can read them, but their judgements are sometimes wrong in ways that matter: whether a requirement is met, whether a role is worth applying for. The design problem: let agents do the reading and proposing, while the person stays in charge, can see where every judgement came from, and learns how far to trust each agent.

02 / MY CONTRIBUTION

My contribution

I designed the system and its interface: the data model, the evidence rules, the agents' roles and limits, and every view. I built it with AI coding agents (Codex, then Claude Code), directing the work, reviewing changes and testing them against my own use. The project is also my testbed for research on how people coordinate with AI and judge when to rely on it.

03 / DESIGN PROCESS

Design process

The design rests on a few rules. Three evaluations stay separate and are never merged into one opaque score: eligibility (each requirement met, not met or unverified), desirability (five dimensions weighted by editable priorities) and feasibility. Every fact carries its provenance: advertised, estimated, benchmark or unknown, and an unknown is never guessed. Agents propose; the person confirms, and every proposal, edit and review is logged. A literature review of multi-agent job dashboards shaped what came next: calibrating trust in each agent, showing uncertainty in the ranking, what-if counterfactuals, consented study logging and recording outcomes. A later redesign gave the interface a survey-sheet look, and replaced the clustering behind the skill map: label propagation had left 52% of connected roles in no cluster. Louvain community detection now assigns all of them.

04 / IMPLEMENTATION

Implementation

Claude agents each have one job. One reads an advert's requirements, salary and deadline, and code drops any item whose quote does not appear verbatim in the advert. A matcher judges each requirement against an evidence library drawn from my CV, and must cite it; invented citations are dropped. A second agent rereads every “not met”: where both agree the verdict settles by rule, and disagreements go to the person first. An assessor proposes desirability scores, calibrated on about 40 roles I scored myself, and an estimator gives a provisional fit for adverts with too little text. Ask answers questions with read-only tools; the actions it suggests wait in the Inbox until accepted. A rule-based scout flags roles much like ones I chose. The Trust view follows every proposal to its outcome and reports agreement with a 95% Wilson interval; bulk accepts are not counted as agreement, and random spot-checks test them. The skill space compares roles as TF-IDF vectors, links each to its nearest neighbours and draws the resulting communities as contour islands in D3. The app runs locally on FastAPI and SQLite, with plain JavaScript and D3 and no build step, covered by 437 automated tests.

05 / OUTCOMES & LIMITATIONS

Outcomes & limitations

Trig is in daily use for one person's search: mine. It has not been evaluated with other users. A consented study mode logs meaningful actions locally for a planned diary study, and an outcome log will set what happened to applications beside what Trig predicted when they were sent. Agreement figures come from my own reviews and stay wide while few are judged. The skill-map clusters partly follow employer and language rather than skill alone. Colour contrast meets WCAG AA in light and dark themes; the redesign has not had a full accessibility audit.

06 / EXPLORE FURTHER

Data & scope

The screens show an invented dataset: 200 roles at fictional employers, with proposals reviewed for the purpose. My real adverts, applications and CV evidence stay on my computer and are not published. The agents call Claude through Anthropic's API, and only for the steps marked as Claude in the diagram.

See the screens
NEXT PROJECTGeospatial–temporal visualisation