Thank you
I want to start by saying: "Thank you", to everyone in the community for contributing, raising interest, and helping OAISIS improve. It is great to hear from so many different people in different domains that want to use the platform. I hope this release is a step towards an improved version of OASIS.
General Release Comments
An interviewer that notices how the interview is going and can do something about it, doesn't that sound great?
Until now, OASIS agents followed their prompt and their guide no matter what. A participant could be giving one-word answers for five minutes straight and the agent would happily march on to question 7 of 12. v1.1.0 adds the machinery to measure that, and, if you want, to react to it. There's also session audio recording, a pile of structured-interview fixes, and noticeably lower response latency.
Engagement metrics
Flip Track engagement metrics on an agent and OASIS scores every participant turn while the interview runs:
- Per-turn signals Response latency, answer length, speech rate, filler words, and audio energy. Each turn gets a 0-1 score and a low/medium/high label.
- Rule-based, on purpose No model, no training data. The thresholds and weights are readable and tunable per agent, so you can always explain why a turn scored the way it did. That matters when this ends up in a methods section.
- Events A rolling window over recent turns detects sustained disengagement, positive engagement streaks, and recovery after a dip.
- Works for voice and text Modular voice gets the full signal set. Text chat gets latency (reading + typing time), length, and lexical hedging, with its own threshold profile. Voice-to-voice pipelines don't expose the needed audio/timing, so no metrics there.
- Everything exports Session detail page, API, CSV columns, JSON. Sits right next to the transcript.
Tracking is observe-only and off by default. It never changes the interview. Details in docs/ENGAGEMENT_METRICS.md. Turning on adaptive metrics might need to be justified in ethics approval if used in a research environment and should be disclosed in other settings.
Adaptive interviewer behavior
On top of the metrics you can define a small per-agent policy: when a trigger fires, run an action.
- Triggers are the engagement events and per-turn flags (e.g. three low turns in a row, very short answers, lots of fillers).
- Prompt actions inject a short instruction before the agent's next turn: offer a break, soften the next question, encourage elaboration, acknowledge effort, run a privacy check, or
match_style, which makes the agent subtly mirror the participant's formality, sentence length, and energy. - Pace actions slow the voice down (or reset it). This is provider-aware: OpenAI's numeric speed parameter time-stretches the audio and sounds awful, so on gpt-4o TTS models we steer pace through voice instructions at generation time instead. ElevenLabs and Cartesia render the requested speed natively and keep the numeric parameter.
Other features:
- Shadow mode by default. A new policy evaluates and logs what it would have done without changing anything for the participant. Run it on real sessions, read the log, then flip to live when you trust it. Going live is always a deliberate choice.
- No hidden prompts. Every action's instruction text is shown verbatim in the agent form, pre-filled with sensible defaults, and editable per rule like a prompt template. What you read is exactly what gets injected.
- Full audit trail. Every action (shadow or live) is recorded with its trigger and the injected text, shown on the session detail page, and included in the exports. Sessions where adaptation could act are flagged, so you can separate them cleanly in your analysis.
Enabling it seeds a starter policy (break on sustained disengagement, elaboration nudge on very short answers, softer question on high filler) that you can edit or delete. Off by default, scoped per agent, available for modular voice and text chat. The full action catalog and the verbatim default instructions are in docs/ADAPTIVE_BEHAVIOR.md.
If your study uses engagement measurement or adaptive behavior, cover it in your participant information and ethics review. The shadow mode and audit trail exist precisely so you can be transparent about what the agent did.
Session audio recording
Voice interviews (modular and voice-to-voice) can now store the raw audio. Enable Store interview audio per agent and each session writes separate participant and agent WAVs plus a manifest, organized by study/agent/participant/session. Local disk by default, any S3-compatible bucket if you point it at one. Off by default. See docs/AUDIO_RECORDING.md.
Structured interviews Improvements
- The agent no longer crams a probe, a leaked "(Transition: ...)" stage direction, and the next main question into one breath. A deterministic output filter between the LLM and TTS enforces one question per turn, whatever the model had in mind.
- Clarification questions ("what do you mean?", "can you repeat that?") no longer eat the follow-up budget or trigger a premature closing message. Detection follows the agent's configured interview language, with patterns for all twelve preset languages.
- Closing messages can't smuggle in a new question anymore.
Performance and reliability
- Transcript and engagement writes moved off the audio pipeline's hot path into background tasks. The end-of-turn pause this caused is gone.
- Engagement and adaptation evaluate once per participant turn instead of once per STT fragment (segmented STT could split one spoken turn into several fragments that each scored as a "very short answer").
- Mid-conversation guidance is injected as a marked user-role note. OpenAI gpt-5.x rejects late system messages with a 400, which used to silence the agent for the rest of the session.
- Text chat survives iOS Safari backgrounding the tab (keepalive ping, #13).
custom/<model>agents route through your OpenAI-compatible endpoint in text chat too, not just voice (#7).- Deepgram STT works again with deepgram-sdk v4+ (Nova 3 is the default).
- Model catalog verified against the live provider APIs: gpt-realtime-2, Gemini 3.5 Flash, and the current Scaleway lineup are in; models the providers stopped serving are out.
- Assorted dashboard and participant UX polish: honest error states, export toasts, form validation, microphone-blocked errors.
Upgrading
git pull
docker compose up -d --build
The new tables (engagement turns, events, adaptive actions, and friends) ship as Alembic migrations and run automatically when the backend container starts. Nothing to do by hand.
Getting started (if you're new here)
git clone https://github.com/oasis-surveys/oasis-platform.git
cd oasis-platform
cp .env.example .env
# Add your API keys to .env
docker compose up -d
Open http://localhost and you're ready to go (locally), there is also a detailed deployment guide for Hetzner VMs in the documentation.
License
OASIS is released under the GNU Affero General Public License v3.0 (AGPL-3.0). Free to use, modify, and distribute; if you run a modified version as a network service, share your changes. (This changed from ONCRL since v1.0.0; see the licensing FAQ.)
Citation
@software{lang2026oasis,
author = {Lang, Max M.},
title = {{OASIS}: Open Agentic Survey Interview System},
year = {2026},
url = {https://github.com/oasis-surveys/oasis-platform},
note = {Self-hosted platform for AI-powered conversational interviews}
}