Mobilne · prywatność

Kyndsy — prywatny trener mowy i zachowania dla iOS i Androida

Aplikacja mobilna, która nasłuchuje głosu swojego właściciela i liczy słowa wulgarne, grzeczne, wypełniacze oraz zaostrzony ton — w trzydziestu językach, w tym w mowie mieszanej. Analiza mowy odbywa się na urządzeniu: żadne nagranie nie jest przechowywane, żaden transkrypt nie jest pisany, nie ma konta ani imienia. Zaprojektowaliśmy i zbudowaliśmy produkt od początku do końca — aplikację, jej treści w trzydziestu językach, lekki backend i stronę.

Kategoria
Mobilność · prywatność
Szacowany koszt
od 26 000 €
Oś czasu
≈ 12–16 tygodni
Strona internetowa
kyndsy.app ↗
kyndsy.app
Kyndsy
Strona projektu — kyndsy.app

01Przegląd projektu

Kyndsy jest aplikacją mobilną, która odpowiada na pytanie, na które większość ludzi nie potrafi odpowiedzieć o sobie: jak właściwie mówię? Słucha głosu swojego właściciela podczas zwykłej rozmowy i liczy szorstkie słowa, grzeczne, wypełniacze oraz momenty, gdy ton staje się ostry. Pokazuje trend na przestrzeni dni i tygodni. A potem przestaje — nie mówi osobie, jakim rodzajem człowieka ją to czyni.

Założenie jest takie, że aplikacje do samodoskonalenia głównie rysują wykres twojej własnej opinii. Raportujesz swój dzień, one wizualizują raport. Kyndsy zaczyna od czegoś, z czym trudniej się spierać: słów, które faktycznie zostały wypowiedziane, policzonych podczas gdy osoba była zajęta życiem, a nie siedzeniem i refleksją.

To również sprawia, że produkt jest trudny. Liczenie mowy oznacza mikrofon, a mikrofon oznacza, że osoba musi zaufać aplikacji bardziej niż czemukolwiek innemu w telefonie. Cały produkt oparty jest na obietnicy, która musiała być strukturalna: dźwięk nigdy nie jest przechowywany, słowa nigdy nie są zapisywane, głosy innych ludzi nie są analizowane, a żadne konto nie jest do tego przypisane.

Zaprojektowaliśmy i zbudowaliśmy całość: aplikację na iOS i Android, jej treść w trzydziestu językach, lekki backend, ścieżkę wydania w sklepie i stronę produktu. Poniżej znajduje się problem, decyzje i części, które celowo odmówiliśmy zbudować.

02Kontekst i problem

Aplikacja, która słucha, to kategoria, w której oczywista implementacja jest również błędna. Rozpakowanie zadania wyprodukowało zestaw ograniczeń, które ukształtowały wszystko, co nastąpiło później.

  • Zaufanie to produkt.Aplikacja, która mierzy mowę, ma dokładnie jeden atut, a nie jest nim algorytm. Jeśli osoba podejrzewa, że dźwięk opuszcza telefon, żaden poziom dokładności nie ma znaczenia — odinstalowuje aplikację.
  • Inne osoby nie wyraziły zgody.Mikrofon w pomieszczeniu rejestruje każdego, kto się w nim znajduje. Analiza osób wokół właściciela byłaby zupełnie inną aplikacją, i znacznie gorszą.
  • Liczba dotycząca osoby jest niebezpieczna.Każdy pojedynczy wynik, który twierdzi, że podsumowuje człowieka, jest twierdzeniem, którego produkt nie może uczciwie złożyć — i które ludzie odczytają jako wyrok, niezależnie od zastrzeżenia.
  • Surowe liczby kłamią."Przysiągłeś dziewięć razy dzisiaj" nagradza milczenie. Osoba, która nic nie mówi, wygląda jak osoba, która się poprawiła.
  • Słowa są niejednoznaczne.To samo słowo jest żartem, cytatem, samokrytyką lub prawdziwym obelgą w zależności od tonu i kontekstu. Liczenie samego ciągu produkuje liczby, których nikt nie rozpoznaje jako swój własny dzień.
  • Ludzie nie mówią jednym językiem.Przełączają się w trakcie zdania. Licznik, który śledzi tylko jeden z nich, zgłasza podejrzanie spokojny dzień za każdym razem, gdy jego właściciel zmienia język.
  • Sklepy mają zasadydotyczące użycia mikrofonu, dotyczące zdrowia i roszczeń psychologicznych oraz dotyczące tego, co może być zablokowane przez subskrypcję — i są egzekwowane przy składaniu, a nie w dniu uruchomienia.

