A "Claude Code"-style AI agent repositioned as an oracle: a single source of truth queryable in natural language. Anyone asks a question in natural language and gets a useful, reliable, and friendly answer, based exclusively on approved sources.
- Knowledge base in Notion via MCP (Model Context Protocol) — the agent consumes only released documents.
- Natural-language questions about the ecosystem's business rules and operational data (e.g., student results), with answers in plain language.
- Nothing confidential is ingested or exposed — content comes only from sources permitted by the Notion MCP's access restrictions.
- Built for production, with its own URL/domain and a product-like appearance.
- Framework: FastAPI (Python 3.13+)
- ORM: SQLAlchemy 2.0 (async
asyncpg+ syncpsycopg) - Migrations: Alembic
- Validation: Pydantic v2
- Knowledge base: Notion via MCP
- Scheduler: APScheduler (PostgreSQL jobstore)
- Package manager: UV
Spatie Laravel Beyond CRUD pattern adapted to FastAPI, in three layers:
src/app/— entry points (HTTP, console/jobs)src/domain/— business logic, organized by subdomain (bounded contexts)src/support/— cross-cutting tooling (infra, integrations, utils)
Start with CLAUDE.md (rules and condensed overview) and docs/architecture.md (full architecture).
# Start the application
uvicorn main:app --reload
# Migrations
alembic upgrade head
# Seeds
python -m database.seeds
# Tests
pytestStill to be decided together (don't make assumptions): the interface (web chat vs. code context), the agent's internal architecture, the knowledge base ingestion/update strategy, and the authentication layer (there will be auth restricted to the ecosystem; the mechanism is yet to be defined).
docs/architecture.md— full architecturedocs/actions-vs-services.md— Action vs Domain Servicedocs/conventions.md— naming and styledocs/adding-new-domain.md— creating a new subdomaindocs/database-guide.md— migrations, seeds, factoriesdocs/testing-guide.md— testingdocs/scaffolding-guide.md—make:*commands