# Resume Agent backend FastAPI service for the conversational resume builder: sessions, turns, resumes, imports, and light-optimization state, persisted in SQLite (pilot) or PostgreSQL (production). ## Run locally Python 3.11 or newer is required. ```bash python -m pip install -r requirements.txt cp .env.example .env # Leave OPENAI_API_KEY empty for offline rules, or fill in the live LLM gateway values. python -m uvicorn app.asgi:application --reload --port 8000 ``` `app.asgi:application` wraps `app.main:app` and hides `/docs`, `/redoc`, and `/openapi.json` by default; set `RESUME_AGENT_API_DOCS=1` to expose them (development only). The runtime expects `DATABASE_URL` (PostgreSQL) and uses the `resume_agent` schema by default; override with `RESUME_AGENT_DATABASE_SCHEMA`. Run `alembic upgrade head` to create the tables, and `python scripts/migrate_sqlite_to_postgres.py` to move existing SQLite data. SQLite is used only when `database_path` is passed explicitly (tests, local pilot). CORS defaults to `http://localhost:5173`; set a comma-separated `RESUME_AGENT_CORS_ORIGINS`. The health check at `GET /health` is always open. ## Tests ```bash python -m pytest tests -q ``` Postgres-backed tests require `RESUME_AGENT_TEST_DATABASE_URL`; the rest run on SQLite temporary files. Tests force the rule-based LLM provider, so no API key is needed.