Context
A full-stack diagnostic platform that processes an 11-question user intake and returns a structured readiness roadmap scored across six weighted dimensions by Claude Sonnet.
Every result is held in a pending state in Supabase until a human consultant approves it in the admin dashboard — satisfying EU AI Act Article 14 mandatory human oversight before the result reaches the user.
Problem
Standard diagnostic tools either deliver instant unreviewed model outputs or require fully manual consultant processing for every case — neither scales responsibly.
The design challenge was automating the scoring while preserving a structurally enforced human approval gate at delivery.
Workflow
A user completes the 11-question intake. Claude Sonnet scores the response across six weighted dimensions and generates an overall readiness score, dimension breakdown, and month-by-month roadmap as structured JSON.
The result is stored as pending in Supabase and an n8n webhook fires a notification to the consultant admin dashboard. The consultant reviews and approves before Resend delivers the result email to the user.
01
11 questions
User intake
User completes the 11-question form. FastAPI receives the submission and passes it to the Claude Sonnet scoring layer.
02
Structured JSON output
Claude Sonnet scoring
The Anthropic SDK sends a structured prompt; Claude returns a JSON object with overall score, six dimension scores, and a month-by-month roadmap. LangSmith traces the call.
03
Pending state
Human review gate
Result stored as pending in Supabase. n8n fires a webhook notification to the consultant admin dashboard.
04
Approved delivery
Approved delivery
Consultant approves in the admin dashboard. Resend sends the result email. Optional Stripe Checkout unlocks the paid deliverable kit.
Architecture
FastAPI handles intake processing, Claude Sonnet scoring via the Anthropic SDK, and Stripe Checkout for the optional deliverable kit. Supabase (EU-Frankfurt) stores all diagnostic results. LangSmith (EU endpoint) traces every model call for observability.
- FastAPI with slowapi rate limiting on all scoring endpoints.
- LangSmith EU endpoint (eu.api.smith.langchain.com) for full model call tracing.
- Supabase Frankfurt for GDPR-aligned data residency.
Scoring layer
Claude Sonnet scores six weighted dimensions into structured JSON via the Anthropic SDK. LangSmith (EU endpoint) traces every model call.
- Anthropic SDK
- LangSmith EU tracing
- Structured JSON output
Data and review layer
Supabase (Frankfurt) stores all results in a pending state. n8n fires admin notifications. The consultant admin dashboard handles review and approval.
- Supabase Frankfurt
- n8n notifications
- Admin approval dashboard
Delivery and payments
Resend sends the approved result email. Stripe Checkout handles the optional deliverable kit purchase with webhook signature verification.
- Resend transactional email
- Stripe Checkout
- Webhook verification
Governance
No diagnostic result reaches a user without explicit consultant approval. The pending state in Supabase is a data constraint, not a policy — the Resend delivery step cannot fire without an approved flag.
- Results stored as pending until consultant sign-off in the admin dashboard.
- EU AI Act Article 14 human oversight satisfied by system architecture, not process.
- LangSmith traces available for every scoring decision.
Metrics
The scoring model produces an overall readiness score (0–100), a breakdown across six weighted dimensions, and a structured month-by-month roadmap as a single JSON output.
LangSmith observability allows review of every Claude call, output structure, and any schema deviations.
- Diagnostic questions
- 11
- Scored dimensions
- 6
Structured intake scored by Claude Sonnet across six weighted dimensions.
Language, Education, Pathway Fit, Timeline, Financial, and Documentation.
Roadmap
The platform is live and actively iterated. Current focus areas are structured output consistency, deliverable kit expansion, and load testing against the rate limiting layer.
- Intake, scoring, human review, and Stripe kit purchase are all in production.
- slowapi rate limiting and LangSmith observability are in place for production scale.
- Structured output schema validation is the active reliability improvement.
Live
Production platform
Intake, scoring, human review, result delivery, and Stripe kit purchase are all in production.
Active
Output reliability
Improving structured JSON output consistency and expanding the deliverable kit scope.
Next
Scale controls
slowapi rate limiting and LangSmith observability are in place; load testing and SLA monitoring are next.
Reflection
The most consequential design decision was where to place the human gate — after scoring but before delivery, enforced at the data layer.
That constraint shaped the entire system: the Supabase schema, the n8n notification logic, the admin dashboard, and the Resend trigger all follow from the decision that no model output reaches a user without explicit human review.
Technical depth
System assumptions and operating controls.
Architecture diagram
FastAPI processes the 11-question intake, Claude Sonnet scores six weighted dimensions into structured JSON, and every result waits in Supabase as pending until a consultant approves in the admin dashboard. Resend delivers the approved result; Stripe handles the optional kit purchase.
01
Intake
User completes 11-question form. FastAPI endpoint validates the submission and queues it for scoring.
02
Claude scoring
Anthropic SDK sends a structured prompt to Claude Sonnet. LangSmith (EU) traces every call. Output is a JSON object: overall score, six dimension scores, and a month-by-month roadmap.
03
Human review gate
Result stored as pending in Supabase (Frankfurt). n8n fires a notification to the consultant admin dashboard.
04
Delivery
Consultant approves in the admin dashboard. Resend sends the result email. Optional Stripe Checkout unlocks the deliverable kit.
Process reasoning steps
Step 1
Intake
Receive and validate the 11-question user submission via FastAPI.
Step 2
Score
Claude Sonnet produces structured JSON: overall score (0–100), six dimension scores, and a month-by-month roadmap.
Step 3
Pend
Store result as pending in Supabase. n8n fires a webhook notification to the admin dashboard.
Step 4
Review
Human consultant reviews the scored diagnostic and approves or returns it for revision.
Step 5
Deliver
Resend sends the approved result email to the user.
System component reference
Tool
Anthropic SDK — Claude Sonnet
Purpose
Score six weighted dimensions and generate a structured readiness output.
Input
11-question intake responses
Output
JSON: overall score, dimension scores, month-by-month roadmap
Guardrail
Output stored as pending until consultant approval — never delivered directly.
Tool
LangSmith (EU endpoint)
Purpose
Trace every Claude call for observability and output schema review.
Input
Model inputs and outputs
Output
Trace records at eu.api.smith.langchain.com
Guardrail
EU endpoint used for GDPR-aligned data residency.
Tool
Stripe
Purpose
Handle optional paid deliverable kit purchase via Checkout.
Input
User checkout intent
Output
Stripe Checkout session; webhook confirmation
Guardrail
Webhook signature verification on all Stripe events.
Tool
Resend
Purpose
Deliver approved diagnostic results to users.
Input
Approved result from admin dashboard
Output
Transactional email with readiness score and roadmap
Guardrail
Email sent only after explicit consultant approval — Supabase flag required.
Evaluation metrics
Structured output compliance
Valid JSON schema on every scoring call
LangSmith traces reviewed for schema compliance and anomalous outputs.
Human review gate integrity
Zero results delivered without consultant approval
Supabase pending state enforced at the delivery step — no approved flag, no Resend call.
Risk and failure scenarios
Malformed Claude output
Scoring fails silently or returns an incomplete dimension breakdown.
Structured output parsing with fallback error state; LangSmith traces flag schema deviations.
Stripe webhook failure
Kit purchase not confirmed; user not granted kit access.
Webhook signature verification and idempotent event handling.
Approval bottleneck
Results queue if the consultant reviewer is unavailable.
n8n fires an immediate notification; admin dashboard surfaces all pending results.
Human review checkpoints
Diagnostic result review
Human consultant
Approve or return the scored diagnostic before it is delivered to the user — required by EU AI Act Article 14.