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.