Contribution Number: 1 Student: Wanru Skuld Shao Issue: BasedHardware/omi#4601 Status: Phase I - Complete
I chose issue #4601 "Let user reprocess audio transcription" because it builds directly on a feature pattern that already exists in the codebase — users can currently reprocess a conversation summary, and this issue asks for the same capability applied to the raw audio transcription. That makes it a good scope for me: the request isn't an open-ended new system, it's extending an established flow, so I have a working reference to study and mirror rather than inventing an approach from scratch.
I'm interested in this because:
- omi's transcription pipeline runs through speech-to-text providers (Deepgram, Speechmatics, Soniox) on a Python/FastAPI backend, and I want to learn how a production app wires real-time STT together with an option to re-run it on stored audio.
- The "reprocess summary" feature gives me a concrete pattern to match, which lowers the risk of a first contribution going off in the wrong direction.
- It's a clear, user-facing improvement — the issue notes the live sync transcription has been failing often lately, so a manual reprocess option has obvious value rather than being a cosmetic change.
- It touches both the backend (triggering a re-transcription job on saved audio) and the Flutter app (surfacing a "reprocess transcript" action in the UI), so I get exposure to an end-to-end change instead of an isolated snippet.
From reading the issue, I understand the current problem is that once a conversation's transcription comes back poor, the user is stuck with it — there's no way to ask the system to transcribe the stored audio again. My contribution would let the user re-run transcription to get a better result, reusing the existing reprocess-summary mechanics as the model.
Next step before claiming the issue: leave a comment introducing myself and confirming with a maintainer that it's still open and unassigned, and ask which module the existing reprocess-summary logic lives in.
[In your own words, what's broken or missing?]
[What should happen?]
[What actually happens?]
[Which parts of the codebase are involved?]
[Notes on setting up your local development environment - challenges you faced, how you solved them]
- [Step 1]
- [Step 2]
- [Observed result]
- Commit showing reproduction: [Link to commit in your fork]
- Screenshots/logs: [If applicable]
- My findings: [What you discovered during reproduction]
[Your analysis of the root cause - what's causing the issue?]
[High-level description of your fix approach]
Using UMPIRE framework (adapted):
Understand: [Restate the problem]
Match: [What similar patterns/solutions exist in the codebase?]
Plan: [Step-by-step implementation plan]
- [Modify file X to do Y]
- [Add function Z]
- [Update tests]
Implement: [Link to your branch/commits as you work]
Review: [Self-review checklist - does it follow the project's contribution guidelines?]
Evaluate: [How will you verify it works?]
- Test case 1: [Description]
- Test case 2: [Description]
- Test case 3: [Description]
- Integration scenario 1
- Integration scenario 2
[What you tested manually and results]
[What you built this week, challenges faced, decisions made]
[Continue documenting as you work]
- Files modified: [List]
- Key commits: [Links to important commits]
- Approach decisions: [Why you chose certain approaches]
PR Link: [GitHub PR URL when submitted]
PR Description: [Draft or final PR description - much of the content above can be adapted]
Maintainer Feedback:
- [Date]: [Summary of feedback received]
- [Date]: [How you addressed it]
Status: [Awaiting review / Iterating / Approved / Merged]
[What you learned technically]
[What was hard and how you solved it]
[Reflection on your process]
- [Link to helpful documentation]
- [Tutorial or Stack Overflow post that helped]
- [GitHub issues or discussions that helped]