Spona GitHub ↗
NTP Novi Sad Hackathon 2026 · Track 02 EINSTEIN

For every company problem, Spona finds the University of Novi Sad researcher who could solve it, and writes the proposal for their first meeting.

The track brief: the University of Novi Sad "has thousands of researchers, NTP Novi Sad hundreds of companies, yet they rarely work together."

How it works, simply

More detail →

Every problem gets an answer

Click a colour to see those problems in the matchmaker

What would prove it works

Replay

Watch the agents work at the same time

Every bar is one agent loop: one model question with its own context, from the recorded run. Loops that overlap get their own row. Press play: the analysts read side by side, the profilers start on the best pairs while the analysts are still reading, the critic checks each result as it lands, and the writer drafts all four proposals at once.

    Every loop as a table
    Matchmaker

    Pick a company problem. See who could solve it, or why nobody does.

    All 489 challenges from the recorded run, with the analyst's reading, the researchers search found, the evidence the critic checked, and the outcome. Search a company, a topic or a researcher's name.

    Loading the run's matches…

    Proposals

    Four first-meeting proposals, as the run wrote them

    Each opens with why this pair fits, then the problem, research questions and a dated plan. Every fact cites its source; what the critic checked and sent back is folded at the end.

    Critic

    Every place the critic stepped in

    Gaps

    Company needs the university can't meet yet

    By sector

    The challenges

    Loading…

    How it works

    Twelve participants on one Mozaik runtime

    Nobody calls anybody in order. Each participant reacts to the events it cares about on Mozaik's bus, and shared state lives on one board in Mozaik's RuntimeState.

    Spona architecture: coordinator, three analysts, matchmaker, three profilers, critic, writer, recorder and cloud relay on one event bus, with a shared board and the critic's review loops.

    What makes the answers trustworthy

    • Search first, models second. The whole dataset is indexed with BM25 in about 7 seconds with no model call; Latin and Cyrillic are folded together. Models only see what search surfaced.
    • Rules for the data's traps. People stored twice are merged, namesakes kept apart, a paper counts only if the profile lists it or it carries the researcher's id, and someone who left the university is never proposed.
    • Rules, then a model, in every review. The critic checks that cited ids exist and belong to the person, that years match and quotes are verbatim, then asks a model whether each source says what the claim says.
    • Pairs, never people. Fit belongs to a pair. Title, seniority, publication counts and citations are not inputs, and a test checks it.

    Run it yourself

    Node 20+, a free Gemini key from AI Studio. Details in the README.

    git clone https://github.com/JannetEkka/spona
    cd spona && npm install && npm run data
    npm start