# Startup Prompt: BTV Innsbruck Crawler-to-Index Report

You are reviewing the complete data pipeline for a PROLICHT lighting project
reference page. The attached zip contains all source files, code, and a
database report for the page "BTV Innsbruck - Stadtforum".

## Context

This is an MCP server that provides product search tools for the PROLICHT
architectural lighting catalog. An external crawler scrapes the website into
markdown/text/images. The `pipeline_v2.py` script analyzes each page using
DeepSeek, extracts entities/relations/embeddings, and stores them in SQLite.
`build_faiss.py` packs the embeddings into a FAISS index. At runtime,
`mcp_backend_knowledge.py` searches the FAISS index and enriches results
from SQLite.

## Files in the zip

- `crawled/btv-innsbruck.md` - main crawler markdown (what pipeline_v2 reads)
- `crawled/btv-innsbruck.txt` - plain text version (includes nav/footer)
- `crawled/btv-innsbruck.crawl.json` - crawler metadata
- `crawled/btv-innsbruck.images.json` - image manifest (11 images)
- `crawled/btv-innsbruck_removed_parts.md` - nav/footer stripped by crawler
- `crawled/projects-listing-page.md` - the project INDEX page (for comparison - shows filter sidebar with ALL product families that was polluting search results)
- `code/pipeline_v2.py` - text analysis pipeline
- `code/mcp_backend_knowledge.py` - runtime search backend
- `code/models.py` - Pydantic models
- `code/build_faiss.py` - FAISS index builder
- `db-report/BTV-INNSBRUCK-DB-REPORT.txt` - complete SQLite state for this page

## What to analyze

1. **Content flow**: Trace how `btv-innsbruck.md` content flows through
   `read_page_markdown()` -> `analyze_page()` (DeepSeek) -> `store_page()` ->
   `build_and_embed()` -> FAISS index. What gets lost or misrepresented?

2. **Image pipeline**: 11 images crawled, 10 in DB (logo skipped). Review
   the image categories and quality scores in the DB report. Are product
   shots (isolated cutouts) correctly distinguished from reference project
   photos (architectural shots)?

3. **Product family links not captured**: The markdown has `[![Hadi00](...)
   HADI](produktfamilien/hadi.md)` links but these don't appear in
   `page_links`. Only footer links are captured. Is there a bug in link
   extraction?

4. **HADI vs HADI-M**: The product family section says "HADI" but image
   alt text says "HADI-M". How should the pipeline handle this discrepancy?

5. **Listing page contamination**: Compare `btv-innsbruck.md` with
   `projects-listing-page.md`. The listing page contains a filter sidebar
   with ALL product families. We added `project_reference_list` as a new
   page_category to separate listing pages from individual projects.

6. **Search effectiveness**: Given the 5 vector embeddings stored, would a
   search for "Projekte mit HADI" find this page? What about "BTV Innsbruck
   Architektur"? What about "DALI office lighting Innsbruck"?

Report any issues, missing data, or improvement opportunities you find.
