You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
🔴 Hindi Signal → "dekhte hain" — Classic Indian soft no (80% confidence)
60
-
🔴 Hindi Signal → "thoda mushkil hai" — Indirect refusal (85% confidence)
61
-
⚠️ Risk Level → HIGH — Commitment unlikely to be followed through
62
-
🟣 Tone → Hesitant / Uncertain (Intensity: 2/5)
63
-
```
35
+
Every language and culture has indirect communication patterns — polite rejections, soft commitments, face-saving agreements — that a generic summarizer will log as action items that never get done.
36
+
37
+
TranscriptAI is built to catch exactly those signals.
64
38
65
39
---
66
40
67
-
## The Core Idea
41
+
## Live Demo
42
+
43
+
**[→ Try it on Hugging Face](https://huggingface.co/spaces/KunalTheBeast/TranscriptAI)**
68
44
69
-
Most meeting tools extract *what* was said. TranscriptAI extracts *how* people communicate.
45
+
No setup. No API key. Paste any transcript and get structured intelligence in seconds.
70
46
71
-
Each language has its own indirect communication patterns. A generic summarizer misses all of them:
47
+
**Example — what a generic tool misses:**
72
48
73
-
| What was said | Generic AI | TranscriptAI |
49
+
| What was said | Generic AI output | TranscriptAI output|
74
50
|---|---|---|
75
-
|*"Dekhte hain"*| "We will see" — neutral | 🔴 Classic Indian soft no — unlikely to happen|
76
-
|*"検討いたします"*| "We will consider it" — action item | ⚠️ 72% rejection confidence — follow up in writing|
77
-
|*"We'll circle back"*| Meeting note | 🌀 Corporate hedging — no concrete next step |
78
-
|*"Haan haan bilkul"*| "Yes absolutely" — agreement | 🟠 Hierarchical yes — agreeing to please, may not follow through|
- Passive aggression — "fine", "whatever works for you"
100
-
- 40+ patterns across 4 categories
69
+
---
101
70
102
-
### 🇯🇵 Japanese
103
-
- 16 nemawashi soft rejection patterns with confidence scores
104
-
- Keigo formality detection via MeCab morphological analysis
105
-
- Deterministic JA↔EN code-switch counting
106
-
- Cross-script speaker normalization — 田中 and Tanaka are the same speaker
71
+
## Language Engines
107
72
108
-
---
73
+
Three independent NLP modules, auto-detected from transcript content.
109
74
110
-
## Features
75
+
### English
76
+
Commitment strength grading distinguishes "I will deliver" from "I will try" from "we will see." Detects escalation signals, power imbalance language, passive aggression, and corporate hedging. Over 40 patterns across 4 categories.
111
77
112
-
**Summary Tab**
113
-
- Full narrative paragraph — what was discussed, decided, and the outcome
114
-
- 3–8 key bullet points scaled to transcript length
Identifies indirect refusals, hierarchical agreement (saying yes to please rather than commit), face-saving exits, and vague reassurances. Handles both Roman script and Devanagari. Over 30 patterns.
116
80
117
-
**Meeting Health Score** — 0–100 from 4 signals
81
+
### Japanese
82
+
16 nemawashi soft-rejection patterns with per-pattern confidence scores. Keigo formality detection via MeCab morphological analysis. Cross-script speaker normalization — the same person written in kanji and in romanization resolves to a single speaker identity.
83
+
84
+
---
85
+
86
+
## Architecture
118
87
119
88
```
120
-
Sentiment (30) + Action Clarity (25) + Communication Risk (25) + AI Confidence (20)
121
-
```
89
+
transcription/
90
+
pii_masker.py Local anonymization — runs before any LLM call
- MD5 result caching (24h TTL) + JSONL observability logging
111
+
**Processing pipeline — order is strict:**
112
+
113
+
```
114
+
1. PII Mask local, before LLM (privacy compliance)
115
+
2. LLM Analysis Groq / Ollama / Mock
116
+
3. PII Restore local, before normalization
117
+
4. Normalize cross-script speaker deduplication
118
+
5. Tone Classify per-speaker 6-level scoring
119
+
6. NLP Layer language-specific signal detection
120
+
7. Cache + Log MD5 cache write, JSONL append
121
+
```
143
122
144
123
---
145
124
146
-
## Evaluation — 93% Overall Score
125
+
## Evaluation
147
126
148
-
Custom evaluation system with **cultural corrections** — standard NLP metrics have Western bias.
149
-
Japanese professional neutral speech is NOT incorrect. Soft sentiment scoring applied.
127
+
Standard NLP metrics carry Western assumptions. Formal neutral speech in Japanese or indirect communication in South Asian business contexts scores poorly on metrics calibrated for direct English. This project uses a custom evaluation framework with cultural corrections applied at each version iteration.
PII anonymization runs locally before any transcript reaches an LLM. Names, phone numbers, and email addresses are masked on input and restored on output. No personal data is transmitted.
Three-tier LLM fallback — Groq (1–2s, free tier) → Ollama (local, zero cost) → Mock (always available). MD5 result caching with 24-hour TTL means repeat queries return in under one second.
183
153
184
-
utils/
185
-
evaluator.py ROUGE + semantic + F1 + optimal assignment matching
186
-
logger.py JSONL logging + trend analysis engine
187
-
cache.py MD5 result caching
154
+
**Observability**
155
+
Every analysis is written to a local JSONL log. A built-in trends dashboard tracks soft rejection rates, hallucination drift, and workload distribution across sessions.
188
156
189
-
app.py Streamlit UI — translucent navbar, 7 tabs, health score
190
-
api.py FastAPI REST endpoints
191
-
```
192
-
193
-
**Processing order (sequence is critical):**
194
-
```
195
-
1. PII mask — local, before LLM (APPI compliance)
196
-
2. LLM analysis — Groq / Ollama / Mock
197
-
3. PII restore — local, before normalization (so normalizer sees real names)
198
-
4. Normalize — cross-script speaker dedup
199
-
5. Tone classify — 6-level scale per speaker
200
-
6. NLP layer — language-specific routing
201
-
7. Cache + log — local JSONL
202
-
```
157
+
**Integration**
158
+
FastAPI REST endpoint at `/analyze` for direct integration with CRM systems, Slack bots, or downstream pipelines.
0 commit comments