A Streamlit web app that analyzes Augmentative and Alternative Communication (AAC) letterboarding therapy session transcripts. Upload an SRT file and the app classifies every facilitator prompt into one of five evidence-based categories using GPT-4.
| Category | Description |
|---|---|
| Choice | Offers the student discrete, explicit options |
| Clarification | Asks the student to confirm or expand on something they already communicated |
| Guided | Scaffolds toward a specific answer via letter cues or directional hints |
| Open-ended | Invites a free response with no constraints or implied target |
| Reinforcement | Encourages effort or regulates emotion without eliciting new information |
.
├── app.py # Streamlit entry point
├── requirements.txt
├── .env.example # Copy to .env and fill in your keys
├── Makefile # Common dev tasks
├── pipelines/
│ └── steps/
│ ├── classifier.py # OpenAI GPT-4 classification
│ ├── database.py # Supabase persistence
│ ├── ingest_transcript.py # SRT parsing
│ └── metrics.py # Aggregation helpers
├── templates/
│ └── report_template.html # Embedded HTML report
├── tests/
│ └── test_pipeline.py
└── data/ # Sample / training data
- Python 3.11+
- An OpenAI API key
- A Supabase project with a
sessionstable
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txtcp .env.example .env
# Edit .env and fill in OPENAI_API_KEY, SUPABASE_URL, SUPABASE_KEYstreamlit run app.py
# or: make run- Open the app in your browser (default:
http://localhost:8501). - Upload an
.srttranscript file. - Click Analyze.
- Review the prompt distribution chart and the classified prompt table.
make test # Run unit tests
make lint # Lint with flake8The sessions table in Supabase should have at minimum:
create table sessions (
id uuid primary key default gen_random_uuid(),
file_name text,
results jsonb,
created_at timestamptz default now()
);