DAILY NEWS

Stay Ahead, Stay Informed – Every Day

Advertisement
The 800ms Barrier: Architecting Interruptible Voice Agents (Lessons from Sarvam AI x Swiggy)



The 800ms Barrier: Architecting Interruptible Voice Agents (Lessons from Sarvam AI x Swiggy)The Signal: The 800ms Latency BarrierIn a research lab, a 3-second delay is an “optimization ticket.” In a live call with a hungry customer on the Swiggy app, 3 seconds is a churn event.

The partnership between Sarvam AI and Swiggy represents a shift in the “Boss Level” of agentic AI. Most developers build voice agents using a Cascaded Pipeline: STT -> LLM -> TTS. The result? A cumulative lag that makes the agent feel like a slow walkie-talkie. To build for the next billion users, you have to architect for Native Audio Streaming and sub-second response times.

Phase 1: The Architectural BetWe are moving from Request-Response to Streaming State Machines.

The Vendor Trap is relying on general-purpose, text-centric models for a multilingual, audio-first market. If you have to translate “Hinglish” to English just to understand an order, you’ve already lost the latency battle.

The Ownership Path is the Indic-Native Stack. Using Sarvam’s natively trained audio models allows us to process speech-to-intent directly. More importantly, we must implement a Bi-Directional WebSocket architecture. This allows the agent to “listen” while it “speaks”—the only way to handle the most difficult part of human conversation: The Barge-in.

Phase 2: Implementation (The Interruptible Voice Handler)In a high-stakes environment like Swiggy, the agent must be able to stop mid-sentence and roll back its logic if the user changes their mind.

// High-Level Logic for an Interruptible Voice Kernel
class VoiceAgentKernel {
constructor(wsConnection) {
this.ws = wsConnection;
this.isSpeaking = false;
this.transactionLock = null; // Ensuring tool-use safety
}

// Detecting the “Barge-in” (Interruption)
onUserSpeechDetected() {
if (this.isSpeaking) {
console.warn(“SIGNAL: Interruption detected. Executing State Rollback.”);
this.killAudioPlayback();
this.abortCurrentLLMGeneration();
this.clearPendingTransactions();
}
}

async handleAudioStream(chunk) {
// Stream raw audio to Sarvam’s native Indic-pipeline
const response = await this.ws.processAudio(chunk);

if (response.intent_confidence > 0.9) {
// Pre-warm tools before the user even stops talking
this.prepareOrderTransaction(response.entities);
}
}

clearPendingTransactions() {
// Essential: Prevents the “Ghost Order” bug
if (this.transactionLock) {
this.transactionLock.cancel();
this.transactionLock = null;
}
}
}

Enter fullscreen mode

Exit fullscreen mode

Phase 3: The Senior Security & Testing AuditI put this Swiggy-scale blueprint through a professional Senior QA & Security Audit. Here is why your “standard” voice agent will fail in the wild.

The “Ghost Order” Race Condition (Logic Fault)The Fault: The agent says “Ordering your Paneer Tikka…” The user interrupts: “No, wait! Make it a Chicken Roll!”The Audit: In naive implementations, the “Order Tool” is triggered the moment the LLM starts talking. If the user interrupts, the audio stops, but the backend API has already committed the Paneer Tikka. You now have a frustrated customer and a wasted order.The Fix: Implement Deferred Commits. The tool-call must remain in a PENDING state until the audio playback reaches a “Commit Threshold” (e.g., 90% completion) or receives a final verbal confirmation.
The “Ambient Audio Injection” (Security Breach)The Fault: The user is ordering food while walking past a loud TV. The TV says “Cancel all orders.”The Audit: Without Speaker Diarization, the agent cannot distinguish between the primary user and background noise. A malicious or accidental “audio injection” can trigger unauthorized actions.The Fix: Use Sarvam’s front-end audio processing to enforce Voice Activity Detection (VAD) with a noise-floor gate. If the audio signal doesn’t match the primary speaker’s decibel profile or spatial characteristics, the kernel must ignore the intent.
The “Colloquial Logic Bypass” (Semantic Security)The Fault: Your security prompts are in English, but the user is speaking a dialect-heavy mix of Hindi and regional slang.The Audit: Traditional English-centric guardrails often miss the nuance of regional insults or “Hinglish” social engineering attempts used to trick the agent into granting a 100% discount.The Fix: Security filters must be Indic-Native. By using Sarvam’s regional guardrails, we ensure that semantic boundaries are enforced at the phoneme level, not just the translation level.

