← /daily-startup-idea
June 30, 2026

Deadlock

“Deadlock detection for your group chat. You’re waiting for Sam to text first. Sam is waiting for you. Sam is also waiting for Maya, who is waiting for the ‘original plan’ from a thread that died in March. We detect the wait-for cycle, pick a victim (usually you), and abort the transaction with a graceful ‘hey no pressure buuut’ sent on your behalf.”

The Problem

Every weekend two or more humans hold non-shared mutexes on the next move and politely refuse to release. Nothing happens. No one is mad. Everyone is starving. The plan is technically in flight, in the same way a body is technically in flight while falling.

chat · stalled
last msg 11d ago · ‘ok lmk’
open txns
4
brunch, hike, bday, ‘catch up’
wait time
11d 04h
since last forward progress
cycles detected
2
you → sam → maya → you

The Solution

We sit on the group chat as a sidecar, build a live wait-for graph, and run cycle detection every 90 seconds. When we find a cycle, we elect a victim by lowest dignity_priority and ship a soft un-block message on their behalf. The transaction commits. Brunch happens.

Wait-For Graph

Each node is a person. Each arrow is “is waiting on.” A cycle means no one will ever go first.

wait-for graph · group: ‘the 4’ (3 active)CYCLE FOUND
you
holds: the plan
sam
holds: the venue idea
maya
holds: vibe check
waiting on →
← waiting on
← waiting on
cycle: you → sam → maya → you

Victim Selection

Once a cycle is found, someone has to die (socially). Our ranker picks the lowest-cost rollback — usually the person with the most forgiving texting culture and the fewest unread books on their nightstand.

victim_picker.py · output
def pick_victim(cycle):
# lower score = more expendable dignity
you | dignity=2.1 | read-receipts=on | score=0.18VICTIM
sam | dignity=7.8 | read-receipts=off | score=0.71
maya | dignity=9.4 | read-receipts=off | score=0.93
# action
ROLLBACK you.pride; COMMIT ‘hey no pressure buuut should we just pick a place’
→ lock released in 4s. brunch booked.

SEV-1 · The 6-Person Birthday

A larger cycle resists single-victim abort. The system has to escalate, detect a transitive deadlock, and abort two transactions in series. Painful but survivable.

incident 2026-06-30 · jess’s 30thMTTR: 19 days
  1. day 0· jess sends “ok what are we thinking 🥹”. Six locks acquired.
  2. day 3· mark waits on devon; devon waits on you; you wait on the group; the group waits on jess; jess waits on mark. Pentagon of silence.
  3. day 11· watchdog fires. We elect youas victim. You send “throwing out a wild idea but: bowling?”
  4. day 11· partial recovery — 3/6 react with 👍. Inner cycle persists.
  5. day 19· second abort fires on devon. Reservation made. Jess cries in the car (good cry). System nominal.

Pricing

Two-Lock
starter
$5 / mo
Watches up to 2 simultaneous group chats. Single-cycle detection only. We will not save you from your mom.
Mesh
most popular
$24 / mo
All chats, all DMs, full wait-for graph. Auto-pick victim, auto-send the opener. Optional ‘blame mode’ sends with a deniable typo.
Coordinator
enterprise
$199 / mo
Family-tier. Includes a two-phase commit protocol for holiday travel, a Paxos plugin for in-laws, and a human on-call to ghostwrite ‘sorry just seeing this.’

TAM

addressable market · humans currently waiting for someone else to text first
4.2B phone owners × 2.6 stalled threads each × $0.41 per resolved cycle
= $4.5B in unblocked brunch
Methodology: vibes, padded.

The Ask

$6M seed. Builds the graph engine, the on-device dignity ranker, and one (1) etiquette consultant who has been hand-tuning openers since 2003.

Series A pitch:“We’re Postgres’ deadlock detector, but the locks are emotional and the rollback is sending a meme.”