Project Scope · Internal Document

HS Design SaaS 平台 改造项目范围

把现有的 hsdesign.biz 报价单工具转型为面向马来西亚装修设计师的多租户 SaaS 平台。每位设计师获得独立子域名工作区、自定义品牌、共享基础设施。免费版含 Google Ads,付费版无广告。

版本 v1.0 状态 Scope Lock 待审 主域名 hsdesign.biz 目标市场 马来西亚装修设计师 架构 Cloudflare Pages + Workers + D1

愿景与背景

为什么从单一工具转型为多租户 SaaS

HS Design 已有面向单一品牌的报价单系统,部署在 hsdesign.biz(Cloudflare Pages + D1 数据库)。本次改造目标是把这个工具变成开放给所有装修设计师使用的 SaaS 平台,每位设计师都获得:

  • 独立的子域名工作区(如 designer1.hsdesign.biz
  • 可上传自家 logo、设置主题色的品牌页面
  • 独立的客户与报价单数据空间
  • 免费起步,付费升级(去除广告 + 解锁配额)

这次转型的战略意义

扩张
从工具到平台
从单店模式 → 行业基础设施,规模化获取设计师用户。
护城河
数据网络效应
越多设计师使用,越多报价数据,未来可训练 AI 助手。
变现
双轨收入
免费用户 → Google Ads;付费用户 → 订阅。降低获客门槛。
未来
扩展空间
可叠加项目管理、AI 装修助手等高价值模块。
TL;DR · 一分钟看完
  • 架构:Cloudflare Pages(前端)+ Workers(API + 子域名路由)+ D1(数据,按 tenant_id 隔离)+ R2(logo 等静态资产)。
  • 子域名:用 Cloudflare for SaaS / Workers 通配符路由,*.hsdesign.biz 全部走同一 Worker,用 Host header 解析 tenant。
  • 数据隔离:共享数据库 + tenant_id 列(Row-Level Tenancy),代码层强制注入。最快、最便宜、足够安全。
  • 定价:Free(100 份/月 + Google Ads)vs Pro(无限 + 无广告,约 RM 49/月 起)。
  • 模板:平台统一管理,租户不可改 — 简化运维、保证质量、便于未来批量升级。
  • 获客:SEO 长尾词 + 设计师社群 + 案例展示墙(病毒效应)+ 推荐返佣。Google Ads 主要做导出广告变现,对自身引流帮助有限。
  • MVP 时间:4–6 周可上线核心功能。
  • 未来:项目管理模块(v2)、AI 装修问答助手(v3)— 本文档已定义但不在 MVP 范围。

现有系统基线

改造前的资产盘点
资产当前状态改造影响
主域名hsdesign.biz → CNAME hsdesign-7ni.pages.dev保留为主站 + 营销门户;子域名归 SaaS 工作区
前端托管Cloudflare Pages(GitHub: JakeBilu/Landing-Page)继续用,新增 SaaS 工作区前端项目
API独立 Worker:hsdesign-d1-api.ida-czia.workers.dev扩展为多租户 API,加入鉴权 + tenant 解析
数据库D1:8d776216-e135-4c9f-b1bb-9669cb10bd85扩展 schema:新增 tenants、subscriptions、usage_quotas 等表
报价单模板已有标准化模板(HS Design 自用版本)抽象化为平台统一模板,注入租户品牌信息
用户系统无(单店模式无需登录)新建:设计师注册、登录、订阅管理
优势
Cloudflare 全栈已就绪,加上 Workers 通配符 + D1 多租户能力,不需要换基础设施就能完成 SaaS 转型。这是非常理想的起点。

SaaS 架构总图

所有请求的生命周期
                                 ┌──────────────────────────┐
   设计师A 的客户访问            │      Cloudflare DNS       │
   designer-a.hsdesign.biz ───►│  *.hsdesign.biz wildcard  │
   designer-b.hsdesign.biz     │  CNAME → SaaS Pages       │
                                └──────────┬───────────────┘
                                           │
                          ┌────────────────▼─────────────────┐
                          │   Cloudflare Pages (Frontend)    │
                          │   单一 React/Vue SPA             │
                          │   读取 location.host → 解析租户   │
                          │   GET /api/tenant?host=...       │
                          └────────────────┬─────────────────┘
                                           │
                          ┌────────────────▼─────────────────┐
                          │   Worker: hsdesign-saas-api      │
                          │   ┌──────────────────────────┐   │
                          │   │ 1. 解析 Host header      │   │
                          │   │ 2. 查询 tenants 表        │   │
                          │   │ 3. 注入 tenant_id 上下文   │   │
                          │   │ 4. 验证 JWT/session       │   │
                          │   │ 5. 检查配额 + 订阅状态    │   │
                          │   └──────────────────────────┘   │
                          └─┬───────────────┬───────────────┘
                            │               │
                  ┌─────────▼──┐     ┌──────▼────────┐
                  │   D1 DB    │     │   R2 Storage  │
                  │ tenants    │     │ logos/        │
                  │ users      │     │ exports/      │
                  │ quotations │     │ tenant-1/...  │
                  │ items      │     │ tenant-2/...  │
                  │ usage      │     └───────────────┘
                  └────────────┘

关键设计决策:

D1
单数据库 + 行级租户
所有租户共用一个 D1 实例,每张表带 tenant_id。低成本、易备份、易升级。
Workers
单 Worker 多租户
一个 Worker 处理所有子域名请求,从 Host header 解析租户后注入上下文。
Pages
单 SPA + 动态主题
前端不为每个租户单独构建,运行时获取品牌配置注入 CSS 变量。
R2
按租户分目录
logo、PDF 导出按 tenant_id/ 前缀存储,便于清理与归属。

子域名路由方案

如何让 *.hsdesign.biz 都通向同一应用

方案 A:Cloudflare for SaaS(推荐 · 长期)

Cloudflare 官方的多租户产品,专为子域名 SaaS 设计:

  • 免费用户也可以接入自定义域名(之后让付费用户绑定 quote.theirsite.com
  • SSL 证书自动签发与续期
  • 每月免费 100 个 Custom Hostname,超出 $0.10/个 — 对早期足够

方案 B:Workers 通配符路由(推荐 · MVP 阶段)

更简单的实现,MVP 阶段足够:

# wrangler.toml — 通配符路由配置
name = "hsdesign-saas-api"
routes = [
  { pattern = "*.hsdesign.biz/*", zone_name = "hsdesign.biz" },
  { pattern = "hsdesign.biz/api/*", zone_name = "hsdesign.biz" }
]

在 Worker 里解析子域名:

export default {
  async fetch(req, env) {
    const url = new URL(req.url);
    const host = req.headers.get('host'); // designer-a.hsdesign.biz
    const sub = host.split('.')[0];      // designer-a

    // 保留子域:app/www/admin/api
    if (['app','www','admin','api'].includes(sub)) {
      return handleSystemRoute(req, env, sub);
    }

    // 查 tenant
    const tenant = await env.DB.prepare(
      'SELECT * FROM tenants WHERE subdomain = ? AND status = ?'
    ).bind(sub, 'active').first();

    if (!tenant) return render404();

    // 把 tenant 注入到所有下游处理器
    return handleTenantRoute(req, env, tenant);
  }
}

DNS 配置

记录类型名称目标说明
CNAME*hsdesign-saas.pages.dev通配符指向 Pages
CNAME@hsdesign-7ni.pages.dev主站不变
CNAMEapphsdesign-saas.pages.dev设计师登录入口
CNAMEadminhsdesign-admin.pages.dev平台后台
陷阱
Cloudflare 通配符 SSL 证书需要 Cloudflare 代管 DNS(Orange Cloud 开启)。如果用 Universal SSL,*.hsdesign.biz 已自动覆盖。但如果未来要让付费用户绑自己的域名,必须用 SSL for SaaS(每域名收费)。

多租户数据隔离

三种模式对比,为什么选行级隔离
模式实现成本隔离强度适用阶段
独立数据库每租户一个 D1高(D1 上限/账户)★★★★★企业大客户
独立 Schema共享 D1,每租户独立表★★★★D1 不直接支持
行级隔离共享 D1,所有表带 tenant_id★★★(代码强制)MVP 与中期

强制注入 tenant_id 的关键代码模式

// ❌ 危险:直接 SQL 容易漏掉 tenant_id
db.prepare('SELECT * FROM quotations WHERE id = ?').bind(id);

// ✅ 安全:每个 query 都通过统一 helper
function scoped(db, tenantId) {
  return {
    quotations: {
      find: (id) => db.prepare(
        'SELECT * FROM quotations WHERE id=? AND tenant_id=?'
      ).bind(id, tenantId).first(),
      list: () => db.prepare(
        'SELECT * FROM quotations WHERE tenant_id=? ORDER BY created_at DESC'
      ).bind(tenantId).all(),
    }
  };
}
关键
多租户数据泄露是 SaaS 最严重的事故。要求:所有 D1 查询必须通过 scoped(db, tenantId) helper,禁止在业务代码里直接调 db.prepare。在 CI 里用静态扫描强制此规则。

品牌定制系统

让每个工作区看起来像设计师自己的产品

租户可定制的元素

元素存储位置注入方式限制
LogoR2: tenants/{id}/logo.pngAPI 返回 URL,前端 <img>≤ 500KB · PNG/SVG · 推荐 800x200
主题色 (Primary)D1: tenants.theme_primary注入到 --primary CSS 变量HEX 格式,需通过对比度检查
强调色 (Accent)D1: tenants.theme_accent注入到 --accent CSS 变量同上
公司名D1: tenants.company_name头部 + 报价单页眉≤ 60 字符
联系信息D1: tenants.contact_*报价单页脚电话、邮箱、地址
报价单签名R2: tenants/{id}/signature.png嵌入到 PDF 导出可选 · ≤ 200KB

动态主题注入示意

// 前端启动时
const tenant = await fetch('/api/tenant/current').then(r => r.json());

document.documentElement.style.setProperty('--primary', tenant.theme_primary);
document.documentElement.style.setProperty('--accent', tenant.theme_accent);
document.title = `${tenant.company_name} · 报价单`;

不可定制(明确划线)

  • 报价单模板版式 — 平台统一控制,便于批量升级
  • 表单字段结构 — 保证数据一致性,未来 AI 可分析
  • 导出 PDF 排版 — 全平台同一设计语言
  • 底部水印(免费版)— "Powered by HS Design" + 平台 logo
设计原则
模板的视觉风格由平台拥有,租户改的只是 logo + 配色。这条边界让产品保持统一审美,同时减少客服工单(不会有"我的模板坏了"问题)。

数据库设计

D1 schema 增量改造

新增核心表

-- 租户主表
CREATE TABLE tenants (
  id TEXT PRIMARY KEY,                -- ULID
  subdomain TEXT UNIQUE NOT NULL,       -- e.g. "designer-a"
  company_name TEXT NOT NULL,
  owner_email TEXT NOT NULL,
  theme_primary TEXT DEFAULT '#d4af37',
  theme_accent TEXT DEFAULT '#0a0a0a',
  logo_url TEXT,
  contact_phone TEXT,
  contact_address TEXT,
  plan TEXT DEFAULT 'free',           -- free | pro
  status TEXT DEFAULT 'active',        -- active | suspended | trial
  trial_ends_at DATETIME,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE UNIQUE INDEX idx_tenants_subdomain ON tenants(subdomain);

-- 用户表(设计师 + 团队成员,未来支持多人协作)
CREATE TABLE users (
  id TEXT PRIMARY KEY,
  tenant_id TEXT NOT NULL,
  email TEXT NOT NULL,
  password_hash TEXT,
  role TEXT DEFAULT 'owner',           -- owner | member
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (tenant_id) REFERENCES tenants(id)
);
CREATE UNIQUE INDEX idx_users_email ON users(tenant_id, email);

-- 订阅记录
CREATE TABLE subscriptions (
  id TEXT PRIMARY KEY,
  tenant_id TEXT NOT NULL,
  plan TEXT NOT NULL,                  -- pro_monthly | pro_yearly
  status TEXT NOT NULL,                -- active | canceled | past_due
  current_period_start DATETIME,
  current_period_end DATETIME,
  provider TEXT,                        -- stripe | iPay88 | manual
  provider_subscription_id TEXT,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

-- 用量配额(按月统计)
CREATE TABLE usage_monthly (
  tenant_id TEXT NOT NULL,
  year_month TEXT NOT NULL,             -- '2026-05'
  quotations_count INTEGER DEFAULT 0,
  pdf_exports_count INTEGER DEFAULT 0,
  storage_bytes INTEGER DEFAULT 0,
  PRIMARY KEY (tenant_id, year_month)
);

-- 报价单(改造现有表,新增 tenant_id)
ALTER TABLE quotations ADD COLUMN tenant_id TEXT NOT NULL DEFAULT 'legacy';
CREATE INDEX idx_quotations_tenant ON quotations(tenant_id, created_at DESC);

ALTER TABLE quotation_items ADD COLUMN tenant_id TEXT NOT NULL DEFAULT 'legacy';
CREATE INDEX idx_items_tenant ON quotation_items(tenant_id);

-- 客户表(设计师管理自己的客户)
CREATE TABLE customers (
  id TEXT PRIMARY KEY,
  tenant_id TEXT NOT NULL,
  name TEXT NOT NULL,
  phone TEXT,
  email TEXT,
  address TEXT,
  notes TEXT,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX idx_customers_tenant ON customers(tenant_id);

迁移现有数据

把 HS Design 自己的报价数据迁移为一个特殊租户:

INSERT INTO tenants (id, subdomain, company_name, owner_email, plan)
VALUES ('tnt_hsdesign', 'hs', 'HS Design', 'admin@hsdesign.biz', 'pro');

UPDATE quotations SET tenant_id = 'tnt_hsdesign' WHERE tenant_id = 'legacy';
UPDATE quotation_items SET tenant_id = 'tnt_hsdesign' WHERE tenant_id = 'legacy';

之后 HS Design 自己用 hs.hsdesign.biz 访问,与平台其他租户使用同一系统 — 这是吃自己的狗粮,最有效的质量保证手段。

定价与商业模式

免费 + Pro 双轨制
Free
免费版
RM 0/月
  • 每月 100 份报价单
  • 子域名工作区(name.hsdesign.biz
  • 自定义 logo + 主题色
  • PDF 导出(带平台水印)
  • Google AdSense 广告显示
  • 1 个用户席位
  • 无客户支持(仅文档与社群)
  • 无项目管理(v2)
  • 无 AI 助手(v3)

定价依据

  • RM 49/月 对马来西亚装修设计师属于"几顿饭钱",决策门槛低;同时高于 Notion (RM 35) 这类工具,体现专业属性。
  • 年付折扣 17%(RM 490 vs 588)— 提升留存,降低月度流失风险。
  • 100 份免费配额 可让大部分中小设计师"长期免费但顺便挂广告",是流量基础。一名活跃设计师月均 30–60 份报价,100 份额对真实使用者基本够用 → 留下中尾流量挂广告。

支付通道

方案说明建议
Stripe国际信用卡,开发体验最佳v1 支持,支持外籍设计师
iPay88 / Billplz马来西亚本地(FPX 直转、TnG)v1.5 接入,本地用户首选
手动转账微信/银行转账后人工开通MVP 即可上,0 开发成本
建议
MVP 阶段先用手动转账验证付费意愿,付费用户超过 20 个再接 Stripe/Billplz。早期付费转化率比支付便利度更值得验证。

Google Ads / AdSense 集成方案

广告位设计 + 收入预估 + 用户体验红线

广告位规划(仅 Free 用户可见)

位置尺寸预期 CTR用户体验影响
仪表盘顶部横幅728x90 / 自适应0.3–0.8%低(首屏外)
报价单列表侧栏300x2500.5–1.2%
导出 PDF 后的回到列表页插页式1–3%高(需谨慎)
设置页底部自适应0.2–0.5%

收入预估(保守)

马来西亚 AdSense 单价较低,但装修家居类目相对高价值。粗略估算:

  • RPM(每千次展示收入):RM 4–12
  • 假设 1000 个免费设计师,月均每人产生 200 个页面浏览 → 200,000 PV/月
  • 预估月广告收入:RM 800 – RM 2,400

这个数字告诉我们:广告不是主要收入来源,而是"免费用户的兜底变现 + 转化付费的微推动力"(用户嫌广告烦 → 升级)。

实现要点

// 只对 Free 用户加载 AdSense
function AdSlot({ slotId }) {
  const { tenant } = useTenant();
  if (tenant.plan !== 'free') return null;

  return (
    <ins className="adsbygoogle"
         data-ad-client="ca-pub-XXXXXXXX"
         data-ad-slot={slotId}
         data-ad-format="auto" />
  );
}

红线

禁止
✗ 广告不得出现在客户最终看到的报价单 PDF 上 — 这会让设计师在客户面前丢脸,直接导致流失。
✗ 广告不得出现在客户分享链接 quote.hsdesign.biz/q/abc 这种公开页 — 同上。
✗ 不使用强制视频广告 / 弹窗广告 / 倒计时广告。
✓ 广告只出现在设计师自己的工作台,不影响其客户体验。

用户获客策略

回答:怎么把设计师吸引到平台

这是这个项目的核心问题。下面按预期 ROI 从高到低排列:

1. SEO 长尾关键词 MVP 必做

装修设计师与他们的客户在 Google 搜什么?我们要排进首页:

  • "装修报价单 模板 马来西亚" / "renovation quotation template Malaysia"
  • "装修预算计算" / "kitchen cabinet quotation"
  • "室内设计师 报价 系统" / "interior designer software"
  • "装修 报价单 PDF 模板 免费"

策略:在主域名 hsdesign.biz/blog/ 持续产出"如何写装修报价单""装修单价参考表 2026""客户砍价应对话术" 等长文。每篇文末引导"用 HS Design 一键生成专业报价单 — 免费"

资源投入:2–3 篇/周,6 个月可见明显效果。可用 AI 协助初稿,设计师本人审校(保真实性)。

2. 案例展示墙(病毒效应) MVP 必做

每个免费用户生成的报价单(在他们同意的情况下)会有"由 HS Design 制作"的水印 + 链接。当客户收到 PDF:

  • 客户被精美排版打动 → 点击水印 → 进入平台 → 推荐给自己的设计师朋友
  • 客户自己想做装修对比 → 注册成"业主版"(v2 拓展)
  • 设计师之间互相看到同行用的工具 → 自然口碑

这是每一份导出的 PDF 都是一个广告位的原理。Calendly、Notion、Typeform 都是这么做大的。

3. 设计师社群渗透 MVP 必做

  • Facebook 群组:"马来西亚室内设计师交流"、"装修业主分享"等群,定期分享干货+工具截图
  • 小红书 / Xiaohongshu:马来西亚华人装修博主聚集地,发"我用了一个免费工具做报价,客户当场签单"类型内容
  • Reddit r/malaysia / r/InteriorDesign:低频但精准
  • LinkedIn:对接连锁装修公司的设计主管,做 B 端转化

4. 推荐返佣 v1.5

每位设计师推荐一位同行付费成功 → 自己下个月免费。规则简单透明:

  • 用户专属推荐链接:hsdesign.biz/?ref=designer-a
  • 被推荐人付费 → 推荐人获得 1 个月免费(最多累积 12 个月)
  • 双向激励:被推荐人首月 50% 折扣

5. 内容合作 / KOL v1.5

  • 找马来西亚装修类 YouTube / 小红书 KOL(5–50K 粉丝)合作软广 / 测评
  • 给装修博客提供"专属推广码 + 30% 首年返佣"
  • 赞助装修类播客单集

6. 直接 Google Ads 投放(付费搜索)v1.5+

购买 "装修报价软件"、"renovation quote tool" 这类词的搜索广告。预算控制在 RM 500–1500/月 起步,盯紧 CAC(获客成本):

  • 目标:CAC < 3 个月 LTV(即 < RM 147)
  • 转化路径:广告 → 落地页 → 注册免费 → 14 天后促销升级

7. B2B 合作 / 装修材料商 v2+

与马来西亚装修材料供应商(厨柜、瓷砖、灯饰)合作 — 把他们的产品库内置到报价单系统里:

  • 设计师选材料 = 直接生成报价行 → 减轻设计师工作量 = 强力卖点
  • 材料商按订单付佣金给平台
  • 同时建立护城河,竞品难复制此供应链关系
优先级建议
前 6 个月集中做 1 (SEO) + 2 (案例水印) + 3 (社群)。不烧广告,先验证产品市场契合度。当付费用户达 50 个、月留存 > 60% 时,再启动付费投放与合作。

技术栈选型

基于现有 Cloudflare 生态的最优组合
前端
React + Vite
SPA,部署到 Cloudflare Pages。配 TanStack Router/Query。
UI 库
shadcn/ui + Tailwind
动态主题色注入用 CSS 变量,shadcn 设计原生支持。
API
Hono + Workers
轻量、TypeScript 友好、Cloudflare 一等公民。
数据库
Cloudflare D1
SQLite 兼容、便宜、内置备份。中期可换 Turso/Neon。
存储
Cloudflare R2
S3 兼容、无 egress 费、按租户分目录。
鉴权
Lucia / 自建
JWT in cookie,Magic Link 登录(无密码体验更好)。
PDF
Browserless / Puppeteer Worker
用 HTML+CSS 模板渲染 PDF,质量高。Cloudflare Browser Rendering API 已可用。
支付
Stripe + Billplz
国际 + 本地双通道。MVP 可用手动转账。
邮件
Resend
开发体验好,便宜,可用自定义域名发件。
监控
Cloudflare Analytics + Sentry
CF 看流量,Sentry 看错误。

不选的方案与原因

  • Next.js:SSR 在 Cloudflare 上有限制;SaaS 工作区是登录后内容,SPA 足够。
  • Supabase:方便但与 Cloudflare 生态隔离;如果换库,迁移到 Neon 更顺手。
  • Auth0 / Clerk:每月数百 RM,给马来西亚价位的 SaaS 太贵。Lucia 自建 1 周搞定。
  • 独立 PDF 服务:每月成本高且慢;用 HTML 渲染足够 95% 场景。

报价单模板系统

平台拥有,租户使用

用户已明确:模板标准化,租户不可改。这是好决策。具体落地:

模板类型(首期 3 套,覆盖主流场景)

模板 ID名称适用场景核心字段
tpl_basic简洁型小型整改 / 单房间项目分类、单价、数量、小计
tpl_full详尽型整屋装修分区域 + 工序 + 材料明细 + 工期
tpl_commercial商业空间店铺 / 办公室含工程进度款、付款节点

租户能控制的部分

  • 选用哪个模板(每张报价单独立选择)
  • 填什么内容(项目条目、单价、备注)
  • 头部 logo + 配色(来自租户设置)
  • 底部公司信息 + 签名(来自租户设置)

租户不能控制的部分

  • 排版结构 / 字段位置
  • 字体(除主题色外)
  • 单位与计算方式(统一 RM、面积单位 sq.ft)

模板存储与升级

-- 模板表(平台运营,租户只读)
CREATE TABLE templates (
  id TEXT PRIMARY KEY,
  name TEXT,
  description TEXT,
  schema_json TEXT,    -- 字段定义(JSON)
  layout_html TEXT,    -- 渲染模板(HTML+占位符)
  version INTEGER,
  is_active INTEGER DEFAULT 1
);

未来要升级模板时,新增 version,老报价单仍用老模板渲染(避免破坏历史数据)。

开发时间表

从今天到 MVP 上线 4–6 周
Week 0 · 当前
范围确认 + 资产清点
本文档评审、确认现有数据迁移路径、注册 Stripe Sandbox / AdSense / Resend 账号。
Week 1
基础设施改造
通配符 DNS 配置、Worker 路由 + tenant 解析、D1 schema 迁移、scoped helper 库实现。
Week 2
用户系统 + 工作区
注册/登录(Magic Link)、租户创建流程、品牌设置(logo 上传 + 主题色)、子域名分配。
Week 3
报价单核心改造
把现有报价单改为多租户模式,新建模板系统(首期 3 套),PDF 渲染 + 水印逻辑(按 plan 区分)。
Week 4
商业化 + 配额
用量统计、配额限制(100 份/月)、AdSense 集成、Pro 升级流程(手动转账起步)。
Week 5
营销门户 + SEO
主站 hsdesign.biz 改造为 SaaS 营销页、博客系统、首批 5 篇 SEO 长文上线、案例展示墙。
Week 6
内测 + 上线
邀请 10 位设计师内测,修复关键 bug,公开发布。同时启动社群渗透。
月 2–3
v1.5:付费通道 + 推荐返佣
Stripe / Billplz 集成、自动续费、推荐返佣机制、自定义域名(Cloudflare for SaaS)。
月 4–6
v2:项目管理模块
见下方路线图。

MVP 范围定义

第一版必须有 / 不能有

✅ MVP 必须有

  • 设计师注册 + 子域名创建
  • Logo 上传 + 主题色设置
  • 3 套标准报价单模板
  • 报价单创建 / 编辑 / 删除
  • 客户管理(基础 CRUD)
  • PDF 导出(带 / 不带水印)
  • 免费版 100 份/月配额
  • AdSense 广告位
  • 手动升级 Pro(联系客服)

❌ MVP 暂不做

  • 多人协作 / 团队席位
  • 自动续费支付
  • 项目管理模块
  • AI 助手
  • 移动 App(用响应式 Web 即可)
  • 第三方集成(如 WhatsApp / 邮件群发)
  • 自定义模板编辑器
  • 多语言(先做中英双语,马来文后续)
  • API 给第三方

未来路线图

v2 / v3 — 已定义但 MVP 不做

v2:项目管理模块 月 4–6

一个装修项目从签约到交付通常 2–6 个月,涉及大量文件、阶段、沟通。把项目作为顶层实体,报价单、施工图、文档、付款记录、客户沟通都挂在项目下。

子模块核心功能
项目主页项目概览、进度、关键日期、相关人
文档库施工图(CAD/PDF)、效果图、合同、收据;按项目归类,R2 存储
报价单关联一个项目可关联多版报价单(初版/修订版/最终版)
付款进度定金 / 工程款 / 尾款的发起与记录
客户分享生成只读链接,客户在浏览器查看进度(无需账号)
时间线关键节点(开工 / 验收 / 完工)

商业价值:项目管理把"用户从临时工具用户变成长期用户",付费转化率会显著提升。

v3:AI 装修问答助手 月 7–9

训练一个针对马来西亚装修场景的助手,回答设计师与业主的问题:

  • "吉隆坡 1500 sq ft 公寓的厨柜大概多少钱?"
  • "乳胶漆和墙纸的优缺点比较"
  • "这份报价里 RM 8000 做电工合理吗?" — 基于平台数据回答
  • "客户说要砍价 20%,怎么回应?"

训练数据来源(独家护城河)

  • 平台累积的真实报价数据(脱敏后)
  • Reddit / Lowyat / 小红书的装修讨论
  • 马来西亚装修材料商的产品库 + 价格
  • 合作专家(资深设计师、QS)的问答

技术方案

  • 初期:用 OpenAI/Anthropic API + RAG(向量检索)
  • 中期:基于 Llama / Qwen 微调一个领域模型
  • 部署:Cloudflare Workers AI 或 Modal serverless GPU

商业模式

  • Pro 用户每月 200 次免费
  • 超出按量计费(RM 0.50/次)或升级 Pro+ 套餐
  • "AI 报价审查" — 上传报价单让 AI 找出问题、优化建议(核心增值功能)

v4 之后的可能性

  • 业主端入口(C 端):业主上传需求 → 平台匹配 3 位设计师投标 → 抽佣
  • 装修材料市场:平台内嵌商城,材料商挂货,设计师下单抽佣
  • 设计师培训 / 认证体系:付费课程、平台徽章
  • 装修保险 / 担保交易:为业主提供工程款托管

风险与缓解

已识别的关键风险点
风险影响缓解策略
多租户数据泄露 关键声誉毁灭scoped helper 强制注入;CI 静态扫描;定期红队测试
免费用户太多挤爆资源成本失控D1 / R2 用量监控;Free 限 100 份;异常账号自动暂停
AdSense 收入不及预期免费用户无变现把 AdSense 当兜底;不依赖广告收支平衡;持续推付费转化
付费转化率低(< 2%)无法增长MVP 后 8 周内必须做用户访谈;调整 Pro 卖点
SEO 见效慢(6+ 月)初期增长缓慢加大社群运营 + KOL 合作 + 案例水印病毒效应弥补
设计师不愿换工具获客困难"导入旧报价单"功能;提供首月免费 Pro;强调"客户更专业的印象"卖点
Cloudflare 服务异常全平台不可用每日 D1 备份到 R2;关键 API 加二级 fallback
竞争对手出现失去先发优势护城河靠数据 + AI,越早累积越多;社群 + KOL 锁定关系
本地支付通道审核慢付费上线延后MVP 用手动转账先跑通流程;Stripe 同步申请

用户核心问题答复

直接回答你提出的两个问题
用户获客有哪些好策略?

核心结论:先做能持续累积价值的渠道,再做付费投放。建议执行顺序:

  1. SEO 长尾内容(必做,6 个月见效但永久受益)— 详见上方"用户获客策略"。马来西亚装修类关键词竞争中等,本地中文内容稀缺,存在窗口期。
  2. 报价单水印病毒效应(产品自带获客)— 每份免费用户导出的 PDF 都是免费广告位。这是最低成本的获客渠道。
  3. Facebook 群组 + 小红书(高 ROI 社群)— 马来西亚华人装修圈活跃在这两个平台。每周 2–3 篇深度内容(不要硬广)。
  4. 推荐返佣(v1.5 后启用)— 设计师圈子小,口碑传播效率高。
  5. KOL 合作(有付费用户基数后)— 找 5–50K 粉丝的中腰部 KOL,比头部更精准、更便宜。
  6. Google Ads / Facebook Ads(最后做)— 当 LTV / CAC 模型跑通后再投。预算从小(RM 500/月)起步迭代。

额外建议:不要忽视 B 端。马来西亚有上百家中小装修公司,每家有 5–20 位设计师。说服一家公司用 = 一次获取一打用户。这种 B2B2C 模式的销售可以从月 3 起做。

集成 Google Ads 是否能给平台带来更多流量?

简短回答:几乎不能。需要分清两件事。

"集成 Google Ads"在你的提问里有两种含义,要分开看:

含义 A:在自己网站展示 AdSense 广告(你目前的计划)

  • 不带流量。AdSense 是把你站内的流量变现,钱从 Google 给你;而不是 Google 给你送流量。
  • 本质:你把广告位卖给 Google,Google 替广告主把你的用户引导出去(点击离开你的站)。
  • 对你的好处:免费用户的兜底变现(预估 RM 800–2400/月)+ 反向促进升级(用户烦广告 → 升 Pro 去广告)。
  • 对你的坏处:会有少量用户被广告引走、报价单制作流程被打断。所以广告位规划必须谨慎(见上方红线)。

含义 B:购买 Google Ads 投放(搜索/展示广告)

  • 能带流量,但要花钱。这是另一个方向 — 你给 Google 钱,Google 把搜"装修报价软件"的用户引到你的着陆页。
  • 建议时机:不在 MVP 阶段做。先验证产品市场契合度(PMF)和付费转化率,否则只是把钱倒进无底洞。
  • 建议时机点:付费用户 ≥ 50 个,留存率 ≥ 60%,能算出 CAC vs LTV 时再开。
  • 建议预算:起步 RM 500–1500/月,盯 CAC < RM 150 这条线。
关键
许多创业者把"挂 AdSense"当作流量战略,这是误解。AdSense 是变现工具,不是获客工具。两者的钱流方向相反 — 一个是 Google 给你钱、一个是你给 Google 钱。

更可靠的"流量来源"排序:

  1. SEO(自然搜索)— 长期最大流量来源,完全免费
  2. 产品病毒效应(PDF 水印)— 每个用户都是渠道
  3. 社群 / KOL / 内容营销— 中等成本,质量高
  4. 推荐返佣— 边际成本低
  5. 付费投放(Google Ads / Facebook Ads)— 见效快但烧钱,PMF 后再开

建议的下一步行动

本文档评审通过后
  1. 本周:评审本文档,确认范围、定价(RM 49 是否合适)、配额(100 份是否合适)。
  2. 下周:注册必要服务(Stripe Sandbox、AdSense、Resend、Sentry)、设计 logo + 营销主页 wireframe。
  3. 第 1–6 周:按上方时间表执行。
  4. 第 6 周末:邀请 10 位设计师内测,启动获客 plan。
  5. 每月 1 号:复盘 KPI(注册数、付费转化、月活、广告收入),调整策略。

需要你尽快决定的事

决策点选项建议
价格RM 39 / 49 / 69RM 49(中间档,留调整空间)
免费配额50 / 100 / 200 份100 份(符合中尾设计师)
支付通道Stripe / Billplz / 手动MVP 手动;月 2 起接 Billplz
Beta 用户来源朋友圈 / 公开招募10 位朋友圈定向邀请,有反馈渠道
主域名定位SaaS 入口 / HS 自家网站改为 SaaS 入口,HS 用 hs.hsdesign.biz
多语言中 / 中英 / 中英马MVP 中英,马来文 v1.5