Why: I’ve lost count of the times I’ve been standing in front of a piece of equipment, at work or at home, with no idea exactly what model it was or where its manual went. I’ve replaced things that probably still worked because figuring that out was more hassle than buying a new one. In the OR the same problem has real stakes: you need the instructions for that exact device and revision, not something close. So I built the step that comes before OpenIntelligence. Point the camera at the thing, figure out exactly what it is, find the document that actually applies to it, then ask that document your questions.
Identity first: If there’s a UDI on the label, AccessGUDID resolves it to the exact device. If there isn’t, OCR reads the plate, the app ranks the likely candidates, and asks one question to narrow it down. The full UDI carrier never leaves the phone, only its catalog-level identifier does.
Finding the manual without a backend: I can’t ship a search API key inside an app, and I didn’t want a server to babysit. So the app opens a normal web search in Safari, and because it registers as a PDF handler, “Open in OpenManual” shows up in the share sheet. That reaches documents sitting behind a manufacturer login that no crawler ever could.
On-device from there: PDFKit and Vision read the document, chunking, embedding, and retrieval all stay local, and Foundation Models writes the answer with page-level citations. A found PDF is a possible match, not a guarantee, so you confirm it before it’s saved to that device.
Medical boundary: It can locate and quote documentation. It does not diagnose, recommend treatment, or pick patient-specific settings. Medical devices are the first vertical and keep the strictest rules; appliances, tools, and vehicles start from the same job.
What I learned: I built a Python backend and a Cloudflare search proxy for this, then deleted both on purpose. Shipping solo means no server and no key in the binary, and honestly the app got simpler for it. Scan-to-identity works end to end against the live APIs; grounded answering over the bound document is what’s left before the first public build.