Wszystko to musiało działać na telefonie, w tle, bez wyczerpywania baterii lub cierpliwości osoby.

03Cele projektu

  • Mierz mowę na urządzeniu.Analiza odbywa się na telefonie; dźwięk nigdy nie jest przechowywany ani przesyłany.
  • Tylko głos właściciela.Inne głosy są pomijane, a nie analizowane, i nie ma trybu wskazywania aplikacji na inną osobę.
  • Brak konta, brak imienia.Nic do wycieku, ponieważ nie ma niczego zbieranego do wycieku.
  • Wskaźniki, a nie surowe liczby.Wszystko na tysiąc wypowiedzianych słów, więc cichy dzień to cichy dzień, a nie osiągnięcie.
  • Trzydzieści języków, w tym mowa mieszana — słowniki muszą istnieć we wszystkich jednocześnie, inaczej liczba jest błędna dla osób, które się przełączają.
  • Rozróżniaj odcienie. Ironia, sarkazm, żart i szczera, ostra uwaga rozróżnione i oznaczone jako przypuszczenie, nigdy jako werdykt.
  • Użyteczne bez mikrofonu.Dziennik, kompas wartości, testy i wieczorne pytania działają samodzielnie.
  • Motywacja, której nie da się oszukać.Biegi, poziomy i programy oceniane na podstawie pomiaru, a nie otwierania aplikacji.
  • Brak ogólnego wyniku osoby. Nie w wersji pierwszej i nie później.

04Co zrobiliśmy

Aplikacja jest zbudowana jako cztery miejsca, z których każde odpowiada na inne pytanie, plus części, które je wspierają:

  • Dziś — co właśnie się wydarzyło: wynik przemówienia, cele dnia i jedna sugestia, nigdy lista sześciu.
  • Postęp — czy to gdzieś zmierza: biegi, poziomy, programy i cotygodniowy raport.
  • Kompensator — na co osoba postanowiła celować: trzy do pięciu wartości, które wybrała sama, oraz ruch w kierunku tych wartości.
  • Ty — wszystko, co należy tylko do nich: testy samooceny, dostęp dla rodziny, ich dane i wsparcie.

Pod spodem znajdują się elementy, które czynią te cztery uczciwymi: analiza mowy na urządzeniu, słowniki i zasady dla trzydziestu języków, klasyfikator cieni, model liczenia, który działa w wskaźnikach zamiast w sumach, lekki backend, który prawie nic nie wie, oraz rejestr ustawień, który pozwala produktowi zmieniać się bez wydania aktualizacji w sklepie.

05Prywatność jako kod, nie kopia

Twierdzenia dotyczące prywatności na stronie nie są tekstem marketingowym, który późniejsza optymalizacja mogłaby cicho unieważnić. Są to właściwości budowy, a projekt traktuje zmianę, która czyni którąkolwiek z nich nieprawdziwą, jako defekt, a nie kompromis.

  • Dźwięk nie jest nigdzie zapisany — ani do pliku, ani do tymczasowego bufora na dysku, ani do logu. Nie w wersji debug, ponieważ to w wersji debug te rzeczy się wymykają.
  • Analizowany jest tylko głos właściciela.Mowa innych osób jest odrzucana, zanim w ogóle stanie się słowami.
  • Nic nie jest transkrybowane.Aplikacja produkuje liczniki, a nie tekst; nie ma przechowywanego zdania, które mogłoby wycieknąć, zostać wezwane do sądu lub przypadkowo zsynchronizowane.
  • Sesja zaczyna się tylko wtedy, gdy osoba ją rozpoczyna.Brak automatycznego uruchamiania po ponownym uruchomieniu, brak cichego wznawiania w tle.
  • Profil głosowy nigdy nie opuszcza telefonu i jest wyłączony z kopii zapasowych urządzenia — to dane biometryczne, a kopia zapasowa to jedyne miejsce, w którym ludzie zapominają, że mogą się przenosić.
  • Backendowi mówi się cztery rzeczy i nic więcej: prośba o ustawienia, jednorazowe pobranie modelu, wiadomość wsparcia, jeśli osoba ją napisała, oraz potwierdzenie subskrypcji. Nie ma konta.
  • Osoba to para losowych liczb stworzonych przez jej własny telefon. Nie wydajemy ich i nie liczymy — co oznacza, że nie wiemy, ile jest instalacji, a to była świadoma decyzja.
  • Logowanie jest opcjonalne i niczego nie odblokowuje. Istnieje, aby przenieść subskrypcję i historię na nowy telefon. Uczynienie go obowiązkowym stworzyłoby powiązanie z prawdziwą tożsamością, gdzie dzisiaj nie ma żadnego.

