---
name: project-rei-job-board-scaffold-2026-06-22
description: "完全無料求人マップ platform `rei-job-board` standalone repo を `C:/Users/user/rei-job-board/` に scaffold (Astro + Leaflet + Cloudflare Pages、 (A) 雑誌型 design = 求職者情報非収集ライン厳守、 セキュリティ L0-L6 layered defense + fraud-filter.ts 19/19 PASS verified)"
metadata: 
  node_type: memory
  type: project
  originSessionId: cc88eadb-b4e0-42ed-b220-ce525eddf131
---

# rei-job-board scaffold (2026-06-22 着手)

## 概要

[[project-free-job-posting-platform-intent-2026-06-22]] の構築意向に基づき、 standalone repo として scaffold 着手 + セキュリティ層追加完了。

## 配置

- **path**: `C:\Users\user\rei-job-board\`
- **repo (予定)**: `fc0web/rei-job-board` (Public、 GitHub create は 藤本さん manual)
- **host (予定)**: Cloudflare Pages (1 site 無料 tier)
- **license**: MIT

## 設計確定軸 (永続)

[[reference-kaisei-shokuanho-correct-axis-2022]] の正しい届出 trigger 軸に基づき、 **(A) 雑誌型 design** を確定:

- 求職者の登録 / 経歴 / 履歴 / 閲覧履歴 等を **一切収集しない**
- 応募連絡は求人投稿者の連絡先 (メール / 公式 site / 電話) を表示するのみ
- platform 側で transfer / store しない
- = 改正職安法 特定募集情報等提供事業者 届出 **不要**

## scaffold v0.0 構造 (18 file)

```
rei-job-board/
├── README.md
├── CLAUDE.md             # Rei session 用 project instructions
├── LICENSE
├── .gitignore
├── astro.config.mjs
├── package.json
├── docs/
│   ├── HONEST_SCOPE.md   # 永続原則 (求職者情報非収集 / siren-naming 禁止 / Google ToS)
│   ├── SECURITY.md       # L0-L6 layered defense 設計
│   └── audit-report.json # build-time 生成
├── scripts/
│   ├── audit-jobs.ts     # build-time scan + auto-flag
│   └── test-fraud-filter.ts  # 19/19 PASS smoke test
└── src/
    ├── data/jobs.json     # schema v0.1 + verifiedAnchors + phoneCallback
    ├── lib/fraud-filter.ts # 5 軸 keyword フィルタ
    ├── layouts/Base.astro  # 共通 layout + honest-banner footer
    └── pages/
        ├── index.astro   # 地図 + 求人 list (Leaflet OSM tile)
        ├── about.astro   # サイトについて
        ├── post.astro    # 3 anchor 掲載要件 + NG keyword 一覧
        └── report.astro  # 通報窓口 (警察 #9110 + GitHub Issue)
