Photo a Nepali sculpture → find possible matches in open museum records and a curated catalog of documented objects.
Mobile-first open-source web app for art aficionados, gallery visitors, students, and independent researchers. Nepal-first; designed so other regions can later add “country packs.”
Possible visual match — not a determination of legal ownership.
LAoN does not file claims. See docs/ethics.md.
Thousands of sacred sculptures left Nepal in the mid–late 20th century. Scholars documented many of them (notably Lain Singh Bangdel’s Stolen Images of Nepal, 1989). Museums publish open images. Activists and communities already match photos by hand.
LAoN is an independent tool that:
- Catalogs a curated public set of objects (metadata + rights-cleared images)
- Matches a phone photo against that index with visual similarity
- Exports a shareable “possible match” evidence package for the user to send wherever they choose
It is not affiliated with NHRC, Lost Arts of Nepal, Himalayan Art Resources, Global Nepali Museum, or any museum. We credit public sources; we do not claim partnership.
| Layer | What | In git? |
|---|---|---|
| Public open subset | Metadata, CC0 museum images, licensed community photos | Yes |
| Private research corpus | Book plates / restricted research images you add locally | No (data/private/) |
| Local research DB | SQLite + Bangdel plate photos + labels/locations | No (data/local/) |
Photograph plates from Stolen Images of Nepal with page, place, and labels:
- Start API + web
- Open http://localhost:3000/research
- Take/choose photo → fill deity, place/tole, Bangdel page, notes → Save
- Export for matching → copies into private corpus + seed metadata
python scripts/embed_corpus.py
Storage: data/local/research.db + data/local/images/bangdel/ (never committed).
Operators can set PRIVATE_CORPUS_PATH to improve match recall on a self-hosted instance. The default open demo uses public images only.
- Node 20+
- Python 3.11+
cd services/api
python -m venv .venv
.venv\Scripts\activate # Windows
# source .venv/bin/activate # macOS/Linux
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000API docs: http://localhost:8000/docs
cd apps/web
npm install
npm run dev# From repo root, with services/api venv active
python scripts/ingest_cleveland.py --limit 30
python scripts/ingest_met.py --limit 40 # live Met API (sometimes blocked)
python scripts/ingest_met_csv.py --limit 40 # Met Open Access CSV fallback
python scripts/embed_corpus.py
# Then reload catalog if API is running:
# curl -X POST http://localhost:8000/api/admin/reloadLAoN/
apps/web/ Next.js PWA
services/api/ FastAPI (catalog + crop + visual search)
packages/schema/ Shared JSON Schema for objects
data/seed/ Public catalog JSON + geo
data/private/ Local-only research images (gitignored)
ml/ YOLO dataset layout + Colab train notebook
docs/ Ethics, data sources, ML training
scripts/ Ingest + embed utilities
There is no separate App Store binary yet — on purpose for a free social project.
Use the visitor camera on any phone browser:
- Open the site (or
http://YOUR-LAN-IP:3000/visitwhile developing) - Go to
/visit— rear camera + shutter (or gallery fallback) - Add to Home Screen (iOS Share → Add to Home Screen / Android Install app)
That installs LAoN as a standalone icon that launches straight into the camera flow (manifest start_url is /visit).
Native wrappers (Expo / Capacitor) can come later if store distribution is required.
- Visitor camera (
/visit) — mobile-first photo → match for gallery visitors - Browse / filter catalog (status, place, iconography tags)
- Object detail with sources and museum links
- Simple map of original sites in the seed set
- Photo upload → ML-0 crop (focus sculpture) → ranked visual matches
- Download “possible match” report JSON
| Phase | What | Cost |
|---|---|---|
| ML-0 | Crop artifact before match (edge_saliency always; optional rembg) |
$0 |
| ML-1 | Community YOLO artifact train on free Colab GPU |
$0 |
| ML-2 | Fine iconography classes (later) | Volunteer labels |
- Guide: docs/ml-training.md
- Train notebook: ml/notebooks/train_yolo_colab.ipynb
- Optional better crop:
pip install -r services/api/requirements-ml.txt
Google ML Kit is for on-device inference of stock models — not our training path. We train with open YOLO + Colab; ML Kit/TFLite can be an export target later.
| Layer | Choice |
|---|---|
| Web | Next.js + TypeScript (PWA-ready) |
| API | FastAPI |
| Seed store (v1) | JSON files under data/seed |
| Vectors | NumPy cosine similarity; optional OpenCLIP embeddings |
| Museum data | Met Collection API (CC0), Cleveland Open Access (CC0) |
Code: MIT.
Catalog image licenses are per image (see each object’s images[].license). Prefer CC0 museum assets.
LAoN is a research and education project. Similarity results can be wrong. Always verify with specialists, primary sources, and proper legal channels before taking any public or legal action related to cultural property.