Professional Education Case study

Fluence

Science-backed psychedelic-therapy education, professional certificates and clinical training for healthcare professionals.

Professional Education

Fluence Fluence

Lead Engineer

System map · Processing pipeline

Engineering approach

  • Every score traceable Linked to the moment in the session that supports it
  • Six inspectable stages A wrong result is attributable to one of them

Analysis pipeline

  1. Transcript

    Submitted with an API key

  2. Segmentation

    Each stage inspectable

  3. Quote extraction

    Located in the transcript

  4. Evaluation

    Scored components per criterion

  5. Report

    A webhook notifies the caller

Evidence, not opinion

  • Every score linked to quoted evidence
  • Per-stage caching
  • Programme-specific criteria
  • Failures attributable to a stage
Product surface
The public Fluence training platform site, showing its course and classroom navigation.

Engineering

Dashboard engineering · Backend architecture · Analysis pipeline · Course delivery

Public product · Proprietary source code

Role
Lead Engineer
Disclosure
Public product · Proprietary source code

The problem

What the system had to solve.

Clinical training in psychedelic therapy is assessed on how a practitioner conducts a session — whether they held a boundary, followed the participant, responded to distress appropriately. That has always required an experienced instructor to sit through a recording and form a view, which does not scale and is inconsistent between assessors.

A model producing a score is not an acceptable substitute in a clinical training context unless every judgement can be traced back to what was actually said in the session.

What I owned

The responsibility behind the work.

Led engineering for the product: the dashboard experience, the backend behind course delivery and user management, and the multi-stage analysis pipeline that turns a session transcript into a defensible assessment.

Led engineering for the core EdTech product, developing the dashboard experience and a scalable backend for course delivery, user management, learning workflows and platform operations.

Engineering approach

How it was built.

Analysis is decomposed into stages — segmentation, annotation, quote extraction, evaluation, debrief analysis and summarisation — each with an inspectable output, so a wrong result is attributable to a stage. Evaluations are stored as scored components linked to quoted evidence from the transcript rather than as scores with a comment, assessment criteria are configuration per training programme, and model responses are cached so re-analysis does not repeat a full pipeline run.

Analysis pipeline

  1. Transcript
  2. Segment
  3. Extract
  4. Evaluate
  5. Report

Assessing a conversation

Why this is harder than grading a test.

Clinical training in this field is assessed on how a practitioner conducts a session: whether they held a boundary, followed the participant rather than leading them, responded to distress appropriately. That judgement has always required an experienced instructor to sit through a recording and form a view.

It does not scale, it is inconsistent between instructors, and the feedback arrives long after the session it concerns. But the alternative — a model producing a score — is unacceptable in a clinical training context unless the score can be traced to what was actually said.

The requirement is not a grade. It is a defensible assessment: every judgement attached to the moment in the transcript that supports it.

A multi-stage analysis pipeline

One model call cannot do this.

A session transcript is long, and asking one model call to read it and produce a scored assessment gives an answer that cannot be checked. The analysis is decomposed into stages, each with a narrow job and an inspectable output, so a wrong result can be traced to the stage that produced it.

Analysis stages

  1. Transcript Timed, speaker-attributed
  2. Segmentation Identify session phases and their boundaries
  3. Annotation Add context to the transcript
  4. Quote extraction Pull candidate evidence per criterion
  5. Evaluation Assess against each criterion
  6. Debrief analysis Assess the discussion afterwards
  7. Summarisation Overall performance
  8. Report
Each stage consumes the previous stage’s structured output rather than re-reading the whole transcript with a different question.

Segmentation first matters: an assessment criterion that applies to one phase of a session should not be scored against what happened in another.

Evidence, not opinion

The data model is the accountability mechanism.

Evaluations are not stored as scores with a comment. They are stored as structured components, each attached to the evidence that supports it, and that evidence is a quote taken from the transcript — often as an exchange rather than a single line, because what a practitioner said only means something alongside what it was responding to.

From transcript to defensible judgement

  1. Transcript
  2. Quote exchange
  3. Quote
  4. Evidence
  5. Evaluation component
  6. Evaluation
The chain is traversable in both directions. An instructor can start from a score and reach the moment in the session that produced it.

Two ways to store an assessment

Deliberately avoided

  • A score and a paragraph
  • No link to what was said
  • Cannot be checked or appealed
  • Disagreement is unresolvable

Implemented

  • Scored components per criterion
  • Each backed by quoted evidence
  • Evidence located in the transcript
  • A disagreement can be examined
The left-hand model cannot be audited, appealed or improved. The right-hand one can be all three.

Different programmes, different standards

Assessment criteria as configuration.

Training programmes do not share one rubric. Each has its own criteria, its own vocabulary and its own view of what competent practice looks like. The pipeline is therefore parameterised by criteria set: the stages are the same, and what each stage is looking for is configuration rather than code.

This is what makes the system a product rather than one organisation’s assessment script. Onboarding a programme means expressing its standard, not forking the analyser.

Caching model work

A multi-stage pipeline is expensive by construction.

Six stages over a long transcript is a lot of model calls, and re-running an analysis during development or after a prompt change would repeat all of them. Model responses are cached, so re-analysis, iteration on a later stage, and reproducing a previous result do not each cost a full pipeline run.

What caching buys

  • Iterating on a late stage without re-running early ones
  • Reproducing a previous analysis
  • Bounded cost per transcript
  • Faster development cycles

A service, not a script

What makes it usable by another system.

The analysis runs behind an API with key-based access and webhook subscriptions, so a learning platform can submit a transcript and be told when the report is ready rather than holding a connection open for the length of a multi-stage pipeline.

Integration path

  1. Transcript submitted with an API key
  2. Accepted for analysis
  3. Pipeline runs
  4. Report stored
  5. Webhook notifies the caller
The same asynchronous shape any long-running analysis needs: accept, process, notify.

Also recorded

  • Session and summary records
  • Observations and recommendations
  • Run logs for each analysis

Engineering scope

What I worked on.

  1. Core dashboard experience
  2. Course-delivery workflows
  3. User and learner management
  4. Scalable backend foundations
  5. Platform operations

Why these decisions mattered

The trade-offs behind the analysis.

  • Stages over one large call

    Decision
    Decompose the analysis into narrow, inspectable stages.
    Why
    A single call produces an answer nobody can check or attribute to a step.
  • Evidence in the data model

    Decision
    Every scored component links to quoted evidence in the transcript.
    Why
    Clinical assessment has to be defensible and appealable, not just produced.
  • Quote exchanges, not single lines

    Decision
    Evidence can span a back-and-forth.
    Why
    What a practitioner said is only assessable alongside what it was responding to.
  • Criteria as configuration

    Decision
    The pipeline is parameterised by criteria set.
    Why
    Programmes disagree about competence; the analyser should not be forked to express that.
  • Cache model responses

    Decision
    Model calls are cached across runs.
    Why
    Six stages over a long transcript makes iteration prohibitively expensive otherwise.
  • Asynchronous with webhooks

    Decision
    Submit, process, notify — rather than a synchronous call.
    Why
    A multi-stage pipeline cannot run inside a request the caller holds open.

Impact

What the design makes possible.

Every scored judgement can be traced to the moment in the session that supports it, which is what makes an automated assessment defensible enough to use in clinical training.

Technology

The technical surface.

  • Dashboard engineering
  • Backend architecture
  • Course delivery
  • User management

Next: TurtlEd

Back to all work Start a conversation