公司
AI Toolbox
创始人
Adi Leviim
收入
每月超过1万美元
Adi Leviim发现问题后,通过分析论坛和评论验证了解决方案。随后,他与联合创始人一起辞职。
不到两年时间,AI Toolbox 实现了五位数月经常性收入,并拥有超过3.5万名用户。
以下是Adi分享的成功经验。 👇
目录
解决自身痛点
我是Adi Leviim,一名拥有7年以上产品构建经验的全栈开发者。我与Mohammad El-Esawi共同创立了Infi Developments。我们两人有大约12年的SaaS交付经验,工作分工明确:我负责产品开发、前端架构和AI集成,而Mohammad负责后端架构、算法和大型语言模型系统。两个人,没有委员会。这使得我们能在用户报告问题的当天就发布修复方案。
2024年年中,我们两人每天都使用ChatGPT进行编码、研究、写作和头脑风暴。几个月后,我们各自都有了数百次对话记录,却无法在其中找到任何内容。没有文件夹。无法在自己的消息中搜索。无法导出或批量管理。我们都滚动侧边栏,寻找已知存在的聊天记录。
因此,我们构建了自己想要的东西:AI Toolbox,一个浏览器扩展程序,它增加了嵌套文件夹、跨所有消息的全文搜索、书签、提示库和批量导出功能。最初它只支持ChatGPT,但现在它支持Gemini、Claude和Grok。
我最引以为豪的功能是没有人要求过的:同时跨四个平台进行搜索。它运行在您自己设备上的索引中,永远不会触及我们的服务器。没有AI公司会推出这个功能,因为构建它意味着要索引他们竞争对手的数据。这用一句话概括了我们公司的全部理念。
我们于2024年9月在Chrome网上应用店发布。不到两年时间,我们已在150多个国家拥有超过3.5万名活跃用户,获得了4.5/5的评分、Google的精选徽章以及五位数月经常性收入。
验证想法并辞职
两个开发者对某事感到不满并不构成市场需求,因此我们在开始构建之前先寻找其他人的抱怨。具体来说,我们去人们自发抱怨的地方:Reddit和OpenAI的官方社区论坛。这与询问人们想要什么完全不同。没有人会为轻微的不便写论坛帖子。
我们发现同样的几个痛点反复出现,并以他人的语言表达:我找不到旧聊天记录、没有文件夹、我无法搜索自己实际写的内容、我无法导出数据。这些抱怨几乎逐字逐句地成为了我们的第一个功能列表。我们不是在猜测要构建什么;我们是在转录用户需求。
这使得决策变得容易,而且这不是一个小决定。Mohammad和我在同一家创业公司全职共事。我们在那里相识,这也是我们之所以知道自己能够一起构建的原因。一旦有了这个想法,我们没有试图将其挤进夜晚和周末的时间。我们辞去了工作,全力投入AI Toolbox。
花费32美元和两周时间发布1.0版本
初始构建花费了我们32美元,耗时两周。这不是玩笑或近似数字:27美元用于运行后端的虚拟机,5美元用于Chrome网上应用店开发者费用。这就是公司的全部资金成本。没有代理机构,没有承包商,没有投资,没有广告支出。只有我们两人和我们自己的时间。
第一个版本只做了一件事:搜索您的聊天历史。仅此而已。没有文件夹,没有导出,没有今天产品的任何功能。我们浏览了那些论坛上的抱怨,选择了最尖锐的一个,并且只构建了它。发布两周后,我们推出了批量操作功能,允许您选择一堆聊天记录并删除或归档,因为人们不断要求这个功能。我们现在有超过35个功能,几乎第一个功能之后的每个功能都是以类似方式出现的:客户提出了要求。如今人们最依赖的两个功能——批量导出和“//”提示快捷键——在最初版本中根本就不存在。

