# Trusted Listing Content Generation — Lean MVP PRD

> **版本：** v1（首次生成）
> **生成时间：** 20260512-1454
> **评分：** 31/40
> **Source：** real-estate-ai-tools__scored-demand__20260511-0910.md

---

## 1. Problem & User

**Target User：** 住宅房产经纪人和挂牌协调员，每周需要从 MLS 数据、税务记录和照片中生成房源描述文案。

**Core Pain：** 通用 AI（ChatGPT / Jasper）会在 listing 文案中凭空捏造事实——不存在的学校排名、臆测的翻新记录、错误的地图距离。一旦发布，代理面临合规风险和客户投诉。AI 生成了 SLOP，但手动核查比自己写还慢。

**User Quote：** "Real estate agent AI SLOP… hallucinated map?"

---

## 2. Target Outcome & KPIs

**Primary Outcome：** 代理粘贴 MLS 字段后，5分钟内看到一份每句话都有来源标注的房源描述，且没有任何红色警告标志。

| KPI | 目标值 |
|-----|--------|
| 首次生成到看到有标注的结果 | < 3 分钟 |
| 警告清零率（无红色标记的生成次数占比）| > 70% |
| 7日留存 | > 45% |
| 免费→付费转化 | > 10% |

---

## 3. MVP Scope（In）

- 表单输入房产字段（beds/baths/sqft/year_built/remarks/自定义备注）
- 支持粘贴 MLS 原始文本，系统自动解析关键字段
- 受限生成：仅基于输入字段生成，LLM prompt 强制 JSON 输出，每句话附带 source_field_id
- 句级来源标注 UI：每句话悬停显示来源字段（绿色 = 有据可查，黄色 = 弱依据，红色 = 无依据）
- 规则引擎：拦截高风险无依据声明（学区、通勤时间、距离、"全面翻新"、"新屋顶"等）
- 用户可编辑输入字段后重新生成
- 导出：公开说明文 / 私密备注 / 社交媒体帖子（三种格式）
- 生成历史：每个房产保留历史版本，支持对比
- Stripe 计费：$29/mo（solo，每月20次生成）；$79/mo（小团队，无限次）

---

## 4. Out of Scope

- MLS API 直连（手动粘贴即可）
- 语音/图片自动识别房源信息
- 自动发布到 Zillow / Realtor.com
- 合规法律审查（产品不做法律保证，仅做事实依据检查）
- 多语言房源文案
- 针对豪宅/商业地产的特化模板

---

## 5. User Flow（Happy Path）

**注册后 5 分钟 Aha Moment 路径：**

1. 用户注册 → 进入"新建房产"页
2. **Step 1 — 输入字段**：填写或粘贴 MLS 文本（4 beds / 2 baths / 1,450 sqft / built 2005 / near Riverside Park）
3. **Step 2 — 点击生成**：系统调用 LLM，约 10 秒返回结果
4. **⚡ Aha Moment（第2分钟）**：文案出现，每句话后面有绿/黄/红色小标签，"near Riverside Park" 标为黄色并弹出提示"该声明未包含在您的输入字段中，建议核实距离数据"
5. 用户删除黄色句子或补充字段 → 重新生成 → 全绿 → 一键复制公开说明文
6. 感受到"AI 帮我写稿，但我知道每句话来自哪里"——合规安心感

**付费墙触发：** 第 **10次生成** 后触发 paywall + 邮件序列。

---

## 6. Functional Requirements（P0）

**F1 — 房产数据录入**
- 标准字段表单：beds / baths / sqft / year_built / lot_size / garage / HOA / tax_notes / custom_remarks
- 粘贴 MLS 文本解析：正则 + 简单 NLP 提取关键字段填入表单
- 每个字段有 verified / unverified 标记（用户可手动切换）

**F2 — 受限生成**
- Prompt 要求 LLM 返回 JSON：`[{"sentence": "...", "source_field_ids": ["beds", "sqft"], "confidence": "high|medium|unsupported"}]`
- 仅允许引用已有字段；未引用字段的声明自动标 confidence=unsupported
- 规则引擎黑名单：school_district_rank / commute_time / distance_claims / "fully renovated" / "new roof" → 需对应字段存在才允许输出

**F3 — 来源标注 UI**
- 生成结果按句渲染：绿色 = high confidence，黄色 = medium，红色 = unsupported
- 悬停显示来源字段名称
- 红色句子默认折叠，需用户主动展开并确认

**F4 — 重新生成与编辑**
- 用户修改字段或删除红色句子后，可一键重新生成
- 生成历史保留：每次生成存档，支持版本对比

**F5 — 导出**
- 公开说明文（Public Remarks，500字以内）
- 私密代理备注（Agent Notes）
- 社交媒体版（Instagram 风格，含 emoji，150字）

**F6 — 计费**
- 免费：前10次生成
- $29/mo：每月20次生成（solo）
- $79/mo：无限次（团队）
- Stripe Checkout + paywall 拦截

