Processed / UPF Food Scanner Flutter AOT 深挖

基于 APK 静态报告和 blutter Flutter AOT 输出,恢复产品链路、接口面、扫码/图像识别实现线索、可复刻 MVP 和静态 stop point。未进行真机、MITM、账号登录或购买沙盒验证。

Package: com.processedapp.processed Version: 2.7.4 Engine: Flutter 日期: 2026-06-10 敏感值: redacted / 不记录

主判断

价值链是“扫食品 -> 判 UPF/NOVA -> 历史/日记 -> premium”

新用户先经历问卷、UPF 教育和相机权限,再进入条码扫描、配料表拍照、餐食拍照或搜索。结果页围绕 processed level、NOVA 解释、配料/添加剂原因和分享传播构建。

技术边界

本地强在条码和相机,核心评分更像远端

CameraX、mobile_scanner、MLKit barcode、libbarhopper 和 tflite barcode 模型证明本地条码识别;配料 OCR、餐食识别、processed score 和 NOVA 分类没有恢复出完整本地规则,更像后端服务。

证据入口

1. 产品方案和核心页面

Onboarding问卷、UPF 教育、join movement、免责声明
权限请求相机,用于 barcode 和 label scanning
扫描条码、配料表、餐食拍照、手动搜索
分析后端返回 processed level / NOVA / ingredients
留存Recent Scans、My List、Diary、Articles
付费RevenueCat paywall,卖 unlimited scans & meal captures
Route / 页面证据关键词产品含义
/onboardingQuestionScreenquestions/:questionIndex收集吃后感受、是否看配料、想改善什么。
/onboarding/join-movementJoinMovementScreenactiveUsers社群/运动式信任构建。
/homeRecentScansSectionRecentArticlesSectionHomeStats扫描历史、内容教育、统计聚合。
/scan / /scan/cameraScan BarcodeScan IngredientsUnifiedCameraService统一扫描入口,切换条码/配料/餐食模式。
/scan/resultScanResultScreenProcessingTypeNOVA食品详情和评分结果。
/scan/add-meal / /scan/meal-resultsMealServiceclassificationportion餐食拍照、补充问题、结果和日记。
/scans / /diaryAllScansMy ListMealLogsProvider历史、收藏/购物清单、饮食日记。
/profile / /settingsGet PremiumrestorePurchasesDelete Account订阅恢复、会员状态、账号删除。

首次价值和 paywall 判断

首次价值:静态字符串显示 Start ScanningSkip and Start ScanningLaunching camera on first home screen visit,说明新用户路径偏向先获得一次扫描结果。

付费包装:Upgrade to PremiumUnlimited food scans & meal captures、RevenueCat paywall/customer center 说明订阅卖点围绕扫描次数、餐食拍照和会员状态。

2. 接口、host、Firebase 和 SDK

后端 API

主 API base URL:https://api.processedapp.com/api/v2。认证线索包括 Firebase ID token 的 Authorization header 和 x-api-key header 名称;本报告不记录任何值。

API 面证据关键词能确认的能力静态边界
/scanning/barcodeBarcodeService、barcode request body条码上送后端,返回食品扫描结果。数据库来源和评分公式未知。
/scanning/product/{barcode}/scanning/product/scanRecorded按 barcode 拉详情并记录扫描。path 拼接和缓存策略需动态确认。
/scanning/manualingredientsImage、base64 image配料表图像/文本分析。OCR/LLM/规则引擎 vendor 未知。
/meals/initinitMealsessionId餐食图片分析初始化。服务端处理队列和模型未知。
/meals/analyzeanswersclassificationportion结合补充问题生成餐食结果。权重、阈值和置信度未知。
/meals/logsstartDateendDate食品日记和历史。分页/一致性细节未知。
/listMy Listbarcodes收藏/购物清单同步。exact method 和幂等语义需动态确认。
/premium/verifyRevenueCat sync、premium reconciliation会员状态服务端校验。entitlement id 和价格未知。
/feedbackstarsimprovementsmore应用内反馈。后端流向未知。
/accountdelete account、reauthenticate删除账号。服务端删除范围和 SLA 未知。

