How moulendrabalaji/scrybe.io-text-and-video-analyzer works
Scrybe is an AI speech and presentation evaluation platform. A user records or uploads an answer in the workspace; the API coordinates media processing, transcription, visual analysis, similarity scoring, and rubric feedback, then saves the evaluation for review. The product also supports question practice, progress and history views, invite-based candidate submissions, and account management. The README documents the evaluation capabilities and integrations; some subsystem wiring is represented at directory level because its implementation was not sampled.
Main entry points: api.js REST client · evaluation_service.py Evaluation service · evaluator.py Evaluation orchestrator · app.py FastAPI routes
Components 27
Frontend experience
- Practice workspace
Frontend/src/pages/Workspace.jsx - Invite response
Frontend/src/pages/CandidateInvite.jsx - History and progress
Frontend/src/pages/History.jsx - Question library
Frontend/src/pages/QuestionLibrary.jsx - Invite management
Frontend/src/pages/Invites.jsx - Account profile
Frontend/src/pages/Profile.jsx - Session state
Frontend/src/stores/useAuthStore.js - REST client
Frontend/src/services/api.js - Realtime client
Frontend/src/services/socket.js
API and services
- FastAPI routes
Backend/app.py - Authentication
Backend/services/auth_service.py - Evaluation service
Backend/services/evaluation_service.py
Evaluation pipeline
- Evaluation orchestrator
Backend/pipeline/evaluator.py - Media extraction
Backend/pipeline - Speech transcription
Backend/pipeline/speech_to_text.py - Answer similarity
Backend/models/similarity_model.py - Visual analysis
Backend/utils/frame_analyzer.py - Rubric and feedback
Backend/utils
Persistence
- Evaluation records
Backend/repositories/query_repository.py - Question records
Backend/repositories/question_repository.py - Invite records
Backend/repositories/invite_repository.py - User records
Backend/repositories/user_repository.py - Application database
Backend/database/setup.py
AI integrations
- OpenAI Whisper
- Gemini vision
- Feedback LLM
Other components
- Learner or candidate
Connections 34
- Learner or candidate → Practice workspace: records answer
- Learner or candidate → Invite response: submits response
- Practice workspace → REST client: uploads media
- Invite response → REST client: submits media
- History and progress → REST client: requests records
- Question library → REST client: requests prompts
- Invite management → REST client: manages invites
- Account profile → REST client: updates account
- Session state → REST client: authenticates
- REST client → FastAPI routes: sends requests
- Practice workspace → Realtime client: opens live session
- Realtime client → FastAPI routes: connects WebSocket
- FastAPI routes → Realtime client: pushes updates
- FastAPI routes → Authentication: handles auth
- Authentication → User records: reads and writes users
- FastAPI routes → Evaluation service: dispatches evaluation
- Evaluation service → Evaluation orchestrator: evaluates media
- Evaluation orchestrator → Media extraction: extracts audio and frames
- Evaluation orchestrator → Speech transcription: transcribes audio
- Speech transcription → OpenAI Whisper: transcribes speech
- Evaluation orchestrator → Answer similarity: scores answer match
- Evaluation orchestrator → Visual analysis: analyzes frames
- Visual analysis → Gemini vision: analyzes visuals
- Evaluation orchestrator → Rubric and feedback: builds rubric feedback
- Rubric and feedback → Feedback LLM: generates feedback
- Evaluation service → Evaluation records: saves evaluation
- FastAPI routes → Question records: serves questions
- Evaluation service → Question records: manages questions
- Evaluation service → Invite records: manages invites
- Evaluation service → Evaluation records: reads history and trends
- Evaluation records → Application database: reads and writes
- Question records → Application database: reads and writes
- Invite records → Application database: reads and writes
- User records → Application database: reads and writes