Ten ostatni punkt jest wart rozwagi. Wymaganiem właściciela było nic nie wiedzieć poza anonimowym identyfikatorem — a kuszącym sposobem na spełnienie tego wymogu jest obowiązkowe logowanie, które obiecujemy potem, że nie będziemy czytać. Zrobiliśmy odwrotnie: żadnego konta w ogóle, i opcjonalne logowanie, które odczytuje dokładnie jedno pole z tokena i przechowuje je w postaci haszowanej.

06Co aplikacja faktycznie liczy

Cztery rzeczy: szorstkie wyrażenia, grzeczne wyrażenia, słowa wypełniające i podniesiony lub zaostrzony ton. Wszystkie są raportowane na tysiąc wypowiedzianych słów, nigdy jako surowa suma — ponieważ surowe zliczenie sprawia, że milczenie wygląda na postęp, a aplikacja, która nagradza swojego właściciela za to, że nie mówi, źle zrozumiała swoją rolę.

Nagłówek dnia to wskaźnik szacunku w mowie, a zasady dotyczące niego są tak przemyślane jak sama liczba:

  • Jest całkowicie ukryty, dopóki nie usłyszy się pięćdziesięciu słów.Zero w cichym poranku brzmi jak oskarżenie, a nie jak brakujące dane.
  • Dni poniżej pięćdziesięciu słów są pokazywane, ale nie liczone — widoczne jako puste, a nie udające dobrego dnia.
  • Uprzejmość może podnieść to o maksymalnie dziesięć punktów.Każde dalsze podniesienie sprawiłoby, że wynik byłby tańszy do oszukania za pomocą grzeczności niż do zdobycia przez bycie ostrym.
  • Każde pojedyncze zdarzenie może być oznaczone jako błędne, a zrobienie tego zmienia liczbę, a nie tylko przekreśla linię z listy.

Widoki na górze są zwyczajne w formie i staranne w szczegółach: siedmiodniowy trend, obraz dnia z godziny na godzinę, trzydziestodniowa siatka z jednym kwadratem na dzień. Widok godzinowy odmawia ogłoszenia "najgorszej godziny" aż do momentu, gdy ma dziesięć wydarzeń, na których może się oprzeć; trzydziestodniowa siatka pozostawia ciche dni beżowe, zamiast kolorować je jako spokojne. Wykresy, które są pewne na podstawie cienkich danych, to sposób, w jaki produkt pomiarowy traci zaufanie czytelnika — zazwyczaj na zawsze.

07Odcienie mowy: ironia, żart, złośliwość

Dowcip i zniewaga to nie to samo słowo dwa razy. Kyndsy oddziela ironię od szczerego, ostrego komentarza, dowcip od złośliwego przytyku, cytat od czegoś, co osoba miała na myśli — i pokazuje, co myśli, że usłyszała, w słowach, obok wydarzenia.

Dwie zasady utrzymują tę funkcję w uczciwości. Po pierwsze, jest przedstawiana jako przypuszczenie, a nie wyrok: aplikacja mówi "możliwa ironia" lub "dowcip — nie wliczany" i pokazuje, na czym się opierała. Po drugie, i co ważniejsze, klasyfikacja odcieni nigdy nie zmienia indeksu. Informuje osobę; nie dostosowuje cicho ich wyniku. Liczba ważona zaufaniem byłaby niemożliwa do sprawdzenia przez kogokolwiek i cicho stałaby się najbardziej kontrowersyjną cechą produktu.

Ta sama dbałość dotyczy kontekstu: to samo słowo liczy się inaczej, gdy osoba cytuje kogoś, mówi o sobie lub jest w trakcie kłótni. A ponieważ żaden słownik nie może wiedzieć, co konkretne słowa oznaczają dla danej osoby, mogą one prowadzić własne listy.

