A backend that receives qualitative feedback records from a CRM, runs LLM-driven analysis, summarisation, and code assignment over them, and returns the results synchronously. Each request carries dozens to thousands of records.
Built as a FastAPI service on Azure App Service, with a hexagonal core (LiteLLM, Presidio, Postgres usage tracking behind ports) and a Terraform-managed infrastructure.
The rendered Sphinx site is hosted at https://rodekruis.github.io/qualitative-feedback-analysis/ (refreshed when a release is published — see Documentation publishing for trigger details).
All long-form docs live in the documentation home. The most common entry points:
- New to the project? Start with the Developer guide — local env setup, pre-commit, coding conventions.
- Want the fastest dev environment? Use the Devcontainer.
- Want to understand the design? Read the Architecture overview.
- Operating the service? See the Operations index — deployment, release flow, env provisioning, observability, settings reference.
- Calling the API? See the REST API overview.
- Integrating from EspoCRM? See the EspoCRM connector scripts.
git clone git@github.com:rodekruis/qualitative-feedback-analysis.git
cd qualitative-feedback-analysis
cp .env.example .env && $EDITOR .env # set LLM_API_KEY and AUTH_API_KEYS at minimum
uv sync
uv run pre-commit install
make test
uv run python -m qfa.main # serves on http://0.0.0.0:8000Full walkthrough (direnv, hooks, conventions, test tiers) is in the Developer guide. Required and optional environment variables are listed in the Settings reference.
See LICENSE.