Conversational
Maintains specialty, location, travel, and preference context across turns.
Everything you need to run the conversational medical facility finder, understand its retrieval pipeline, and connect a client to the API.
Overview
Seoul Doc helps English and Korean speakers find medical facilities in Seoul. It combines conversational intent extraction, location intelligence, exact evidence retrieval, and semantic ranking to turn natural-language requests into useful facility recommendations.
Maintains specialty, location, travel, and preference context across turns.
Combines specific BM25 evidence with dense semantic search.
Supports GPS, districts, neighborhoods, addresses, and landmarks.
Detects emergency language and clearly separates search from medical advice.
How it works
The router detects language and intent, then extracts specialty, location, travel distance, and preferences.
Google Maps resolves the location, with Kakao Maps available as a Korea-focused fallback.
An agentic loop chooses broad semantic search, specific BM25 evidence search, refinement, or completion.
Candidates are filtered and ranked before the response is formatted into practical facility suggestions.
Quick start
Use Python 3.12+ and Node.js 18+. Start the API and web client in separate terminals.
cd backend
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn main:app --reload --host 0.0.0.0 --port 8000cd frontend
npm ci
npm run devOpen http://localhost:3000. The first backend startup downloads the facility dataset and initializes its local search index, so it may take longer than later starts.
Configuration
backend/.envGROQ_API_KEYRequiredPowers intent extraction and response generation.
OPENAI_API_KEYRequiredCreates embeddings for semantic search.
GOOGLE_MAPS_API_KEYRequiredGeocodes locations and resolves place names.
KAKAO_REST_API_KEYRecommendedProvides Korea-focused geocoding fallback.
NAVER_CLIENT_IDOptionalReserved for Naver integrations.
NAVER_CLIENT_SECRETOptionalSecret paired with the Naver client ID.
frontend/.env.localNEXT_PUBLIC_LOCAL_API_URL=http://localhost:8000
NEXT_PUBLIC_SITE_URL=http://localhost:3000API reference
When the backend is running, interactive OpenAPI documentation is available at http://localhost:8000/docs.
/chatSend a message and conversation state; receive the assistant response and updated state.
/set_travel_preferenceUpdate the maximum travel preference for a conversation.
/consentPersist analytics, advertising, and functional cookie choices.
curl -X POST http://localhost:8000/chat \
-H "Content-Type: application/json" \
-d '{"message":"Find an English-speaking dentist in Gangnam","current_state":{}}'Safety
Seoul Doc helps people discover facilities; it does not diagnose conditions or replace a qualified clinician. Facility details may change and should be confirmed directly. For a medical emergency in Korea, call 119; for the medical information hotline, call 1339.
Try the live experience or return to the setup guide.