How it works

Troubleshooting & FAQ

What each Pro tool expects from your file, and what to do when an import doesn't look right.

Cost Statement

What file format works?

A PDF bank or card statement with real, selectable text — the kind exported directly from your online banking, not a photo or scan. Up to 15MB per file, and multiple files can be uploaded at once. Parsing currently works best with German/EU bank statement layouts (a date and a € amount on each transaction line); other layouts may still work but are more likely to miss the date on individual lines.

"No selectable text found" / it looks like a scan

The PDF has no embedded text layer, so there is nothing to extract — this app reads text, it doesn't run OCR on images. This usually happens with a statement that was printed and then scanned or photographed, rather than exported digitally. To check: open the PDF and try to select/highlight some of the text with your mouse. If nothing highlights, it's an image, not text — re-download the statement from your bank's online portal instead, which is almost always a genuine text PDF.

"No transactions recognized in this layout"

The file has readable text, but it doesn't match the line format this app looks for. This is most common with banks outside Germany/the EU, or statements using a multi-column table layout rather than one transaction per line. If this happens with a bank statement you'd expect to work, email us a sample (see below) so the format can be added.

"Couldn't be read" / the upload is rejected

This means the file is corrupted, password-protected, or isn't actually a valid PDF. Password-protected exports need their password removed first (most banking portals offer an unprotected download option, or your PDF viewer can usually save an unlocked copy). A file that isn't a PDF at all — e.g. a .csv or .xlsx export — isn't supported; only PDF.

A merchant is filed under “Other”

“Other” means the merchant name wasn't recognized as pharmacy, sports, or nutrition spending — it doesn't map to a diary field automatically. Use “Customize” on that merchant (or the merchant keyword mapping panel) to teach it once; every future statement recognizes it after that.

I uploaded the same statement twice

Statements are matched by their extracted text, so a re-upload of the same file is caught automatically and offered as “already analyzed” rather than being double-counted. You can still choose “Re-analyze anyway” if you've changed your merchant mappings since the first upload and want it re-classified.

Conversation Analysis

What file format works?

A WhatsApp chat export saved as .txt, up to 20MB — from the chat itself: Chat / More / Export chat / Without media. “Without media” matters: “With media” exports as a .zip, which isn't accepted (only the .txt file itself is read).

Telegram and Signal exports aren't supported yet. Telegram exports as JSON or HTML rather than WhatsApp's line-per-message text format; Signal has no built-in chat export at all and relies on third-party tools or a Signal Desktop backup. If you'd find either useful, mention it in a support email — it helps prioritize.

"No messages could be read from this file"

The file didn't match WhatsApp's export format at all. The most common causes: it's actually a Telegram or Signal export (see above), it's the wrong file (photos, a PDF, a different chat), or it's a WhatsApp export that's been edited or re-saved by another app in a way that changed its formatting.

"0 flagged days found" but messages did parse

This is a real result, not an error — it means the chat was scored and no day crossed the stress/symptom-signal threshold. A quiet export is a legitimate outcome, not a sign anything went wrong.

Is my chat text sent anywhere?

No. Parsing and scoring both run in your browser tab — the raw export is never uploaded. Only the date, score, and which signal categories fired for each flagged day are sent on to be saved to your diary.

Plaud voice sync

"Sync notes" is disabled

Two separate things gate this button: your Plaud account needs to be connected (OAuth), and AI-assisted voice note processing needs to be turned on in Settings — off by default for every account, since this is the one Pro Tool that sends transcript text to a third-party AI processor. Both are required; enabling one without the other still leaves the button disabled.

Sync found nothing, but I definitely mentioned a migraine

A recording only gets analyzed if your keyword list matches somewhere in its transcript, AI note, or highlights — by default migraine, headache, and kopfschmerzen, editable per account on this page. Check that the word you actually said is on that list (or close enough — matching is a plain substring search, not a meaning-based one), and that the recording is within the last 30 days, since sync only looks back that far.

A day I know I talked about isn't showing up

If that day is already logged in your diary — from typing it in yourself or from an earlier sync — it's deliberately left out of the results. Sync only ever surfaces days you haven't logged yet, so re-syncing repeatedly never re-shows something you already saved.

Connection shows "Couldn’t connect"

Use “Reconnect” to run through Plaud's authorization again — this happens when a stored connection token can no longer be refreshed (for example, if access was revoked from the Plaud side). Your keyword list and past diary entries aren't affected by reconnecting.

For the full mechanism — including exactly how content is matched, what the AI sees, and what's redacted before anything is sent — see how Plaud voice sync actually works.

Still stuck?

If none of the above matches what you're seeing — or a file you're confident should work doesn't — email info@migrainetoday.com with what you uploaded and what happened. A sample file (with any personal details removed) makes it much faster to diagnose than a description alone.