08Trzydzieści języków — i ich mieszanka

Aplikacja działa w trzydziestu językach — angielskim, hiszpańskim, portugalskim, niemieckim, francuskim, włoskim, niderlandzkim, szwedzkim, duńskim, norweskim, fińskim, polskim, czeskim, chorwackim, rumuńskim, węgierskim, greckim, tureckim, rosyjskim, ukraińskim, białoruskim, hebrajskim, arabskim, hindi, indonezyjskim, wietnamskim, tajskim, chińskim, japońskim i koreańskim — i w kilku z nich jednocześnie, ponieważ tak naprawdę mówi wiele osób.

Trzydzieści języków to nie trzydzieści tłumaczeń interfejsu. To trzydzieści zestawów słowników — szorstkie wyrażenia, grzeczne formuły, wypełniacze — i muszą one wylądować w tym samym czasie. Język, którego słownik jest w połowie ukończony, nie zawodzi głośno; zgłasza spokojny dzień. Osoba widzi dobrą liczbę i w to wierzy, co jest gorsze niż komunikat o błędzie.

Jedna lekcja z tego projektu dobrze się generalizuje poza niego: cecha wykryta z kształtu tekstu łamie się w pierwszym języku pisanym inaczej. Traktowanie "frazy" jako "ciągu zawierającego spację" działa do momentu, gdy mamy do czynienia z japońskim, chińskim i tajskim, które są pisane bez nich — a tam aplikacja nie znajduje nic, w milczeniu, podczas gdy wygląda na to, że działa. Zachowanie języka musi pochodzić z danych samego języka i musi być objęte testem, który działa we wszystkich trzydziestu.

09Kompas i dziennik

Mowa to tylko połowa produktu. Drugą połową jest to, na co osoba postanowiła celować: wybiera od trzech do pięciu wartości z siedmiu — szacunek, uczciwość, samokontrola, odpowiedzialność, troska, sprawiedliwość, niezawodność — a aplikacja pokazuje ruch w kierunku tych, zamiast w kierunku czyjegoś innego pomysłu na dobrego człowieka.

Ruch pochodzi z dwóch źródeł: pomiarów mowy oraz osobistego dziennika rzeczy, które zrobiła osoba — dotrzymanie obietnicy, przeproszenie, nakrzyczenie na kogoś, naprawienie szkody. Trzy pytania na koniec dnia, kiedy ich potrzebują.

A jest brak ogólnego wyniku moralności, teraz ani później. To jedyna rzecz, którą produkt odmawia obliczenia. To także powód, dla którego kompas działa: osoba wybierze uczciwe wartości tylko dla aplikacji, która nie oceni ich na podstawie wyniku.

Wszystko w tej części działa bez mikrofonu. Dziennik, kompas, testy i wieczorne pytania funkcjonują samodzielnie, więc osoba może ustawić część głosową później, lub nigdy, i nadal czerpać coś z aplikacji. To była decyzja produktowa z realnymi konsekwencjami dla zatrzymania użytkowników, i zrobilibyśmy to ponownie — prośba o zgodę na pierwszym ekranie to miejsce, w którym aplikacja wrażliwa na prywatność traci ludzi, dla których została stworzona.

10Programy, uruchomienia i cotygodniowy raport

Motywacja w tej aplikacji musiała być odporna na dwa zwykłe oszustwa: częste otwieranie aplikacji i nic nie mówienie. Więc:

  • Programyprzez 7 do 30 dni z jednym celem i jedną liczbą — siedem dni bez ostrych słów, łagodniejsze odpowiedzi przez dwa tygodnie, mniej wypełniaczy przez miesiąc. Czy to zadziałało, decydują pomiary, a nie zaznaczenie pola.
  • Biegliczy dni, w których osoba rzeczywiście utrzymała poziom.Ciche dni ani go nie przerywają, ani nie wydłużają— odłożenie telefonu nie jest sposobem na wygraną.
  • Poziomy zdobywa się przez dni, a nie przez otwarcia aplikacji: Obserwacja, Kontrola, Spokojna mowa.
  • Tarczezakrywają potknięcie, do pewnego momentu, a złamany dzień można odkupić — ale bieg trzydziestu dni z czterema odkupionymi dniami to nie bieg trzydziestu dni, więc te dni są liczone i pokazywane osobno.
  • Cotygodniowy raport jasno mówi, kiedy nie ma wystarczająco dużo do porównania.Podsumowanie, w którym coś zawsze się poprawia, przestaje być czytane po trzecim tygodniu.

