ECHO provides an extensible ecosystem for designing, deploying, and analyzing mixed-method human–AI studies.
Complete Demo Video: https://drive.google.com/file/d/1T16fFcsGkQIPIIHZsaMCFw8yEAn2V5ER/view?usp=share_link
ECHO is an open research platform designed to support mixed-method studies of human interaction with AI and digital information systems. It enables researchers across social sciences, humanities, and computing to easily design studies that integrate surveys, writing tasks, conversational interfaces, and reflective evaluations within a single workflow. Participants can complete consent and background questionnaires, engage in multiple information-seeking or AI-assisted tasks, and provide pre- and post-task feedback, while all interactions and responses are securely captured for analysis. By streamlining end-to-end study design and data collection, ECHO lowers technical barriers, fosters reproducible research, and empowers diverse communities to investigate learning, decision-making, creativity, and trust in emerging AI technologies.
Before starting, make sure you have:
| Requirement | How to Get It | Video Tutorials |
|---|---|---|
| Node.js (version 14+) | Download from nodejs.org | https://www.youtube.com/watch?v=m4D7G3k_TKA |
| npm | Included with Node.js | |
| Firebase account | Sign up free at firebase.google.com | https://www.youtube.com/watch?v=B4sRuK3XVTc |
| OpenAI API key | Get from platform.openai.com | https://www.youtube.com/watch?v=SzPE_AE0eEo |
| Brave Search API key | Get from brave.com/search/api | https://www.youtube.com/shorts/GJpP6_9wmBE |
Verify Node.js is installed:
node --version
npm --versiongit clone https://github.com/OUHCIRGroup/echocd echonpm installThis downloads all required packages (may take a few minutes).
Firebase stores all your research data.
- Go to Firebase Console
- Click "Create a project"
- Enter a project name (e.g., "fixedness-study")
- Disable Google Analytics (optional) and click Create project
- Click Authentication in the left sidebar
- Click Get started
- Click Email/Password
- Toggle Enable to ON
- Click Save
- Click Firestore Database in the left sidebar
- Click Create database
- Choose Start in test mode
- Select a location closest to your participants
- Click Enable
- Click Storage in the left sidebar
- Click Get started
- Click Next, then select location and click Done
- Click the gear icon (⚙️) next to "Project Overview"
- Click Project settings
- Scroll to "Your apps" and click the Web icon (
</>) - Enter a nickname and click Register app
- Keep this page open — you need the configuration values next
cp .env.example .envOpen .env in a text editor:
# Firebase Configuration
REACT_APP_FIREBASE_API_KEY=your_api_key_here
REACT_APP_AUTHDOMAIN=your_project_id.firebaseapp.com
REACT_APP_PROJECT_ID=your_project_id
REACT_APP_STORAGE_BUCKET=your_project_id.appspot.com
REACT_APP_MESSAGING_SENDER_ID=your_messaging_sender_id
REACT_APP_APP_ID=your_app_id
REACT_APP_MEASUREMENT_ID=your_measurement_id
# Admin Setup Code (create your own secure code)
REACT_APP_ADMIN_SETUP_CODE=your_secret_code_hereMapping from Firebase config:
| Firebase Config | Environment Variable |
|---|---|
apiKey |
REACT_APP_FIREBASE_API_KEY |
authDomain |
REACT_APP_AUTHDOMAIN |
projectId |
REACT_APP_PROJECT_ID |
storageBucket |
REACT_APP_STORAGE_BUCKET |
messagingSenderId |
REACT_APP_MESSAGING_SENDER_ID |
appId |
REACT_APP_APP_ID |
measurementId |
REACT_APP_MEASUREMENT_ID |
- Start the app:
npm start - Go to
http://localhost:3000/admin/setup - Enter your
REACT_APP_ADMIN_SETUP_CODE - Create your admin account (email + password)
- Log in at
/admin/login
Note: While this guide uses OpenAI and Brave Search, ECHO supports any compatible chat and search APIs. You can modify the API endpoints in your codebase to connect alternative providers (e.g., Google Gemini,Anthropic Claude, Grok, Google Search, Bing Search).
Both API keys are configured through the Admin Dashboard.
- Log in to admin panel at
http://localhost:3000/admin/login - Click API Settings
- Enter both API keys:
- OpenAI API Key (for ChatGPT task)
- Brave Search API Key (for search task)
- Click Save
- Go to platform.openai.com
- Sign up or log in
- Go to API keys section
- Click Create new secret key
- Copy the key (starts with
sk-)
Note: OpenAI requires a payment method and charges based on usage.
- Go to brave.com/search/api
- Sign up for an account
- Choose a plan (free tier available)
- Go to your dashboard and copy your API key (starts with
BSA)
Start the development server:
npm startOpens at http://localhost:3000
Key URLs:
| URL | Purpose |
|---|---|
http://localhost:3000 |
Participant entry point |
http://localhost:3000/admin/login |
Admin login |
http://localhost:3000/admin/setup |
First time admin setup |
Access at /admin/login
| Feature | Description |
|---|---|
| Study Settings | Task order, note taking, minimum interactions |
| Manage Study Flow | Enable/disable and reorder study steps |
| Insert/View Tasks | Create and view research tasks |
| Manage Experience Survey | Edit post-task questions |
| Manage Demography Survey | Edit background questions |
| Manage Typology | Configure intention categories |
| API Settings | Enter OpenAI and Brave Search API keys |
| View Participant Responses | Export data as CSV |
ECHO provides comprehensive data export functionality:
Exported Data File contains:
- participants.csv: User registration and completion data
- background_responses.csv: Demographic survey answers
- experience_surveys.csv: Post task experience responses
- questionnaire_responses.csv: Pre/post task intention ratings
- chat_interactions.csv: Full chat history with timestamps
- search_interactions.csv: Search queries, results, clicks
- insitu_survey_responses.csv: In situ popup survey answers
- notes.csv: Participant notes with timestamps
Steps to Export Data:
- Log in to admin panel
- Go to View Participant Responses
- Click Export as CSV
Demography Surevy Questions Data:
[
{
"category": "What is your age group?",
"options": [
"Under 18",
"18-24",
"25-34",
"35-44",
"45-54",
"55-64",
"65 or older"
],
"required": true
},
{
"category": "What is your gender?",
"options": [
"Male",
"Female",
"Non-binary/Third gender",
"Prefer not to say",
"Prefer to self-describe"
],
"required": true
},
{
"category": "What is the highest level of education you have completed or currently pursuing?",
"options": [
"Less than high school",
"High school graduate or equivalent",
"Some college, no degree",
"Trade/technical/vocational training",
"Associate degree",
"Bachelor’s degree",
"Master’s degree",
"Doctorate"
],
"required": true
},
{
"category": "What is your current employment status?",
"options": [
"Employed full-time",
"Employed part-time",
"Self-employed",
"Unemployed",
"Student",
"Retired",
"Prefer not to say"
],
"required": true
},
{
"category": "How frequently do you use ChatGPT?",
"options": [
"Never/This is going to be my first time",
"Occasionally (less than once a week)",
"Regularly (once a week or more)",
"Frequently (daily or almost daily)"
],
"required": true
},
{
"category": "How frequently do you use Search Engines (e.g. Google, Bing)?",
"options": [
"Never/This is going to be my first time",
"Occasionally (less than once a week)",
"Regularly (once a week or more)",
"Frequently (daily or almost daily)"
],
"required": true
},
{
"category": "How frequently do you use virtual assistants (e.g. Siri, Microsoft Crotana, Google Assistant, Alexa)?",
"options": [
"Never/This is going to be my first time",
"Occasionally (less than once a week)",
"Regularly (once a week or more)",
"Frequently (daily or almost daily)"
],
"required": true
},
{
"category": "What is your primary purpose for using ChatGPT?",
"options": [
"Education",
"Work-related tasks",
"Personal interest/hobby",
"Entertainment",
"Other"
],
"allowMultipleSelections": true,
"selectUpto": 2,
"required": true
},
{
"category": "What is your primary purpose for using Search Engines (e.g. Google, Bing)?",
"options": [
"Education",
"Work-related tasks",
"Personal interest/hobby",
"Entertainment",
"Other"
],
"allowMultipleSelections": true,
"selectUpto": 2,
"required": true
},
{
"category": "What is your primary purpose for using virtual assistant?",
"options": [
"Education",
"Work-related tasks",
"Personal interest/hobby",
"Entertainment",
"Other"
],
"allowMultipleSelections": true,
"selectUpto": 2,
"required": true
},
{
"category": "How did you first hear about ChatGPT?",
"options": [
"Social media",
"News article/blog",
"Friend/Colleague",
"Academic course/workshop",
"Other"
],
"allowMultipleSelections": true,
"required": true
}
]
Typology Survey Question Data:
[
{
"intention_type": "Identify new information",
"intention_list": [
{
"short_text": "Identify an appropriate starting point to search or chat",
"long_text": "for instance, find good query keywords, appropriate chat prompts, questions or problem descriptions"
},
{
"short_text": "Identify something more to search or learn",
"long_text": "explore a target topic or domain more broadly or deeper, and obtain more relevant information"
},
{
"short_text": "Identify something new or unexpected",
"long_text": "explore pieces of information, interest, or advice that are completely new or unexpected; obtain inspiration or ideas for creative projects"
},
{
"short_text": "Obtain explanations",
"long_text": "search or ask for explanations or clarifications about phenomena, concepts, problems, or potential solutions"
}
]
},
{
"intention_type": "Find information",
"intention_list": [
{
"short_text": "Find a known item or site",
"long_text": "searching or asking for an item (e.g., a bag, book, name of a restaurant or celebrity), website or information source that you were familiar with in advance."
},
{
"short_text": "Find items sharing a named characteristic",
"long_text": "finding items or information with something in common."
},
{
"short_text": "Find items without predefined criteria",
"long_text": "finding items that are potentially useful for a task or problem, but which have not been specified in advance."
}
]
},
]Task Questions Data:
Assess AI in hiring | Consider societal and ethical aspects.
Balance privacy and surveillance | Legal, ethical, technological perspectives.
Compare diets | Keto, Vegan, Mediterranean — effects on health.Session Experience Data:
[
{
"key": "overallExperience",
"question": "How would you rate your overall experience with the current task interaction?",
"options": [
"Very Unsatisfactory",
"Unsatisfactory",
"Neutral",
"Satisfactory",
"Very Satisfactory"
]
},
{
"key": "additionalComments",
"question": "Please provide any additional comments or feedback you have about your experience. If possible, please comment on both unexpected positive experiences and encountered obstacles.",
"responseType": "open-ended"
}
]If you encounter any difficulties or issues, feel free to contact us at jiqunliu@ou.edu.