Phase 4: Checklist (The Architect’s Standard)( ) Native Audio or Bust: If you are still converting audio to text before processing intent, your latency will never hit the 800ms gold standard.

( ) Transactional Barge-in: Verify that every interruption triggers a State Rollback for any pending API calls.

( ) Acoustic Hardening: Test your agent against 60dB of background “street noise” to ensure VAD stability.

( ) Regional Edge-Cases: Audit your “Hinglish” logic. Does your agent understand the difference between a user “asking for a discount” and a user “threatening to cancel”?

The Bottom Line: Building for the next billion users requires an infrastructure that respects the speed of human thought. Sarvam AI provides the native Indic engine; your job is to build the Deterministic House that keeps the order safe.



Source link

What is a bonding‑curve reward token? Inside Immute’s on‑chain dividend mechanic



A bonding‑curve reward token is a cryptoeconomic primitive where token price is a deterministic function of circulating supply, defined directly in a smart contract rather than by an external order book. Every trade mints or burns tokens, automatically adjusting price and distributing a built‑in fee to all existing holders. Immute implements exactly this model on Ethereum Sepolia testnet, offering a live experiment where you can earn IMT by interacting with on‑curve mechanics—mainnet launch coming soon.

The price function: linear vs. exponential

Bonding curves typically follow one of two families:

Linear: (P(s) = k \cdot s) where k is a constant slope.

Exponential: (P(s) = P_0 \cdot e^{r s}) where r controls the rate of price increase.

Both formulas give a continuous price‑supply relationship. When you buy Δs tokens, the contract calculates the total cost by integrating the price function over the current supply:

(\text{Cost} = \int_{s}^{s+\Delta s} P(u)\,du)

For a linear curve this reduces to (\frac{k}{2}\big((s+\Delta s)^2 – s^2\big)); for exponential it becomes (\frac{P_0}{r}\big(e^{r(s+\Delta s)} – e^{r s}\big)). The integral ensures that price rises smoothly as supply expands, eliminating the slippage inherent in AMM‑style liquidity pools.

The 10 % fee and pro‑rata dividend distribution

On Immute, every buy or sell incurs a flat 10 % fee on the collateral transferred. If a user sends C ETH to purchase IMT, the contract splits it as follows:

Fee calculation: (f = 0.10 \times C).

Holder reward pool: The entire fee f is added to a global dividend pool.

Pro‑rata distribution: Each holder’s share of the pool is proportional to their IMT balance at the moment the trade settles:

(\text{Claimable reward for holder } h = f \times \frac{\text{balance}_h}{\text{totalSupply}})

Because the fee is distributed on every trade, the effective yield scales with market activity. In simulations, a 10× increase in trade volume translates to roughly a 2.59× increase in effective APY when rewards are auto‑compounded back into the curve (4). This compounding effect is why the model is described as a bonding‑curve reward token: holders earn dividends simply by holding, without any external liquidity provision or inflation‑based emissions.

Why bonding curves beat LP‑based markets

Aspect
Bonding‑curve model (Immute)
LP‑based AMM

Liquidity source
Instant, built‑in; no external pool required
External liquidity pools prone to impermanent loss

Team allocation
None; 100 % of tokens issued on‑curve
Often allocated to teams, investors, or incentives

Fee distribution
Directly to holders per trade
Liquidity providers split fees, sometimes with protocol cut

Price discovery
Continuous, deterministic via formula
Continuous, but depends on pool depth and arbitrage

Impermanent loss
None—holders never provide liquidity
Present when token price diverges from entry

