View on GitHub

EINSTEIN NTP Novi Sad × JigJoy hackathon

Agree the terms before anyone meets.

Agents find a researcher for a company challenge, negotiate the clauses that usually stall the work, and say no when there is no good match. A person still decides. Nothing is sent to anyone.

The Prenup board after a run: matchmakers and the Arbiter on the left, the negotiation between company and researcher as a conversation on the right, and a timeline of every model call.
  • 0 researchers double-booked on all 489 challenges, against 104 with last-writer-wins
  • 20/20 planted false claims stopped before they reached a proposal
  • 3.9× faster with agents in parallel than one call at a time
  • 4/15 sampled challenges got a reasoned no instead of a forced match

Collaborations between companies and universities stall on the same few clauses: who owns the results, how long publication waits, who gets exclusivity. Prenup settles them before anyone meets.

The run

One run, five moments.

Eight challenges. Three matchmakers. One shared board.

Recorded run
Conflictboard v1
C001-CH1 ArmaturaSec

Reserved first

Holds R1008
C032-CH1 SecureEdge Labs

Wants the same person

Write refused
  1. matchmaker-1reserve R1008v0 → v1✓
  2. matchmaker-2reserve R1008saw v0✕

Read version 0. The board is already at 1.

How it works

How a challenge moves.

Each part reacts when something happens. Nobody calls anybody.

  1. 01

    Read the challenge

    An Analyst turns it into research questions, or says it is not a research problem.

    emits challenge.analyzed

  2. 02

    Search in code

    Search over 10,779 publications runs without a model. Every fact on a card cites a record.

    emits shortlist.ready

  3. 03

    Review the fit

    A reviewer reads each whole record and says who could do the work, not just who shares the topic.

    emits fit.done

  4. 04

    Compete for the person

    Matchmakers reserve researchers on one board. A version check stops a double booking. An Arbiter settles the conflict.

    emits reservation.conflict

  5. 05

    Negotiate the terms

    Each side offers only what the data allows. They trade until they agree, or they do not.

    emits negotiation.agreed

  6. 06

    Check every claim

    The Critic checks each sentence against its source. A stopped claim goes back to its writer once.

    emits critic.done

Built on Mozaik · TypeScript · Claude models

The Critic

Every fact has a source.

Before a sentence is used, the Critic checks that the cited record exists, the quote is in it word for word, the record belongs to that person, and every number is in a cited field.

To test it, we planted 20 false claims built from real records. All 20 were stopped.

  • Same-name swap3/3
  • Says more than its quote4/4
  • Altered quote4/4
  • Fake id3/3
  • Unavailable person2/2
  • Engagement not on offer2/2
  • Invented money2/2

Responsible by design

It proposes. People decide.

  • It never ranks people

    Fit is judged for one piece of work, never a person's worth.

  • Only what they are open to

    A researcher is only offered what they listed. Edits are held to the same rule.

  • Nothing is sent

    A person edits, approves or rejects each proposal. Nobody is contacted before that.

Open source

A demo, not a finished product.

Open the code, replay the recorded run, and watch how the agents talk. No API key needed.

 npm run setup && npm run demo -- --replay

The live board replays the recorded run on a free plan, so the first visit after a quiet spell can take a minute.