A coordination problem, not a data problem
Three people buy the same gift. Nobody did anything wrong. They simply could not see each other.
Solving it by hand means someone maintaining a list and everyone remembering to check it, which is exactly the kind of process that works for a week and then quietly does not.
What we built
Duplicate detection that runs automatically across an event, combined with visibility rules that let people see enough to coordinate without seeing enough to spoil the surprise.
Those two requirements pull directly against each other. Reconciling them is the whole design problem.
- Automatic duplicate detection across an event.
- Granular visibility control: coordination without spoilers.
- Personalised profiles and preferences.
- Event-scoped rather than global, so context is preserved.
Why this is automation
Because the alternative is a human being the coordination layer. That is what automation replaces most of the time. Not a job, but a piece of tedious mental bookkeeping that a person was doing only because nobody had built the system to do it instead.
The stack
React and Ant Design front end, NestJS and PostgreSQL behind it.