Sema is universal ingestion for AI agents: one place to receive content (email, files, API) and get normalized events out.

Example: Bug reporting agent

A common pattern is “let users email in; turn it into structured work.”

Flow: User emails a bug report (with optional screenshot) to a Sema inbox → Sema verifies the sender, parses the message, and POSTs a signed webhook to your app → Your app creates a Linear (or Jira, GitHub, etc.) issue.

You don’t build email parsing, DKIM/SPF checks, or retry logic. You build the agent: “given this payload, create or update a ticket.”

A full working example is in the sema-examples repo: bug-reporting-agent (Python + Flask). It receives the webhook, verifies the signature, and calls the Linear API. Run it locally, point an inbox webhook at it (e.g. via ngrok for cloud Sema), and send a test email.

What you get

  • One intake layer for email and API uploads (and more later).
  • Verified, normalized events so your agent logic stays simple.
  • Reliable delivery with signed webhooks and automatic retries.

Start with the Quickstart to get your first webhook, or browse Examples for more.