These properties make bonding‑curve reward tokens especially attractive for product‑powered tokenomics: revenue generated by an application flows through the curve, automatically rewarding every participant. The model has been explored academically as an efficient fundraising mechanism and as a foundation for real‑world asset tokenization (2)(3).

The Feeder primitive: turning payments into rewards

Immute’s Feeder contract is the integration bridge that brings external products onto the curve. When a user pays through a partner platform:

1 % of each payment is routed on‑curve, executing a trade that adds to the dividend pool.

99 % of the payment is forwarded to the product’s treasury.

Planned integrations include:

Neptime.io – a creator‑monetization platform where viewers donate or tip creators in IMT. The on‑curve 1 % flows to all IMT holders.

Valiep.com – subscription purchases routed through the Feeder.

Discovire.com – discovery‑layer purchases, also Feeder‑routed.

ByteOdyssey – upcoming game payments through the Feeder.

All of these use the same FeederV9 contract (0xa87e7c25c2f754C7D6bFc9b4472E0c36096E4bF6) to guarantee that every transaction, regardless of the product, contributes to the holder dividend pool. This design is what makes Immute a product‑powered reward token rather than a speculative vehicle.

How to test the mechanics on Sepolia

Immute is live on Sepolia testnet (chainId 11155111). To explore the on‑chain dividend engine:

Obtain free test ETH

Connect a wallet (MetaMask, Rainbow, or any Web3 wallet) and set the network to Sepolia.
Visit the interface at https://immute.io and connect your wallet.

Buy, sell, or reinvest dividends to see the 10 % fee flow directly to your balance.

The IMT token contract is 0xB575A8760c66F09a26A03bc215D612EA2486373C.

Test the Feeder by simulating a payment through any of the planned partner integrations (when they become available in testnet).

There is no monetary value on testnet—ETH is free—so you can experiment without risk. Your feedback helps us burn in the contracts and refine the mechanics before mainnet launch.

Roadmap: mainnet and beyond

Testnet validation – ongoing, with a focus on fee distribution accuracy and Feeder integrations.

Mainnet launch – planned after testnet validation completes; IMT will retain the same curve mechanics but operate on Ethereum mainnet.

Product integrations – Neptime, Valiep, Discovire, and ByteOdyssey are all slated to go live alongside mainnet, turning every payment into a holder reward.

Potential extensions – exponential curve variants, DAO‑governed fee splits, and RWA collateralization (as explored in the broader token‑engineering literature) (3).

Conclusion: try it, earn IMT, and shape the curve

The bonding‑curve reward token model offers a clean, mathematically precise alternative to LP‑based markets, delivering instant liquidity, deterministic pricing, and direct dividend distribution to every holder. Immute’s live Sepolia testnet gives you a hands‑on environment to:

Buy and sell IMT and watch the 10 % fee distribute to your balance.

Reinvest dividends to experience compound growth.

Test the Feeder and provide feedback on how product‑powered payments can reward the entire holder base.

Head to https://immute.io, connect your wallet, and start exploring the on‑chain dividend mechanic today. Mainnet launch is coming soon, and your testnet experience will help us ship a robust, product‑powered reward token.

References

(1) “What is a bonding‑curve reward token? Inside Immute’s on‑chain dividend mechanic.” Dev.to, Oct 2025. https://dev.to/version_6llc_b4d52bd440b/what-is-a-bonding-curve-reward-token-inside-immutes-on-chain-dividend-mechanic-5b7h

(2) Mechanism Institute. “Token Bonding Curve.” https://mechanism.institute/library/token-bonding-curve/

(3) RWA.io. “Understanding What is Bonding Curve Crypto and its Role in Tokenomics.” Feb 2026. https://www.rwa.io/post/understanding-what-is-bonding-curve-crypto-and-its-role-in-tokenomics

(4) Immute Community. “Trade‑triggered rewards outperform LP yields by avoiding IL.” Dev.to, Oct 2025. https://dev.to/version_6llc_b4d52bd440b/what-is-a-bonding-curve-reward-token-inside-immutes-on-chain-dividend-mechanic-5b7h



