Lalabase
Tickets, Doku, Zeiterfassung und Kundengespräche an einem Ort, durchsuchbar per KI. Für Softwarefirmen mit Kundenprojekten. Open Source: auf deinem eigenen Server oder in unserer Cloud in Deutschland.
Translation pending
届いた問い合わせを、AI が整理し、必要な人へ。不動産管理会社向けの AI 自動分類 + マルチチャネル通知システム。営業時間外の見落としをゼロに、クレームは 5 分以内に営業部長の LINE へ。
Translation pending
BusinessTypeScript · CSSGitHub @usako-uiOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
LINE・Gmail の問い合わせを Slack に自動集約し、Gemini AI で 5 カテゴリに自動分類。クレームは営業部長の個人 LINE へ 5 分以内に緊急通知。
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
MultiChannel Notify — マルチチャネル通知 + AI 自動分類システム 不動産管理会社向けに、LINE 公式 + Gmail の問い合わせを Slack に自動集約し、 Gemini で 5 カテゴリに自動分類。クレームは営業部長の個人 LINE に 5 分以内で通知します。 本番 URL: https://multichannel-notification-ai-dev.vercel.app/ AI デモ体験(BYOK): 上記 URL からご自身の Gemini API キーで即体験可能 モバイルファースト設計: Tailwind CSS で sm: プレフィックスを 200+ 箇所使用し、スマホ実機でもレイアウトが崩れずに閲覧できることを目視確認済み。 元となる模擬案件の提案書では Vercel 有料プラン(Pro) を想定しており、その場合 Vercel Cron が実質無制限に使えるため /api/cron/classify は Vercel Cron のみでシンプルに構成できます。Read the full README ↗
不動産管理会社向けに、LINE 公式 + Gmail の問い合わせを Slack に自動集約し、 Gemini で 5 カテゴリに自動分類。クレームは営業部長の個人 LINE に 5 分以内で通知します。
本番 URL: https://multichannel-notification-ai-dev.vercel.app/
AI デモ体験(BYOK): 上記 URL からご自身の Gemini API キーで即体験可能
モバイルファースト設計: Tailwind CSS で sm: プレフィックスを 200+ 箇所使用し、スマホ実機でもレイアウトが崩れずに閲覧できることを目視確認済み。
元となる模擬案件の提案書では Vercel 有料プラン(Pro) を想定しており、その場合 Vercel Cron が実質無制限に使えるため /api/cron/classify は Vercel Cron のみでシンプルに構成できます。
一方、本ポートフォリオ実装は個人の無料開発環境(Vercel Hobby) で構築するという制約があるため、Hobby プランの Cron 制約(各 Cron は 1 日 1 回まで)を回避する目的で GitHub Actions Cron へ外部化 しています。この構成差はコード側で吸収されており、SLA 5 分厳守が求められるクレーム経路は Webhook / Pub/Sub Push で処理されるため実運用上の影響はありません。
実運用時(有料プラン移行時)の切り戻し手順:
.github/workflows/cron.yml を削除vercel.json に crons 設定を追加(例:"crons": [{ "path": "/api/cron/classify", "schedule": "*/5 * * * *" }])主要コンポーネント: LINE / Gmail の受信 → Vercel Functions(3 エンドポイント)→ Supabase キュー → Gemini 分類 → Slack 5 チャネル振り分け。緊急パスは Cron を経由せず handleUrgent で同期実行し、営業部長個人 LINE へ数秒で到達(実測 60 秒以内)。
flowchart LR
Customer((お客様))
LINE[LINE 公式]
Gmail[Gmail<br/>+ラベル]
Webhook[Vercel<br/>Webhook / Poller]
Detect{緊急キーワード<br/>判定}
Fast[緊急パス<br/>同期実行]
DB[(Supabase<br/>pending)]
Cron[GitHub Actions<br/>Cron]
AI[Gemini API<br/>5 カテゴリ分類]
LinePush[営業部長<br/>個人 LINE Push]
UrgentSlack[Slack<br/>#クレーム緊急]
NormalSlack[Slack<br/>#賃貸 #売買<br/>#内見 #要確認]
Customer --> LINE
Customer --> Gmail
LINE --> Webhook
Gmail --> Webhook
Webhook --> Detect
Detect -->|クレーム系| Fast
Detect -->|通常| DB
DB --> Cron
Cron --> AI
Fast --> LinePush
Fast --> UrgentSlack
AI --> NormalSlack
classDef urgentNode fill:#fee5e5,stroke:#e53e3e,color:#000
classDef normalNode fill:#e6f4ea,stroke:#38a169,color:#000
class Fast,LinePush,UrgentSlack urgentNode
class AI,NormalSlack normalNode
設計思想:
| 機能 | 実装 | 検証結果 |
|---|---|---|
| 緊急クレーム 5 分 SLA | Webhook 同期実行・Cron 非経由 | ✅ 3 回連続 1 分未満達成 |
| AI 5 カテゴリ分類 | Gemini gemini-flash-latest | ✅ 22/22 = 100% 分類精度(22 パターンの実機テスト) |
| ノイズ耐性 | プロンプト設計 + Fail-safe | ✅ 「今日の天気」等の無関係な文を「要確認・その他」に正解分類 |
| 誤検知防止 | URGENT_PATTERN 設計 | ✅ 「緊急ではありません」を通常パスへ流す(否定表現の適切な処理) |
| 冪等性保証 | external_id UNIQUE + 23505 handling | ✅ 全経路で重複通知を排除 |
| Slack 障害復旧 | 3 回リトライ + LINE Push アラート | ✅ アラートは非エンジニアが即対応可能な日本語 |
| 送信者名表示 | LINE Profile API / Gmail From ヘッダ | ✅ Slack 投稿に「送信元:LINE|送信者:山田太郎さん」を付与 |
| レイヤー | 技術 | 選定理由 |
|---|---|---|
| フレームワーク | Next.js 14(App Router) | Vercel Functions と Route Handler で低運用コスト |
| 言語 | TypeScript | any 禁止・型安全設計で 6 万行規模でも保守可 |
| DB | Supabase(PostgreSQL・RLS 有効) | 無料枠 + 認証済み・マネージド RLS |
| AI | Google Gemini API(gemini-flash-latest) | 日本語処理精度が高い・無料枠でプロトタイプ可 |
| Webhook | Vercel Functions | Cold start が早く、Webhook 応答制限(LINE 30 秒)内 |
| 定期実行 | GitHub Actions Cron(5 分毎 + push:main) | Vercel Hobby プランの Cron 制約回避 |
| 通知 | Slack Web API + LINE Messaging API | 業務浸透度の高さ + 個人 LINE Push の即時性 |
| デプロイ | Vercel(Git 連携・自動 CI/CD) | PR マージで自動デプロイ・プレビュー環境完備 |
| 用途 | ツール |
|---|---|
| バージョン管理 | Git + GitHub |
| CI/CD | GitHub Actions(型検査・ビルド・デプロイトリガー) |
| DB マイグレーション | Supabase MCP + supabase/migrations/ |
| スタイル | Tailwind CSS v3 + Inter フォント(next/font) |
| アイコン | Lucide React |
| 環境変数管理 | Vercel Env + .env.local(開発) |
本番 LP から BYOK(Bring Your Own Key) 方式で AI 分類を体験できます。
セキュリティ:
Vercel Hobby プランの Cron 制約(各 Cron は 1 日 1 回まで)を回避するため、GitHub Actions から /api/cron/classify を定期実行しています(.github/workflows/cron.yml)。
| # | トリガー | 信頼性 | 用途 |
|---|---|---|---|
| 1 | workflow_dispatch(手動) | ✅ 最も確実 | 正式な動作確認手段・ポートフォリオ用途で運用者が明示発火 |
| 2 | push: main(PR マージ時) | ✅ 確実 | main への push で必ず 1 回発火・開発中の PR マージがそのまま Cron 発火として機能 |
| 3 | schedule: "*/5 * * * *" | 🟡 ベストエフォート | GitHub Actions の schedule は リポジトリ非アクティブ時に数時間〜数日遅延・スキップされる既知挙動あり |
GitHub Actions UI から:
または GitHub CLI から:
gh workflow run cron.yml
workflow_dispatch で明示発火する詳細な手順は docs/manual-developer.md を参照してください。
# 1. リポジトリをクローン
git clone https://github.com/usako-ui/multichannel-notification-ai-portfolio.git
cd multichannel-notification-ai-portfolio
# 2. 依存関係インストール
npm install
# 3. 環境変数設定(18 件)
cp .env.example .env.local
# .env.local を編集して値を設定
# 詳細な取得手順は docs/manual-developer.md §3 を参照
# 4. ローカル起動
npm run dev
# http://localhost:3000
# 5. 型チェック・ビルド
npx tsc --noEmit
npx next build
用途と読者ごとに分割しています。まずここから該当ドキュメントへ移動してください。
| ドキュメント | 対象読者 | 内容 |
|---|---|---|
| プロジェクト概要 | 全員(採用担当・クライアント・開発者) | 背景・現状課題・データフロー・技術選定 |
| 要件定義書 | 開発者・ステークホルダー | 機能要件(F-01〜F-13)・DB スキーマ・受入条件(AC-001〜AC-015)・環境変数一覧 |
| 運用マニュアル(詳細版) | 営業部長・現場スタッフ | 日常確認・緊急対応・トラブル判断・監視 SQL |
| 運用マニュアル(A4 印刷版) | 現場配布・掲示用 | A4 縦 1 枚で完結する日常運用の要点だけ |
| 開発者向け手順書(詳細版) | 引き継ぎ開発者 | セットアップ・デプロイ・環境変数投入・API キーローテーション・トラブルシュート |
| 開発者向け QuickRef | 開発者(作業中) | エンドポイント対応表・環境変数マトリクス・トラブル判断フロー・デプロイ前チェックリスト |
| AGENTS.md(設計判断集) | 引き継ぎ開発者・AI エージェント | 触ると壊れる箇所 10 項目・変更前に必ず読む設計判断 |
すぐに参照したい用途別ショートカット:
2026 年 9 月 10 日〜9 月 16 日(実働 5 日間・全 7 フェーズ)
| Phase | 内容 |
|---|---|
| 1 | Next.js + Supabase 基盤・DB スキーマ・環境変数設計 |
| 2 | LINE Webhook・署名検証・Gmail Poller・緊急判定ロジック |
| 3 | Gemini 分類・Slack 投稿・Cron 統合 |
| 4 | 緊急 LINE Push・SLA 設計・品質レビュー対応 |
| 5 | Vercel 本番デプロイ・E2E 動作確認・障害対応 |
| 6 | SLA 実機テスト・分類精度テスト・冪等性・Slack 再送検証 |
| 7 | 運用マニュアル・LP + BYOK デモ・ダーク SaaS UI リニューアル |
開発プロセス: 機能ごとに PR を分割し 17 本のマージ・レビューサイクルで進行
使用ツール:
crypto.timingSafeEqual によるタイミング攻撃耐性CRON_SECRET)で保護service_role キーはサーバー専用(ブラウザは anon のみ).env.local は .gitignore 対象・NEXT_PUBLIC_ は Supabase の URL/ANON のみ本プロジェクトは架空の不動産管理会社を想定した模擬案件(ポートフォリオ)です。 実運用を目的とした利用ではありません。
AI 駆動開発の実践: 本プロジェクトは Claude Code をメインの開発パートナーとして、設計〜実装〜レビュー〜デプロイまで一貫した AI 駆動開発で構築しました。 実案件相当の設計品質・セキュリティ・保守性を短期間で実現することを目指しています。
本リポジトリのコードは ポートフォリオ目的で公開しています。詳細は LICENSE を参照してください。
許可: コードの閲覧・参照・学習目的での利用 禁止: 商用利用・無断複製/再配布・本コードをベースにした製品/サービス開発
商用利用・導入検討・コラボレーションについては、 LINE 公式アカウント までご相談ください。