From scores to a product people can work in

AI evaluations identified weak customer calls, but a score alone did not complete the job. Reviewers needed to find the right conversations, examine the evidence, avoid duplicating each other’s work, and close the loop with a clear action.

I worked end to end across the Python backend and React interface. The result is a production review desk: a prioritized queue, an exclusive session, a scorecard, and a decision that stays connected to its evidence.

Give incoming work a dependable path

Amazon Connect evaluation events arrive through EventBridge. A Lambda retrieves the contact and evaluation, enriches the employee information from Snowflake, and upserts the result into Aurora PostgreSQL. Evaluations below the configured threshold enter the review workflow.

The FastAPI application runs on Lambda using Open Serverless (osls). Ingestion and API services have separate deployment and permission boundaries. Failed ingestion has a dead-letter path, while scheduled cleanup expires abandoned sessions and handles retention in bounded batches.

Two reviewers should never own the same case

Starting a review acquires an exclusive 12-hour lock. A PostgreSQL partial unique index enforces one active session per person being reviewed. Ownership is a database rule, backed by explicit API errors and a clear resume experience in the interface.

The UI keeps a countdown, warns before expiry, and ends the session when its lock expires. Background cleanup returns unfinished work to the shared queue. That behavior makes an interrupted review recoverable.

Keep the evidence beside the decision

The React and TypeScript interface brings the scorecard, summary, notes, and links to the original recording together. Translation is available where needed. Optimistic review updates include rollback, so a failed save does not silently become the new truth.

Ending a session records its outcome. Coaching or critical escalations include the compiled contact notes and route to the appropriate recipient. Email delivery is recorded as sent, skipped, or failed, keeping follow-up inspectable.

Security is part of the workflow

Single sign-on and fail-closed authorization protect access. The deployed API accepts traffic only through its protected origin, preventing a direct URL from bypassing the edge controls. Typed errors, request IDs, structured logs, and Sentry connect failures across the interface and backend.

An 80% backend coverage gate, static checks, and preview environments support delivery. The stack spans Python, FastAPI, React, TypeScript, Aurora PostgreSQL, Lambda, EventBridge, Auth0, and Snowflake.

What changed

A collection of evaluation scores became a usable review process: automated flagging, clear ownership, human judgment, and recorded follow-up. The work demonstrates the complete path from event and data model to the details someone uses throughout a working day.