**F7 — Onboarding**
- 2步引导：创建房产 → 生成并看到标注结果
- 首次生成前展示示例对比（有标注 vs 无标注）

---

## 7. Minimal Data Model

```
users (id, email, plan, monthly_generation_count, stripe_customer_id)
properties (id, user_id, address, fields_json, created_at)
property_fields (id, property_id, field_key, field_value, verified)
generations (id, property_id, sentences_json, created_at)
generation_sentences (id, generation_id, text, source_field_ids, confidence)
```

---

## 8. API / Integration Notes

| 服务 | 用途 | 备注 |
|------|------|------|
| OpenAI API (GPT-4o) | 受限文案生成，JSON 结构化输出 | 每次生成约 0.02 USD，成本可控 |
| Stripe | 订阅计费 | Checkout Session + Webhook |
| Supabase | DB + Auth | 全栈后端 |
| Resend | 付费墙触发邮件序列 | 3封序列：触发 / +1天 / +3天 |

---

## 9. Acceptance Criteria

- [ ] 粘贴 MLS 文本后，关键字段（beds/baths/sqft/year_built）自动解析填入表单
- [ ] 生成结果中每句话都有 confidence 标注，颜色渲染正确
- [ ] 规则引擎正确拦截：输入不含学区数据时，生成结果中不出现学区声明
- [ ] 红色 unsupported 句子默认折叠，用户必须展开确认
- [ ] 三种格式导出内容正确（Public / Agent / Social）
- [ ] 第10次生成后 paywall 触发，Stripe Checkout 完成后立即解锁
- [ ] 用户注册后 5 分钟内完成首次有标注的生成（人工测试通过）

---

## 10. Delivery Plan

### M1 — 数据层 + 字段解析（Day 1 上午，约 5 小时）

**创建/修改文件：**
- `prisma/schema.prisma` — properties / property_fields / generations / sentences 表
- `lib/mls-parser.ts` — 正则 + 简单 NLP 从粘贴文本提取字段
- `app/api/properties/route.ts` — 房产 CRUD
- `app/properties/new/page.tsx` — 创建房产表单

**Exit Criteria：**
- POST /api/properties 返回 201 并写入 DB
- 粘贴 MLS 示例文本后，beds / baths / sqft 三个字段自动填入表单

### M2 — 受限生成 + 来源标注 UI（Day 1 下午 - Day 2 上午，约 9 小时）

**创建/修改文件：**
- `lib/listing-generator.ts` — OpenAI 调用，强制 JSON 输出
- `lib/claim-rules.ts` — 黑名单规则引擎
- `app/properties/[id]/generate/page.tsx` — 生成结果页，含来源标注渲染
- `components/AnnotatedSentence.tsx` — 句级来源标签组件
- `app/api/generate/route.ts` — 生成 API 端点
- `app/properties/[id]/history/page.tsx` — 生成历史

**Exit Criteria：**
- 端到端：填写字段 → 生成 → 结果按 confidence 渲染颜色 → 悬停显示来源字段名
- 规则引擎测试：无学区字段时，生成结果中 school_district 声明被过滤

### M3 — 导出 + 计费 + 上线（Day 2 下午，约 4 小时）

**创建/修改文件：**
- `lib/export-formatter.ts` — 三种格式转换
- `app/properties/[id]/export/page.tsx` — 导出 UI
- `lib/stripe.ts` — Checkout Session + Webhook
- `app/api/billing/route.ts` — 计费 API
- `middleware.ts` — 生成次数 paywall 检查

**Exit Criteria：**
- 三种格式导出内容各自格式正确（字数/风格）
- 第10次生成触发 paywall，Checkout 完成后立即解锁
- 新用户首次 Aha Moment < 5 分钟（人工验证）

---

## 11. Risks & Mitigations

| 风险 | 缓解 |
|------|------|
| LLM 偶尔忽略 JSON 格式约束 | 增加 response_format: { type: "json_object" }；失败时 fallback 到全红标注 |
| 规则引擎误杀合理内容 | 黑名单只拦截高风险类别，允许用户手动解锁单条红色句子 |
| MLS 格式差异导致解析失败 | 解析失败时友好提示，允许用户手动填写字段 |
| 竞品（Restb.ai）已有 MLS 直连 | 主打"合规标注"差异化，不做 MLS API，降低建设成本 |

---

## 12. Chargeability Rationale

**免费版价值：** 10次生成足以让用户完成2-3个房源，亲身体验"每句话都有来源标注"的安心感，看到明显优于 ChatGPT 的合规保障。

**付费版扩展：** 解锁每月更多生成次数、团队共享、生成历史存档超过30天、批量生成。

**付费墙时机：** 第10次生成——用户已为多个房源使用过产品，形成工作流依赖，此时 $29/月低于任何一笔房产交易的边际价值。

**一句话：** 一条虚假房源声明可能触发合规投诉，$29/月是消除 AI 生成 SLOP 风险的最便宜保险。
