Lost & Found
Airport lost-property product: staff portal for logging, matching, verification and handover, plus the first version of a FastAPI backend with embedding-based item–claim search.
Overview
Staff log found items; passengers file claims through staff. Items and claims move through a controlled lifecycle: log → publish → match → verify → hand over, with expiry, disposal and audit. I own the staff portal and wrote the first version of the backend.
Problem
Airports track found property and passenger claims on paper or spreadsheets, with retention rules that are easy to get wrong.
Role
Frontend owner (96% of the module, 48 spec files). Initial author and major contributor on the backend.
Highlights
- Staff workflow: QR receipts, registry, claims, a three-step verify dialog, handover stepper with photo capture, retention queue, archive and dashboard.
- First backend version: FastAPI, async SQLAlchemy, pgvector embeddings, Fernet-encrypted claimant PII, QR codes. Current production ranking is a teammate's; I implemented the first embedding-based match and later integrated backend suggestions in the portal.
- Expiry and disposal queue: five lifecycle bugs fixed; the page went from four API calls (one a write) to two reads.
- Audit trail with actor identity, JSONB field diffs, and admin CSV export capped at 10,000 rows with spreadsheet formula-injection protection.
- UTC instants for lost and found times so dates cannot shift by a day; tenant-keyed caches so switching airport never shows the previous tenant's data.
Tech stack
Outcome
A full staff product on the Aerios platform, with matching, verification, handover and a consistent expiry story shared by queue, dashboard and reports.