Methodology
Physician selection assistant — methodology
Complete methodology for the assistant at medselect.ai/find-physician (EN) / /secim (TR). What data is processed, KVKK/GDPR posture, which ad-rules apply, retention windows — all here.
Who is this page for?
Patients (TR citizens or international medical-tourism visitors) looking to find a suitable physician from the MedSelect network. Multilingual — TR, EN, DE, AR, RU + 6 more. Reply language matches query language.
What it is NOT
- NOT a diagnostic / triage tool — does not interpret symptoms.
- NOT an appointment / matching marketplace — direct contact with the physician.
- NOT a "best physician" ranking (Tabip Odası ad rules).
- NOT an emergency service — emergency indicators redirect to 112 / local ER.
Flow (technical detail)
- Form submit: vertical + freeText + optional city + age. KVKK consent required.
- Pre-guardrails:
- PII redaction: TR ID (11 digits), phone (TR + intl regex), email, street/address patterns auto-replaced with
[redacted-*]. - Emergency keyword check (across 11 languages): "emergency", "bleeding", "notfall", "acil", "скорая", etc. → not sent to LLM, 112 redirect.
- Mental health crisis indicators: "suicide", "self-harm", etc. → not sent to LLM, crisis-support redirect.
- PII redaction: TR ID (11 digits), phone (TR + intl regex), email, street/address patterns auto-replaced with
- Corpus build: all active physicians from active tenants + voice card (philosophy + opinion topics) + published draft list (title + excerpt).
- Claude Sonnet 4.6 call: strict JSON output prompt. System prompt enforces Tabip Odası ad rules (no superlative/price/testimonial/guarantee).
- Output parsing: JSON shape validation. Slugs filtered against corpus (LLM returning unknown physician is dropped).
- Post-guardrails: rationale bullets scanned for superlative / price / testimonial / guarantee patterns. If found, that bullet is soft-rewritten to a generic statement.
- Persist: hash + vertical + recommendations + cost + guardrail outcome written to DB.
query_textstored ONLY if visitor opted in; auto-purged after 30 days. - Render: 2-3 name cards + why-this-fits rationale + relevant article links + clinic canonical + MedSelect profile + disclaimer.
KVKK / GDPR posture
- Explicit consent: required at form submit (KVKK Art. 5 / GDPR Art. 6+9).
- Special category: free-text may contain health data → mitigated by PII redaction + opt-in storage + KVKK notice.
- Third-party transfer: redacted query sent to Anthropic Claude API (US). KVKK Art. 9 / GDPR SCCs apply. PII-redacted + clearly disclosed.
- Retention:
query_textdefault NOT stored. Opt-in keeps it 30 days; auto-purge cron removes after. - IP: stored as SHA-256 hash + server-secret salt. Not reversible. Used for rate-limit + abuse only.
- Cookies: this page sets no cookies; visitor trace is hash + timestamp only.
- Data export: if you know the email, request via /api/account/data-export (KVKK Art. 11 / GDPR Art. 15).
- Right to erasure: /api/account/erase (KVKK Art. 7 / GDPR Art. 17); audit log entries exempt (legal obligation).
Tabip Odası ad-rule enforcement
System prompt instructs Claude (output rejected if violated):
- NEVER "best" / "top-rated" / "unique" / "#1" / "unbeaten"
- NEVER specific treatment recommendations / diagnoses
- NEVER price information (numbers + currency)
- NEVER patient testimonial "satisfied / happy / grateful" framing
- NEVER outcome guarantees "100% success / definitely / guaranteed"
- NEVER comparative advertising (physician A > physician B)
Post-prompt validator scans output for these patterns. Violations are soft-rewritten to a generic statement: "This physician's published list and voice card cover this topic."
Limits and known risks
- Corpus size: MVP network is small (≤10 tenants). For some specialties no good match exists → explicitly reported via
decline_reason. - Hallucination: parser filters unknown slugs; edge cases possible. First-100-query manual review by founder.
- Language matching:
knowsLanguagefield is placeholder; real field arrives in Phase 2. - Bias: small network → same names may recur. Phase 3 adds round-robin within similar-fit set.
- LLM cost runaway: daily €5 cap + queue when exceeded.
Audit + transparency
Every query writes an audit log entry (action: "selection_query.served"): vertical, guardrail outcome (passed / pre_emergency / post_superlative / etc.), tokens, cost — all visible.
/transparency publishes the AI Citation Share leaderboard. The selection assistant does NOT consume that data — it only uses physician profile + published article metadata.
Related documents: /privacy, /disclaimer, /ai-use-policy, /medical-review-policy