Pilot architecture · v0.1 · 15 Aug 2026

Bangkok, remembered properly.

A local-first knowledge pipeline for turning saved Instagram posts, videos, screenshots and links into searchable recommendations you can ask an agent about.

Bangkok pilotPrivate by defaultSource-grounded answers

The core loop

Collect → understand → ask
01 / INTAKE
URLs & files

Instagram links, exported bookmarks, screenshots, PDFs, notes.

02 / EXTRACT
Media pipeline

Download permitted media; capture captions, OCR and audio.

03 / ENRICH
Normalize

Places, cuisines, neighborhoods, prices, opening hours, dates.

04 / INDEX
Knowledge store

Originals + structured records + full text + embeddings.

05 / ANSWER
Agent / chat

Retrieve evidence, answer, cite the original post and flag uncertainty.

Recommended pilot stack

One machine, one repo, boring primitives

Ingestion adapters

Every source becomes the same internal Item object.

  • Manual URL drop / Telegram intake
  • Instagram saved-collection browser capture
  • Folder watcher for MP3, MP4, JPG, PDF

Extraction workers

Run asynchronously and keep raw evidence.

  • yt-dlp for supported public URLs
  • faster-whisper for local transcription
  • ffmpeg + OCR for visual text and menus

Knowledge layer

Start small; preserve an escape hatch.

  • SQLite + FTS5 for metadata and search
  • Markdown/JSON sidecars for portability
  • Add vector search after real questions expose the need

Important Instagram reality

The brittle edge

Yes, it is possible. But the official API is not the right foundation for reading a personal “Saved” library. The robust pilot pattern is: you browse your own Saved collection in a logged-in browser, export the visible post URLs locally, then let the normal media pipeline process those URLs.

That keeps authentication on your machine and makes the Instagram-specific part replaceable.

Do not build around cookies as a cloud service. Treat browser cookies as sensitive credentials: local-only, short-lived, never committed, never sent to an LLM or hosted worker.

Some posts may still be unavailable because they are private, deleted, region-gated or changed by Instagram.

What gets stored for each item

Evidence first

Identity

source · canonical_url · author saved_collection · captured_at content_hash · processing_status

Meaning

title · transcript · OCR · caption places[] · categories[] · entities[] price_band · geo · visit_context

Evidence

local_media_path · thumbnail source_timestamp · extraction_method confidence · original_link

First useful Bangkok questions

Acceptance test

Discovery

“Which saved places are good for a relaxed dinner near Ari, and what did the source actually say?”

Planning

“Build me a 3-day plan around cafés, markets and restaurants from my saved items.”

Filtering

“Show places that are open late, under ฿฿฿, and not just influencer hype.”

Build sequence

Smallest path to proof

Phase 1 · 1–2 days

Drop 20–50 Instagram URLs or files into an inbox folder. Extract captions/transcripts/OCR and write clean JSON + Markdown.

Phase 2 · 2–4 days

Add Saved-collection URL capture, deduplication, place extraction and a local search/chat interface with citations.

Phase 3 · later

Add newsletters, YouTube/MP3 blockchain content, recipes and scheduled ingestion only after the Bangkok questions work.