Spaces:
Runtime error
Decisions
ADR-001: Use FastAPI Instead of Streamlit
Date: 2026-06-08
Decision: Agent Tina remains a FastAPI app served by Uvicorn.
Reasoning:
- The current app is already implemented with FastAPI routes and Jinja templates.
- Browser recording and file upload flows are straightforward with the existing frontend.
- Docker deployment to Hugging Face Spaces works cleanly with Uvicorn on port
7860.
Consequence:
- Run locally with
.\run.ps1orpython -m uvicorn app:app. - Do not use
streamlit run app.py.
ADR-002: Use Whisper base by Default
Date: 2026-06-08
Decision: Default WHISPER_MODEL is base.
Reasoning:
baseshould improve transcription accuracy compared withtiny.- It remains small enough for CPU-based deployment experiments.
Consequence:
- First transcription may take longer because the model must be downloaded and loaded.
- The model remains configurable through
WHISPER_MODEL.
ADR-003: Use Participant Name Labels Before Voice Detection
Date: 2026-06-08
Decision: Multi-device collaboration should first use participant-entered name labels, not automatic voice detection.
Reasoning:
- Each participant joining from their own device gives a reliable identity signal.
- Speaker diarization is slower, more complex, and less reliable on free/basic CPU Spaces.
- Name labels avoid requiring extra model tokens or diarization-specific infrastructure.
Consequence:
- Each upload/recording segment will be tagged with participant name, meeting id, timestamp, and recording mode.
- Automatic speaker detection can be revisited later as an optional feature.
ADR-004: Use One Room Recorder for In-Person Meetings
Date: 2026-06-08
Decision: In single-room meetings, prefer one device marked Room Recorder.
Reasoning:
- Multiple microphones in the same room capture overlapping audio.
- Overlap causes duplicate transcript lines and misleading speaker labels.
- One room recorder gives a cleaner source of truth.
Consequence:
- The UI should offer recording modes:
Room RecorderPersonal Mic
- The app should warn users when multiple people record from the same physical room.
ADR-005: Persist Meeting Outputs as Markdown
Date: 2026-06-08
Decision: Save meeting outputs as Markdown files.
Reasoning:
- Markdown is easy to review, edit, version, export, and store.
- It works well with Obsidian and Git-style workflows.
Consequence:
- Planned files per meeting:
raw_transcript.mdcorrected_transcript.mdminutes.mdmetadata.json
ADR-006: Keep Documentation Updated Explicitly
Date: 2026-06-08
Decision: Any meaningful product, deployment, architecture, or workflow change must update the relevant docs in docs/.
Reasoning:
- Agent Tina is evolving from a simple recorder into a collaborative MoM workflow.
- Decisions can otherwise get lost in chat history.
Consequence:
- Update
docs/progress.mdafter implementation milestones. - Update
docs/decisions.mdwhen a durable decision is made. - Update workflow or architecture docs when behavior changes.
ADR-007: Use Host-Created Meeting Sessions
Date: 2026-06-08
Decision: Agent Tina should use host-created meeting sessions with a shared participant join link and a private host link.
Reasoning:
- Meeting sessions are necessary to group multiple participant recordings.
- A host key is enough for the MVP and avoids building login too early.
- Participants only need a meeting link and name label to contribute.
Consequence:
- Backend needs meeting creation, segment upload, host dashboard, and final MoM generation routes.
- Meeting data must be stored server-side.
- Later persistence should move to a Hugging Face Dataset repo.
ADR-008: Defer Voice Enrollment and Diarization
Date: 2026-06-08
Decision: Voice enrollment, diarization, and automatic speaker identity are deferred until after the labelled meeting workflow is stable.
Reasoning:
- Speaker identification is slower, less reliable, and privacy-sensitive.
- Hugging Face CPU Spaces may not be suitable for it.
- Room Recorder plus explicit attendee context is more reliable for the MVP.
Consequence:
- Room Recorder transcripts must avoid fake attribution.
- Speaker intelligence can be explored later as an experimental feature.
ADR-009: Use Separate Models for Correction and MoM
Date: 2026-06-09
Decision: Use openai/gpt-4o-mini for transcript correction and openai/gpt-oss-20b for MoM generation.
Reasoning:
- The reasoning-heavy MoM model consumed correction output tokens without reliably returning a full corrected transcript.
- The correction model preserved approximately 97.7% of the verified AAC sample transcript in one call.
- Correction failures and excessive content loss now fall back to the raw transcript.
Consequence:
- Configure
OPENROUTER_CORRECTION_MODELseparately fromOPENROUTER_MODEL. - Transcript correction must remain faithful and must not summarize.
ADR-010: Keep Meeting Dataset Private
Date: 2026-06-09
Decision: The Hugging Face Dataset containing meeting metadata, transcripts, Markdown, host keys, and original recordings must be private.
Reasoning:
- Meeting audio and transcripts are sensitive.
- Host keys must not be publicly accessible.
Consequence:
- Deployment explicitly enforces private Dataset visibility.
- Public meeting endpoints expose meeting metadata only, not segments or outputs.
ADR-011: Optimize for Long Room Recordings
Date: 2026-06-09
Decision: Treat long, multi-speaker Room Recorder audio as Agent Tina's primary workload.
Reasoning:
- The verified production-like sample is a roughly 10-minute stereo AAC room recording.
- Most expected recordings will follow this pattern.
- CPU contention and long-running upload/transcription requests require explicit safeguards.
Consequence:
- In-person and Room Recorder are the UI defaults.
- Whisper transcription is serialized.
- Original audio is persisted before transcription.
- Upload size and audio metadata are validated.
- Simultaneous segment submissions merge safely.
ADR-012: Restore Meetings Lazily from the Dataset
Date: 2026-06-09
Decision: Restore meeting metadata from the private Hugging Face Dataset on demand after Space rebuilds, and restore large recordings/Markdown files only when requested.
Reasoning:
- Space local disk is ephemeral.
- Downloading every original room recording just to load a meeting would be slow and wasteful.
- Hosts still need reliable access to older meetings and original audio.
Consequence:
- Meeting metadata restores when a meeting is opened.
- Original audio and generated Markdown restore lazily through host-only download routes.