Jedna celowa asymetria zasługuje na nazwę: darmowy poziom ogranicza, jak dużo historii jest wyświetlono, a nie jak dużo jest liczone. Obliczanie przebiegu tylko w widocznym oknie pokazałoby trzydziestodniowy przebieg jako siedem — nie jest to ograniczenie darmowego planu, ale fałszywe stwierdzenie o osobie.

11Sto testów samooceny

Obok pomiarów znajduje się sto uporządkowanych testów samooceny: dwadzieścia pięć stwierdzeń każde, około czterech minut, ocenianych w pięciu aspektach osobno, więc odpowiedź nigdy nie jest jedną płaską liczbą. Obejmują mowę, uczucia, bliskich, pracę, siebie, nawyki i życie online.

Są wyraźnie nie diagnozami i nie pomiarami osobowości — są uporządkowaną samo-refleksją, a aplikacja mówi to tam, gdzie osoba to przeczyta, a nie na ekranie ustawień. Odpowiedzi pozostają na telefonie jak wszystko inne.

Punktem inżynieryjnym jest to, że setki testów nie mogą być utrzymywane jako setki ręcznie napisanych ekranów. Są one zasobem, a nie kodem: generowane z źródeł, walidowane w czasie budowy i odrzucane, jeśli test nie ma pełnego zestawu stwierdzeń i aspektów. To sprawdzenie umożliwia posiadanie ich setki, i to dlatego zasady ich odblokowywania mogą być rozdzielane w sposób spójny, a nie rozsypane ręcznie.

Połowa z nich otwiera się przez użycie, połowa przez zakup. Produkty w sklepie za płatną połowę są celowo nieliczne, a nie jeden na test — nikt nie tworzy setki ofert w sklepie ręcznie, a nikt nie tłumaczy ich setki na trzydzieści języków. Sprzedawanym produktem jest odblokowanie; osoba wybiera, na który test chce je wydać w aplikacji, po potwierdzeniu zakupu.

12Subskrypcja, rodzina i sklepy

Płatny poziom to subskrypcja, a plan rodzinny dzieli go — sześć miejsc na rok, w tym miejsce kupującego. Ważne jest, co rodzina dzieli, a czego nie:rodzina dzieli się prawem, a nie danymi. Nikt nie widzi numerów, wydarzeń ani dziennika innych osób, a osoba, która zapłaciła, widzi wolne miejsca i daty, a nie to, kto w nich jest.

To nie jest zapis w małym druku; tak to jest zbudowane. Pomiarów innych osób w ogóle nie ma na serwerze, więc nie ma nic, co mogłoby przypadkowo ujawnić się na ekranie rodzinnym. Wprowadzenie kodu oznacza zgodę na dzielenie się subskrypcją, a nie zgodę na identyfikację.

Dwie zasady wdrożeniowe z tej części przetrwały funkcję. Po pierwsze, subskrypcja i prawo rodziny to jedna flaga w aplikacji: drugie pytanie w formie "a może są w rodzinie" zostałoby zapomniane dokładnie w tych miejscach, gdzie ma to znaczenie. Po drugie, cisza z serwera nie cofa prawa — sieć przerywa znacznie częściej niż kończy się subskrypcja, a aplikacja, która blokuje płacącego klienta w pociągu, podjęła oczywistą decyzję źle.

Polityka sklepu ukształtowała wiele z powierzchni tutaj: co aplikacja mikrofonowa może twierdzić, jak może być przedstawiona płatna warstwa oraz fakt, że uszkodzona wersja nie może być cofnięta za pomocą hotfixa. Dlatego polityka wersji — minimalna wspierana wersja, wymuszona aktualizacja, tryb konserwacji i komunikat wyświetlany we wszystkich językach projektu jednocześnie — jest ustawieniem po stronie serwera, a nie czymś skompilowanym.

13Architektura: aplikacja, backend, rejestr