外部内容和数据源

Host / URL证据关键词用途判断
processedapp.com/wp-json/wp/v2/postsArticleServicecached_articles_v1WordPress 文章内容,支撑教育和 SEO。
processedapp.com/processing-classifications/结果页/分享链接NOVA/processing 分类解释。
world.openfoodfacts.org/cgi/search.plsearch_termsstates_tagsingredients_text食品搜索候选和公开食品库补充。

Firebase、Remote Config、订阅和埋点

Firebase

可确认 Auth、匿名登录、Google 登录、Firebase ID token、Realtime Database appConfig/activeUsers.json、Crashlytics、sessions/datatransport。

Remote Config

字段线索有 update_requirementmin_build_numberlatest_build_number,用于 optional/required update modal。

RevenueCat

manifest 和 Dart 侧均有 RevenueCat paywall/customer center、CustomerInfoOfferings、restore purchases 和服务端 /premium/verify

Firestore 边界:只看到 Firestore timestamp 兼容解析线索,未看到足以证明客户端直连 cloud_firestore 的强证据。

广告/归因边界:只见 ads identifier 类间接依赖,未看到 AdMob placement、AppsFlyer、Adjust、Branch、Facebook、PostHog、Amplitude 或 Mixpanel 的强证据。

3. 扫码、图像识别、食品库和评分

本地可确认

  • CameraX / camera plugin:相机采集。
  • mobile_scanner channels:条码事件和方向。
  • MLKit barcode:组件发现服务、初始化 provider、barcode properties。
  • native/model:libbarhopper_v3.solibimage_processing_util_jni.so、barcode tflite 模型。

更像远端

  • 配料图像:/scanning/manual + ingredientsImage
  • 餐食图片:/meals/init -> sessionId -> /meals/analyze
  • 评分和分类:classificationprocessedLevelwarnings 由 API 返回。

食品库和评分字段

对象/字段静态证据判断
ProcessingTypewholeFoodminimalprocessedultraProcessed客户端有 NOVA 1-4 风格展示模型。
MealResultclassificationprocessedLevelmainIngredientportionwarnings餐食结果结构清晰,但计算过程不在客户端完整暴露。
HomeStatsscoreaverageScorebreakdownlast30Days有留存/进度统计表达。
Open Food Factsproduct_nameingredients_textstates_tagscode公开库用于搜索/候选,正式评分仍需后端确认。

4. 可复刻低垂果实和 MVP

P0 首次价值

相机 + MLKit barcode + Open Food Facts + 简单 UPF 规则,扫一次即返回 NOVA 1-4、命中原因、低风险替代建议。

P0 配料兜底

条码缺失时上传配料表图片到后端,用 OCR/vision 提取 ingredients;unknown 时明确标注不确定,不伪装确定性。

P1 付费验证

第 2-3 次扫描后触发 paywall,卖 unlimited scans、meal captures、history sync、diary stats 和 deep ingredient explanation。

合规和信任 guardrail

5. 静态 stop point

不能静态证明

  • 真实 payload/response schema、错误码、quota 和服务端 premium gate。
  • OCR/图像识别 vendor 和食品评分公式。
  • RevenueCat entitlement id、价格、免费扫描次数和 paywall 触发时机。
  • Remote Config 线上值、A/B 测试和隐藏 feature flag。
  • 业务埋点事件名和漏斗数据。

补证计划

  1. 真机 + MITM 跑 onboarding、条码、配料、餐食、搜索、收藏、日记、删除账户。
  2. blutter_frida.js hook ApiServiceBarcodeServiceMealServiceRevenueCatService
  3. 匿名、Google 登录、订阅沙盒、取消订阅四状态验证 premium gate。
  4. 用有库/无库条码、清晰/模糊配料、混合餐食样本测试 fallback。