Source link

29 Zapier + Make automations replaced in four weeks


The bill that I no longer understood One morning in March, I reread the list of recurring direct debits from L’Atelier Palissy, and I came across a line that surprised me by its regularity: Zapier Pro, $73.50, every month for eighteen months. Next to it, a smaller but equally discreet Make Pro. I count: twenty-one active Zaps, nine Make scenarios, a few stopped, a few obviously broken for weeks. Nobody noticed, because each automation lived on its own dashboard, with its own history, its own logs that no one ever looked at. I didn’t know exactly what each one did. I knew there were about thirty of them, that they passed data from Formidable to Mailchimp, from Meta Lead Ads to a shared Google Sheet, from Stripe to a confirmation email, that they triggered on webhook, on polling, on schedule, and that half of the silent system failures probably came from there. I didn’t have the energy to go look, because going to look meant opening a tool in which I wasn’t at home. Twenty-eight days later, it was gone. Zero Zap, zero Make scenario, everything replaced by three hundred lines of TypeScript running in my Rembrandt ERP, under Sentry, under tests, with a single overview that I look at in the morning at coffee. If you have 30 seconds. Zapier/Make automations pay three invisible debts: they live outside your database, they log elsewhere than your monitoring, and they are triggered by rules that we end up no longer reading. Replacing thirty automations with a single event pipeline takes four weeks, not six months, provided you follow a golden rule: never cut a Zap before having validated its replacement in double writing for three to five days. The article gives the method, timetable and cost avoided. Three invisible debts The first debt that no-code tools produce is called, in internal literature which does not yet exist, distributed debt. Your data lives in three places at once, and none of the three are canonical. My CRM thought the truth was in Google Sheets. Mailchimp believed the truth came from Zapier. Supabase didn’t think anything because I only wrote part of what was happening there. The day a lead lands in three different tabs with three different spellings, no one knows which record is the real one. The only way to decide is to choose a place that wins by construction, and do everything else as a slave. The second debt is the absence of unified monitoring. A broken Zap sends an email to the address that created the Zapier account, possibly to no one. A Make scenario that fails in its third step leaves the first two consuming quotas, and the only trace is a small red number in a dashboard that no one opens. Sentry, Datadog, Grafana — none aggregate. You learn that your automation is dead when a customer calls to say that they have not received their confirmation email. The third debt is the most silent, and it is that of the rules that we forget to have written. A Zap created eleven months ago to manage a particular case of the summer season continues to run the following winter, and it routes a Paris lead to the email address of a colleague who has left the house. You don’t see it, because the lead is still coming, apparently. Nobody rereads a Zap. It’s done so that we don’t have to read it. This is precisely what makes it a debt. The golden rule that took me two weeks to accept. My first attempt, at the beginning of April, was naive. I’d write a Rembrandt replacement, cut the Zap, move on to the next one. My third attempt ended in Slack at 11 p.m., a Meta lead lost because my webhook was not deployed on the correct Vercel environment, and the certainty that if I continued like this, I was going to break at least one critical element before the end of the week. I set the following rule, which I kept until the last Zap. Never cut a Zap before having validated its replacement in double writing for three to five days. Concretely: I write the replacement, I deploy it, it runs at the same time as the Zap. Each lead arrives in duplicate in my Supabase, and in the email address of the team that receives the notification. For three to five days, I compare: same lead, same data, same timings, same emails sent? If so, I cut the Zap. If not, I disable my code and I still have a spinning net while I figure out what broke. The worst possible side effect during the transition is a lead received twice by the sales team. It’s an annoyance, not a disaster. A lost lead is a silent catastrophe that we discover a month later. The architecture that replaced the thirty automations The target is of a simplicity that was not visible as long as I stayed in the no-code tools. Meta Ads ──┐ Formidable ──┤ Stripe ──┤──► Webhooks Rembrandt ──► Supabase (single source) Manual ──┘ │ ├── Gmail SMTP (internal notifications) ├── Slack (team alerts) ├── Meta CAPI (campaign feedback) ├── automation_logs (traceability) └── Cron → Mailchimp then Brevo Enter fullscreen mode Exit fullscreen mode A single entry point per source, a single storage location, a parallel fan-out to the notification tools. The core is contained in a file called lib/lead-pipeline.ts which executes the outgoing integrations in parallel after each insert in the contacts table. export async function runLeadPipeline(lead: Lead) { await Promise.allSettled(( syncMailchimp(lead), notifySlack(lead), notifyGmail(lead), sendMetaCapi(lead), generateFirstContactDraft(lead), )) await logAutomation(lead, /* status by tool */) } Enter fullscreen mode Exit fullscreen mode Promise.allSettled rather than Promise.all because if Slack is down, I still want to send the email. Each result feeds an automation_logs table which is the only thing I look at in the morning: how many leads arrived, which tools succeeded, which failed, over what time window. The schedule as it really happened Week What I did Zaps cut S1 Central pipeline + Slack client + automation_logs table 0 S2 Great direct in double write 0 S3 Cut of ten Zaps Great + webhook Meta in duplicate 10 S4 Cut of eight Zaps Meta + webhook Stripe 18 S5 Scenarios Make (PDFs, crons) and cleanup 21 S6 Kill Zapier Pro, planned downgrade 21/21 The day of the final cut, I didn’t sleep the night before, and the next day I opened my automation_logs dashboard every hour. Thirteen days later, nothing had broken. Today I still maintain a dead route, sync-gsheets-leads, which I never call but which serves as a reactivable net until the end of the month. What we gain that we never suspected The economic gain is obvious – around a hundred euros per month in consolidated subscriptions. But what surprised me was a gain in understanding. The first week after the cut, I found that I understood my system for the first time in eighteen months. I could open a file, reread a routing rule, modify it, test it, deploy it in twenty minutes. Before, even a trivial modification – changing the recipient address of a notification email – went through five Zapier tabs and a dull fear of breaking one by moving another. Two short scenes come to mind. The first, I had to call Gaspard, our IT service provider, to retrieve the password for the Zapier account. He had it, he gave it to me, he didn’t ask why I wanted to go. The second, earlier in the morning, Françoise came out of her office with her cup in her hand and stood in front of mine: “Good. How long do you plan to keep your Meta duplicates? Because Hélène receives two emails for the same lead, she is starting to get annoyed. » It was the third week, I told her “Two more days”, she agreed, put down her cup, and the cup was made the next evening. I learned that double writing has a cost in team patience that should neither be minimized nor stretched beyond what is necessary. There is a particular hygiene to having a system held in one place. We underestimate it until it is there, because no-code tools sell precisely the promise that it is everywhere, that it no longer has to be thought about. The truth is that if it’s not thought of in one place, it’s just buried. It costs less to write, and much more expensive to live. What you can copy into your project Reusable patterns extracted from this migration, independent of my stack: The golden rule — double writing three to five days before cutting. Not negotiable. A duplicate lead is better than a lost lead. The additional time is paid once and is reimbursed for each incident avoided A unique event pipeline — a runPipeline(event) function called after each insert, which executes the outgoing integrations in parallel (Promise.allSettled) and traces the result of each in a dedicated table An automation_logs table — one row per event, one column per outgoing tool with its status. It’s the only dashboard we look at in the morning, and it replaces all the separate dashboards for no-code tools. A reactivable post-cut net — keeps the road dead for two more weeks. The day a bug surprises you, it takes fifteen seconds of vercel.json to put the net back together. Afterwards, you delete for good And a broader discipline: any tool that houses your business logic outside your database makes you pay three debts — distributed, without monitoring, unreadable. Zapier and Make are useful for prototyping. They become dangerous as soon as serious activity depends on them. How many no-code automations are running on your system right now, and when was the last time someone reread them all? I read the comments. Companion code: rembrandt-samples/lead-pipeline/ — runLeadPipeline with Promise.allSettled, automation_logs schema, hub-and-spoke diagram, MIT, ready to copy.



Source link