Architektura wynika z obietnicy prywatności: tak dużo, jak to możliwe na telefonie, tak mało, jak to możliwe na serwerze.

  • Aplikacja wykonuje analizę, przechowuje historię i posiada profil głosu. To cały produkt; serwer pełni rolę wsparcia.
  • Lekki backend odpowiada na cztery rodzaje zapytań — ustawienia, jednorazowe pobranie modelu, wiadomości wsparcia i potwierdzenia subskrypcji. Nie ma tabeli użytkowników, ponieważ nie ma użytkowników, których można by w niej umieścić.
  • Rejestr konfiguracji przechowuje to, co w przeciwnym razie byłoby zakodowane na stałe w aplikacji: identyfikator pakietu, adres API, parametry logowania, listę języków, flagi funkcji i politykę wersji. Wartości są generowane do źródła, a nie wpisywane tam, a wygenerowany plik jest oznaczony jako nie do edytowania z prostej przyczyny, że ręczna edycja zostaje utracona przy następnej generacji.
  • Kontrola przed uruchomieniem bramkuje każde zbudowanie: odrzuca, jeśli identyfikator pakietu odbiega od rejestru, jeśli wersja nie jest wyższa niż ostatnia wydana, jeśli serwer aplikacji nie odpowiada, jeśli słownik jest niekompletny w którymkolwiek z języków projektu, jeśli analiza statyczna nie jest czysta, jeśli testy nie przechodzą, lub jeśli w źródle zostanie znalezione coś przypominającego klucz. Zwraca kod wyjścia różny od zera, co czyni go użytecznym jako bramkę w każdym CI.
  • Płatny poziom jest za flagąktóre można wyłączyć bez przebudowy i bez nowej wersji sklepu.

Strona to mała aplikacja PHP bez własnej bazy danych poza korespondencją wsparcia — ta sama zasada stosowana na jednym poziomie wyżej.

14Stos technologiczny

  • Flutterdla iOS i Androida z jednego kodu — z systemem projektowania w kodzie, więc kolor, odstępy i promień są zadeklarowane w jednym miejscu, a nie w każdym widżecie.
  • Rozpoznawanie mowy na urządzeniui analiza na urządzeniu: modele są pobierane raz i uruchamiane lokalnie, z manifestem opisującym je zbudowanym z plików, a nie napisanym ręcznie.
  • PHP 8.4dla backendu aplikacji i strony, z małą bazą danych używaną tylko do korespondencji wsparcia.
  • Rejestr konfiguracjijako źródło prawdy dla ustawień aplikacji, z generowanym kodem i bramką przedstartową.
  • Trzydzieści pakietów językowychdla aplikacji i trzy dla strony, z parytetem słownika egzekwowanym przez testy, a nie przez przegląd.
  • Ścisła polityka bezpieczeństwa treści na stronie — żadnych stylów inline, wartości obliczone skompilowane do arkusza stylów i czcionka hostowana na własnym serwerze, więc strona o prywatności nie pobiera żadnych zasobów zewnętrznych.

15Projektowanie i UX

Język wizualny to jeden ciemny motyw, zaczerpnięty z witryny produktu, aby to, co obiecuje odwiedzający, było tym, co otwiera. Drugi jasny motyw został zapisany w tokenach i celowo nie został wdrożony: dwa motywy oznaczają dwa zestawy zrzutów ekranu i dwa razy więcej miejsc, w których układ łamie się niezauważony.

Kolor, odstępy i promień znajdują się w jednym pliku projektowym, a przejście między alarmującym kolorem a spokojnym odbywa się przez ciepły żółty — interpolacja bezpośrednia daje oliwkowy błotnisty kolor, co wygląda na niedbałość, a w rzeczywistości jest brakującym punktem orientacyjnym.

Aplikacja ma charakter, a zasady dotyczące tego są związane z uczciwością tak samo jak z urokiem: nastrój jest czytelny z sylwetki, nie tylko z koloru, więc osoba z daltonizmem widzi to samo, co wszyscy inni; nastrój to ciągła skala animowana między wartościami, a nie pięć stałych obrazków, ponieważ skok odczytuje się jako inny obrazek, a nie tego samego przyjaciela; a na końcu lękowym brwi unoszą się na wewnętrznych końcach, ponieważ w dół i do wewnątrz to złość na osobę patrzącą.

Wszędzie indziej interfejs podąża za centralną zasadą produktu: pokazuj, co zostało zmierzone, mów, kiedy nie ma wystarczająco dużo, aby cokolwiek powiedzieć, i nigdy nie przekształcaj osoby w pojedynczą liczbę.

