7fde64e252
feat: modal padding ( #837 )
...
* Add Modal backend for audio padding
- Create reflector_padding.py Modal deployment (CPU-based)
- Add PaddingWorkflow with conditional Modal/local backend
- Update deploy-all.sh to include padding deployment
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2026-01-30 13:11:51 -05:00
Igor Loskutov
3be7fc0b9a
200ms webm daily doc
2026-01-09 10:54:12 -05:00
5f7b1ff1a6
fix: webhook parity, pipeline rename, waveform constant fix ( #806 )
...
* pipeline fixes: whereby Hatchet preparation
* send_webhook fixes
* cleanup
* self-review
* comment
* webhook util functions: less dependencies
* remove comment
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-12-26 18:00:32 -05:00
2d0df48767
feat: devex/hatchet log progress track ( #813 )
...
* progress track for some hatchet tasks
* remove inline imports / type fixes
* progress callback for mixdown - move to a function
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-12-26 14:10:21 -05:00
594bcc09e0
feat: parallelize hatchet ( #804 )
...
* parallelize hatchet (no-mistakes)
* dry (no-mistakes) (minimal)
* comments
* self-review
* self-review
* self-review
* self-review
* pr comments
* pr comments
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-12-23 11:03:36 -05:00
1dac999b56
feat: durable ( #794 )
...
* durable (no-mistakes)
* hatchet no-mistake
* hatchet no-mistake
* hatchet no-mistake, better logging
* remove conductor and add hatchet tests (no-mistakes)
* self-review (no-mistakes)
* hatched logs
* remove shadow mode for hatchet
* and add hatchet processor setting to room
* .
* cleanup
* hatchet init db
* self-review (no-mistakes)
* self-review (no-mistakes)
* hatchet: restore zullip report
* self-review round
* self-review round
* self-review round
* dry hatchet with celery
* dry hatched with celery - 2
* self-review round
* more NES instead of str
* self-review wip
* self-review round
* self-review round
* self-review round
* can_replay cancelled
* add forgotten file
* pr autoreviewer fixes
* better log webhook events
* durable_started return
* migration sync
* latest changes feature parity
* migration merge
* pr review
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-12-22 12:09:20 -05:00
d63040e2fd
feat: Multitrack segmentation ( #747 )
...
* segmentation multitrack (no-mistakes)
* segmentation multitrack (no-mistakes)
* self review
* self review
* recording poll daily doc
* filter cam_audio tracks to remove screensharing from daily processing
* pr review
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-11-26 16:21:32 -05:00
f6ca07505f
feat: add transcript format parameter to GET endpoint ( #709 )
...
* feat: add transcript format parameter to GET endpoint
Add transcript_format query parameter to /v1/transcripts/{id} endpoint
with support for multiple output formats using discriminated unions.
Formats supported:
- text: Plain speaker dialogue (default)
- text-timestamped: Dialogue with [MM:SS] timestamps
- webvtt-named: WebVTT subtitles with participant names
- json: Structured segments with full metadata
Response models use Pydantic discriminated unions with transcript_format
as discriminator field. POST/PATCH endpoints return GetTranscriptWithParticipants
for minimal responses. GET endpoint returns format-specific models.
* Copy transcript format
* Regenerate types
* Fix transcript formats
* Don't throw inside try
* Remove any type
* Toast share copy errors
* transcript_format exhaustiveness and python idiomatic assert_never
* format_timestamp_mmss clear type definition
* Rename seconds_to_timestamp
* Test transcript format with overlapping speakers
* exact match for vtt multispeaker test
---------
Co-authored-by: Sergey Mankovsky <sergey@monadical.com >
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-11-26 18:51:14 +01:00
86d5e26224
feat: transcript restart script ( #742 )
...
* transcript restart script
* fix tests?
* remove useless comment
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-11-25 16:28:43 -05:00
8e438ca285
feat: dailyco poll ( #730 )
...
* dailyco api module (no-mistakes)
* daily co library self-review
* uncurse
* self-review: daily resource leak, uniform types, enable_recording bomb, daily custom error, video_platforms/daily typing, daily timestamp dry
* dailyco docs parser
* phase 1-2 of daily poll
* dailyco poll (no-mistakes)
* poll docs
* fix tests
* forgotten utils file
* remove generated daily docs
* pr comments
* dailyco poll pr review and self-review
* daily recording poll api fix
* daily recording poll api fix
* review
* review
* fix tests
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-11-24 22:24:03 -05:00
1473fd82dc
feat: daily.co support as alternative to whereby ( #691 )
...
* llm instructions
* vibe dailyco
* vibe dailyco
* doc update (vibe)
* dont show recording ui on call
* stub processor (vibe)
* stub processor (vibe) self-review
* stub processor (vibe) self-review
* chore(main): release 0.14.0 (#670 )
* Add multitrack pipeline
* Mixdown audio tracks
* Mixdown with pyav filter graph
* Trigger multitrack processing for daily recordings
* apply platform from envs in priority: non-dry
* Use explicit track keys for processing
* Align tracks of a multitrack recording
* Generate waveforms for the mixed audio
* Emit multriack pipeline events
* Fix multitrack pipeline track alignment
* dailico docs
* Enable multitrack reprocessing
* modal temp files uniform names, cleanup. remove llm temporary docs
* docs cleanup
* dont proceed with raw recordings if any of the downloads fail
* dry transcription pipelines
* remove is_miltitrack
* comments
* explicit dailyco room name
* docs
* remove stub data/method
* frontend daily/whereby code self-review (no-mistake)
* frontend daily/whereby code self-review (no-mistakes)
* frontend daily/whereby code self-review (no-mistakes)
* consent cleanup for multitrack (no-mistakes)
* llm fun
* remove extra comments
* fix tests
* merge migrations
* Store participant names
* Get participants by meeting session id
* pop back main branch migration
* s3 paddington (no-mistakes)
* comment
* pr comments
* pr comments
* pr comments
* platform / meeting cleanup
* Use participant names in summary generation
* platform assignment to meeting at controller level
* pr comment
* room playform properly default none
* room playform properly default none
* restore migration lost
* streaming WIP
* extract storage / use common storage / proper env vars for storage
* fix mocks tests
* remove fall back
* streaming for multifile
* cenrtal storage abstraction (no-mistakes)
* remove dead code / vars
* Set participant user id for authenticated users
* whereby recording name parsing fix
* whereby recording name parsing fix
* more file stream
* storage dry + tests
* remove homemade boto3 streaming and use proper boto
* update migration guide
* webhook creation script - print uuid
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
Co-authored-by: Mathieu Virbel <mat@meltingrocks.com >
Co-authored-by: Sergey Mankovsky <sergey@monadical.com >
2025-11-12 21:21:16 -05:00
b3a8e9739d
chore: whereby & s3 settings env error reporting ( #637 )
...
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-09-11 17:52:34 -04:00
695d1a957d
fix: search-logspam ( #593 )
...
* fix: search-logspam
* llm comment
* fix tests
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-08-29 18:55:51 -04:00
Igor Loskutov
6fb5cb21c2
feat: search backend ( #537 )
...
* docs: transient docs
* chore: cleanup
* webvtt WIP
* webvtt field
* chore: webvtt tests comments
* chore: remove useless tests
* feat: search TASK.md
* feat: full text search by title/webvtt
* chore: search api task
* feat: search api
* feat: search API
* chore: rm task md
* chore: roll back unnecessary validators
* chore: pr review WIP
* chore: pr review WIP
* chore: pr review
* chore: top imports
* feat: better lint + ci
* feat: better lint + ci
* feat: better lint + ci
* feat: better lint + ci
* chore: lint
* chore: lint
* fix: db datetime definitions
* fix: flush() params
* fix: update transcript mutability expectation / test
* fix: update transcript mutability expectation / test
* chore: auto review
* chore: new controller extraction
* chore: new controller extraction
* chore: cleanup
* chore: review WIP
* chore: pr WIP
* chore: remove ci lint
* chore: openapi regeneration
* chore: openapi regeneration
* chore: postgres test doc
* fix: .dockerignore for arm binaries
* fix: .dockerignore for arm binaries
* fix: cap test loops
* fix: cap test loops
* fix: cap test loops
* fix: get_transcript_topics
* chore: remove flow.md docs and claude guidance
* chore: remove claude.md db doc
* chore: remove claude.md db doc
* chore: remove claude.md db doc
* chore: remove claude.md db doc
2025-08-13 10:03:38 -04:00
28ac031ff6
feat: use llamaindex everywhere ( #525 )
...
* feat: use llamaindex for transcript final title too
* refactor: removed llm backend, replaced with one single class+llamaindex
* refactor: self-review
* fix: typing
* fix: tests
* refactor: extract clean_title and add tests
* test: fix
* test: remove ensure_casing/nltk
* fix: tiny mistake
2025-08-01 12:13:00 -06:00
f5b82d44e3
style: use ruff for linting and formatting ( #524 )
2025-07-31 17:57:43 -06:00
ad56165b54
fix: remove unused settings and utils files ( #522 )
...
* fix: remove unused settings and utils files
* fix: remove migration done
* fix: remove outdated scripts
* fix: removing deployment of hermes, not used anymore
* fix: partially remove secret, still have to understand frontend.
2025-07-31 17:45:48 -06:00
406164033d
feat: new summary using phi-4 and llama-index ( #519 )
...
* feat: add litellm backend implementation
* refactor: improve generate/completion methods for base LLM
* refactor: remove tokenizer logic
* style: apply code formatting
* fix: remove hallucinations from LLM responses
* refactor: comprehensive LLM and summarization rework
* chore: remove debug code
* feat: add structured output support to LiteLLM
* refactor: apply self-review improvements
* docs: add model structured output comments
* docs: update model structured output comments
* style: apply linting and formatting fixes
* fix: resolve type logic bug
* refactor: apply PR review feedback
* refactor: apply additional PR review feedback
* refactor: apply final PR review feedback
* fix: improve schema passing for LLMs without structured output
* feat: add PR comments and logger improvements
* docs: update README and add HTTP logging
* feat: improve HTTP logging
* feat: add summary chunking functionality
* fix: resolve title generation runtime issues
* refactor: apply self-review improvements
* style: apply linting and formatting
* feat: implement LiteLLM class structure
* style: apply linting and formatting fixes
* docs: env template model name fix
* chore: remove older litellm class
* chore: format
* refactor: simplify OpenAILLM
* refactor: OpenAILLM tokenizer
* refactor: self-review
* refactor: self-review
* refactor: self-review
* chore: format
* chore: remove LLM_USE_STRUCTURED_OUTPUT from envs
* chore: roll back migration lint changes
* chore: roll back migration lint changes
* fix: make summary llm configuration optional for the tests
* fix: missing f-string
* fix: tweak the prompt for summary title
* feat: try llamaindex for summarization
* fix: complete refactor of summary builder using llamaindex and structured output when possible
* fix: separate prompt as constant
* fix: typings
* fix: enhance prompt to prevent mentioning others subject while summarize one
* fix: various changes after self-review
* fix: from igor review
---------
Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com >
2025-07-31 15:29:29 -06:00
Igor Loskutov
27b43d85ab
feat: Diarization cli ( #509 )
...
* diarisation cli
* feat: s3 upload for modal diarisation cli call
* chore: cleanup
* chore: s3 cleanup improvement
* chore: lint
* chore: cleanup
* chore: cleanup
* chore: cleanup
* chore: cleanup
2025-07-25 16:24:06 -04:00
f3ae187274
fix: waveform can generate NaN in json database ( #481 )
...
* refactor: fixes transcript duration type, NaN in waveform, and prepare for postgres migration
* fix: ensure we don't have NaN in waveform
* fix: missing assertionerror
Co-authored-by: pr-agent-monadical[bot] <198624643+pr-agent-monadical[bot]@users.noreply.github.com>
* fix: potential empty array
---------
Co-authored-by: pr-agent-monadical[bot] <198624643+pr-agent-monadical[bot]@users.noreply.github.com>
2025-07-15 20:46:19 -06:00
Igor Loskutov
6cb46dc64f
format
2025-06-19 10:13:57 -04:00
Igor Loskutov
91c7c8b83a
meeting consent vibe
2025-06-17 16:30:23 -04:00
projects-g
1522d60cbc
Big file upload ( #349 )
2024-01-30 20:51:58 +05:30
Sara
fb7a7602f3
waveform is a list
2023-10-13 11:34:22 +02:00
Sara
006ab10b44
use numpy in waveform calculation
2023-10-13 10:51:55 +02:00
Sara
2cf61b191f
fix waveform generation
2023-10-09 16:00:01 +02:00
9dcac97efb
server: update to have 0-128 range, feedback from jose
2023-08-24 14:58:59 +02:00
621ae7d681
server: update to set 256 points by default
2023-08-24 14:58:59 +02:00
c21d88b797
server: implement audio waveform download as json
...
Closes #136
2023-08-24 14:58:59 +02:00
Mathieu Virbel
445d3c1221
server: implement modal backend for llm and transcription
2023-08-11 12:43:09 +02:00
7d40305737
Implement retry that automatically detect httpx and backoff ( #119 )
...
* server: implement retry that automatically detect httpx and backoff
Closes #118
* server: fix formatting
2023-08-08 14:03:36 +02:00
d94e2911c3
Serverless GPU support on banana.dev ( #106 )
...
* serverless: implement banana backend for both audio and LLM
Related to monadical-sas/reflector-gpu-banana project
* serverless: got llm working on banana !
* tests: fixes
* serverless: fix dockerfile to use fastapi server + httpx
2023-08-04 10:24:11 +02:00
Mathieu Virbel
69ba871481
server: refactor to reflector module
...
- replaced loguru to structlog, to get ability of having open tracing later
- moved configuration to pydantic-settings
- merged both secrets.ini and config.ini to .env (check reflector/settings.py)
2023-07-27 15:31:58 +02:00