- 内部サービス
- 9
- 行の Python コード
- ~175K
- 言語、ナレッジベースは1つ
- 9
- 許可リスト化されたアシスタントツール
- 10
- AI 回答1件あたり(定価)
- US$0.004
- がコードベース中の AI 層
- ≈3%
クライアント
顧客からの返品を、顧客への返却へ
Atravesar Services は、リッチモンドヒルにオフィス、マーカムに修理ベンチと倉庫を構え、宅配便でカナダ全土にサービスを提供する電子機器修理・再生・リバースロジスティクス企業です。メーカーや小売業者向けの B2B マネージド修理・返品プログラムと、消費者向けの郵送修理を運営し、カナダにおける Narwal の独占認定アフターサービス事業者として、ECOVACS と Segway/Ninebot のサポートも行っています。
チームは毎日同じ質問に答えていました。荷物はどこにある?エラーコード E12 の意味は?ケベック州では税込みでいくら?作業指示書はもう修理中?答えはすべて既に存在していました——ドキュメント、データベース、あるいは配送業者の API の中に。要件は明確でした。ソフトウェアに、安全に、24時間、顧客の言語でこれらに答えさせること。
-
リッチモンドヒルのオフィス · マーカムの修理ベンチと倉庫 · 宅配便でカナダ全土に対応
-
カナダにおける Narwal の独占認定アフターサービス事業者 · ECOVACS と Segway/Ninebot のサポート
-
ロボット掃除機 · 電動キックボード · スマートフォン · タブレット · ノート PC · ゲーム機 · 小型家電
-
EN简体繁體日本語한국어Tiếng ViệtESITFR
設計原則
AI は読み、理解し、話す。ソフトウェアは決め、記録し、支払う。
このアーキテクチャは一本の明確な線を引いています。アシスタント層は日々のワークフローの上に位置し、狭く、名前が付き、ログが残る入口——ツールと API——を通じてのみ業務に触れます。その下では、認証・認可・監査記録を備えた通常のソフトウェアが価格を決め、作業指示書を記録し、お金を動かします。
-
AI アシスタント層
読み、理解し、調べ、人に答える——相手の言語で、24時間。
-
狭く、名前が付き、ログが残る入口
注文、決済、倉庫、配送、追跡、サポートには、JSON スキーマ付きの許可リスト化されたツールを通じてしか到達できません。モデルがデータベースに触れることはありません。
-
セキュリティと統制
認証(あなたは誰か?)、認可(何を見て何ができるか?)、監査記録(何が起きたか——ログに残り、監査可能)。
すでに事業を動かしていたもの
9つのサービス、約175,000行の Python
ウェブサイトは目に見える部分にすぎません。その背後で SolvoSync は、会社を動かす基盤——倉庫・RMA 管理、複数配送業者への出荷、決済と税額、認証、点検、メーカー連携——を設計し、運用しています。AI 層はコードベースの約3%。残りすべては、AI 層が受け継ぐ規律です。
-
7.7K LOC
www · 公開ウェブサイト
9言語 · サービスページとガイド · 保証外(OOW)ウェブフォーム · チャットボットウィジェット · 管理者向けナレッジアップロード · llms.txt
-
59.5K LOC
Flow · WMS / RMA
入荷 · 在庫 · 部品 · RMA · 配送指示 · パレット · ECOVACS ESB · Mammotion FS Cloud · LSS · テストファイル31本
-
50.6K LOC
Fulfill · 配送
UPS · Canpar · Canada Post · Purolator(ShipEngine)· Freightcom · 料金、ラベル、集荷、マニフェスト、追跡 · EDI 210 請求監査
-
5.2K LOC
Payment · 決済と税額
Stripe Checkout + webhooks · 郵便番号によるカナダの税額計算(GST/HST/PST/QST)· 請求書を S3 へ保存 · 週次レポート
-
2.6K LOC
SSO · 認証基盤
アカウント · OAuth2 client-credentials · ロール ADMIN、CUSTOMER、DEALER、RECEIVER、REPAIR、TECH、SHIPPER · ベンダースコープ
-
35.4K LOC
Track · デジタルシステム
旧世代の在庫/RMA システム · React + TypeScript フロントエンド
-
10.0K LOC
Maintain · 設備点検
チェックリスト、写真、署名、定期レポート
-
2.8K LOC
Mammotion · メーカー連携スクリプト
FS Cloud のデポ修理、交換部品、RMA、出荷待ちエクスポート
-
0.6K LOC
棚卸し
AVS ラベル ↔ EAN のスキャン、欠品ユニットの検出、Excel エクスポート
- AWS EC2 (Ubuntu)
- RDS MySQL
- S3
- Redis
- nginx + gunicorn
- Flask
- React + TypeScript
- Qdrant
- Gemini API
- Stripe
- Google Places
LOC = 仮想環境、マイグレーション、ベンダーパッケージを除いた Python の行数(2026年10月時点)。
AI アシスタント層
Gemini + RAG + MCP:アシスタントはどこに接続されるか
AVS アシスタントは www.atravesar.ca 上で、セッションに紐づくトークンとレート制限に守られて動作します。関数呼び出し対応の Gemini Flash で稼働し(1回答あたり最大4ラウンドのツール呼び出し)、Qdrant ベクトルデータベースから知識を取得し、配送・税額・認証には MCP と関数エンドポイント経由でアクセスします。各エンドポイントは独自の認証、制限、ログを備えています。
-
1
ナレッジアシスタント(RAG)
スタッフが管理ページから PDF、Markdown、テキストをアップロードします。ドキュメントはチャンク化され(約1,000文字、150文字の重複)、gemini-embedding-001 で768次元ベクトルに埋め込まれ、Qdrant に保存されます。質問ごとにコサイン類似度で上位5件の文章を取得し、モデルはそれらに基づいて出典を明示しながら回答します。英語のドキュメントで9言語の質問に答えられます。
-
2
ツール利用アシスタント(関数呼び出しと MCP)
ツールとは、名前・説明・JSON スキーマの組です。モデルがツールと引数を選び、私たちのコードが OAuth2 サービストークンでそれを実行し、モデルが結果を説明します。配送 MCP サーバーは MCP over Streamable HTTP(JSON-RPC 2.0)で通信するため、1つの統合が今日はウェブサイトのチャットボットに、明日はスタッフ用デスクトップアシスタントに、その先はスコープ付きキーを持つパートナーのエージェントに使えます。
-
3
ワークフロー自動化(モデルなし)
決済確認 → ラベル作成 → 作業指示書作成 → メール送信。価格、税額、採番、ステージ遷移のルールは、テスト済みの決定論的なコードの中にあります——お金と記録が動くのはここです。
デプロイ済みのツールカタログ
設計ルール #1:モデルはデータベースに触れない——ツールに依頼する。
| ツール | 実行場所 | 機能 | ガードレール |
|---|---|---|---|
| search_knowledge_base | www → Qdrant | セマンティック検索。出典とタイトル付きで上位5件の文章を返す。 | 読み取り専用。出典を示し、決して創作しないようモデルに指示。 |
| share_oow_webform | www | ユーザーの言語で保証外修理フォームの URL を返す。 | モデルはチャット内でフォーム項目を収集してはならない。 |
| list_provincial_tax_rates calculate_tax |
Payment | 州または郵便番号による GST/HST/PST/QST。物品とサービスを区別。 | 決定論的な Decimal 演算。モデルは税額を計算しない。 |
| rate_shipment track_shipment |
Shipment MCP (fulfillapi) | 配送業者の料金。UPS 1Z/Canpar D/Canada Post PIN または顧客参照番号による追跡。 | OAuth2 サービストークン。読み取り専用。 |
| email_waybill validate_address |
Shipment MCP (fulfillapi) | 登録済み住所へラベルを再送。Google で検証した住所照合。 | メール送信先はその配送の連絡先のみ。カナダ/米国限定。 |
| get_account_info get_account_access |
SSO MCP | アカウント情報と、ユーザーが閲覧できるベンダーのデータ範囲。 | サーバー側トークン。ベンダースコープ限定。 |
| clear_chat_history | www | このブラウザの会話を消去。 | セッション範囲のみ。 |
制限:1回答あたり最大4ラウンドのツール呼び出し · 各ツール結果は12,000文字以内 · 検索1回につき5件 · データベースに書き込むツールなし · お金を動かすツールなし。
1つのワークフローをエンドツーエンドで
保証外(OOW)修理のジャーニー
始まりと終わりに AI——会話の部分。中間は普通の、テスト可能なソフトウェア。会社が既に持っていたシステムの上に、小さなチームで構築。
-
顧客がアシスタントに尋ねます:「Narwal の保証が切れたのですが、修理できますか?」share_oow_webform ツールが顧客の言語でフォームのリンクを返します。チャットでは個人情報を収集しません。
-
4ステップのウェブフォームが、デバイス、症状、住所(Google Places で検証)を収集します。持ち込みまたは発送を選択できます。
-
見積もりはコードが計算します:検査料 $40、決済サービスによる郵便番号ごとの税額、そして最安のリアルタイム配送料金(配送業者を並列照会)に固定マークアップを加えたもの。
-
Stripe Checkout で検査料と送料を決済。支払期限15日の PDF 請求書がメールで送られます。
-
検証済みの webhook が作業指示書 AVSOOW{YYMMDD}#### を作成し、Flow で「Receiving」ステージとして開きます。最安の配送業者の発送ラベルと QR コードが顧客にメールされます。
-
デバイスを受領・検査し、修理見積もりを発行。2回目の Stripe 決済で支払われ、作業指示書は「Repair」ステージへ進みます。
-
修理済みデバイスを返送し、追跡番号をメールで通知——その間ずっと、アシスタントは配送 MCP を通じて「荷物はどこ?」に答え続けます。
価値の大部分は地味な自動化にある
あえて AI を使わない領域
- 価格と税額
- 決済サービス内の Decimal 演算、銀行家の丸め、郵便番号プレフィックスによる州ルール。
- 配送業者の選択
- ルール:私書箱 → Canada Post、優先メーカー → Canpar、UPS のレート制限 → フォールバック、それ以外は最安のリアルタイム料金。
- 作業指示書とステージ
- Flow における一意な番号とステージマシン(Receiving → Repair → …)。31本のテストファイルでカバー。
- 請求監査
- 毎晩 EDI 210 請求書(UPS、Canpar)を解析して見積もり料金と照合し、過請求レポートを自動生成。
- 決済と認証
- 検証済み webhook 付きの Stripe Checkout、請求書と領収書は S3 へ。ロール付き SSO、サービス間の OAuth2 client-credentials、スタッフの MFA。
- 定期ジョブとメーカー連携
- 平日2回の追跡、週次の警告メール、1日3回のメーカーデータ取り込み。ECOVACS SEEBURGER ESB、Mammotion FS Cloud、LSS——会話ではなく契約で。
経験則:出力が正確で、再現可能で、会計士や弁護士に説明できなければならないなら、それはコードの仕事です。AI はその隣で、説明と案内を担います。
その下にあるセキュリティと統制
認証、認可、監査記録
認証——あなたは誰か?
- スタッフとパートナーには SSO。配送システムのログインには MFA。
- サービス間(Fulfill、Payment、SSO)は OAuth2 client-credentials トークン。
- チャットボットのセッション:IP とブラウザに紐づく HttpOnly JWT、有効期間30分。同一オリジン検査と、不正利用対策の Redis ブラックリスト。
認可——何を見て、何ができるか?
- ロール ADMIN、CUSTOMER、DEALER、RECEIVER、REPAIR、TECH、SHIPPER。パートナーは自社ベンダーのデータのみ閲覧可能。
- モデルは認証情報を一切持たない——許可リスト化されたツールのみ。
- ツールは読み取り専用。例外は、配送自身の連絡先へのラベル再送と、自分のチャットの消去のみ。
監査記録——何が起きたか?
- すべてのチャットターンを記録:セッション、質問、回答、使用ツール、モデルバージョン。CSV エクスポート対応。
- Stripe webhook を検証。決済イベントと請求書は S3 に保存。
- 毎晩 EDI 210 で配送業者の請求書と見積もりを突合。週次の自動レポート。
これらはどれも AI 固有のものではありません。もともと必要な規律であり、AI 層はそれをそのまま受け継ぐだけです。
成果
もたらされたもの
-
顧客は保証、エラーコード、税額、配送、修理プロセスに関する回答を、9言語で、24時間365日、出典付きで得られます。
-
保証外修理の受付は、最初の質問から支払い済み作業指示書まで、スタッフが見積もり・ラベル・メールを手入力することなく進みます。
-
1つの MCP 統合が今日はウェブサイトのアシスタントに使われ、スタッフやパートナーのアシスタントにも対応可能——2つ目の統合は不要です。
-
回答1件あたりのコストはセント単位:定価で約 US$0.004、月1万件の回答で約 US$45。
-
すべてのチャットターンは使用ツールとモデルバージョンとともに記録されます——品質は再学習ではなく、ログを読みドキュメントを直すことで向上します。
正直なエンジニアリング:想定した障害モードと、実際に起きたこと
- ハルシネーション
- 取得した文章に根拠を置き、事実は必ず検索し、temperature 0.4、メールへの引き継ぎ。実際に起きたこと:初期は営業時間や住所の回答が一般知識から来ていた——検索必須ルールで修正。
- プロンプトインジェクション
- ポリシー型プロンプトとスキーマで制約されたツール。解放できる機密は何もない——電話帳も決済ツールもなし。実際に起きたこと:試みる人はいるが、能力が狭いため拒否は破られない。
- 障害
- ツールのエラーはデータとして返され、ボットはナレッジから回答を続ける。配送業者は並列照会し、ルールベースのフォールバックを用意。実際に起きたこと:配送業者 API のレート制限 → フォールバック業者へ。
- モデルドリフト
- 浮動するモデルエイリアスは、気づかぬうちに口調・冗長さ・ツール利用を変えます。モデルバージョンを毎ターン記録し、変更のたびに実際の質問からなる回帰セットを再実行します。
1年前の自分に伝えたいこと
9つのエンジニアリングの教訓
-
01
受信トレイに既にある質問から始める——技術からではなく。
-
02
プロンプトよりツール:モデルが動的な情報を「知る」必要があるなら、段落ではなくツールを追加する。
-
03
ナレッジベースは地味に保つ:スタッフが既に維持している PDF と Markdown で。
-
04
モデルを固定し、バージョンを記録する——浮動エイリアスは気づかぬうちに挙動を変える。
-
05
優雅に劣化する:ツールエラーはデータ。依存先が落ちてもボットは動き続ける。
-
06
すべてに上限を——ラウンド、文字数、トークン、レート。無制限の消費は本物の請求書になる。
-
07
お金は Stripe とフォームの向こうに。チャットウィンドウの向こうには決して置かない。
-
08
標準を使う:MCP + OAuth2 のおかげで、まだ作っていないクライアントにも統合を再利用できる。
-
09
管理ページを最初に作る:ドキュメントのアップロードとログの閲覧——品質はそこから生まれる。
おまけの10番目:システムプロンプトはポリシーとして書く——バージョン管理し、レビューし、コードのようにテストする。
ライブ発表
NATEA トロント · 中小企業のための AI
- 60分 · 講演とライブデモ · オンライン
登壇者:Nelson Lai — SolvoSync · Atravesar Services CTO
2026年10月21日(オンライン)の60分間の講演とライブデモ。小売業が atravesar.ca の上でどう動いているか、AI が本当に役立つのはどこかを示しました:中小企業の AI 導入に関する2026年カナダ統計局のデータ、3つのパターン——ナレッジ、ツール、自動化——本番環境での2つのデモ、カナダ向けセキュリティとプライバシーのチェックリスト、そして4週間のスタータープラン。
カナダ企業の19%が AI を使い、25%が導入を計画し、40%は自社には関係ないと考えている。その「関係」は、あなたの受信トレイの中にあります。
このプロジェクトについてよくある質問
アシスタントが事実をでっち上げるのをどう防いでいますか?
事実は取得した文章かツールからのみ得られ、モデルの記憶からは決して得ません。システムプロンプトが住所・営業時間・ポリシーについてナレッジベースの検索を強制し、temperature は 0.4、ツールで答えられない場合はメールへ引き継ぎます。初期には営業時間の回答が一般知識から来ていましたが、検索必須ルールで解決しました。
AI の回答1件のコストは?
2026年10月の定価で、回答1件(入力約12,000トークン + 出力約300トークン)は約 US$0.004。月1万件の回答で約 US$45 です。本当のコストはトークンではなく、エンジニアリングとコンテンツの保守です。
自社でもこのアプローチや MCP サーバーを再利用できますか?
はい。ツール層はオープン標準——MCP over Streamable HTTP と OAuth2 client-credentials——の上に構築されているため、同じサーバーをどのアシスタントからでも使えます。SolvoSync は他の中小企業にも同じパターンを構築します:受信トレイに既にある質問から始め、4週間で1つのチャネルを公開し、主張する前に測定する。
個人情報はどう扱われますか?
個人情報はチャットウィンドウの外に置きます。アシスタントは同意・検証・Stripe を備えたフォームへ案内し、シークレットはサーバー側に留め、セッションは IP とブラウザに紐づく HttpOnly トークン、そしてすべてのターンをモデルバージョンとともに記録します。設計は PIPEDA とケベック州法25号の原則に従います:モデルは決定しない——コードと人が決める。
御社にも同じ仕組みを
SolvoSync はウェブサイト、システム統合、AI アシスタント層を設計・構築・運用します——受信トレイに既にある質問から始め、4週間で1つのチャネルを公開します。