Gather

So, you're running a conference.

Two hundred proposals in a spreadsheet. A committee that can't agree. Forty speakers who haven't sent a bio. And a schedule that keeps double-booking Hall A.

We built Gather for exactly that week.

Free and open source. No signup, no sales call, no forty thousand dollar invoice.

The agenda grid for Devflow 2027, with a session being dragged toward Hall A at ten where Priya is already speaking

214
proposals
80
speakers
61
sessions
0
double-bookings

First, you need people to submit something.

Build the form. Share one link. Go to bed.

Drag in the questions you want. Add one that only appears when somebody picks workshop, so your keynote speakers aren't answering questions about room layout.

Set a deadline and Gather closes the form itself, on its own clock, not the submitter's laptop.

this one only shows up for workshops
j and k to move, 1 to 5 to score, that's it

Two hundred and fourteen of them, in fact.

Split the pile. Score it. Defend it later.

Set your rubric, split the submissions across the committee, and let people work through them with the keyboard. Nobody is reaching for a mouse two hundred times.

Blind review hides names on the server, so it stays blind even for the reviewer who knows how to open devtools. Reviews nobody submitted don't count as zero.

And this is the one that keeps you up.

The button that can ruin your week.

Somewhere in every tool there's a button that emails a decision to everyone who applied. Press it against a screen five minutes out of date and you've told forty people the wrong thing about the most exposed moment of their professional year.

So deciding and sending are two different acts here. Marking a decision emails nobody. When you send, Gather counts the recipients on the server and stops if that number disagrees with your screen.

38 on your screen, 41 on the server. It stops.

Forty bios, forty headshots, forty slide decks.

Stop sending the headshot email for the fourth time.

Every accepted speaker gets a page listing what they owe you and when. They upload it from a phone in the back of a taxi, which is where this actually happens.

You watch a dashboard instead of an inbox. Nudge whoever's late, and nobody gets the same reminder twice in a day.

SPEAKER TASKS COMPLETE
31/ 40
Nine still owe you something. Six are late.

A speaker's task list on a phone, showing a bio uploaded and slides still outstanding

they never see anyone else's stuff

Six rooms, three days, sixty-one sessions.

Drag it anywhere. It'll warn you before you let go.

Rooms across, time down, everything unscheduled in a tray. Pick up a session and Gather finds the collisions while the card is still under your cursor. Room's taken. Speaker's already on stage. Two talks on one track.

The drop still lands. We don't bounce your card back across the screen and make you guess what was wrong with it.

A session being dragged into a room that is already booked, with the clash named on screen

Priya can't be in Hall A and Studio 2 at 10
Live, not on refresh
Collisions appear as you drag, not after you reload
Hard and soft
Room and speaker clashes block. Track overlap only warns
Versioned
Publish makes a snapshot. Roll back to any previous one

And your website needs to match, today.

Publish once. Never paste a schedule into a CMS again.

Publishing takes a snapshot. Your schedule, session pages and speaker gallery all read that one snapshot, so your site can't show half of an edit.

One script tag puts the same agenda on your existing website, and it updates the second you publish.

YOUR WEBSITE
<script src="https://gather.dev/embed.js" data-event="devflow-2027" data-view="agenda"></script>
that's the whole integration

Because the thing you're replacing isn't.

Every list, under a fifth of a second.

Nothing here makes you wait to find out whether it heard you. Status changes apply instantly, dragging holds sixty frames a second with a hundred and twenty sessions on screen, and command K jumps you anywhere.

<200ms
any admin list, interactive
60fps
dragging 120 sessions, six rooms
0
full page reloads in the console

The part nobody plans for.

Your speakers are still here in twelve months.

Every speaker, talk and score stays on one record across every event you run. Next year starts with a directory of people who already said yes once, not an empty spreadsheet.

SPEAKER DIRECTORY · ALL EVENTS80 people
PRPriya RaghunathanServing LLMs on spot GPUs3 events4 talks
MOMaya OkonkwoShip an eval suite in 90 minutes2 events2 talks
ABAde BalogunOpening keynote: the year in agents4 events5 talks
TLTomas LindqvistFine-tuning on a budget2 events3 talks
she said yes in 2025 too

What we do differently to the one that costs forty thousand.

The expensive oneGather
Agenda conflicts recalculate when you refresh the pageConflicts appear while the card is still moving
Embedded schedules cache for an hourThe embed updates the moment you publish
The submission form cannot be embedded, link onlyEmbed the form anywhere
A form has a close date but no open dateBoth, and it opens itself
A speaker belongs to exactly one portal, decided by filter orderA speaker sees everything they are on
Deciding and notifying are loosely coupledDeciding writes. Sending is separate, counted, confirmed
Slow enough to complain about on camera, four timesUnder 200ms, and we publish the numbers

All of the left column is documented in the vendor's own help centre. It is a capable product. It is also more product than most conferences need, at a price most conferences feel.

It's yours. That's the entire business model.

MIT licensed, self-hosted, no seat count, no per-event fee, no call with a salesperson. Clone it, read it, change the bits that don't suit your conference.

SHELL
$ git clone https://github.com/<org>/gather
$ cd gather && make setup && make dev

A running install with a seeded conference and no API keys required.

MIT
Do what you like with it
Self-hosted
Your speakers' data stays on your infrastructure
Public API
OpenAPI schema, typed client, ics feeds
No account
The demo needs nothing from you
Things people ask

Yes. MIT licensed. There is no paid tier and nothing is held back from the open source version. The code you are reading now runs on your own server, forever.

The demo runs 214 proposals, 80 speakers and 61 sessions, and the agenda holds 60fps while dragging 120 sessions across six rooms. It is Postgres and a schedule, not a distributed system problem.

Yes. Blind rounds strip names, companies and any answer you flag as identifying, on the server, before the data reaches the reviewer's browser.

No. They get a link. They can set a password if they would rather have one, but nobody is asked to remember another login for a conference they speak at once.

It is in your own Postgres database, and everything exports as CSV or XLSX. There is no export fee, because there is nobody to pay.

Import speakers and sessions from CSV, then carry on. Review history is the awkward part of any migration, so switch between events if you can.

No, deliberately. That is a different product with different regulations attached. Gather pushes the program to whatever you already use for registration.

It was built to replace a specific forty thousand dollar renewal for a specific conference, and opened up so the next conference does not have to have the same argument.

Your next event, gathered.

Open the demo, accept a talk, drag it into a room it can't fit in, and see what happens. Four minutes, no email address.