Delegated authorization is needed the moment an AI assistant reaches a CRM, a ticket system, any internal system, because what it returns has to stay inside the entitlements of the person it acts for.
Python backend engineer building LLM applications — RAG pipelines, agentic workflows, and Model Context Protocol servers with OAuth 2.0 / OpenID Connect / RBAC authorization.
Available for remote freelance contracts with clients in Germany and the EU.
I work with German-speaking clients. German project overview — last revised 27 August 2026 (PDF).
An MCP server over a mock purchase-to-pay ERP. Two callers ask the same endpoint the same question and get different answers. A tool a caller may not reach is absent rather than refused. docs/walkthrough.md follows one from the login screen onward, every wire exchange copied from a capture a test checks it against. What this cost counts fifty-one commits of documentation before the first line of Python, and what running code did to that design.
Keycloak is the authorization server, and a client it provisions from a hosted metadata document inherits no PKCE pin. It arrives accepting plain while every authored client in the realm pins S256. The obvious repair is inert, because a profile is only as reachable as its policy's condition, and conditions are per-event. keycloak/README.md has both, checked against Keycloak 26.7.1.
Every client above is one I wrote. The recording is not. 90 seconds, no audio, of Claude Code driving this server, with claude.ai as the client_id on the consent screen. docs/normative-register.md lists every MUST and SHOULD the project departs from.
Delegated authorization is needed the moment an AI assistant reaches a CRM, a ticket system, any internal system, because what it returns has to stay inside the entitlements of the person it acts for.
ScienceQ answers from a multilingual video corpus with sources attached — what internal knowledge systems need under raised data-protection rules — and declares itself an AI before you type a question, while Art. 50 of the EU AI Act obliges every customer-facing AI system to disclose its nature.
Pre-sorting unstructured input at volume is the same job wherever it appears — JobScout runs deterministic rules over the whole daily stream of listings and pays a model only for what survives them.
A provisioned Keycloak client inherits no PKCE pin, and the obvious fix is inert — what a hosted metadata document costs a realm, checked against Keycloak 26.7.1. Index.