Skip to content

Vertical 01 — live

An agent that calls strangers, in their language, and books the visit.

SuryaSetu takes a homeowner who asked about rooftop solar and gets them to a site visit with a government-empanelled installer — without a human on the call.

Proves the substrate survives real users and real regulation.

Open suryasetu.online

The homeowner-facing funnel: subsidy check, consent capture, installer match.

9Leads dialledOne dial-day. Manual, one number at a time.
6–7Agreed to a site visitConsented to their number reaching an empanelled installer.
~70%Interest raten=9. One day. A signal, not yet a result.
₹0Monthly infrastructureOracle Cloud Mumbai, free tier. Live at suryasetu.online.

Measured 15 June 2026

Nine calls is a signal, not traction. It has not been repeated across enough dial-days to prove the rate is stable, and no install has yet closed. The number is published with its denominator because a rate without its sample size is not evidence.

The pipeline

Consent in, booked visit out.

Five stages. The regulated ones are first, because consent that arrives after the call is not consent.

  1. 01
    Consented intent captureA homeowner submits a form through the Drevan Demand Engine with explicit DPDP consent — timestamped, IP-stamped, and stored as the lawful basis for the call that follows.
  2. 02
    Enrichment and qualificationDistrict resolution against an all-India directory, DISCOM lookup from pincode, and a subsidy estimate computed before anyone picks up a phone.
  3. 03
    Autonomous voice callThe agent calls in Hindi or English, qualifies roof type, ownership, and bill size, handles objections, and books a site visit. No human on the call.
  4. 04
    Verified vendor handoffThe consented lead is matched to an installer verified against ~6,400 UPNEDA empanelment records by name, vendor code, and district.
  5. 05
    SettlementCommission is tracked per lead and settles post-installation through the vendor portal. Unpaid commission blocks the next lead.

What went wrong

Four silent failures on the first campaign day.

Every one of them reported success while doing the wrong thing. They are published because the pattern behind them is worth more than the fixes.

Every lead arrived empty

Lead answers were not in the webhook payload at all — they had to be fetched separately from the Graph API. The pipeline reported success while writing blank rows.

Broken leads were hidden, not surfaced

Malformed leads were silently skipped. Failing loudly is worth more than a clean-looking dashboard that is quietly wrong.

District picker and validator disagreed

The form accepted districts the validator then rejected. Two sources of truth for the same field is a defect, not a config issue.

Reconcile resurrected deleted data

The recovery tool built to re-fetch undelivered leads had no time bound, so it restored records that had been deliberately removed. Bounded to a window in the same day.

The pattern

A pipeline that cannot fail loudly will fail quietly instead. Each of these was caught by making the system report its own failures, not by testing harder.

Built with

What is actually running.

consented intent captureDPDP consent trailphone-is-identity authrole-bound invite codesdistrict + DISCOM resolutioncommission + UPI settlementreconcile CLIhealth watchdoghourly verified backupsOracle Cloud Mumbai

Compliance is not a footer link here. Consent is captured with a timestamp and IP before any call is placed, opt-outs are honoured at the dialler, and installers are verified against roughly 6,400 government empanelment records before a lead reaches them. How lead data is handled is written out in full in the SuryaSetu data notice.