Management · お客さまの声を、語り続けさせます
届くリーチを、お客さまの声で運営します。
キャンペーン、コンテンツ、アウトリーチを、お客さま自身の声で動かし続けます — しかし 人が署名するまで、お客さまの名で何も世に出ることはありません。声も主導権も失わずに、リーチを。
声の全体を、決して止まらない四つの仕事として — お客さま自身が操作するツールではありません。
計画し、運営し、監視する — カレンダーが静かになることはありません。一つひとつを最初の投稿から 最後まで追跡します。
お客さまの声で書き、承認のために提案します。お客さまらしく聞こえないテンプレートで 言葉が作られることはありません。
適切な相手に届け、フォローアップします。スパムは送りません。リストは清潔に保ち、返信は温かく保ちます。
何が効いたかを、素直に読み解きます — 見栄えだけの図ではありません。眺めるための数字ではなく、 次に何をすべきかを教える数字です。
違いは派手なダッシュボードではありません。監視そのものです — そしてお客さまの名で 何ひとつ、ひとりでに語ることはありません。
声がどう守られているか — 作り上げた成長数値ではありません。
エージェントは主役ではありません。同じ監視のもとに置かれた、もうひとつのマネージド層にすぎません。
実際の姿をここにお見せします。
コードは英語のまま — 工学の世界共通言語です。
"""MatchTop · a content agent — it drafts in your voice, it never publishes on its own. Standard library only. The agent proposes; a person signs.""" import json from dataclasses import dataclass, field @dataclass class Draft: channel: str # "post" | "campaign" | "reply" text: str voice: str # which stored voice profile produced it signed: bool = False # stays False until a human says yes def load_voice(company: str) -> dict: """The voice profile is stored once and reused — not re-guessed per post.""" with open(f"voices/{company}.json") as f: return json.load(f) def draft_post(brief: str, company: str) -> Draft: voice = load_voice(company) text = compose(brief, tone=voice["tone"], rules=voice["must_avoid"]) return Draft(channel="post", text=text, voice=voice["name"]) # signed=False
"""MatchTop · the publish gate — the one door every draft must pass through. Nothing reaches a public channel without a human signature attached.""" class Unsigned(PermissionError): pass def publish(draft, channel_api): """Refuses outright if the draft has not been signed off by a human.""" if not draft.signed: raise Unsigned("nothing is published in your name on its own") return channel_api.send(draft.channel, draft.text) # only reachable after sign-off def sign(draft, signer: str): """The one action that turns a draft into something that may go out.""" draft.signed = True draft.signer = signer # logged — who signed, not just that someone did return draft
"""MatchTop · the scheduler — queues only what a human already signed, and releases it at the right local hour. No silent auto-posting.""" from datetime import datetime from zoneinfo import ZoneInfo def queue(draft, run_at: datetime, tz: str = "Europe/Zurich"): if not draft.signed: raise PermissionError("only signed drafts may be queued") return {"draft": draft, "run_at": run_at.astimezone(ZoneInfo(tz))} def release_due(queued, now: datetime): """Only fires the ones whose signed, scheduled hour has arrived.""" return [q for q in queued if q["run_at"] <= now] # still signed drafts only
運営される声が、自分で埋めなければならないフィードに勝る理由。
汎用 AI スパムは、お客さまらしく聞こえません — お客さまの名をテンプレートに委ねてしまいます。 自動投稿に、お客さまの評判を任せることはできません。そして代理店の現場は、責任を負うひとつの手を 提供できません。だからこそ、ここに価格表はありません。声が何を語るべきかを見極め、計測し、 計測した内容に対して見積もります。
一行を書く前に、お客さまの声とそのデータをどう守るか。この点は交渉の余地がありません。
ここでは NDA が標準であり、追加販売ではありません。共有いただいた情報は一人の技術者だけが読み、 他の誰も読みません — 売却も共有も転用も一切ありません。
お客さまのアカウント、リスト、声はお客さまのものであり続けます。署名なしに投稿も送信もされません。 不要な複製は保持しません。
すべてのエージェントの草稿は記録され署名されます — 誰が何を書き、誰が承認したかを読めます。 目を離した隙にお客さまの名で語るブラックボックスはありません。
二行で — 声が何を売るのか、そして何を手放したいのか。私たち自身が読み、 私たち自身がお答えします。
すでにチューリッヒの画面に表示されています — 待ち行列でもチケットでもありません。 これを運営する技術者が自ら読み、自ら返信します。
·