# jemitbagadiya/callsense architecture

> Architecture diagram of the GitHub repository jemitbagadiya/callsense, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/jemitbagadiya/callsense
- Repository: https://github.com/jemitbagadiya/callsense

## Overview

CallSense is a Django web app that accepts audio uploads, stores the resulting file URL, transcribes audio, and displays frequently occurring transcript terms as issues. The sampled view shows this workflow; model details and template behavior are not sampled, so their roles are represented only where supported by the tree and references.

Main entry points: [`CallSense/CallSense/views.py`](https://github.com/jemitbagadiya/callsense/blob/main/CallSense/CallSense/views.py) (Upload workflow), [`CallSense/CallSense/urls.py`](https://github.com/jemitbagadiya/callsense/blob/main/CallSense/CallSense/urls.py) (URL dispatch), [`CallSense/templates/hack3.html`](https://github.com/jemitbagadiya/callsense/blob/main/CallSense/templates/hack3.html) (Issue results), [`CallSense/analyzer/models.py`](https://github.com/jemitbagadiya/callsense/blob/main/CallSense/analyzer/models.py) (Audio record)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web interface"]
  node_urls["URL dispatch<br/>[urls.py]"]
  node_home["Upload workflow<br/>[views.py]"]
  node_uploadform["Upload page<br/>[hack2.html]"]
  node_resultpage["Issue results<br/>[hack3.html]"]
end

subgraph group_analysis["Audio analysis"]
  node_extract["Issue extraction<br/>[views.py]"]
  node_uploadcare["Uploadcare"]
  node_assemblyai["AssemblyAI"]
end

subgraph group_state["Stored records"]
  node_audiofile["Audio record<br/>[models.py]"]
  node_sqlite[("SQLite database<br/>[db.sqlite3]")]
end

node_user(("User"))

node_user -->|"requests"| node_urls
node_urls -->|"dispatches"| node_home
node_home -->|"renders"| node_uploadform
node_user -->|"uploads audio"| node_home
node_home -->|"uploads file"| node_uploadcare
node_uploadcare -->|"returns file URL"| node_home
node_home -->|"saves URL"| node_audiofile
node_audiofile -->|"persists record"| node_sqlite
node_home -->|"requests transcription"| node_assemblyai
node_assemblyai -->|"returns transcript"| node_home
node_home -->|"calls"| node_extract
node_extract -->|"returns terms"| node_home
node_home -->|"renders results"| node_resultpage
node_resultpage -->|"displays issues"| node_user

click node_urls "https://github.com/jemitbagadiya/callsense/blob/main/CallSense/CallSense/urls.py"
click node_home "https://github.com/jemitbagadiya/callsense/blob/main/CallSense/CallSense/views.py"
click node_uploadform "https://github.com/jemitbagadiya/callsense/blob/main/CallSense/templates/hack2.html"
click node_resultpage "https://github.com/jemitbagadiya/callsense/blob/main/CallSense/templates/hack3.html"
click node_extract "https://github.com/jemitbagadiya/callsense/blob/main/CallSense/CallSense/views.py"
click node_audiofile "https://github.com/jemitbagadiya/callsense/blob/main/CallSense/analyzer/models.py"
click node_sqlite "https://github.com/jemitbagadiya/callsense/blob/main/CallSense/db.sqlite3"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_urls,node_home,node_uploadform,node_resultpage,node_user toneBlue
class node_extract,node_uploadcare,node_assemblyai toneAmber
class node_audiofile,node_sqlite toneMint
```

## Components

### Web interface

- [URL dispatch](https://github.com/jemitbagadiya/callsense/blob/main/CallSense/CallSense/urls.py): `CallSense/CallSense/urls.py`
- [Upload workflow](https://github.com/jemitbagadiya/callsense/blob/main/CallSense/CallSense/views.py): `CallSense/CallSense/views.py`
- [Upload page](https://github.com/jemitbagadiya/callsense/blob/main/CallSense/templates/hack2.html): `CallSense/templates/hack2.html`
- [Issue results](https://github.com/jemitbagadiya/callsense/blob/main/CallSense/templates/hack3.html): `CallSense/templates/hack3.html`

### Audio analysis

- [Issue extraction](https://github.com/jemitbagadiya/callsense/blob/main/CallSense/CallSense/views.py): `CallSense/CallSense/views.py`
- **Uploadcare**
- **AssemblyAI**

### Stored records

- [Audio record](https://github.com/jemitbagadiya/callsense/blob/main/CallSense/analyzer/models.py): `CallSense/analyzer/models.py`
- [SQLite database](https://github.com/jemitbagadiya/callsense/blob/main/CallSense/db.sqlite3): `CallSense/db.sqlite3`

### Other components

- **User**

## Connections

- User → URL dispatch: requests
- URL dispatch → Upload workflow: dispatches
- Upload workflow → Upload page: renders
- User → Upload workflow: uploads audio
- Upload workflow → Uploadcare: uploads file
- Uploadcare → Upload workflow: returns file URL
- Upload workflow → Audio record: saves URL
- Audio record → SQLite database: persists record
- Upload workflow → AssemblyAI: requests transcription
- AssemblyAI → Upload workflow: returns transcript
- Upload workflow → Issue extraction: calls
- Issue extraction → Upload workflow: returns terms
- Upload workflow → Issue results: renders results
- Issue results → User: displays issues
