đĽíżĽ Anesthesiology Interview Simulator
Practice your residency interview with Dr. Interviewer
Prep: --:--
Ready to start your interview simulation. Timer starts when first question begins. Click "Start Interview" when you're prepared.
â ď¸ Setup Required:
This interview simulator requires a backend server to generate ephemeral API keys for security.
Replace the `/session` endpoint in the code with your actual server that calls the OpenAI API to create ephemeral tokens.
You'll also need to add your OpenAI API key to the server environment. The interview questions are loaded dynamically from your DynamoDB table.
đí´ Cross-Domain Authentication: Since this runs on sonic.mdinterview.com but users login on mdinterview.com, you need authentication and API endpoints on your main domain:
Required PHP Endpoints:
1.
2.
3.
Prompt API Response Format:
đží˛ž Conversation Storage (Single Table with Composite Key):
All conversations are automatically saved to DynamoDB table "conversations" with:
⢠Partition Key: session_id
⢠Sort Key: question_number
⢠Complete conversation log (all Q&A pairs up to current question)
⢠Interview timing and completion status
⢠Incremental Saves: Progress is saved after each question with complete conversation data
⢠No Data Loss: Each record contains full conversation history up to that point
Conversation Save API (POST /api/conversation/save):
Receives:
Returns:
â ď¸ Note: This endpoint is called multiple times during the interview (after each question) with the complete conversation data each time
đíś Session ID Required (in priority order):
â ď¸ session_id is REQUIRED - The interview will not start without one
1. URL Parameter:
2. Hidden Form Input:
3. Body Data Attribute:
4. Session Storage:
âď¸ Configuration: To change the question duration, modify
đí´ Cross-Domain Authentication: Since this runs on sonic.mdinterview.com but users login on mdinterview.com, you need authentication and API endpoints on your main domain:
Required PHP Endpoints:
1.
/api/auth/check - Returns authentication status
2.
/api/interview/prompt?session_id={uuid} - Returns interview prompt from DynamoDB table "realtime_interview_agent_prompts"
3.
/api/conversation/save - Saves complete conversation to DynamoDB table "conversations"
Prompt API Response Format:
{"success": true, "prompt": "MASTER PROMPT â Anesthesiology..."} for success
{"success": false, "error": "Error message"} for failure
đží˛ž Conversation Storage (Single Table with Composite Key):
All conversations are automatically saved to DynamoDB table "conversations" with:
⢠Partition Key: session_id
⢠Sort Key: question_number
⢠Complete conversation log (all Q&A pairs up to current question)
⢠Interview timing and completion status
⢠Incremental Saves: Progress is saved after each question with complete conversation data
⢠No Data Loss: Each record contains full conversation history up to that point
Conversation Save API (POST /api/conversation/save):
Receives:
{"session_id": "uuid", "question_number": 3, "conversation": [...], "interview_start_time": "ISO", "interview_end_time": "ISO", "questions_completed": 3, "total_questions": 5, "current_status": "Question 3 completed", "duration_minutes": 8, "last_updated": "ISO"}
Returns:
{"success": true} or {"success": false, "error": "message"}
â ď¸ Note: This endpoint is called multiple times during the interview (after each question) with the complete conversation data each time
đíś Session ID Required (in priority order):
â ď¸ session_id is REQUIRED - The interview will not start without one
1. URL Parameter:
?session_id=17708184-05b0-4451-9857-a290f4e05e6a
2. Hidden Form Input:
<input type="hidden" name="session_id" value="17708184-05b0-4451-9857-a290f4e05e6a">
3. Body Data Attribute:
<body data-session-id="17708184-05b0-4451-9857-a290f4e05e6a">
4. Session Storage:
sessionStorage.setItem('interview_session_id', '17708184-...')
âď¸ Configuration: To change the question duration, modify
QUESTION_DURATION_MINUTES at the top of the JavaScript section.