概要
利用している技術
Flutter / Dart、Riverpod。バックエンドは Firebase(Firestore・Cloud Functions[TypeScript]・Authentication・Cloud Messaging・Analytics)。地図は Google Maps SDK(ネイティブ)、店舗データは Places API をサーバー側で定期クロール。天気は Open-Meteo。課金は RevenueCat、広告は AdMob。
予測エンジンは生成AIではなく決定的な統計計算です。ジャンル別ベースラインに時間帯・曜日・天気・祝日の係数を掛け、直近の実測報告の中央値と鮮度で重み付けブレンドしています。外れ値はハードリミット・MAD・連投除去・相互チェックの4層で除外。
APIキーはクライアントに一切持たせず、外部APIはすべて Cloud Functions 経由です。
サービスのPR点
一番こだわったのは「自信のなさを隠さない」ことです。予測には必ず信頼度バーを表示し、根拠が薄いときは薄いと出します。数字だけ堂々と出すほうが見栄えはいいのですが、予測アプリは一度大きく外すと信用が戻りません。当たることより先に、信じてもらえることを取りました。
コールドスタート対策として、報告ゼロの店でもジャンル別ベースライン+有名店の店固有シードで初日から目安を出しています。「データが集まるまで使えない」を避ける設計です。
Google Places の規約上キャッシュできない評価値は保存せず、クロール時に派生値(ランク・人気係数)へ変換して生値は破棄しています。
今後の追加機能など
対応エリアの拡大。現在は東京都心のみですが、クロール範囲×頻度が維持費の唯一の変数なので、エリア別のクロール階層(週次/月次/四半期)と予算連動の自動停止をセットで入れてから広げる予定です。
予測精度の公開。予測値と実際の報告値を対で保存しているので、その乖離をそのまま公開したいと考えています。外している部分も含めて出すのが、予測アプリにできる一番誠実な宣伝だと思っています。
係数のデータ駆動化。現在の係数は手で設定していますが、予測と結果の対が十分に貯まれば推定値に置き換えられます。
フィードバック募集
開発報告
開発者からのリリース報告などのコメントです
過去7日間のツイートを表示します
コメント
サービスの利用者などからのフィードバックコメントです