PrivLab
Built at Meta Global AI Developer Hackathon · Oct 26, 2026 · Remote

PRIVLAB Unlock the data in medical reports without the patient ever leaving your device. WHY ========================= In a world where AI is already good enough and fast enough to build, design and execute, what we need more of is high-quality real-world data. That data is what lets us see patterns, make better decisions, build research databases for better treatment, and build the next models for the future. THE PROBLEM ========================= In healthcare, about 80% of all data is unstructured: pathology reports, clinical notes, genomic and radiology reports. These documents hold the information that tells a patient's treatment journey, such as diagnosis, histology, stage and biomarkers. The volume is huge: a single cancer patient can generate from several to hundreds or even thousands of documents across their care. But the same documents hold names, ID numbers, addresses and dates of birth, and patient privacy is the main reason this information is never shared or analysed. So healthcare professionals end up reviewing documents and entering the data by hand, which is slow and error-prone. What gets collected is usually a small subset, and dated by the time it is done. Similar AI solutions on the market today are black boxes. From working with healthcare AI, I see three more gaps in building a useful solution for data annotation and extraction. - The prompt gap: To extract or annotate values from medical documents, a developer has to collect domain knowledge from doctors and turn it into AI prompts. But medical context is complex and varies from one expert to the next. - The validation gap: The AI output has to be validated by human annotators, and their reading of a document often differs from each other, from the doctor and from the developer. Validation metrics fluctuate, and most of the "errors" are really communication gaps. - The transparency and trust gap: The end users, the doctors and registrars, have no visibility over the end-to-end process and no way to change anything. They do not trust the product, and adoption is poor. I built PrivLab to unlock this data for registries, research, data sharing and AI training, starting with pathology reports. HOW PRIVLAB SOLVES THEM ========================= - Privacy: Personal details are found and masked on your device before any AI sees the report, and you confirm the masking yourself. An open-weights model double-checks the masked text, and it can be hosted in-house. The privacy guard is built into the code: only masked text can ever reach an AI. - Manual data entry: Muse Spark 1.3 reads the masked report and highlights each value with the words it came from. You confirm instead of retype, one report at a time in the browser or a whole folder at once through Muse Code. - The prompt gap: There is no developer and no prompt to hand over. The doctor or registrar describes a field in their own words, and Muse Spark 1.3 turns it into a precise medical definition they approve. The definition is the spec, written by the person who knows what it means. - The validation gap: The same person who defined the field validates its values, so there is no annotator reading the document differently. Every check is scored, about one in ten is a blind check, and a field is Proven accurate only when the user's own checks show it, with 95% confidence. - The transparency and trust gap: Every value shows its source in the report, every uncertain value is flagged instead of guessed, every correction is learned and listed where the user can remove it, and the accuracy of every field is shown on its card. The user sees the whole process and can change any part of it. HOW IT WORKS ========================= - Read on your device: Add reports as text files, pasted text or PDFs. PrivLab reads them on your own computer and turns a PDF into text locally, so nothing is uploaded to the cloud. - De-identify on your device: PrivLab finds the personal details in the locally read report, using pattern recognisers and a local name model, and masks each one as a tag such as [PERSON-1]. You review and validate the masked text before anything is sent. - Privacy guardrail: The masked text is scanned once by open-weights Muse Spark Open, which flags any identifier the rules missed. - Smart medical field definition: You share brief information about a field: its name, a short description and an example. The AI assistant, powered by Muse Spark 1.3, proposes an accurate and precise medical definition and a preview of the annotation on your report, so you can check it before you proceed to extraction. - Annotate and validate: You are the one who validates. Muse Spark 1.3 annotates and highlights each value in the masked report; if it is unsure, PrivLab flags the value for your review. The more you check, the more accurate PrivLab becomes. Each field's card shows its accuracy so far and how far it is from Proven accurate (with 95% confidence, at most 5% of its values wrong). About one value in ten is a blind check, where PrivLab hides its answer until you give yours. - Learn and personalise: PrivLab learns from you at both stages. In de-identification, an identifier such as a name you hide once is remembered and caught on your device the next time, without any AI call. In extraction, every value you confirm or correct becomes an example that steers the next reports, and a correction can be applied to the other reports in the batch and kept for the future. Over time PrivLab works the way you do. - Flexible export: Export the extracted structured data as a CSV, or all the locally masked documents as text, or the full package: the structured data, the masked texts and a data dictionary with the definition of every field you extracted, in one zip. Before each download, PrivLab tells you what the file holds and what was left out. THREE WAYS TO USE PRIVLAB ========================= - In the browser: PrivLab runs fully in your browser on your own computer. You control each step, review every document and confirm every value. Best for checking a few reports carefully. - From your AI assistant: PrivLab connects to assistants such as Muse Code through MCP, for bulk processing of high volumes of documents: point it at a folder, approve the masking once, and only the uncertain values come back to you. Each report still opens in the browser whenever you want to look. - Deployed in-house: Run PrivLab locally with open-weights Muse Spark Open as the base model, hosted on your own servers, so nothing leaves the building. Use it for de-identification only, or end to end for de-identification and extraction. MODELS AND TOOLS ========================= - On the device: Presidio-style patterns and a spaCy name model for masking. - Muse Spark Open (Baseten): The security guardrail on masked text. Because the weights are open, a hospital can host it in-house and nothing leaves the building. - Muse Spark 1.3 (Meta Model API): Field definitions, annotation and extraction. - Elephant (Baseten): A small decision model giving a second opinion on whether an annotated value needs the user's review. - Muse Code: Used throughout for coding, bug fixes and usability testing of the UI. WHAT YOU GET ========================= - Safe: 100% of 604 personal details in the held-out test reports were hidden on the device before any AI call. - Fast: Minutes instead of hours, and whole folders in bulk through Muse Code. - Cost-effective: Under a cent per report. De-identification alone is free, and cached re-reads cost nothing. - Trustworthy: You never take PrivLab's word for it. Every value is highlighted in the report so you can see where it came from, and a field earns the "Proven accurate" label only after you have checked enough of its values yourself. - Personalisation: Remembers and learns every change and correction you make, in both de-identification and extraction, on your device. - Easy to adopt: Use it in the browser, with clear step-by-step interaction, or from your AI assistant through MCP. Process a single report or a whole batch. Share the results the way you need: structured data as a CSV, masked documents as text, or the whole package with both plus a data dictionary.