Features Integrations AI & API Pricing Blog Docs
Overview WHOOP Oura Withings Apple Health Glucose Hevy Lab Tests Training Data REST API AI & Claude MCP Server

Lab Tests

Upload a PDF from your lab, check what was read out of it, and keep the values as trends you can follow across years and across labs.

Your original file is never kept. The PDF is deleted as soon as it has been read, on every path including a failed read. What stays is the values, their units and ranges, and enough of the source line to show you where each one came from.

Uploading

Go to /labs and choose Upload a report. Drop a PDF on the page or pick one with the button.

Before the first upload you are asked to agree to three things, and the file is not accepted until all three are ticked. They are separate on purpose: one covers importing the report, one covers the external AI processor that reads it, and one is your confirmation that the results are yours to upload.

What happens to the file

Reviewing

A parsed report opens a review screen listing every row that was found. Nothing is stored as a result until you approve, and you can change any of it first:

Rows that could not be matched are still shown, with the reason. They stay on the report and join no trend. If we work out later what one of them is, the report asks you to approve again.

Trends

/labs lists every marker you have results for, grouped by panel, with the latest value and whether it sits inside the range that report printed.

Each marker has its own page showing every result over time against its reference range. Dashed lines mark the limits each report printed, so a step in a dashed line means a lab changed its cut-off.

Markers of your own

If a row matches nothing in the catalog you can add it as your own marker, naming it as you add it. Only you see it. It can be renamed, moved to a panel, given a unit and a typical range, or declared a positive-or-negative marker, from its own page.

Renaming never changes the marker's address, so results already filed under it stay where they are. Deleting one removes its results as well, and says how many before it does.

Deleting

Troubleshooting