Market-intelligence startup, co-founder

AI Content Engine with a Human Approval Gate

Turns a stream of public market chatter into original, compliance-checked stories with branded charts. Nothing reaches an audience until a human approves it in Microsoft Teams, and every approval is priced into the performance record automatically.

Headline number
0 posts without a human approval
Role
Architected and built
Category
AI Agents & Runtimes
Updated

Architecture

  1. Public social feeds
  2. Pollerevery 6 min
  3. LLM rewritehouse voice, compliance guards
    Chart renderer
  4. Teams approval card
  5. Allowlisted approver
  6. PublisherX, Discord
    Performance trackerlive price stamp
Public feeds are polled into the warehouse, rewritten under compliance guards, rendered with a chart, and held on a Teams card until an allowlisted human approves. The approval publishes and prices the call in one event.

Key takeaways

  • Claude rewrites each candidate into house voice with hard guards on length, style, and compliance
  • An Adaptive Card in Teams carries the draft and chart; only an allowlisted approver's click publishes
  • Approval is event-driven and recorded. The click fires the publish and stamps the tracker at the live price.
  • Seven market-calendar-aware schedulers, 26 test files, and no bot password anywhere

The situation

The venture is a publisher, which means an analyst must approve every public word. The plan also called for high-volume daily content from two founders. The only way both are true is a pipeline that does the drafting and a gate that makes publishing without approval structurally impossible.

What I built

One always-on Python container runs the Bot Framework handler and every scheduler as an asyncio task. A poller watches public social feeds every six minutes and writes candidates to the warehouse. Claude rewrites each one into an original story under the house-voice and compliance rules, with hard guards on length and style. A chart renderer adds a branded, watermarked image.

The draft and chart go to Microsoft Teams as an Adaptive Card. Approvers are allowlisted, and the Approve action fires an invoke that publishes to X and Discord, records who approved, and stamps the performance tracker with the live market price. The bot authenticates with a managed identity, sits behind its own edge endpoint and firewall, and carries an origin fence with tests. Source attribution never reaches members.

The outcome

Daily content ships with one analyst click per post, and the performance archive stays honest because the publish and the price stamp are the same event.

Stack

Python 3.11Azure Bot ServiceAdaptive CardsAnthropic ClaudematplotlibX APIDiscord webhooksAzure Container Apps

Need this built inside your organization?

One person, architecture to deployment. Tell me what is stuck and I will tell you where I would start.