Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
翻訳待ち
No updates detected yet. GitHub releases will appear here.
Loading the full README. The saved excerpt is shown below.
BATTER BOX — AI課題診断×実行伴走人材プラットフォーム(v1.4) BeFree_技術構成設計.md の「フェーズ1」「フェーズ2」「フェーズ3」に対応する実装です。UIロジックはプロトタイプ(Reactアーティファクト版)をほぼそのまま踏襲し、AI呼び出し・マッチング計算・データ永続化をすべてバックエンド側(Next.jsのAPI Routes + PostgreSQL)に移しています。ブラウザから api.anthropic.com を直接叩くことはありません。 v0.2では、企業/実務経験者/運営の3種類のアカウント認証、両者間のダイレクトメッセージ、人材の稼働上限を反映した足切りフィルター、利用規約・プライバシーポリシーのドラフトを追加しました。v0.3ではランディングページ・人材審査フロー・決済導線の土台・営業資料を追加し、v0.4で企業⇄運営⇄人材の2段階契約構造への変更、v0.5でデザイン全体の刷新(レスポンシブ対応・配色/フォント変更)を行い、v0.9〜v1.3で診断精度の向上・データ活用によるマッチング学習・実運用不具合の修正を重ねました。v1.4でサービスブランドを「BATTER BOX」へ変更しています。Read the full README ↗
BeFree_技術構成設計.md の「フェーズ1」「フェーズ2」「フェーズ3」に対応する実装です。UIロジックはプロトタイプ(Reactアーティファクト版)をほぼそのまま踏襲し、AI呼び出し・マッチング計算・データ永続化をすべてバックエンド側(Next.jsのAPI Routes + PostgreSQL)に移しています。ブラウザから api.anthropic.com を直接叩くことはありません。
v0.2では、企業/実務経験者/運営の3種類のアカウント認証、両者間のダイレクトメッセージ、人材の稼働上限を反映した足切りフィルター、利用規約・プライバシーポリシーのドラフトを追加しました。v0.3ではランディングページ・人材審査フロー・決済導線の土台・営業資料を追加し、v0.4で企業⇄運営⇄人材の2段階契約構造への変更、v0.5でデザイン全体の刷新(レスポンシブ対応・配色/フォント変更)を行い、v0.9〜v1.3で診断精度の向上・データ活用によるマッチング学習・実運用不具合の修正を重ねました。v1.4でサービスブランドを「BATTER BOX」へ変更しています。
サービスブランド名を「BeFree」から「BATTER BOX」に変更しました。あわせて、アップロードいただいたロゴ画像から抽出した実際の色(ネイビー #04162D ×オレンジ #F46919)に、サイト全体の配色を統一しています。
public/logo.png に配置し、ランディングページ・アプリ画面のヘッダーで表示lib/theme.jsxのCOLORSを全面更新(キー名teal/amberは互換のため維持、値はネイビー/オレンジ系に変更)。ボタン・レーダーチャート・実績数値の帯など、サイト全体に反映済み/company(会社概要)ページでは、**サービス名のみ「BATTER BOX」**に変更し、運営会社名(株式会社BeFree、実際の登記情報)はそのまま残しています。利用規約も「当社(株式会社BeFree)が提供する『BATTER BOX』」という書き方に整理しました。サービスブランドと運営法人は別物として扱うのが実態に合うという判断です。もし運営会社自体も改称する場合は、/companyページと利用規約の該当箇所を別途更新してくださいBATTER BOX ADMIN)のみ変更し、配色は従来通り実務ツール的なダークテーマのまま維持しています(社内利用前提のため、意図的に変更していません)いただいたご意見4点への対応です。
企業側のマッチの仕組みがわからない。HPに企業側や、人材側のマッチの仕方の記載があれば流れがつかみやすい マッチング後の企業側と人材側の流れがわかる説明はないのか
LPの「How it works」は企業側の、しかもマッチングまでしか書いていませんでした。2点直しました。
(a) How it works に立場の切り替えタブを追加
「企業の方」「経験を活かしたい方」を切り替えられるようにし、どちらも登録 → 診断/自己分析 → マッチング → 契約 → 完了の6ステップに広げました(以前は企業側4ステップでマッチングまで)。
(b) 「マッチング後の流れ」を追加
提案が届いてから契約完了まで、同じ行で企業と実務経験者が何をするのかを並べた表を入れました。
| 企業の方 | 経験を活かしたい方 | |
|---|---|---|
| 提案が届く | マッチ度と内訳つきで候補が並ぶ | 経験が活きる企業が届く。自分から探すことも |
| メッセージ | AIの下書きつきで声をかける | 課題TOP3を見てから返信 |
| 進むか決める | 「契約に進みたい」と意思表示 | 同じく意思表示。双方が示してはじめて次へ |
| 条件の提示と承諾 | 稼働時間と月額を提案 | 確認して承諾/辞退 |
| プロジェクト開始 | 90日プランとKPIを共有 | タスクと稼働ログを記録 |
| 完了と承認 | 確認して承認 | 完了を報告 |
スマートフォンでは1列に積まれるため、各行の頭に「企業の方 —」「経験を活かしたい方 —」が付きます。
(c) FAQを3問追加 — マッチ度の決まり方(両側100点の配分で「課題に経験が合っているか」を測る仕組み)、実務経験者がどう企業と出会うか、兼任している場合の登録方法。
現役で同じ職種の人には選びにくい表現
すべての選択肢から「元」を外しました(「元プロダクト責任者 / VPoP」→「プロダクト責任者 / VPoP」)。本業と並行して関わる現役の方も対象なので、過去形で限定しない書き方に揃えています。
v6.16より前に登録された方のデータも、「元」を外して現在の選択肢に読み替えます。 入力し直す必要はありません。
1つ選ぶのが難しい。複数選択できるようにしてもいいのかも
役職・ポジションを複数選択にしました。 兼任しているものをすべて選べます。選択肢にないものは、別欄に自由記述で追加できます。
Talent.titles)と、「、」でつないだ1文字列(Talent.title)の両方を保存します。表示・AIプロンプト・管理画面・CSVは従来どおり1文字列を見るだけでよく、既存の処理を変えずに済みます役職を組み立てる関数が画面と保存処理で2回通る経路があり、2回目で「選択肢に無い値」として自由記述の役職が消えていました。2回通しても結果が変わらないよう直し、その性質をテストで固定しています。
tests/talentTitles.test.js(14件)を追加。テスト全体218件すべて成功
人材・企業のデータを一括でダウンロードできるようにしました。管理画面のナビに「エクスポート」を追加しています。
これまでは一覧の表示項目をそのまま出していただけだったので、10軸のスコア/配点を1軸1列で出すようにしました。 そのままピボットテーブルや分析に使えます。
| 列数 | 追加した主な項目 | |
|---|---|---|
| 人材 | 27列 | 10軸の配点(合計100点)、強みの上位3軸、経験機能領域、具体的な経験業務、得意な働き方、価値観、職務経歴 |
| 企業 | 22列 | 10軸のスコア(低いほど深刻)、最優先ボトルネック、登録日 |
アカウント作成だけ・入力途中の方も行として出力され、「登録状況」列で見分けられます(AI対話が未完了の方は軸の列が空欄になります)。
一覧ページはv6.13でメールアドレスでも検索できるようにしましたが、CSVダウンロード側は氏名・会社名しか見ていませんでした。
メールアドレスで検索した状態でダウンロードすると、画面に出ている結果と中身がずれます。
検索条件を lib/adminExport.js の1箇所にまとめ、一覧とCSVで同じものを使うようにしました。
外部パッケージを増やさない方針に合わせ、ZIPの書き出しも自前です(lib/zip.js)。
Node組み込みの zlib でdeflateし、CRC-32とZIPのヘッダ構造は仕様どおりに組み立てています。
対応範囲は「ファイルのみ・UTF-8のファイル名・ZIP64なし」で、CSVを数本まとめる用途には十分です。
tests/csvExport.test.js(9件)と tests/zip.test.js(6件)を追加。テスト全体204件すべて成功
unzip -t コマンドで展開できることまでテストに入れていますzipfileとブラウザの両方で問題なく開けることv6.13で人材側にやったことを、企業側にも同じ形で入れました。
アカウント作成の時点で会社名が空のCompanyレコードを作ります。
会社情報を入力すれば、saveCompanyProfile() が同じレコードを会社名入りで更新します(レコードは増えません)。
企業側の登録も、これで3段階すべてが管理画面から見えます。
| 段階 | 登録状況 | 分かること |
|---|---|---|
| アカウント作成だけ | アカウントのみ | メールアドレス |
| 会社情報の入力まで(AI課題診断が未完了) | 入力途中 | 会社名・業種・フェーズなど |
| AI課題診断まで完了 | 完了 | スキルマップ(マッチング対象になる) |
企業一覧・企業詳細・CSV・ダッシュボードの見え方は人材側と揃えました(メールアドレス列、
メールアドレスでの検索、会社名が空の行は (会社名未入力) 表示、スキルマップが無い場合の黄色い帯)。
会社名が空だと削除の確認文字列も空になって削除できないレコードになる問題も、人材側と同じく表示名で照合して解消しています。
これで /api/diagnosis/start と /api/talent/dialogue/start は、どちらも共通ヘルパー
(lib/companyProfile.js / lib/talentProfile.js)を呼ぶだけになりました。
アカウント作成画面に「途中で中断しても続きから再開できます」と書いてあるのに、 入り直すとフォームが空でした。v6.12〜v6.13で保存はされるようになったので、それを画面に戻します。
/api/me/profile が、AI対話が未完了でも入力済みの内容(companyForm / talentForm)を返すようにしました
(hasData は「スキルマップがあるか」の意味のままなので、他の画面の出し分けは変わりません)/diagnose・/join・/app の3経路すべてで、入力フォームの初期値に反映しますThis is the beginning of the README. Read the rest at the original. Read the full README ↗