Humans AND Agents optimized

Registrations That
Don't Crash

Have you ever tried to

buy a concert or match ticket,

register for an event,

enrol in university classes

while 100,000 people tried at the very same time?

The service crashed, right? Remained down for hours.

That problem is finally Sorted now.

No credit card required. Create your first class in minutes.

Live event

Burning Man Tickets

Accepting

Registered

47,214/100k

Price

$900

Waitlist

10,000

maya@example.com
Registered
jon@example.com
Pending payment
lena@example.com
Waitlisted #1
nora@example.com
Queued

Created via API

POST /api/events
→ 201 Created
{
  "public_url": ".../events/aZ4k9mQ2pX0",
  "embed_code": "<iframe …>"
}

Hosted payment

Participant pays $900.00
Platform fee via Stripe Connect
Real benchmark, numbers talking

Sell out Burning Man in 30s, no sweat.

100k people battling for 20k tickets.

Simulated registrants

100,000

each registers once

Throughput

🔥 3,706/s

registrations/sec

Accepted into queue

27s

all 100k, 300 concurrent

Fully persisted

28.2s

+0.8s behind last accept

Accepted

100%

0 dropped, 0 failed

p95 latency

258ms

p99: 393ms

k6 run homepage_stampede.js
# 100,000 registrants, 1 event, capacity 20,000, 300 concurrent
registration_duration: avg=80.78ms p(95)=257.6ms p(99)=392.58ms
registration_accepted_rate: 100.00%
http_req_failed: 0.00%
total_registrations: 100,000 (3,706/s)
# capacity enforced correctly under load
registered: 20,000 (exactly the event's capacity)
waitlisted: 80,000 (fair, timestamp-ordered)
# two-phase: fast accept, then async settle
last request accepted: t+27.0s
last row durable in DB: t+28.2s
Real benchmark, numbers talking

Enrol whole University in 1 minute.

100k students desperately trying to enrol to limited-capacity courses at the same time.

Simulated registrants

100,000

across 2,000 courses

Throughput

🔥 2,350/s

registrations/sec

Accepted into queue

42.6s

all 100k, 300 concurrent

Fully persisted

43.1s

+0.5s behind last accept

Accepted

100%

0 dropped, 0 failed

p95 latency

207ms

p99: 281ms

k6 run homepage_stampede.js
# 100,000 registrants, 2,000 courses, capacity 50 each, 300 concurrent
registration_duration: avg=127.33ms p(95)=207.01ms p(99)=280.85ms
registration_accepted_rate: 100.00%
http_req_failed: 0.00%
total_registrations: 100,000 (2,350/s)
# capacity enforced correctly under load
registered: 94,347 (random course choice — some fill, some don't)
waitlisted: 5,656 (fair, timestamp-ordered)
# two-phase: fast accept, then async settle
last request accepted: t+42.6s
last row durable in DB: t+43.1s
Concurrency

Built for the Second Everyone Registers

Sorted runs on the BEAM — the runtime built for telecoms that carry a large share of the world's phone calls. Each class is its own lightweight process, and registrations hit an in-memory queue first, so a signup spike never turns into a database pile-up.

  • Registrations land in ETS instantly — zero lock contention
  • A per-class worker drains, validates, and persists every 50ms
  • Results stream back over PubSub the moment they're decided
  • Fair, timestamped ordering under any load
REGISTRANTS ETS in-memory intake queue drain 50ms Event Worker validate · price · persist Postgres async batch PubSub live result One isolated process per class — no shared bottleneck
Hosted pages & embeds

One Event. Three Ways In.

Every class you create comes with a hosted registration page, a drop-in iframe embed, and a full REST API — no extra setup.

01

Create

Spin up free, fixed-price, or dynamic-price classes from the dashboard, the REST API, or an agent workflow.

02

Share

Send students to the hosted page, or paste the iframe straight into your own site. No code changes to your backend.

03

Register

Sorted queues each request, validates capacity and payment, then confirms registered, waitlisted, or rejected in real time.

Hosted page

sorted.fast/events/aZ4k9mQ2pX0

Embed anywhere

<iframe src=".../events/aZ4k9mQ2pX0/embed">
Peak $47
Dynamic pricing

Airline-Style Pricing, On Autopilot

Set a starting price and a floor-and-ceiling range. Sorted watches demand in real time and nudges the price within your bounds — capturing peak interest and filling quiet slots automatically.

Demand response

Prices rise toward your ceiling as an event heats up.

You set the bounds

Floor and ceiling are yours — the price never leaves the range.

Payments

Students Pay. You Get Paid.

Paid classes use the Stripe Payment Element right inside the registration flow — embeds included. Sorted runs on Stripe Connect with destination charges, so your platform fee is split out automatically and free classes skip payment entirely.

Free classes
$0
Paid flow
Stripe
Works in
Embeds
Agent ready

Designed for Agents, Too

An LLM agent can discover Sorted, create an event, and hand back a working link or embed — no human in the loop. Machine-readable docs and an A2A agent card make the whole platform self-describing.

See how agents use Sorted →

Make Registration Boring — Even on Launch Day

Create your first class manually or through an agent, then let Sorted handle the link, the embed, the waitlist, and the payments.