Show HN:CheapFoodMap——一张 10 美元以下好饭地图
文章摘要
作者 jaep1 的自述带着相当直接的个人处境:他在同一家公司干了 18 年后被裁,于是给自己定了 100 天,公开地做点有用的东西。CheapFoodMap 就是产物——一张众包的 10 美元以下餐食地图,明确排除连锁品牌,只收本地好馆子。
灵感来自韩国的「거지맵」(乞丐地图),一个学生们用来找便宜吃食的众包地图。上线时覆盖以德州最密(作者住在达拉斯),但已经有 15 个美国城市、1200 份餐食。种子数据的来源是 Google 评论中 4.2 星以上、评论数至少 500 条的店,并逐条核实单品价格在 10 美元以下。他在帖子里点名求两类反馈:价格新鲜度模型是否说得通,以及什么才能让人信任这类网站上的价格——因为通胀让餐饮涨价变得非常频繁,他想知道怎么激励用户来更新价格。
站点的 About 页把定位写得更明白:这是一场对抗通胀的小型运动。15 美元的三明治、9 美元的咖啡、名不副实的「超值套餐」,CheapFoodMap 面向的是既爱好吃又爱好价的人。它承诺至少 10% 的利润捐给流浪者供餐项目和食物银行,并会发布带确切数字的季度报告——作者强调这条承诺从第一天就写进去了。参与方式是三件事:放一个点、给别人的点投票、分享给受够了 15 美元三明治的朋友。产品侧有排行榜和「橡果」积分的游戏化机制,吉祥物是一只花栗鼠 Chip。
技术栈方面作者在评论里交代得很清楚:Next.js + TypeScript + Tailwind,部署在 Vercel,地图和门店数据用 Google Maps API(贵,但他认为最成熟、用户最熟悉),种子数据是用 Google API 和 Yelp API 拉取高分餐厅后,再用 Claude API 对每条列表和菜单做两轮审阅。设计上他的四条心得是:Tailwind 配一个刻意收窄的调色板(一个强调色、近系统字体、其余全用默认);吉祥物能掩盖大量设计瑕疵;用 Claude Code 在紧密循环里迭代 UI——描述哪里不对、看渲染、再调,他的工作是判断结果而不是推像素;以及对工具类应用,原创布局是负债,直接抄你已经喜欢的应用,用户要的是熟悉感。
需要说明的是,本文的原文部分主要基于站点 About 页面和作者在 HN 上的自述——CheapFoodMap 主体是一个客户端渲染的地图应用,直接抓取只能拿到框架,没有可读的正文内容。
HN 评论精华
帖子拿到 287 分。作者几乎回复了每一条评论,整个讨论区实际上变成了一场高强度的公开产品评审,作者当场改了服务器配置、加了功能、记了一整周的待办。
最核心的批评:什么算「一顿饭」
-
mft_ 开了第一枪:随机看了下旧金山,发现不少条目并不是「餐」而是零食——8 美元两个春卷、5.53 美元一片披萨。而且一美元一片披萨的年代虽然过去了,5.33 美元一片也只能算中位数,谈不上便宜。他建议至少加个关于分量的指引或筛选。mkw5053 补刀:他办公室附近那些条目没一个算得上一顿饭,而且他真心怀疑旧金山还存不存在 10 美元的一餐。作者坦率承认:旧金山的数据是他从公开菜单里播的种,确实混进了零食;带「Posted on」的是种子数据,带「Price verified」的才是真人确认过的,但餐 vs 零食这条线必须变成规则,这周就修剪非餐条目并补上提交指引。
-
wenc 把问题拆得最细:纽约很多休闲餐厅只点开胃菜就能压到 10 美元以下;唐人街凑几样小食平均单价很容易低于 10;更麻烦的是按重量计价的地方——Whole Foods 的沙拉吧 12.99 美元一磅,你只要拿 0.76 磅以内就「合规」,那样全美国每一家 Whole Foods 都会变成便宜餐点,地图直接饱和。
-
stbede 提出了另一个维度:10 美元在不同地方不是同一个 10 美元,有些地方 10 美元已经算贵,建议加更低价位的筛选;反过来,现在连快餐套餐都常常超过 10 美元,那些真正实惠的连锁套餐反而值得标出来。他也强调:如果有人报「本地餐车 6.99 美元一个街边 taco」,那意味着一顿饭其实要 20 美元。
最有价值的商业模式建议:GasBuddy 类比
-
jawns 提出了整条讨论里被作者最看重的一条:这感觉像是食物版 GasBuddy。GasBuddy 之所以起飞,关键在于它不只靠社区上报——加油站自身有动力准确上报并保持更新。而你现在似乎在主动劝阻商家参与(比如不接受赞助位),这会影响增长速度。他建议想办法给商家一个积极角色,同时又不侵蚀用户信任:商家可以给自己的条目加优惠券(让便宜更便宜)、可以确认一条被上报的优惠(增加可信度)、可以提供完整菜单和外带下单链接。作者说这可能是最可持续的价格更新方式,会去研究 GasBuddy 的数据链路做对标。
-
tantalor 提出了反驳:GasBuddy 有个标准单位——每加仑价格;而这只是一张低价单品的地图,便宜三明治、汤、披萨片、taco 到处都有,没有对应的「加仑」作为比较基准。9x39 补了一个候选单位:卡路里。虽然不总是健康指标,但仍是信号——家做、Costco、Chipotle、快休闲、正餐、冷冻餐之间的每卡路里成本差异是有意义的。作者立刻表示这是个新项目(「我被裁了,我有时间」)。ant6n 认为单位应该就是「一顿饭」,但随即抛出一串难题:含饮料吗?只在午餐供应算不算?小费怎么算?
-
gffrd 给了最完整的一段战略建议:价格作为锚点很难,因为食物不是均质商品——5 美元的寿司在一家可能是差价,在另一家可能是好价;8 美元的牛排很便宜,8 美元的热狗是敲竹杠。他同时给了一个乐观视角:宜家是围绕目标客户认为一张桌子该值多少钱来设计家具的,餐厅大概率也清楚这些价格阈值在哪,而这个站点可能成为一条把不同类型客源导向他们的通道。核心建议:把餐厅拉进来,他们不是你的对手。作者回应了自己的愿景——希望这能变成某种对抗通胀和「小费膨胀」的运动:如果足够多的人重视实惠价格并真的去光顾提供好价的餐厅,更多餐厅就会推出午市特价和周度促销,顾客和餐厅双赢;他还提到 About 页里另一个梦想,是如果真赚到钱就把网站转成非营利。
改名之争
这条支线意外地长。Waterluvian 指出「cheap food」这个名字会劝退商家,连「budget food」都更容易接受。作者说这正是他最大的顾虑,已经和几位老板聊过,负面联想让他们不太愿意上榜;他考虑过 under10、dimedrop、Fooglemap,但 Fooglemap 太像 Google Maps,一旦做大就有律师函风险。于是评论区变成了一场取名大会:MealOnADime、Dine n’ Save、mealdeal.com(已被注册)、Munch4Less、LunchBuddy(又被指出会撞 GasBuddy)、valuefoodie、FoodMiser、Food4thecheap……作者一边试 namecheap 一边回复,自曝已经买了大约十个域名。ohbleek 和 commandrea 则站在原名一边:cheapfoodmap 挺好,那些因为这个词却步的商家才是傻——能让需要一顿实惠好饭的人吃饱是一种荣幸,他们应该为能给社区提供这份福气而骄傲。toader 补充语言学观察:在美国口语里 cheap 大多数时候被当作 inexpensive 用,理解为低价而非低质。
冷启动与数据质量
-
ssl-3 和 astura 都指出「500 条以上评论」的门槛把小地方全排除了:俄亥俄小镇上 4.2 分以上的店很好找,500 条以上评论的很难找,即便是开了很久的老店;astura 说自己所在区域抽查下来只有两家 70 年代开到现在的店超过 500 条。作者澄清这只是他自己播种子数据时的硬门槛,用户提交没有限制。
-
anticorporate 发现了一个真实的数据盲区:本地最好的便宜食物往往开在多功能商铺里——加油站或杂货店里带一个很棒的 taqueria 或面包房,有独立入口和用餐区,但没有独立的 Google 商户条目。gnopgnip 也报了同样的问题(萨克拉门托的 Corti Bros 是杂货店里的三明治和熟食铺)。作者表示会改逻辑放开杂货店。
-
murphyslab 提了一个作者没想到的对抗性风险:商家有动机伪装成用户谎报竞争对手的价格——他本地的 Costco 加油站就常年有一批用户把油价报得比实际高几美分,看上去是为了阻止消费者去那里。作者表示已有数据校验和新用户更新次数限制,但确实该提前设更健康的边界。
发布日的真实场景
评论区完整记录了一次 Show HN 上首页的实况:sshanky 和 chirau 报站点打不开,作者当场升级了服务器和 Google API 配额;mncharity 提交了一份非常细致的 UX 报告(点击附近餐厅列表项后地图毫无反应、聚合标记不显示选中态、卡片上每一行都写着「New York, NY」这种无用信息),作者连声道谢;throwup238 报告从餐厅页返回时地图视口不还原,会被甩回德州。作者在一条回复里写道,被裁后做了三个月,这是第一次真正获得关注,过去 24 小时让他充满感激。
国际化的呼声压倒性
欧盟、加拿大、澳大利亚、德国、新西兰、以色列、斯洛文尼亚的用户都在要求支持,作者一开始只回「会努力」,几小时后在某些回复里已经变成「现在支持了」。chrysoprace 给了两条具体建议:用户拒绝定位授权时可以按 IP 做粗略地理定位来居中地图;以及可以按购买力平价来换算「10 美元档」在当地货币中的等价物。smnplk 的评论则是最直白的抱怨:这对欧洲毫无用处,什么都加不了。
几条跑题但有意思的
-
Theodores 从「美国食物」发起了一段火力全开的批评,认为很多美国人当作食物的东西在旧大陆根本不算食物,因此真正有用的是一张「真实食物地图」。作者顺势接住,说这给了他一个新点子:RealFoodMap 或按健康/营养评分的地图;同时也承认在美国沙拉和蔬菜通常比汉堡披萨更贵,而他自己出国旅行时总是被亚洲和欧洲国家的性价比震撼。
-
BrandoElFollito 说他到美国才学到,标价 10 美元的一餐实际是 10 美元加上一笔随机的税再加小费等于 20 美元。作者说小费从前大约 15%,现在默认接近 20%,「我们管这叫 tipflation」,站点已经加了小费加税的计算。jerlam 补充说这取决于业态:有人带位、点单、上菜、后付的正餐需要给小费,柜台点单自取的不需要;他还指出更糟的是餐厅现在流行加各种莫名其妙的服务费而不是直接提价。
-
satvikpendem 推荐了 Too Good To Go,把餐厅当天没卖完的食物低价打包(据称 8 美元的包要值 24 美元零售价),作者一开始还以为那是家餐厅。
-
the_real_cher 开玩笑说披萨炸鸡这些都不健康,应该把未来心脏搭桥手术的费用一起算进便宜餐里;作者回敬:「6.99 美元的话,可能还是值的。」