How salt-nlp/sparkme works
SparkMe is a multi-agent system for semi-structured, multi-turn interviews. Its principal workflow accepts an interviewee’s text or optional speech input, runs an interview session in which an interviewer asks questions and planning and agenda components guide topic exploration and note-taking, then stores session state and logs. The README also documents a web interface with authentication and session management. The graph focuses on the primary src implementation, not the separate baselines or evaluation tooling. Some wiring is supported only by the SOURCE INDEX or README, so unsampled relationships are omitted or marked unverified.
Main entry points: interview_session.py Interview session · agenda_manager.py Agenda manager · session_agenda.py Session agenda · user.py User participant
Components 20
Interfaces and session
- Terminal interface
src/main.py - Web interface
src/main_flask.py - Interview session
src/interview_session/interview_session.py - Session messages
src/interview_session/session_models.py - User participant
src/interview_session/user/user.py
Interview agents
- Interviewer
src/agents/interviewer/interviewer.py - Agenda manager
src/agents/agenda_manager/agenda_manager.py - Exploration planner
src/agents/exploration_planner/exploration_planner.py - Agent framework
src/agents/base_agent.py
Interview domain
- Session agenda
src/content/session_agenda/session_agenda.py - Topic manager
src/content/session_agenda/interview_topic_manager.py - Question bank
src/content/question_bank/question_bank_vector_db.py - Question records
src/content/question_bank/question.py - Session memory
src/content/memory_bank/memory_bank_vector_db.py - Memory records
src/content/memory_bank/memory.py
Runtime services
- Embedding service
src/content/embeddings/embedding_service.py - Model engine
src/utils/llm/engines.py - Speech input
src/utils/speech/speech_to_text.py - Session logs
src/utils/logger/session_logger.py
Other components
- Interviewee
Connections 27
- Interviewee → Terminal interface: starts interview
README.md - Terminal interface → Interview session: starts session
src/main.py - Interviewee → Web interface: uses web interview
README.md - Web interface → Interview session: uses session
src/main_flask.py - Interview session → User participant: creates participant
src/interview_session/interview_session.py - User participant → Interview session: adds response
src/interview_session/user/user.py - Interview session → Interviewer: sets up agent
src/interview_session/interview_session.py - Interview session → Agenda manager: sets up agent
src/interview_session/interview_session.py - Interview session → Exploration planner: sets up agent
src/interview_session/interview_session.py - Interview session → Session agenda: loads agenda
src/interview_session/interview_session.py - Interview session → Session memory: sets up memory
src/interview_session/interview_session.py - Interview session → Question bank: sets up bank
src/interview_session/interview_session.py - Interview session → Session messages: uses message model
src/interview_session/interview_session.py - Interviewer → Agent framework: inherits from
src/agents/interviewer/interviewer.py - Agenda manager → Agent framework: inherits from
src/agents/agenda_manager/agenda_manager.py - Agent framework → Model engine: invokes engine
src/agents/base_agent.py - Agenda manager → Session agenda: adds questions
src/agents/agenda_manager/agenda_manager.py - Agenda manager → Memory records: uses memories
src/agents/agenda_manager/agenda_manager.py - Session agenda → Topic manager: manages topics
src/content/session_agenda/session_agenda.py - Session agenda → Question records: records questions
src/content/session_agenda/session_agenda.py - Topic manager → Question records: uses questions
src/content/session_agenda/interview_topic_manager.py - Question bank → Question records: stores questions
src/content/question_bank/question_bank_vector_db.py - Session memory → Memory records: stores memories
src/content/memory_bank/memory_bank_vector_db.py - Session memory → Embedding service: embeds for search
src/content/memory_bank/memory_bank_vector_db.py - Question bank → Embedding service: embeds for search
src/content/question_bank/question_bank_vector_db.py - User participant → Speech input: transcribes voice
src/interview_session/user/user.py - Interview session → Session logs: logs session
src/interview_session/interview_session.py