16Jak pracowaliśmy

  • Obietnica najpierw. Zapisaliśmy, co aplikacja nigdy nie zrobi — nie przechowuje dźwięku, nie analizuje innych ludzi, nie pyta, kim jesteś, nie ocenia cię jako osoby — zanim zaprojektowaliśmy cokolwiek, ponieważ te decyzje ograniczają architekturę, a nie wynikają z niej.
  • Rdzeń pomiaru. Analiza na urządzeniu, model liczenia w stawkach, indeks z jego progami i jego odmowa pojawienia się przy cienkich danych.
  • Praca językowa.Trzydzieści słowników i zasad, z parytetem egzekwowanym przez testy we wszystkich jednocześnie.
  • Druga połowa.Kompas, dziennik, programy, uruchomienia, raport tygodniowy — wszystko, co działa bez mikrofonu.
  • Testy jako zasób.Sto testów samooceny wygenerowanych i zweryfikowanych, z ich drabiną odblokowującą dystrybuowaną przez generator.
  • Monetyzacja.Subskrypcja, rodzinna, mały zestaw produktów w sklepie i płatny poziom za flagą.
  • Ścieżka wydania.Rejestr, wygenerowana konfiguracja, brama przedstartowa, rejestracja budowy i polityka wersji.
  • Strona.Trzy języki, surowa polityka bezpieczeństwa treści i strona docelowa, która pokazuje prawdziwe ekrany aplikacji.

Dwie rzeczy ciągle wracały podczas budowy, a obie są teraz zasadami. Wszystko, co interfejs twierdzi o zachowaniu osoby, musi być weryfikowalne na podstawie pomiaru, a wszystko, co aplikacja obiecuje w kwestii prywatności, musi być egzekwowane przez kod, a nie przez notatkę w dokumencie — wspólne zrozumienie przetrwa dokładnie do momentu, gdy pojawi się następna osoba, która tego nie przeczytała.

17Wynik

To, co powstało, to produkt pomiarowy dla czegoś, co ludzie zazwyczaj tylko zgadują, zbudowany tak, aby pomiar nie kosztował ich prywatności.

30
języki, w tym mowa mieszana
0
audio zachowane, transkrypty napisane, konta utworzone
100
ustrukturyzowane testy samooceny
  • Analiza mowy na urządzeniu: nic nie nagrywane, nic nie transkrybowane, inne głosy odrzucone.
  • Wszystko raportowane na tysiąc słów, więc cisza nie jest mylona z postępem.
  • Ironia, sarkazm i żarty opowiedziane osobno — i oznaczone jako przypuszczenie, które nigdy nie zmienia wyniku.
  • Trzydzieści języków z słownikami, które lądują razem, objęte testami we wszystkich z nich.
  • Kompas wartości, dziennik, programy i cotygodniowy raport, który przyznaje, gdy ma za mało do porównania.
  • Sto testów samooceny jako zweryfikowane zasoby, z małym, łatwym do utrzymania zestawem produktów w sklepie za płatną część.
  • Plan rodzinny, który dzieli subskrypcję i nic więcej, ponieważ dane nie są na serwerze do udostępnienia.

18Wnioski

Kyndsy to projekt, w którym najtrudniejsze inżynieria tkwiła w ograniczeniach. Analiza na urządzeniu, brak transkrypcji, brak konta, brak ogólnego wyniku, brak analizy osób postronnych — każde z tych ograniczeń utrudniało budowę, a produkt był możliwy. Wersja tej aplikacji z pipeline'em po stronie serwera i logowaniem byłaby szybsza do napisania i nie zasługiwałaby na mikrofon nikogo.

Lekcja, którą zabieramy ze sobą, dotyczy tego, jak dotrzymywane są obietnice: gwarancja, która żyje w dokumencie, jest gwarancją, dopóki nie nastąpi następna zmiana, której nikt nie sprawdza.. Te, które są tutaj przedstawione, to te wyrażone jako kod i objęte testami — parytet w trzydziestu językach, kontrast sprawdzany jako liczba, a nie przez patrzenie, ruch weryfikowany przez wartości, a nie przez zrzut ekranu, brama budowy, która odrzuca, a nie ostrzega.

Jeśli tworzysz produkt mobilny, w którym prywatność jest cechą, a nie zastrzeżeniem, coś, co musi działać w wielu językach jednocześnie, lub aplikację, której liczby mają być zaufane przez użytkowników, to jest to rodzaj pracy, którą realizujemy od pomysłu do sklepu.