# Kosovo Legal AI
Legal research assistant for the Kosovo Official Gazette corpus. Ask questions in Albanian, Serbian, or English — get cited, article-level answers drawn from 1,040 indexed laws.
## Stack
- **Backend** — FastAPI, LangGraph, Qdrant, OpenAI GPT-4o
- **Frontend** — Next.js 15, Tailwind CSS
- **Search** — Dense (text-embedding-3-large) + sparse (SPLADE) hybrid with RRF fusion
- **Ingestion** — Playwright scraper → PyMuPDF/Docling → chunker → embedder → APScheduler daily sync
## Setup
### Backend
```bash
cp .env.example .env
# fill in OPENAI_API_KEY and LEGAL_AI_API_KEYS in .env
pip install -r requirements.txt
playwright install chromium
# start Qdrant (Windows binary)
.\qdrant\qdrant.exe --config-path qdrant\config.yaml
# run ingestion
python -m src.run_ingestion
# start API
uvicorn src.api.main:app --reload
```
### Frontend
```bash
cd frontend
cp .env.local.example .env.local # set BACKEND_URL and BACKEND_API_KEY
npm install
npm run dev
```
## Tests
```bash
pytest tests/
```
## Environment variables
See `.env.example` for all required and optional variables.