架构决策
该扩展使用TypeScript,没有UI框架(没有React、Vue或其他)。这是刻意的选择,而非懒惰:内容脚本是他人DOM中的访客。我们发送的每一个千字节都会增加用户的页面加载时间,将框架的运行时拉入我们不拥有的页面是与宿主应用对抗并失败的好方法。我们使用纯TypeScript和直接的DOM操作,通过webpack打包,使用esbuild-loader提高速度,并使用Terser保持体积小巧。必须在宿主页面中保持无懈可击的UI会渲染到影子DOM中,确保他们的样式和我们的样式不会冲突。
Chrome的Manifest V3对我们的架构影响比任何框架决策都大。有两个突出的限制。首先,服务工作者可能随时被杀死,因此任何内容都不能驻留在内存中并期望持久化。一切要么是无状态的,要么是数据库支持的,并且每个操作都必须能够安全地重复执行。其次,这一点经常让人困扰:MV3内容脚本无法在运行时加载JS块。代码拆分会静默失败。这不是构建错误或可捕获的异常;它只是生产环境中无法工作的功能。因此,我们提供一个急切加载的包,并将包大小视为真正的预算,而不是打包工具为我们解决的问题。
后端故意设计得很简单,我这么说是一种赞扬。我们使用TypeScript的Node和Express、MongoDB和用于速率限制的Redis,所有这些都运行在单个Ubuntu虚拟机上,后面有Nginx,PM2保持进程存活。就这些。没有Kubernetes,没有微服务,没有任何托管服务。数据库位于同一台机器上,这听起来有些过时,但直到你意识到这意味着数据库根本不暴露在互联网上。我们对存储的所有静态数据进行加密。我们存储的只是组织层:文件夹名称、标签、保存的提示。唯一真正的机制是PDF导出,它通过服务器上的无头Chrome运行——对话在生成时渲染,之后不保留任何内容。当你的用户使用希伯来语、阿拉伯语、日语和中文时,在客户端正确实现排版和完整Unicode是一场打不赢的仗。
我在最初几周最坚决捍卫的决定是在本地索引上运行搜索。每个对话都缓存在你自己浏览器的IndexedDB中,搜索在那里运行,而不是在我们的服务器上。我们选择它是出于隐私考虑,因为我们对保存他人的对话历史感到不安,而这被证明是最好的产品决策。搜索是即时的,批量导出五十个聊天记录不会产生额外的API调用费用,两年后,这也是我们能够构建跨平台搜索的唯一原因。
为不断变化的目标而构建
真正的挑战从来不是功能,而是我们所构建的底层平台。ChatGPT没有用于你自己对话的公共API。没有文档化的“列出我的聊天记录”端点,没有授权的方式来读取你自己的历史记录,没有我们的工具可以插入的任何东西。因此,整个产品运行在Web应用使用的相同未文档化端点上,位于注入到我们不拥有且无法预测的页面中的扩展程序内。OpenAI随时会发布UI更改,并且对我们没有任何义务。
这是一个真实的例子。Gemini重新设计了他们的侧边栏。我们有一个选择器会隐藏Gemini自己的搜索结果,同时显示我们的结果。重新设计后,那个选择器匹配了不同的元素:侧边栏自己的最近聊天列表。因此,我们的CSS隐藏了用户的整个聊天历史。数据是完全安全的;它只是不可见,当用户打开应用发现聊天记录消失时,没人关心这个区别。需要明确的是,这是我们的错误,而不是Google的。我们在不拥有的页面上使用了一个全局选择器。他们的重新设计并没有破坏我们,而是发现了我们早已发布的脆弱性。
这个限制塑造了之后每一个决策:假设基础在移动,为他们UI中的每个锚点构建多个备用方案,绝不让一个选择器变化导致产品瘫痪。
借鉴游戏设计理念
我们借鉴游戏的设计。不是美学,而是机制。游戏已经花了几十年解决生产力工具非常不擅长的一个问题:让某人明天还想回来。连续签到、进度、小里程碑、感觉某件事物是“你的”因为你已经建立起来。如果你正确理解,文件夹树正是如此。
大多数生产力软件将习惯视为用户的责任,而游戏将其视为设计师的责任。我们认真对待这一点,并且这些方面的工作尚未公开。
逐步调整商业模式
在前三个月,该扩展完全免费。不是免费增值模式,也不是试用。完全免费。我们只有一个功能且没有声誉,没有用户就无法获得反馈。那段时间给了我们两样需要的东西:日常用户和一个告诉我们下一步该构建什么的社区。我们在第一年交付的几乎所有东西都来自那个时期。
然后,我们推出了免费增值模式:带限制的免费层以及按月或终身订阅的Premium计划,运行在Lemon Squeezy上。免费层不是一个残缺的演示。它本身确实有用,这一点很重要,因为大多数付费用户最初都是免费用户,他们在实际工作中遇到了障碍,而不是被推销后转化的。
当我们转向跨平台时,两件事发生了变化。我们将计费转移到Polar,并添加了只有在使用四个网站时才有意义的计划:All Access,覆盖ChatGPT、Claude、Gemini和Grok,以及针对团队的基于座位的层级。这就是增长所在。为ChatGPT购买的用户开始使用Claude时,有一个明显的下一步;这是他们已经信任的同一产品。我们每增加一个平台,All Access的价值就会增加,而我们的构建成本不变,因为功能是共享模块,每个平台只是一个薄适配层。
我们一开始定价过低,我仍然认为那是正确的。早期,我们只有少数几个功能,所以我们按只有几个功能的产品来定价。随着产品的发展,我们提高了价格,因为今天你购买的产品已经不是我们在2024年销售的那个了。
人们不相信我们的支出。我们的基础设施账单是每月40美元的虚拟机。发布时是27美元,我们升级到了更强的版本;那次升级代表了我们全部的基础设施支出历史。唯一其他的运营成本是Polar从每次销售中抽取的分成,以及每月约5美元的OpenAI API使用费,用于需要一个API的功能:我们在用户提出请求时,为上下文注入而总结对话,并且我们不存储它。我们特意在最便宜的纳米级模型上运行它。两个人,一台虚拟机,每月45美元,实现了五位数月经常性收入。我们从未融资,所以从未需要增长到覆盖烧钱率。这意味着我们可以以十年为周期做决策,而不是看现有时长。
将支持作为增长渠道
我们从未有过增长策略。没有广告,没有增长黑客,没有转化漏斗。我很想否认,但那会是谎言。
我们最接近发布策略的是免费提供。那三个月让我们有了一个告诉我们该构建什么的社区,我们在第一年交付的几乎所有东西都来自那个时期。
之后,Chrome网上应用店完成了大部分工作,我们花了一些时间才理解原因。应用商店是一个搜索引擎,它根据评分和安装量排名。这意味着促进我们增长的不是营销:而是交付人们要求的功能。这让他们留下,给予好评,帮助我们排名,从而让更多人找到我们。Google的精选徽章是同一循环的结果,现在它驱动了我们相当一部分流量。这就是整个飞轮效应。当有人通过电子邮件向我们投诉,而我们当周就修复时,我们认为这就是我们的增长渠道,而不仅仅是支持。
我们确实有一个自有渠道:我们的子版块r/chatgpttoolbox现在有2万名成员。这就是租用注意力和拥有注意力之间的区别。当我们发布一个功能时,提出要求的人当天就会知道,我们不必为这个特权付费。
除此之外:
-
我们在高级用户已经聚集的地方发帖,主要是Reddit和Facebook群组——只有价值优先的方法才有效。我们发布一些完全独立且有用的内容,比如一个提示链,你可以复制、粘贴并在五分钟内获得价值。产品最多只是附带提及。以产品为主导的帖子只会失败,它们活该如此。
-
我们建立了自己的社区,而不是租用。r/chatgpttoolbox有2万名成员。这改变了交付的经济性:当功能发布时,提出要求的人当天就会知道,而我们不必为这个特权付费。
-
我们保持路线图公开,这带来的效果比听起来更多:提出功能请求的人会留下来看着它实现,而任何评估我们的人在十秒钟内就能看出我们不是废弃软件。
不寻常的建议
我显而易见的建议是发布一些小的东西并阅读你的支持收件箱。以下是一些我不常听到的建议:
-
无论如何,还是要建立在别人的平台上。 标准建议说不要这样做,因为一个API变更就可能扼杀你的产品。这个风险是真实的。但平台风险是一种税,而不是一堵墙。你获得了你永远无法负担的分发渠道。人们通过在拥有数亿用户的应用商店中搜索找到我们,而我们只花了5美元就进去了。支付这个税。在工程上假设基础在移动,假设每个锚点最终都会断裂,然后获得分发。
-
与已经一起交付过产品的人共同创业。 Mohammad和我在之前在同一家创业公司共事。这听起来很感性,但这是我们在开始之前消除的最大风险。我们已经知道对方在压力下如何工作,如何争论,如何处理错误。大多数联合创始人的分手不是战略分歧,而是在第八个月发现你无法和这个人一起构建。我们已经在别人的工资单上完成了那个实验。
-
成为客户,或者无限接近客户。 我们从未想象过是否有人想要这个,因为我们自己就想要它,并且连续几个月每天都能感受到这个问题。这消除了你最昂贵的错误:构建了一个很好但没人需要的产品。
-
无聊的基础设施是杠杆,而不是懒惰。 我们运行在一台虚拟机上。没有Kubernetes,没有微服务,扩展程序中没有框架。每月40美元。你花在让架构令人印象深刻上的每一个小时,都是没有花在用户真正付钱的事情上的一个小时。没有人因为我们的技术栈太简单而流失。
-
按现在的价值收费,之后再提价。 我们很长时间定价过低,而这是正确的。我们当时只有几个功能,所以按只有几个功能的产品收费。然后随着产品价值提升我们提高了价格,并且我们还在提高。错误不是一开始卖得便宜,而是当你已经赚了更多时,出于恐惧而继续卖得便宜。
下一步计划?
从现在开始,更多平台,更多功能,帮助更多人。但一个理念贯穿三者。
你的AI工作是分散的。你在ChatGPT、Claude、Gemini和Grok中有对话;它们彼此互不知晓,永远不会。每家公司在模型质量上竞争,没有理由去构建一个跨越其竞争对手的层。那个层就是我们公司的全部。我们已经可以同时搜索四个平台。AI Toolbox的目标是成为你AI工作所在的地方,无论你当天使用哪个模型。
因此,具体来说:我想增加更多大型语言模型。我们正在评估接下来支持Copilot和Perplexity。经济上的好处是——我们每增加一个平台,整个产品的价值就会增加,而我们的构建成本不会有显著变化,因为功能是共享模块,每个平台只是一个薄适配层。
我还想增加更多功能,它们将来自通常的来源。我没有五年的功能愿景,我怀疑声称有这一点的创始人。我们的路线图是公开的,其大部分内容来自他人的想法。
当然,我想获得更多用户,因为3.5万既是很多又是微不足道。每天使用ChatGPT的大多数人仍然有数百个他们再也找不到的对话,而且他们不知道有解决方案存在。这就是全部的工作。
你可以查看扩展程序,网站,我们的路线图,一个YouTube播放列表演示其工作原理,或者我们的子版块。
你也可以在LinkedIn和X上关注我。或者我的联合创始人Mohammad El-Esawi,在LinkedIn和Instagram上。
订阅