Skip to content
Early Access 300+ developers joined Built for production — Schema validation • Provider fallback • Webhook delivery

Your inbox becomes an API

Stop maintaining brittle extraction pipelines. MailFrame turns emails, PDFs, and images into typed, schema-validated JSON — delivered reliably to your webhook. One API call. One forward rule. Zero regex.

Receipt
MailFrame
JSON
Webhook
The Problem

Ingesting documents today is a maintenance nightmare

Every team building document ingestion ends up maintaining the same fragile infrastructure.

Regex Spaghetti

Hand-crafted regex patterns that break the moment Stripe changes their email template. You maintain parsers, not products.

Brittle GPT Wrappers

A Python script that calls GPT with a prompt. No validation, no retries, no monitoring. Breaks silently in production.

Zapier Chains

Multi-step Zaps held together with duct tape. No error handling, no observability, no SLA. Good for prototypes, dangerous in production.

Manual Retries

Failed parse? Manually re-run. No DLQ, no replay, no alerting. Incident response is a developer SSH-ing into a box.

How It Works

Two ways in, one way out

Direct API or email forward. Both produce the same typed, validated JSON.

Server-to-server

Direct API

Send documents via POST /v1/parse. Get typed JSON back synchronously or async via webhook.

import { MailFrame } from "...";
const mf = new MailFrame({ apiKey: "..." });
const result = await mf.parse({
  raw_mime: "From: receipt@stripe.com\n...",
  schema_id: "stripe-receipt",
});
console.log(result.data);
Response
{
  "receipt_id": "pi_abc123",
  "amount_cents": 2999,
  "currency": "usd",
  "paid_at": "2026-05-21T17:30:00Z",
  "customer_email": "user@example.com",
  "card_last4": "4242",
  "card_brand": "visa"
}
Forward-and-forget

Inbox Direct

Get a unique parse@mailframe.ai inbox. Forward any email — MailFrame extracts and delivers JSON to your webhook.

# 1. Get your inbox address
#    parse@mailframe.ai

# 2. Create filter in Gmail
 Match: from:stripe.com
 Do this: Forward to parse@mailframe.ai

# 3. MailFrame parses the email
#    JSON delivered to your webhook
Webhook payload
{
  "receipt_id": "pi_abc123",
  "amount_cents": 2999,
  "currency": "usd",
  "paid_at": "2026-05-21T17:30:00Z",
  "customer_email": "user@example.com",
  "card_last4": "4242",
  "card_brand": "visa"
}
Why MailFrame

Built for production, not prototypes

MailFrame DIY + GPT Zapier OCR Tools
Schema enforcement
Confidence scoring
Auto retries + DLQ Limited
Provider fallback
Input formats Email + PDF + Image API only Email only PDF/Image
Pricing model Per parse op Per LLM token Per task Per page

MailFrame is built for developers who need ingestion that doesn't silently break at 2 AM.

Extraction Trace

Resilience inproduction

Extraction is easy. Handling provider failures, schema mismatches, and malformed input at scale is where infrastructure matters.

Raw input
From: receipts@stripe.com
Subject: Receipt from Stripe - pi_abc123
Date: Thu, 21 May 2026 10:30:00 -0700
To: user@example.com

Thanks for your payment of $29.99 to Acme SaaS Inc.

Receipt ID: pi_abc123xzy
Amount: $29.99
Card: Visa ending in 4242
Typed output
Webhook + metadata

Pipeline execution

Ingest
API
Queue
River
Parse
MIME extraction
Route
Flash-Lite
Validate
Schema OK
Deliver
Webhook 200
Model routing
Flash-Lite → Flash → Pro
Auto-escalation on low confidence
Provider fallback
Gemini → OpenAI
Automatic on timeout or error
Retry policy
3 attempts, exp. backoff
Dead-letter queue + replay
Webhook delivery
HMAC-SHA256 signed
Retry + replay from dashboard
Cache hit rate
15-30%
On shared templates (Stripe, etc.)
Latency
p95 <2s email
p95 <5s PDF/image
Every parse produces an inspectable trace — model used, per-field confidence, validation errors, webhook delivery attempts, retry history.
Limited beta

Apply for Early
Developer Access

We're onboarding developers in batches to ensure quality. Submit your application and we'll follow up within a week.

No spam. No sharing your data. Rolling out weekly.