AI の道具なら、通知はいくらでも増やせます。私たちは1年かけて、Nudge が送る数を減らしました。2段階のふるい、15分のクールダウン、そして削ったもの。
1年前の Nudge は、忙しい人に1日で何度も通知を浴びせていました。今は、動けそうな瞬間に合わせて、数えるほどしか送りません。プロダクトとして志を下げたわけではありません。タスクの仕組みは大きくなり、AI の機能は良くなり、使う人も増えました。変わったのは、間違ったものを測るのをやめたことです。
間違ったものとは、AI が役に立つ問いかけをいくつ作れるか、です。正しいものは、実際の人がアプリを無視し始めるまでに、いくつ受け取れるか、です。この二つの数字は、まったく近くありません。
あなたのタスクについて考えられる AI なら、「役に立ちそうな」伝えごとを驚くほどたくさん作れます。期限を知らせる。小さなタスクに分ける案を出す。予定のぶつかりを指摘する。組み直しを提案する。書き方を直す。このタスクを3週間先延ばしにしていると指摘する。連続記録を祝う。
一つひとつには理屈が立ちます。積み上げると、40分おきに震えるスマホができあがります。人がアンインストールするのは、それです。
AI の生産性アシスタントを素直に作ると、こうなります。新しいタスクが追加されるたびに AI が中身を見て、進め方を提案し、区切りごとにリマインダーを置き、その区切りが来るたびにナッジを送る。1週間に10件追加すれば、その週に何十ものナッジが並びます。1週目は賢く感じます。2週目は重く感じます。そして3週目には、 通知バッジが読まれなくなります。
これが分かるのは、私たちが最初にだいたいそのとおりのものを作ったからです。
難しかったのは、何を送らないかを決める方法でした。LLM はナッジの候補を出すのは得意で、候補どうしを比べて順位をつけるのは並です。単体で見ればどれももっともらしく見えます。人が自分の ToDo リストを書くときに起きるのと同じことです。
たどり着いたのは、2段階のふるいです。1段目は、候補のナッジ全部にかかる速い採点です。問いは4つあります。
このナッジは重複していないか。 直近90分に似たものを送っていれば、落とします。関係するタスクを最近終えていれば、落とします。
今、受け取る余力があるか。 ここが 状況を見るリマインダー という呼び名の中身です。静かな時間、その人のカレンダー、これまで実際に通知へ反応した時刻が、まとめてここに入ります。動けない時間帯なら、遅らせるか落とします。
そのタスクは本当に動く時刻に近いか。 時刻の決まっていない4日後の期限に、今日のナッジは要りません。明日の17時の期限なら、要るかもしれません。
同じタスクへのもう一度のナッジが、最初の一回を台なしにしないか。 タスクごとに1日の上限を持っています。初期値は2件です。それを超えると、どれだけ筋の通った理由があっても、スケジューラーは追加を断ります。
2段目は、全体のクールダウンです。1段目を通っていても、直前の15分に別のナッジを受け取っていれば、そのナッジは出ません。この1つのルールが、私たちが入れた仕組みの中で、1日のナッジ数をいちばん大きく下げました。同時に、どのナッジをふるいに通すかを賢くする必要も生まれました。中身の薄いリマインダーをまき散らして数で押す、ということができなくなったからです。
LLM で作っているチームの内側にある文化の問題は、出力を作るのは安く、出力を抑えるのは高い、という点です。「LLM がタスクの改善案を3つ出す」なら、経験の浅いエンジニアでも午後いっぱいで組めます。その提案をいつ見せないかを決めるほうには、計測、ユーザー調査、順位づけのモデル、そして機能を減らして出す覚悟が要ります。その作業はデモになりません。スクリーンショットの中では前進に見えません。
抑える側の仕事を出せたのは、ある測り方があったからです。送ったナッジは24時間以内に必ず続きの信号を返します。動いたか、無視されたか、同じタスクへの次のナッジも外したか。質の高い配信の仕組みとは、多くのナッジが行動につながり、残りの多くは何も起こさない(これは問題ありません)ものです。悪い仕組みとは、多くのナッジが払いのけられるものです。払いのけは信頼を削るからです。この二つを分けているのは、ほとんどが ちょうどいい時刻に声をかけてもらうことです。
これを1日の通知数と並べて描くと、形ははっきりしていました。1日の通知が多いほど、払いのけも増えます。少ないほどやり切りは良くなり、少なくしすぎると、今度は本物の期限がすり抜け始めました。1日に数件というあたりが、ちょうど良い場所でした。
途中で仕組みから抜いたものを、いくつか具体的に挙げます。
朝のまとめ。 初期の版は、毎朝「今日はこうなっています」という通知を送っていました。役に立ちそうに聞こえます。実際には、人はその通知を無視しました。機能は残し、プッシュではなくアプリのホーム画面に移しました。中身は同じ。通知としての負担はゼロです。
連続記録の通知。 「5件連続で完了しました!」は、3日ほどは祝われている感じがして、そのあとはずっとうるさい種類の通知です。削除。
提案の通知。 「このタスクを先延ばしにしていますね。小さく分けますか」。意図は良く、タイミングは悪い。これは今、タスクの詳細画面に控えめなカードとして置いてあります。もうそのタスクを見ているときに目に入るので、提案が歓迎される場面です。
自動の組み直しの知らせ。 Nudge のプランナーがタスクを別の日に動かすと、以前は通知を送っていました。使う人はこれを分かりにくく感じ、少し不安にもなりました。今はプランナーが静かに仕事をし、変更はホーム画面に表示します。
どれも同じ形をしています。情報は今も手に入りますが、押しつけるほうから、取りに行くほうへ移りました。プッシュ通知は、その人の注意に対する請求です。今すぐ動く必要があるものだけに取っておくべきです。
似たものを作っている人のために、実装のメモをいくつか。
ナッジのスケジューラーは Celery を使い、ETA 指定のタスクで時刻を細かく合わせ、後ろに Redis のキューと Postgres の記録があります。ナッジには出どころの項目(AI_INFERRED か USER_EXPLICIT か)があり、どこまで強く取り消したり動かしたりしてよいかを、そこで決めます。本人が明示したリマインダーを、数が多いからという理由で自動で取り消すことはありません。このルールが信頼を保ちます。母親の誕生日にリマインダーを置いたなら、モデルが何を考えていようと届けます。 やるまで消えないリマインダーの裏にあるのと同じ約束です。
順位づけと取り消しの処理は、1人につき1日1回動くプランナーの中にあります。古くなった AI 推定のナッジは取り消せますし(1回につき最大50件)、新しいものを入れ直せます。本人が頼んだものには触れられません。この線引きは、順位づけのモデルより大事です。
Nudge を人に説明すると、いちばん多い反応は、AI がそれ以上のことをしないことへの驚きです。毎日のコーチングはどこか。なぜ生産性を分析しないのか。励ましを送れないのか。
短く答えると、できます。そして、やるとプロダクトは悪くなります。注意は限りある予算です。通知はどれも引き出しです。AI の生産性の道具の多くは数で押します。最初の何回かを、アプリが手放せなくなる未来への預け入れとして受け取ってもらえる、と期待して。実際には、人はそれを、アプリを黙らせる理由として受け取ります。
黙るべきときがわかる AI を作るのは、言うことがたくさんある AI を作るより地味です。それでも私たちの経験では、これが2週目を過ぎても使い続けてもらえる理由です。とくに、 タスク管理が嫌いな人のためのタスク管理を探して来た人にとっては。
Nudge は、少なくて時刻の合ったナッジのほうが、多くて少しずれたナッジより効く、という前提の上に作られています。iPhone とウェブで無料。