```

## セキュリティ設計 (L0-L6 layered defense)

**前提**: 完全防止は不可能。 大手 (Indeed / タイミー / タウンワーク) も bypass 実例あり。 設計目標 = **闇バイト犯罪者の運営コストを上げ ROI 悪化** の cost layer 重ね。

| Layer | 内容 | 状態 |
|---|---|---|
| **L0** 物理 anchor | Google Maps URL 必須 + place_id 検証 (闇バイトは物理店舗持たない傾向) | ✅ scaffold v0.0 で必須化 |
| **L1** NLP keyword | 5 軸 60+ keyword (報酬 / 業務曖昧 / 業界隠語 / 連絡 / 急かし) で build-time auto-flag | ✅ fraud-filter.ts 実装、 19/19 test PASS |
| **L2** 投稿者身元 | 国税庁法人番号 Web-API + 開業届 + 固定電話 callback | ✅ schema 反映 (verifiedAnchors)、 callback 運用は manual |
| **L3** Domain age | WHOIS で連絡先 URL の domain age 取得、 30 日未満 = audit | 📝 schema 反映、 自動化は v0.1 |
| **L4** Community moderation | GitHub Issue 通報窓口 | ✅ report.astro 実装 |
| **L5** 公的相談窓口誘導 | 警察 #9110 / 厚労省 / 消費者ホットライン 188 | ✅ report.astro 実装 |
| **L6** 求職者教育 | 闇バイト見分け方リンク (警察庁 / 東京都 / Indeed) | 📝 v0.1 で各求人 popup に追加予定 |

### Single-axis 認証は破られる前提

| 認証 | 突破方法 |
|---|---|
| メール認証 | 使い捨てメール (10minutemail / Mailinator) |
| SMS 認証 | 飛ばし携帯 / SMS 受信代行 |
| 所在地 | バーチャルオフィス (月 5,000 円〜) |
| マイナンバーカード | 偽造 / 他人名義 |

→ **複数 anchor の組み合わせ** + **物理 anchor (Google Maps + 固定電話 callback)** が ROI 悪化に効く

## fraud-filter.ts test 結果 (verified)

```
=== Test 1: 闇バイト典型 keyword 検出 ===  6/6 PASS
=== Test 2: 通常求人は flag されない ===   2/2 PASS
=== Test 3: 業界隠語の検出 ===              2/2 PASS
=== Test 4: 全角/半角/大文字小文字の正規化 === 1/1 PASS
=== Test 5: scanText 単体動作 ===          2/2 PASS
=== Test 6: getKeywords 公開 ===           6/6 PASS
=== 結果: 19 passed, 0 failed ===
```

実機 audit (yami-bait sample input): riskScore **7** で 5 軸全 hit 検出。

## NG keyword (auto-flag 対象、 5 軸)

| 軸 | 例 |
|---|---|
| reward_anomaly | 即日即金 / 高額報酬 / 日給 5 万 / 報酬応相談 / バックあり / 月収 100 万 |
| task_vague | 運ぶだけ / 受け取るだけ / 電話するだけ / 誰でも稼げる / 出し子 / 受け子 / 叩き |
| underground_slang | ホワイト案件 / タタキ / UD案件 / シノギ / 飛ばし / 即金案件 |
| sketchy_contact | Signal / Telegram / DM のみ / Wickr / TG連絡 |
| urgency_pressure | 本日中 / 今すぐ / 至急 / 即日勤務可 / 即日採用 / 即面接即採用 |

## 永続原則 (機能追加時に必ず再確認)

`docs/HONEST_SCOPE.md` § 1.1 機能設計禁止事項:

- ❌ 求職者登録機能を追加しない
- ❌ 求職者の氏名 / メール / 経歴 / 履歴 / 閲覧履歴 を収集しない
- ❌ サイト経由で応募を受け付け投稿者へ転送する機能 (Rei DB を通る) を追加しない
- ❌ 求職者へのマッチング / レコメンド機能を追加しない
- ❌ 個人を追跡可能な analytics / cookie を導入しない

1 つでも実装した時点で **「特定募集情報等提供事業者」 に該当**、 厚労省への届出 + 苦情対応体制 + 個情法対応 + 業務体制構築 義務発生。

## 藤本さん manual TODO (公開前)

1. `npm install` 実行
2. GitHub repo `fc0web/rei-job-board` Public で作成 + push
3. Cloudflare Pages 連携
4. 外部フォームサービス (Tally / Formspree) 開設 + post.astro に embed
5. sample data を実データに置換 (or 削除して空 list で start)

## honest scope (永続)

- 「全国 + 完全無料 + 求人」 単独では Indeed / タウンワーク / バイトル等の **red ocean direct competitor** = sustainable には niche 軸 (地域 / 業種 / 時間帯 等) を後付け必要
- 「最強」 「ブルーオーシャン」 「永久無料」 「絶対」 等の siren-naming 全面禁止 ([[feedback-super-naming-siren-family-pattern]] 7 軸目)
- 「個人運営の試行プロジェクト」 framing 厳守

## 関連 memory

- [[project-free-job-posting-platform-intent-2026-06-22]] (構築意向 record、 本 scaffold で着手)
- [[reference-kaisei-shokuanho-correct-axis-2022]] (法的 axis、 本 scaffold の load-bearing 線)
- [[project-rei-talent-agency-scaffold-2026-06-22]] (同日 scaffold した姉妹 project)
- [[project-ohmynews-style-citizen-journalism-platform-intent-2026-06-22]] (姉妹意向、 scaffold 未着手)
- [[feedback-super-naming-siren-family-pattern]] (7 軸目)
- [[feedback-evaluation-symmetry-principle]] (法的軸の 2 回訂正 self-correction)
