ai-reporter/
ai-instruction/
archive/
kontor/
reportage/
supplement/
content_classification.j2
content_classification_enhanced.j2
external_transcript.j2
name_validation.j2
narrative_revision.j2
planning_status.j2
project_proposals.j2
section_detection.j2
sectioning-advisory.j2
sectioning-meeting.j2
sectioning-workshop.j2
apple_memo_dashboard/
static/
templates/
docs/
architecture/
archive/
classification-assessment-sept-oct-2025_files/
eventjournal/
features/
implementation/
pipeline_documentation_files/
release-notes/
_quarto.yml
AI_INSTRUCTIONS.md
aireporter-data.qmd
api-reference.qmd
example/
event_2025_10_21b.m4a
event_2025_10_21b_meta.json
event_2025_10_21b_transcript.xml
README.md
friedrichstr/
event_journal/
kontor-defaults/
advisory/
projekt/
projekt_planung/
supplement_schemas/
workshop/
agenda.json
classification.md
classification.yaml
classification_model.pkl
classification_summary_2025-09-01_2025-10-31.json
classification_training.yaml
conversion.md
conversion.yaml
event_types.yaml
person.md
publishing/
templates/
src/
ai_reporter/
[DRAFT — edit this] ai-reporter Inferred stage: development. Define the specific deliverable, success state, and timeline.
Success criteria:| Code | /Users/friedrichstr/ai-mac-studio/scholarly/research/ai-reporter |
| Check | Path | Status | Detail |
|---|---|---|---|
| code | /Users/friedrichstr/ai-mac-studio/scholarly/research/ai-repo | ✓ ok | 8 items, last_modified=2026-08-24 |
Automated transcription, analysis, and publishing of audio recordings using AI
# Complete pipeline: Audio → PDF
./voiceprocess pipeline event_2025_09_17c
# Individual pipeline stages
./voiceprocess transcribe event_2025_09_17c
./voiceprocess classify event_2025_09_17c
./voiceprocess revise event_2025_09_17c # Includes sectioning
./voiceprocess publish event_2025_09_17c
AI-Reporter uses a consolidated 4-step pipeline with human-in-the-loop review:
Audio → Transcribe → Classify → Revise+Section → Publish → PDF
↓ ↑
┌─────────────────┐
│ Human Review │
│ (EventJournal) │
└─────────────────┘
Each stage receives an XML tree, transforms it, and passes it to the next stage. Classification happens early to provide context for all subsequent processing. The Review workflow allows users to approve or correct speaker mappings, event types, and sections before final processing.
The system includes a learning-based speaker classification system that:
Example: For projekt_planung_ai_reporter events:
- speaker1 → Gerd Graßhoff (project_lead): 0.89 confidence, 28 occurrences
- speaker2 → Josias Strelow (developer): 0.88 confidence, 28 occurrences
See docs/LEARNING_SYSTEM.md for complete technical details.
The new Review Workflow integrates with the EventJournal frontend:
See EventJournal Documentation for details.
lxmlclassify, revise_with_sections, publish)┌─────────────┐ ┌─────────────┐ ┌───────────────────┐ ┌─────────────┐
│ TRANSCRIBE │ ──▶ │ CLASSIFY │ ──▶ │ REVISE+SECTION │ ──▶ │ PUBLISH │
│ Audio→XML │ │ Type/Role │ │ Merge+Edit+Sect │ │ Final XML │
└─────────────┘ └─────────────┘ └───────────────────┘ └─────────────┘
│ ▲
▼ │
┌─────────────┐ ┌──────────────┐
│ REVIEW │ ──▶ │ APPROVED │
│ (EventUI) │ │ CONFIG │
└─────────────┘ └──────────────┘
{event}_transcript.xml{event}_classified.xml + kontor/pipeline_input.yaml{event}_sectioned.xml{event}_publish.xmlEventCollections/event_journal/EVENT_NAME/
├── EVENT_NAME.m4a # Original audio
├── EVENT_NAME_transcript.xml # Step 1: Transcription
├── EVENT_NAME_classified.xml # Step 2: Classification
├── EVENT_NAME_sectioned.xml # Step 3: Revision + Sectioning
├── EVENT_NAME_publish.xml # Step 4: Publishing XML
├── EVENT_NAME.pdf # Final PDF output
├── kontor/ # Event-specific configuration
│ ├── review_state.json # Review status and approvals
│ ├── pipeline_input.yaml # AI suggestions
│ ├── pipeline_approved.yaml # User-approved configuration
│ ├── speaker_mapping.yaml # Speaker ID → Name
│ └── classification.json # Classification results
./voiceprocess pipeline EVENT_NAME
Stages: transcribe → classify → revise_with_sections → publish → PDF
./voiceprocess fromtrans EVENT_NAME
Stages: classify → revise_with_sections → publish → PDF
from ai_reporter.pipeline_runner import PipelineRunner
runner = PipelineRunner(event_dir=event_dir)
runner.run_with_review() # Stops for human review after classify
# Install dependencies
pip install -r requirements.txt
# Set environment variables
export GEMINI_API_KEY="your-api-key"
# Verify installation
./voiceprocess status
# In ai-reporter/ai_reporter/pipeline_transforms.py
def my_transform(
xml: XMLContentManager,
context: PipelineContext,
**kwargs
) -> XMLContentManager:
"""My custom transformation"""
logger.info("Transform: my_transform")
# Transform the XML tree
# ...
return xml
from ai_reporter.pipeline_runner import PipelineRunner
from ai_reporter.pipeline_transforms import transform_classify, transform_revise_with_sections
runner = PipelineRunner(event_dir=event_dir)
runner.add_step('classify', transform_classify)
runner.add_step('revise', transform_revise_with_sections)
final_xml = runner.execute()
OpenScienceTechnology GmbH
Gerd Graßhoff, OpenScienceTechnology GmbH
| SHA | Date | Subject |
|---|---|---|
10f2d9f | 2026-03-14 | chore: initial commit (ai-platform v2 git infrastructure) |