Summary
Six APIs across the two properties. The Contraire fork reaches all of them; the portfolio uses two, Bulbul for voice and Mayura for translation.
| API | Model | Where it runs | What it does |
|---|---|---|---|
| Chat and reasoning | sarvam-105b |
Contraire fork | nine council perspectives and three reports, in the document's language |
| Text to speech | bulbul:v3 |
both | Contraire's report audio; all 96 portfolio combinations |
| Speech to text | saarika:v2.5 |
Contraire fork | mic dictation and the sample voice note |
| Translation | mayura:v1 |
both | Contraire's Indic samples; the portfolio's five languages |
| Language ID | text-lid |
Contraire fork | detects the pasted language |
| Document AI | sarvam-vision |
Contraire fork | extracts text from a PDF |

Swapping the engine under Contraire
Contraire runs a draft past nine AI readers, each pushing back in its own voice, and folds their reads into a rewrite. In production the reads run on Claude Haiku 4.5; the fork runs them on Sarvam 105B, slower per read but cheaper, and pre-baked so no visitor waits on it.
| Reader | Haiku time | 105B time | Δ speed | Haiku cost | 105B cost |
|---|---|---|---|---|---|
| The Critic | 6.4s | 13.1s | 2.0× | ₹0.26 | ₹0.16 |
| The Feminist Theorist | 5.6s | 12.7s | 2.3× | ₹0.26 | ₹0.18 |
| The Empath | 4.4s | 16.2s | 3.7× | ₹0.22 | ₹0.18 |
| The Old Guard | 5.9s | 14.3s | 2.4× | ₹0.25 | ₹0.16 |
| The Pragmatist | 5.1s | 10.5s | 2.1× | ₹0.24 | ₹0.16 |
| The Advocate | 5.6s | 30.2s | 5.4× | ₹0.25 | ₹0.14 |
| The Mentor | 5.6s | 10.4s | 1.9× | ₹0.26 | ₹0.16 |
| The Realist | 6.5s | 13.8s | 2.1× | ₹0.27 | ₹0.17 |
| The Moralist | 5.7s | 12.0s | 2.1× | ₹0.26 | ₹0.15 |
| Council total | 50.8s | 133.2s | 2.6× | ₹2.27 | ₹1.46 |

Sarvam 105B vs Sonnet
Three reports follow the council: Synthesis, Drift and Variance. In production they run on Claude Sonnet 4.6; the fork runs all three on 105B, in parallel.
| Stage | 105B time | Sonnet time | Δ | 105B cost | Sonnet cost |
|---|---|---|---|---|---|
| Synthesis | 32.7s | 24.8s | 1.3× slower | ₹0.32 | ₹2.13 |
| Drift analysis | 22.4s | 25.7s | 1.1× faster | ₹0.28 | ₹2.13 |
| Agent divergence | 38.2s | 46.3s | 1.2× faster | ₹0.37 | ₹3.25 |
| Total | 93.3s | 96.8s | about even | ₹0.98 | ₹7.51 |
105B splits one 4,096-token budget between thinking and answering, unevenly by task.
| Stage | Thinking | Answer | Headroom |
|---|---|---|---|
| Synthesis | ~1,648 | ~727 | 1,721 |
| Drift | 0 | 732 | 3,364 |
| Variance | ~2,693 | ~799 | 604 |
Bringing voice to Synthesis, Analysis & Variance reports
Each report and each of the nine perspectives has a Play button, read by Bulbul v3. The same pipeline made Contraire's video voice-overs, in Sunny and Shreya, the two of six Bulbul voices I shipped.

Rebuilding the input methods
The fork started with one way to add a draft, a text box. I grew it to five, each powered by a different Sarvam API.
| Input | Sarvam API | What it does |
|---|---|---|
| Paste text | text-lid |
detects the pasted language |
| Sample documents | mayura:v1 |
loads a ready draft in English, Kannada, Hindi or Tamil |
| Sample PDF | sarvam-vision |
extracts text from a PDF, layout-aware |
| Sample voice note | saarika:v2.5 |
a baked clip, transcribed |
| Live mic dictation | saarika:v2.5 |
transcribes speech in real time |

Audio-visual case studies, powered by Bulbul
Eight case studies, each with a spoken summary. Bulbul voices Sunny and Shreya; Mayura translates. English, Kannada, Marathi, Hindi, Tamil, Malayalam.
| Clip | Section | Length |
|---|---|---|
| Constella | AI | 2:59 |
| Contraire | AI | 2:53 |
| Shape of portfolios | AI | 2:56 |
| Design System (Ennoventure) | Work | 3:03 |
| ExpressBuy (PhonePe) | Work | 3:06 |
| PhonePe Cart | Work | 2:52 |
| UPI International (PhonePe) | Work | 2:29 |
| UPI Lite (PhonePe) | Work | 2:27 |
| Total | 22:45 |

Cost breakdown
| Model | Dashboard quantity | Dashboard spend | Portfolio | Contraire fork |
|---|---|---|---|---|
| Bulbul v3 (text to speech) | 345.6K chars | ₹1,036.67 | 291.4K chars · ₹874.13 | 54.2K chars · ₹162.54 |
| Mayura v1 Formal (translation) | 146.5K chars | ₹292.91 | 99.0K chars · ₹198.05 | 47.5K chars · ₹94.86 |
| Sarvam 105B (chat) | 519.4K tokens | ₹5.73 | none | ₹5.73 |
| Saarika v2.5 (speech to text) | 3.7 mins | ₹1.83 | none | ₹1.83 |
| Speech and audio (misc) | 103 mins | ₹2.16 | none | ₹2.16 |
| Total | ₹1,339.30 | ₹1,072.18 | ₹267.12 |
