Email

File size, file types, and what's scanned

Most documents go through Hemma without you ever thinking about limits. But a few will hit one. This article tells you which ones and what to do about it.

01What Hemma accepts

File types: PDF, JPEG, PNG, HEIC, WebP. That covers every invoice, quote, permit, plan, photo, and scan you are likely to receive from a contractor or municipality.

Size: up to 10 MB per file.

Anything that is not on that list does not get processed. Spreadsheets, Word docs, ZIP archives, executables, calendar invites — all skipped. The original is not stored, and you do not see them in your project.

Tip

A contractor sending you an Excel quote? Ask them to export it as PDF before sending. Most accounting tools have a one-click PDF export.

02Why those types

PDFs and images are the formats that survive contact with reality. Every accounting tool exports PDF. Every phone takes JPEG or HEIC photos. Every scanner produces PDF. They are also the only formats Hemma's AI can read reliably — a spreadsheet's structured data needs a different pipeline that we have not built.

Limiting to these two formats is also a small security choice. Spreadsheets and Word documents can carry macros. PDFs and images cannot run code. So Hemma never asks itself "is this attachment hostile?" — it just rejects everything that could be.

03What gets blocked, and why you see it

Each rejected attachment shows up on the message detail page with the reason. You see exactly what was skipped, so nothing disappears silently.

The reasons you might see:

  • Too big. The file is over 10 MB. Ask the sender to compress or split it. For a giant scanned plan, splitting by page in their PDF reader usually works.
  • Wrong file type. Not a PDF or supported image. The original is not stored.
  • Magic bytes mismatch. The file extension says one thing (.pdf) but the content is something else. Usually a corrupt download from a sender's email client. Ask for a re-send.
  • Could not parse PDF. The file is structured wrong. The PDF is missing its end marker, or has a malformed header. Common with PDFs generated by very old software.
  • Could not read image. The image file is corrupted or truncated. Same advice: ask for a re-send.
  • Download error. Hemma tried to fetch the attachment from your email provider and failed. Hemma retries automatically before giving up; if you see this, the email service had a transient problem. Forward the original again.
  • Malicious. The body or an attachment was flagged as a phishing or prompt-injection attempt. Hemma drops it and does not surface it.

04The malware and phishing scan

Every inbound email goes through a security pre-screen before Hemma processes anything. The body is scored by an AI for prompt-injection and content-manipulation risk on a 0–10 scale. Anything scoring 7 or higher is dropped as malicious.

Attachments go through a separate validation pipeline:

  1. The first bytes of the file are compared against the file's claimed type. A .pdf that is actually an executable gets blocked here.
  2. PDFs are round-tripped — Hemma checks the header and the end-of-file marker.
  3. Images are run through a metadata reader. Anything that fails to decode gets blocked.

You do not configure any of this. It just runs.

Tip

You will not see flagged-malicious messages in your senders list either. Anything Hemma considers dangerous is dropped before any approve-or-reject decision happens.

05Common questions

My contractor sent a 25 MB photo. Can I get it through? Resize it before forwarding. On a Mac, open the image in Preview and pick Tools → Adjust Size. On Windows, the Photos app has the same. Most modern phones already produce sub-10 MB images by default.

Can I increase the limit for my project? No. The 10 MB cap is global. It is a balance between covering 99% of real documents and keeping email processing fast and reliable.

Where do I see what got blocked? On the detail page of any message you forwarded, the rejected attachments are listed with their reason. Nothing is hidden.

06What if it goes wrong