deslop scan root: /home/chinmay/ChinmayPersonalProjects/SnapBack
Source files discovered: 13
Source files analyzed: 13
Functions fingerprinted: 69
Findings: 117
Index summary: packages=13 symbols=81 imports=81
Parse failures: 0
Timings: discover=3ms parse=76ms index=0ms heuristics=58ms total=138ms

Findings:
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:1 module depends on a large number of repository-local modules [tight_module_coupling]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:1 file imports heavy ecosystems that show little local evidence of need [unrelated_heavy_import]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:46 module loads configuration or secrets while being imported [import_time_config_load]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:48 module loads configuration or secrets while being imported [import_time_config_load]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:48 module loads configuration or secrets while being imported [import_time_config_load]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:48 module initializes AUTO_DELETE_AFTER_HOURS from configuration or secrets at import time [import_time_config_load]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:49 module loads configuration or secrets while being imported [import_time_config_load]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:49 module initializes NOTION_API_KEY from configuration or secrets at import time [import_time_config_load]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:122 module loads configuration or secrets while being imported [import_time_config_load]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:122 module loads configuration or secrets while being imported [import_time_config_load]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:122 module initializes summarizer from configuration or secrets at import time [import_time_config_load]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:159 public function start_session exposes a very wide type contract [public_any_type_leak]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:159 function start_session relies on weakly typed inputs or outputs [weak_typing]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:174 file repeats the same validation pipeline across functions [duplicate_validation_pipeline]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:174 public function ingest_transcript exposes a very wide type contract [public_any_type_leak]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:174 function ingest_transcript relies on weakly typed inputs or outputs [weak_typing]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:188 public function ingest_audio_chunk exposes a very wide type contract [public_any_type_leak]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:188 function ingest_audio_chunk relies on weakly typed inputs or outputs [weak_typing]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:196 function ingest_audio_chunk catches a broad exception without narrowing the failure type [broad_exception_handler]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:220 function generate_recap concentrates too much control flow and behavior [god_function]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:220 function generate_recap calls an external HTTP boundary without an obvious timeout or retry policy [network_boundary_without_timeout]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:220 public function generate_recap exposes a very wide type contract [public_any_type_leak]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:220 function generate_recap relies on weakly typed inputs or outputs [weak_typing]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:283 public function get_session_transcript exposes a very wide type contract [public_any_type_leak]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:283 function get_session_transcript relies on weakly typed inputs or outputs [weak_typing]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:296 function complete_session calls an external HTTP boundary without an obvious timeout or retry policy [network_boundary_without_timeout]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:296 public function complete_session exposes a very wide type contract [public_any_type_leak]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:296 function complete_session relies on weakly typed inputs or outputs [weak_typing]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:362 public function export_notion exposes a very wide type contract [public_any_type_leak]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:362 function export_notion relies on weakly typed inputs or outputs [weak_typing]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:382 function generate_study_pack calls an external HTTP boundary without an obvious timeout or retry policy [network_boundary_without_timeout]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:382 public function generate_study_pack exposes a very wide type contract [public_any_type_leak]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:382 function generate_study_pack relies on weakly typed inputs or outputs [weak_typing]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/apps/api/main.py:389 function generate_study_pack uses direct recursion and may need an iterative traversal for deep inputs [recursive_traversal_risk]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/analysis/detector.py:47 public function detect_missed_alerts exposes a very wide type contract [public_any_type_leak]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/analysis/detector.py:47 public function detect_missed_alerts omits complete type hints [public_api_missing_type_hints]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/analysis/detector.py:47 function detect_missed_alerts relies on weakly typed inputs or outputs [weak_typing]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/analysis/detector.py:51 function detect_missed_alerts uses nested loops for lookup; consider a dict/set for O(1) access [nested_list_search_map_candidate]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/analysis/summarizer.py:27 file repeats highly similar exception-handling blocks [duplicate_error_handler_block]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/analysis/summarizer.py:32 function _safe_json_object relies on weakly typed inputs or outputs [weak_typing]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/analysis/summarizer.py:146 public function generate_study_pack exposes a very wide type contract [public_any_type_leak]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/analysis/summarizer.py:146 function generate_study_pack relies on weakly typed inputs or outputs [weak_typing]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/analysis/summarizer.py:185 function generate_study_pack calls .get() with the same key multiple times; assign to a local variable [repeated_dict_get_same_key_no_cache]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/analysis/summarizer.py:186 function generate_study_pack calls .get() with the same key multiple times; assign to a local variable [repeated_dict_get_same_key_no_cache]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/analysis/summarizer.py:190 function generate_study_pack calls .get() with the same key multiple times; assign to a local variable [repeated_dict_get_same_key_no_cache]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/analysis/summarizer.py:191 function generate_study_pack calls .get() with the same key multiple times; assign to a local variable [repeated_dict_get_same_key_no_cache]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/analysis/summarizer.py:196 function generate_study_pack calls .get() with the same key multiple times; assign to a local variable [repeated_dict_get_same_key_no_cache]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/analysis/summarizer.py:197 function generate_study_pack calls .get() with the same key multiple times; assign to a local variable [repeated_dict_get_same_key_no_cache]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/analysis/summarizer.py:202 function generate_study_pack calls .get() with the same key multiple times; assign to a local variable [repeated_dict_get_same_key_no_cache]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/analysis/summarizer.py:203 function generate_study_pack calls .get() with the same key multiple times; assign to a local variable [repeated_dict_get_same_key_no_cache]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/analysis/summarizer.py:275 function _fallback_study_pack relies on weakly typed inputs or outputs [weak_typing]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/exporters/export.py:15 function build_markdown_export calls an external HTTP boundary without an obvious timeout or retry policy [network_boundary_without_timeout]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/exporters/export.py:15 public function build_markdown_export exposes a very wide type contract [public_any_type_leak]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/exporters/export.py:15 public function build_markdown_export omits complete type hints [public_api_missing_type_hints]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/exporters/export.py:15 function build_markdown_export relies on weakly typed inputs or outputs [weak_typing]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/exporters/export.py:39 function build_markdown_export formats a string inside a loop; consider building the template once [repeated_string_format_invariant_template]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/exporters/export.py:62 function build_pdf_export calls an external HTTP boundary without an obvious timeout or retry policy [network_boundary_without_timeout]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/exporters/export.py:62 public function build_pdf_export exposes a very wide type contract [public_any_type_leak]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/exporters/export.py:62 public function build_pdf_export omits complete type hints [public_api_missing_type_hints]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/exporters/export.py:62 function build_pdf_export relies on weakly typed inputs or outputs [weak_typing]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/exporters/export.py:93 function build_pdf_export formats a string inside a loop; consider building the template once [repeated_string_format_invariant_template]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/exporters/export.py:122 function export_to_notion calls an external HTTP boundary without an obvious timeout or retry policy [network_boundary_without_timeout]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/exporters/export.py:122 public function export_to_notion exposes a very wide type contract [public_any_type_leak]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/exporters/export.py:122 public function export_to_notion omits complete type hints [public_api_missing_type_hints]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/exporters/export.py:122 function export_to_notion relies on weakly typed inputs or outputs [weak_typing]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:36 function get_connection opens or acquires a resource without an obvious context manager [missing_context_manager]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:40 function get_connection has a read-style name but performs a mutating operation [name_responsibility_mismatch]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:99 public function create_session exposes a very wide type contract [public_any_type_leak]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:99 function create_session relies on weakly typed inputs or outputs [weak_typing]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:121 public function get_session exposes a very wide type contract [public_any_type_leak]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:121 function get_session relies on weakly typed inputs or outputs [weak_typing]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:124 function get_session has a read-style name but performs a mutating operation [name_responsibility_mismatch]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:131 public function end_session exposes a very wide type contract [public_any_type_leak]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:131 function end_session relies on weakly typed inputs or outputs [weak_typing]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:146 public function append_transcript_chunk exposes a very wide type contract [public_any_type_leak]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:146 function append_transcript_chunk relies on weakly typed inputs or outputs [weak_typing]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:173 public function get_transcript exposes a very wide type contract [public_any_type_leak]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:173 function get_transcript relies on weakly typed inputs or outputs [weak_typing]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:176 function get_transcript has a read-style name but performs a mutating operation [name_responsibility_mismatch]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:188 public function get_transcript_window exposes a very wide type contract [public_any_type_leak]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:188 function get_transcript_window relies on weakly typed inputs or outputs [weak_typing]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:195 function get_transcript_window has a read-style name but performs a mutating operation [name_responsibility_mismatch]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:209 public function get_last_chunk_before exposes a very wide type contract [public_any_type_leak]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:209 function get_last_chunk_before relies on weakly typed inputs or outputs [weak_typing]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:212 function get_last_chunk_before has a read-style name but performs a mutating operation [name_responsibility_mismatch]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:226 public function get_first_chunk_after exposes a very wide type contract [public_any_type_leak]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:226 function get_first_chunk_after relies on weakly typed inputs or outputs [weak_typing]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:229 function get_first_chunk_after has a read-style name but performs a mutating operation [name_responsibility_mismatch]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:243 public function save_recap exposes a very wide type contract [public_any_type_leak]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:243 public function save_recap omits complete type hints [public_api_missing_type_hints]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:243 function save_recap relies on weakly typed inputs or outputs [weak_typing]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:284 public function get_recaps exposes a very wide type contract [public_any_type_leak]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:284 function get_recaps relies on weakly typed inputs or outputs [weak_typing]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:287 function get_recaps has a read-style name but performs a mutating operation [name_responsibility_mismatch]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:298 public function hydrate_recap exposes a very wide type contract [public_any_type_leak]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:298 public function hydrate_recap omits complete type hints [public_api_missing_type_hints]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:298 function hydrate_recap relies on weakly typed inputs or outputs [weak_typing]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:306 public function save_audio_chunk exposes a very wide type contract [public_any_type_leak]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:306 function save_audio_chunk relies on weakly typed inputs or outputs [weak_typing]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:345 function delete_sessions_older_than mixes multiple infrastructure concerns in one body [mixed_concerns_function]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:395 model SessionBundle exposes field session with a very wide type contract [public_any_type_leak]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:396 model SessionBundle exposes field transcript with a very wide type contract [public_any_type_leak]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:397 model SessionBundle exposes field recaps with a very wide type contract [public_any_type_leak]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/storage/database.py:404 function get_session_bundle returns None explicitly where falling through would be clearer [redundant_return_none]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/transcription/transcription_client.py:1 module transcription_client uses a utility-style name but coordinates multiple infrastructure concerns [name_responsibility_mismatch]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/transcription/transcription_client.py:66 function from_env reads required environment configuration without an obvious fallback or validation path [environment_boundary_without_fallback]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/transcription/transcription_client.py:94 class SnapBackTranscriptionClient builds several collaborators eagerly in __init__ [eager_constructor_collaborators]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/transcription/transcription_client.py:94 class SnapBackTranscriptionClient assigns an unusually large number of instance attributes [too_many_instance_attributes]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/transcription/transcription_client.py:97 function __init__ calls an external HTTP boundary without an obvious timeout or retry policy [network_boundary_without_timeout]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/transcription/transcription_client.py:182 function _capture_microphone_stream opens or acquires a resource without an obvious context manager [missing_context_manager]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/transcription/transcription_client.py:199 function _capture_microphone_stream catches a broad exception without narrowing the failure type [broad_exception_handler]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/transcription/transcription_client.py:210 function _on_message calls an external HTTP boundary without an obvious timeout or retry policy [network_boundary_without_timeout]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/transcription/transcription_client.py:256 function _post_transcript formats a string inside a loop; consider building the template once [repeated_string_format_invariant_template]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/transcription/transcription_client.py:274 function _run_local_whisper_loop opens or acquires a resource without an obvious context manager [missing_context_manager]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/transcription/transcription_client.py:284 function _run_local_whisper_loop allocates a temporary collection inside a loop [temporary_collection_in_loop]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/transcription/transcription_client.py:332 function _ensure_whisper_model mixes multiple infrastructure concerns in one body [mixed_concerns_function]
  - /home/chinmay/ChinmayPersonalProjects/SnapBack/services/transcription/transcription_client.py:347 function _ensure_whisper_model calls .write() inside a loop without visible buffering [write_without_buffering_in_loop]
