Doveborn: inget brev öppnas förrän båda är förseglade
Ett brev i veckan mellan två personer. Du kan inte läsa det andras förrän du har skrivit ditt, och promptmodellen ser aldrig ett ord av det ni skrivit.

Bakgrund
Doveborn är ett brev i veckan mellan två personer. Det är hela produkten.
Ni skriver båda. Inget av breven låses upp förrän båda är förseglade. Om din partner inte har skrivit sitt ser du ingenting, hur många gånger du än öppnar appen. När det andra förseglas dyker båda upp samtidigt.
Den har väntelista.
Problemet
Jag för samma samtal med människor jag bryr mig om i tre olika appar och ingenting av det växer till någonting. Meddelanden är optimerade för omedelbarhet, vilket betyder att de är optimerade mot eftertanke. Det du hade sagt ordentligt om du fått tjugo minuter blir sagt slarvigt på tjugo sekunder, och sedan skrollar det bort.
Mekaniken jag var ute efter kom från att se hur folk beter sig när de kan läsa den andras meddelande först. De matchar det. Längd, ton, djup, ansträngning. Någon skriver tre rader och du skriver tre rader tillbaka, och utbytet lägger sig vid golvet i stället för vid taket. Läskvitton gör det värre, eftersom tystnaden nu är läsbar och båda spelar upp sig mot den.
Ta bort möjligheten att läsa först och förankringen försvinner. Du skriver det du har, inte det du matchar.
Min roll
Ensam, som med allt på Nuits. Produkt, interaktionsdesign, utveckling, text, integritetsmodellen.
Integritetsmodellen är det jag skulle peka på. Den är inget policydokument jag skrev i efterhand för att beskriva ett system. Den är ett villkor jag designade systemet kring, och den tog bort funktioner jag ville ha.
Angreppssätt
Förseglingen är produkten, så gränssnittet finns mest till för att få förseglandet att kännas medvetet. Skrivandet sker på en helskärmssida utan utsmyckning, utan formateringsverktyg och utan teckenräknare. Det finns en enda åtgärd i slutet och den går inte att ångra. Att den inte går att ångra gör verkligt arbete: ett redigerbart brev är ett utkast, och ett utkast blir aldrig färdigt.
Väntetillståndet var det andra designproblemet. När du väl har förseglat och din partner inte har det finns ingenting att visa och en stark frestelse att fylla utrymmet med uppmuntran, förloppsindikatorer eller påminnelser. Allt sådant gör väntan till press, och press på ett veckobrev ger ett dåligt veckobrev. Väntskärmen är medvetet nästan tom.
Det finns prompter, valfria, för de veckor du öppnar sidan och inte har någonting. De är det enda stället där en modell rör produkten.
Så byggde jag det
TanStack Start med TanStack Query och React 19, levererat som en PWA så att den installeras och lägger sig på en hemskärm där en veckorutin faktiskt överlever. Query sköter synkroniseringen mellan förseglat läge och upplåst läge, vilket är känsligare än det låter: två klienter kan försegla inom samma sekund, och båda måste gå från väntan till avslöjat utan att någon av dem flimrar genom ett halvt tillstånd.
Integritetsdesignen är det bärande beslutet. Promptmodellen läser metadata och bara metadata. Den vet hur många veckor paret har hållit på, ungefär hur långa breven brukar vara, hur länge sedan det senaste utbytet var och vilka breda teman paret tidigare valt åt sig själva. Den får aldrig brevtexterna. Inte en mening, inte ett utdrag, inte en sammanfattning.
Det villkoret kostade mig den funktion jag helst ville bygga. En promptgenerator som har läst dina senaste sex brev kan ställa en genuint bra fråga. En promptgenerator som utgår från antal och datum ställer en hyfsad allmän fråga. Jag byggde den hyfsat allmänna, eftersom alternativet betyder att meningen ”dina brev är privata” är falsk på ett sätt personen som läser den inte skulle vänta sig, och jag är inte beredd att skriva den meningen och sedan i tysthet villkora den.
Resten följer av samma regel. Brev sparas, eftersom du behöver kunna läsa om dem, men ingenting i kedjan analyserar dem. Ingen sentimentanalys, ingen ämnesextraktion, inget sökindex byggt över texterna, ingen engagemangsmodell. Det finns inget flöde att optimera, så det finns ingenting att optimera det med.
Felmoderna handlar mest om asymmetri. En person förseglar varje vecka och den andra slutar, och appen måste hantera det utan att bli en skuldmaskin. Just nu låter den helt enkelt det förseglade brevet vänta och säger ingenting. Det är inget löst problem; det är en medveten vägran att lösa det illa.
Resultat
Väntelista på doveborn.com. Det är den ärliga statusen.
Mekaniken har hållit i tester med det lilla antal par som använder den. Ingen har bett om möjligheten att tjuvkika, vilket jag halvt räknade med skulle bli första önskemålet.
Vad jag skulle göra annorlunda
Jag lade för lång tid på brevredigeraren och för lite på avslöjandet. Avslöjandet är hela produktens känslomässiga laddning och det visar för närvarande bara två brev. Det borde vara appens mest designade skärm och det är den minst designade.
Jag skulle också ha byggt inbjudningsflödet för par före själva skrivupplevelsen. Allt i Doveborn kräver två personer, och jag byggde enspelarhalvan först, vilket innebar att jag upptäckte de knackiga delarna av inbjudan sent.




