Context
A motor claim can stay open for days: policy verification, evidence, triage, assessment, approval, settlement, and reconciliation. A CRUD portal records the latest status. An unattended RPA script can click a screen. Neither gives you durable timers, safe retry, compensation, or an audit of who decided when a dependency was down.
Insurance Operations Automation Platform is a synthetic Java/Spring reference for that gap. Motor claims are the deepest journey; renewal and intermediary onboarding reuse the same case and workflow primitives.
Decision
Spring Boot services own business state and authorization. Temporal owns process execution, timers, signals, and recovery. The React application talks only to a web BFF. Python automation and an RPA work-queue contract perform bounded tasks; they do not become the system of record. PostgreSQL stores the case. A synthetic MySQL policy store is an explicit legacy boundary.
first notification of loss → policy verification → evidence → officer triage → authority-based approval → settlement instruction → reconciliation
Human decisions are workflow signals. Activities are idempotent where retry can occur. Incoming callbacks are correlated and amount-checked. Failed deliveries become an operator-visible dead letter, not a silent success.
What I rejected
Hiding the process in UiPath (or a local robot) so the claim exists only as a queue item, and exposing each Spring service to the browser with a shared JWT. The first makes recovery a desktop problem. The second makes RBAC a UI suggestion.
Failure scenario
The legacy policy simulator is down, or a settlement callback arrives twice. The case row stays in PostgreSQL. Temporal waits, retries the activity, or escalates. A duplicate callback matches the idempotency key and does not create a second payment. The Python worker can fail; the claim does not.
Evidence
docker compose up --build starts the React app, BFF, Spring services, Temporal, Python worker, PostgreSQL, MySQL simulator, Keycloak, MinIO, and observability. Architecture and delivery state what is simulated and that OpenShift/AWS definitions are not proof of a live deploy. Synthetic data only; not affiliated with an insurer and not a compliance certification.
Inspect: Repository · Architecture · Run locally · Delivery