🔍 Auditor console
Read-only visibility into system health, compliance and governance. No action here can change any data.
System overview
Tenant posture (aggregate)
Job log — generation metadata, no PHI
Audit log — access trail
Governance library
Welcome back
Cost dashboard
Daily cost (last 30 days)
Cost per user
| User | Calls | Cost |
|---|
Cost per model
| Model | Calls | Cost |
|---|
Operational cost breakdown
Category-aware spend from the cost ledger: note generation, operational AI calls (Ask tebIQ, gateway, name-gen, hand-off, clinical-rec), AWS infra and fixed baselines.
Cost by category (LLM)
| Category | Calls | Cost |
|---|
Cost by model
| Model | Tok in/out | Calls | Cost |
|---|
Cost by provider
| Provider | Calls | Cost |
|---|
Daily operational LLM cost
| Date | Calls | Cost |
|---|
Reliability & quality
Job log
🔎 All LLM calls
| When | Agent / kind | Category | Model | Tok in/out | Cost | Latency | User |
|---|---|---|---|---|---|---|---|
| Click ↻ Refresh to load. | |||||||
Baseline & AWS costs
Account-wide infrastructure spend (superadmin only). AWS service costs come from Cost Explorer; baseline costs are manually-entered recurring fixed/infra costs.
AWS account costs
| Service | Cost |
|---|
Baseline operational costs
Recurring fixed costs not tied to a specific LLM call — vendor retainers, flat commitments, or mirrored AWS line items.
| Label | Service | Category | Amount | Period | Effective from |
|---|
Cost Analyzer AI
Monthly AI-powered review of operational cost — optimization & backend-change recommendations, a cost-vs-volume anomaly flag, and model / AWS deprecation warnings. Runs automatically about once a month; you can also run it on demand.
Past reports
| When | Trigger | Headline | Anomaly | Warnings | Model | |
|---|---|---|---|---|---|---|
| No reports yet. | ||||||
Specialty pipelines — the ordered note types the gateway routes within
Edit the sequence per specialty. The gateway picks the next note type for a patient based on what the episode already contains.
Subscription & seats
Users (seats)
Add a user
In-progress signups
People who started self-signup with your group access code but haven't finished. Rows clear automatically once they complete onboarding. Reach out to help anyone stuck.
| Loading… |
🚫 Stuck at email verification
People who signed up but never entered the emailed verification code — usually because the code email didn't arrive (Cognito's built-in email has a low daily cap and poor deliverability, especially to hospital domains). These never reach the app, so they don't show above. Confirm a user here to unblock them without the code.
Activate a paid plan
Enter a store receipt to activate. In dev, use store mock and receipt monthly or annual.
Revenue (MRR / churn)
Tenants — plans & seats
| Tenant | Plan | Status | Seats | Free notes/mo |
|---|
Every feature lever in one place — runtime feature flags and model roles flip live here (same paths as the Feature Flags panel and LLM Analyzer); tenant-scope flags need a tenant picked below; env-gated features are read-only with their flip runbook (task-def revision — see DEPLOY.md); plan gates are code policy. 🔒 levers on the v1 safety denylist (patient comms, billing, encryption/retention, BAA gates) are founder runbook only and can never be flipped from this surface. Every flip is audit-logged.
Flip founder-facing features on or off live — the change lands in the database and propagates fleet-wide within seconds, no redeploy. A flag left on env default behaves exactly as today; toggling writes a database override, and Reset reverts it to the env default. These switches control whether a feature is surfaced only — they never bypass a clinical medical-director review gate (formulary/dosing entries keep their own approval).
Active model roles
Choose which registered model fills each role — applied live, no redeploy. The Default (all tiers) column sets the model for every tier; the per-tier columns (Free · Resident · Solo · Founding · Premium · Clinic · Enterprise) override just that tier and read Inherit (global) until you pick one. Every role falls back safely (tier→global→env default; Founding with no override rides Solo's value; utility→note model, classifier→utility, note→any active provider), so a blank never strands generation. Set the winner here after a bake-off. Each role shows its typical tokens/call and an estimated $/call under the chosen model for that tier (estimate only — real cost is metered in the Job Log). A ⚙ background tag marks system/ops roles that run fleet-wide (their per-tier columns don't apply); 🔒 blocked on Free marks premium AI roles that never run for a Free user (Free = on-device scribe only).
🧭 Note flow — per tier & AI surface
One place to set the model and the flow prompt for each surface: the Basic (free) note, the Premium note, Expert AI, and Ask tebIQ. The model dropdown writes the same role as above; “Edit flow prompt” opens the versioned Prompt Builder for that surface. Tier prompts are appended to the note generation prompt (empty = no change).
🧩 Split note generation across models
Generate different parts of a note with different models — e.g. an extractive first half on a cheap model and the reasoning half on a stronger one. Pick a note type, assign each section to a segment, and choose a model per segment. Leave all sections on "—" to disable (single-model). Sections assigned to no segment are dropped, so cover them all.
LLM Analyzer — model bake-off
Run a transcript + prompt across several models side-by-side and score each output. Med-vocab is a heuristic density check; Hallucination % and Quality are graded by the judge model against the source transcript. Unconfigured providers are greyed out — set their API keys in the environment to enable them.
Models to compare
Judge model
🎙️ On-device transcription engine
Which speech-to-text engine the mobile app uses on device. Applied live — phones pick it up from /billing/status on next launch/resume. whisper = on-device Whisper (medical-leaning, current default); cloud = server medical STT (premium); apple/google = native on-device (require app support — coming). auto = let the app decide.
☁️ Cloud transcription engine
Which provider the server uses for cloud STT (web app, premium "Cloud" mode, and the on-device fallback). deepgram = nova-2-medical (medical-tuned); groq = Whisper large-v3-turbo (generic, ~6× cheaper, very fast); auto = first available key. Set the provider's API key below (Provider API keys → Set / rotate key) before selecting it.
📚 Ask tebIQ live guideline search
Optional LIVE retrieval so Ask tebIQ can cite current published guidance. Safety: the search query is model-distilled to a generic clinical topic and hard-gated through PHI redaction (fail closed); results are restricted to the curated authoritative guideline domains (GOLD, GINA, AHA/ACC, KDIGO…). Create the API key with the provider yourself (Brave: api-dashboard.search.brave.com); it is stored write-only — never shown again.
🩺 Transcription LLM Analyzer — STT bake-off for medical terms
Upload one audio clip; transcribe it with several engines and grade each for medical-terminology accuracy. The judge LLM flags suspected mis-transcriptions and counts medically-critical errors (wrong drug/dose/negation). Add a gold transcript to also compute deterministic word-error-rate and medical-term recall. Engines without an API key are skipped with an error row. Note: server-side "Whisper" is the OpenAI Whisper API (an upper bound on the phone's smaller on-device model) — paste a real on-device transcript below to score the actual device output.
Judge model
⚖️ STT bake-off — deterministic engine comparison
Run one clip through every cloud STT engine with a configured key (Deepgram, Grok STT, Groq, DeepInfra, AssemblyAI, OpenAI Whisper) and compare deterministically — no judge LLM, no cost beyond the transcriptions. Paste the script you dictated as the reference to get word-error-rate, medical-term misses (reference words >6 chars) and number accuracy (doses/vitals digit match). Engines without a key are listed as skipped. Nothing is stored server-side. Use scripted test dictations only — no patient information.
Results
📝 Model findings & notes
Your saved observations per model — quick to review and compare. Add a note from a result row (📝) or here.
Read-only view · refreshes itself every minute while open · numbers are cached server-side for 60 s. Infra metrics that need AWS APIs (task count, ALB, RDS) live in Baseline & AWS.
🗞 Pulse posts
Public news hub at /pulse. The weekly radar agent files drafts here; nothing goes public until you press Publish.🗺 Roadmap
Public board at /roadmap. User requests arrive hidden — Approve makes them public.🛰 Regulatory Radar
The weekly scan reads every registered regulatory/legal source, dedupes what it has already seen, and has the intel model write the 2-minute brief below. Runs Mondays after 08:00 UTC; “Re-evaluate now” runs it on demand.
🌍 Global Markets shelf
The 11 market dossiers + regulatory baselines live on the Library’s Global Markets and Regulatory shelves — searchable, editable and printable like every Library doc. These open them directly:
🔬 Need deeper answers?
The weekly radar only monitors the known sources in the registry. For open-web re-research of markets and competitors (new entrants, pricing moves, fresh legislation beyond the registry), run the research fleet from Claude Code — copy this prompt:
🔌 Partner connections
External EHR/RCM systems (e.g. Pulse MD) that pull finalized notes + billing evidence and receive note.finalized webhooks. A connection only sees tenants explicitly authorized onto it, and cannot activate until its BAA is confirmed. Partner-facing docs: Library → Partners shelf.
🗄 Company Vault
Executed company documents — signed vendor BAAs, contracts, counsel opinion letters, insurance certificates, formation/tax docs. Files are encrypted at rest, superadmin-only, and every download is audited. (For git-versioned playbooks, use the Library instead.)
⬆ Add a document
🗑 Trash
🗞 Daily News
Scheduled agent reports — grant, regulatory, billing, quality, competitor, cost and the morning brief — land here instead of a terminal or a repo folder.
📣 Broadcasting Station
Post promo / announcement messages that render in the app — the /dictate popout, an app banner, the login page, or the marketing footer — without a deploy. Messages are plain text (escaped on render) and pass a marketing-claims check.
🐞 Error monitor
Unhandled server 500s + client-side (F12) errors, grouped by fingerprint. Own-your-data: nothing leaves our AWS, and every message + stack is PHI-redacted before storage. Real counts only.
🤖 Fixes to approve
Auto-detected errors, each root-caused with a drafted fix on a branch + a reproducing test + CI status. Approve authorizes the deploy (the orchestrator ships it through the normal CI-gated deploy-prod) — approving does not deploy. A human gate for a PHI clinical app.
🌱 New Signups
Users who just signed up — reach out to help them get from day zero to their first note. Open a private 1:1 thread with anyone; they see your messages in a floating box for their first week.
🤖 Marketing AI Employee
tebIQ never posts or sends on your behalf. The employee reads, drafts founder-voice marketing on a weekly schedule, and queues it here for you. Approving a draft only marks it ready — publishing is your action (draft-and-approve in Chrome for social, or copy to clipboard).
📣 Marketing Firm
🎛 Marketing Firm — Cockpit
Read-only summary of the marketing queues and registries. Nothing here posts or sends anything.
Brand registry
Claim registry
Every marketing claim and the evidence strength behind it. New claims enter at not-approved until the founder attaches evidence.
📝 Content Studio
Idea → draft → per-platform variant → review → approve → schedule → publish. Every save runs a claims/compliance scan; HIGH-risk content (HIPAA/security/ROI/testimonial/pricing/named-clinician claims, or any paid ad) requires superadmin to approve. Approving locks the body — editing an approved item sends it back to review.
🗓 Calendar (scheduled & posted)
📡 Channels
Manual-assist only — nothing here posts, sends, or automates any external platform. Pick an APPROVED content item and a channel to generate copy + a compliance checklist + a UTM link, then paste back the URL once you've posted it yourself.
Channel catalog
Posting package
Recent packages
Metrics
🩺 Clinician Council
External advisor portal admin. Members are grant rows on existing users — no role change, no RLS bypass. Invites create a join LINK to copy (no email is sent — founder-gated). Testimonial consent is set ONLY by the member in their own portal; withdrawals appear here as takedowns owed.
🤝 Marketing agents
The registered marketing agents (registry is code — autonomy is hard-capped server-side; nothing here posts, sends, or spends without approval). Runs are superadmin-only and audited; every model call lands in the Job Log.
Agents
Weekly founder reports (Mon 10:00 UTC — draft only, nothing is emailed)
🔬 Market research
Structured competitor / gap / voice / demand / angle stores. No scraping — rows enter by manual entry, founder-supplied imports, or internal registration; every row carries its provenance. Voice sources are POINTERS to internal feedback (no content copied). Agent runs are drafts on the Agents tab; nothing here posts or sends.
📣 Paid Ads — Drafts
Every campaign here is a DRAFT. The furthest a campaign can reach is "Ready (paused — founder launch only)" — there is no "active" state in this app; a human launches by hand on the ad platform's own console.
💰 Budget rules
Stored governance only — no ad platform is connected, so there is no live spend to enforce yet. Alerting + a recorded pause recommendation once spend metrics exist (owed).
📥 Lead Inbox
Unified over the waitlist / resident-waitlist / trial-signup tables. Nothing here sends an email, SMS, or reply. Suggested replies are drafts you copy and send yourself.
🛟 Support desk
Customer-service ticket queue across all tenants. A linked chart is shown as metadata only (type/created) — never its note text. Every status/assign/priority change and reply is logged to the ticket's audit trail.
🤖 AI Employees
Every AI employee in the system — department, enabled state, schedule, last run, last result and lifetime cost. Run / Scan / Refresh invoke each employee's real implementation; a disabled employee is refused (this console never enables anything). No PHI — summaries are counts and status only. Gated by the ai_employee_console flag (default OFF).
↩ Config savepoints
Snapshot the platform config you control here — model roles, feature flags, and Prompt Builder prompts. If a change goes bad, restore a savepoint in one click. A restore auto-snapshots the current state first, so it's undoable. Does not touch notes or patient data, and does not roll back the app's code/UI (use Deployments below for that).
🚀 Deployments
Revert the whole app (frontend + backend) to a previous deployment when a code/UI push is bad. This restarts the service for ~1 minute while it rolls out. Superadmin-only and audit-logged.
⏱️ Time cards
Clock in against a module, log what you did with minutes, and (superadmin) see per-person per-module totals with drill-in + CSV export. Work notes are internal-operations text — never patient data.
Rollup
| Person | Module | Minutes | Entries |
|---|
📞 Call log
Document phone calls manually. This is a log only — there is no dialing/telephony here (SMS/voice transports stay off pending BAA/10DLC).
✉️ Inbox
🧪 Settings Playground
Tweak model roles and prompts in a private draft and preview the result against a sample transcript — live clinicians are not affected. Nothing goes live until you hit Apply, which first snapshots the current config (undoable from Rollback).
Model roles
Live effective model on the left; pick a draft override on the right. Blank draft = reset that role to its default in the sandbox.
Prompts
Edit a prompt in a draft; a ★ marks prompts you've drafted. Blank draft = reset to code default in the sandbox.
Preview — draft vs live
Runs one test note with your draft config and one with the current live config, side by side. Uses the sample transcript below (edit it if you like).
—
—
🚑 User Rescue
Why can't this person get in — one search, one tapSystem health
Unit economics (last 30 days)
Cost per subscription (last 30 days)
| Plan | Tenants | Revenue/mo | LLM 30d | STT 30d | Charts | Avg $/chart | Margin |
|---|
Where each chart's cost goes (avg per chart, all tenants)
| Component | Avg $ / chart | Total 30d |
|---|
By tenant
| Tenant | Plan | Status | Revenue/mo | LLM cost 30d | Notes 30d | Margin |
|---|
Login audit
Standard dot-phrase catalog
dotphrase_catalog flag is on. Seed the rows first with python -m app.seed_dotphrase_catalog. Approve or unapprove by specialty group or individually.Access codes
| Code | Tenant | Label | Auto-domain | Resident | Uses | Active | |
|---|---|---|---|---|---|---|---|
| Loading… | |||||||
Create code
Comp / access codes
| Code | Label | Plan | Days | Uses | Expires | Active | |
|---|---|---|---|---|---|---|---|
| Loading… | |||||||
Create code
Invite users
Invites
| Grant | Status | Shareable link | |||
|---|---|---|---|---|---|
| Loading… | |||||
Enterprise SSO (SAML)
| Tenant | IdP name | Domains | Default role | Enforce | Enabled | |
|---|---|---|---|---|---|---|
| Loading… | ||||||
Create SSO config
Admissions
Auto-acceptance rules
Screening rules
Pending review
| Name | Organization | Requested | Reason | Signed up | ||
|---|---|---|---|---|---|---|
| Loading… | ||||||
Trial campaigns
ATLANTA-ER) and share the link /try/ATLANTA-ER with a whole cohort. Anyone with the link signs up and gets limited full access per the settings below. Watch each cohort's usage in the table.Campaigns
| Code | Cohort | Settings | Signups | Shareable link | |
|---|---|---|---|---|---|
| Loading… | |||||
Cohort:
| User | Signed up | Last active | Notes | AI gens | Est. cost | Trial left | Charts left | Msgs | |
|---|---|---|---|---|---|---|---|---|---|
| Loading… | |||||||||
Waitlist
tebiq.com/img → category img). Pick a category to view its signups; export a category to CSV.| Name | Stage | Country | Date | |
|---|---|---|---|---|
| Loading… | ||||
Research corpus
💊 Dose formulary review
SCRIPTA_DOSE_CALC_ENABLED is flipped.| Entry | Indication | Rule | Max | Interval | Concentrations | Notes | Status | |
|---|---|---|---|---|---|---|---|---|
| Loading… | ||||||||
💊 Drug formulary review (top-100)
SCRIPTA_DRUG_FORMULARY_ENABLED is flipped.🧮 Calculator gaps
Drafted calculators (MD review)
🧑💼 Employees (team directory & access)
🎟 Promo Center
Promo & referral codes for every app — tebIQ, tebDictate, tebChart, tebCapture… Add an app, make codes, watch redemptions. No PII stored.
Codes
Referral program
Tenants & users
The one place for anything tenant- or user-related: hierarchy, users, plans, entitlements, customization, BAA and groups. Open a tenant to manage every aspect of it. Superadmin-only aspects (customize, BAA, limits, passwords, usage) and destructive actions are marked and confirmed.
Tenants & hierarchy
| Tenant | Group | Plan | Status | Seats | Charts | |
|---|---|---|---|---|---|---|
| Loading… | ||||||