AI Agent Case Study  ·  Brixline  ·  Autonomous Systems

Leads score themselves now.

A 2-hour daily ritual became a 30-minute morning check.

An autonomous agent scores every inbound real-estate lead overnight and writes it back to the CRM — the non-technical sales team works with it, and corrects it, entirely in Slack. Architected and owned end to end; built token-first and consent-first.

RoleArchitect & ownerSole builder
ContextReal-estate lead opsPremium RERA project
InterfaceSlackNon-technical sales team
StackOpenClaw + HermesPython · VPS · nightly cron
DataConsent-basedBank loan-eligibility API
StatusLive in productionScoring every night
  In one screen

Two hours of senior selling time, handed back every day.

The problem

Every morning, the team spent ~2 hours manually scoring inbound leads.

CIBIL, employer, budget, net worth — scored by hand before splitting leads between the Project Head, Sales Lead and Sales Team. Two hours of senior selling time, spent on a spreadsheet.

What I built

An autonomous agent that scores every lead overnight — and takes corrections in Slack.

A nightly cron on a VPS scores each lead 0–100 on financial capacity, intent and fit, tags a persona and routing tier, and writes it back to the CRM. The team works with it in plain language.

The impact

The team no longer scores leads. The morning task is a ~30-minute check.

Hot leads reach the Project Head before the office opens. A 2-hour ritual became a verification pass — measured, live in production.

01  Judgment & grit

The first version scraped credit scores. I killed it.

v1 pulled CIBIL scores off a third-party site with a Puppeteer script. It technically worked — and I pulled the plug on it myself, for three reasons.

  Why it had to go

01

Fragile

It broke every time the source site changed its markup — a scraper is only ever one redesign from dead.

02

Expensive

An LLM puppeting a browser burned tokens on every single lead, for data a direct API could return for free.

03

Legally wrong

Pulling a credit score without consent runs straight into India's Credit Information Companies Act and the DPDP Act — unacceptable exposure for a brand built on trust.

The re-architecture: consent-based data only.The company’s own bank-integrated loan-eligibility calculator became the affordability signal — a direct API call, done properly, zero scraping.
02  First-principles

AI should never do work that code can do.

The pipeline is layered so the expensive part stays tiny. All the deterministic work runs as plain Python at zero tokens; the model only ever touches leads with new replies since the last run — that’s delta processing, and it’s why a daily run costs a few thousand tokens instead of hundreds of thousands.

InputVendor leads land
PythonFetch + normalize0 tokens
PythonScore 0–1000 tokens
Gateneeds_llm_pass?new replies only
LLMRead new replies~thousands, not 100Ks
PythonWrite score + tier0 tokens
OutputPre-scored CRM
Deterministic Python · 0 tokensLLM pass · the only tokens spentData in / out
03  Decision-making

I overrode the AI on product, not code.

Claude Code’s first design had the agent read a full replica of the production database — two databases kept in sync. For a non-technical sales team, that was the wrong call: too costly to run, too much to maintain, and nobody on that team could babysit a replication setup.

So I put Slack in front of the agents instead. Now the team doesn’t operate a system — they talk to one, and correct it in plain language when it gets something wrong. The human-in-the-loop lives where the team already works.

The AI optimised for technical correctness. I optimised for the humans who had to live with it.

lead-desk
Lead Desk AgentAgent6:02 AM

Scored 40 new leads overnight. 6 hot (Tier A) → routed to the Project Head. 2 tagged needs-qualification — missing financials.

Priya (Sales Lead)9:14 AM

Why is Ramesh K. only Tier B? He mentioned an HDFC sanction.

Lead Desk AgentAgent9:14 AM

His reply landed after last night’s run, so I hadn’t seen it. Re-scoring now… updated to Tier A — confirmed financing lifts intent.

Priya (Sales Lead)9:15 AM

Correct going forward — a bank sanction should always bump intent.

Lead Desk AgentAgent9:15 AM

Noted. Bank-sanction mentions now weight intent higher.

04  Business sense

A rubric grounded in buyer research, not vibes.

100 points, weighted from actual surveys and sales interviews. The score is a deliberate formula — that’s the zero-token part — and the model only earns its place on the unstructured reply text a spreadsheet can’t capture.

Weighted scoring rubric

100 pts
Financial capacity35

Affordability from the company's own bank-integrated loan calculator — consent-based, via a direct API call.

Intent30

Replies, calculator-link clicks and site-visit signals — the unstructured text no spreadsheet column captures.

Persona fit25

Strategic Investor vs Future Lifestyle Investor — each scored on its own buying signals.

Data quality10

A confidence check — how much the system actually knows about this lead before it dares to rank them.

The system knows what it doesn’t know. A lead with no financial fields is capped and tagged needs-qualification — routed to a human discovery call, never given a false rank.

  Two personas, two pitch angles

Persona A · ~75–80% of buyers

Strategic Investor

Research showed most buyers are investors, not self-users — so due-diligence questions on legal clarity and liquidity are scored as serious-buyer signals, not objections.

Persona B

Future Lifestyle Investor

Buying for an eventual lifestyle move. A different pitch angle, so the sales team opens the right way on the very first call.

05  AI-native ownership

I architected it. Claude Code wrote it. I corrected it three times.

Owning a coding-agent build means catching where it gets things wrong — on product grounds the AI can’t reason about.

01

The database architecture

The AI proposed

Read a full replica of the production database — actually two databases kept in sync — for the agent to query.

I chose

Deploy the conversational agents on a VPS and put Slack in front. The team talks to the agent instead of maintaining a replication setup.

02

The Lemlist rate limit

The AI proposed

Called Lemlist on every interaction — and promptly blew the API rate limit.

I chose

Constrain it to touch Lemlist only when it must read or write data. Nothing more.

03

Scoring missing data

The AI proposed

Punished leads for fields the CRM didn’t have, scoring sparse records artificially low.

I chose

A confidence model — a sparse lead is capped and tagged needs-qualification for a discovery call, never a false rank.

06  Forward-looking

v2: react, don’t scan.

The current delta is a nightly cron with a timestamp checkpoint. It works, but it scans. Lemlist supports webhooks — so v2 flips the model to event-driven, the same “less work, not more” judgment as the database call. All of it fits the existing architecture without a rewrite.

  1. 01

    Event-driven trigger.A webhook listener subscribes narrowly to score-moving events (reply, interested, calculator click). A hot 9am reply is re-scored in seconds, not at next midnight.

  2. 02

    Hash-gate the LLM pass.Hash the scoring-relevant fields and skip the expensive pass when nothing material changed — a plain email-open shouldn't cost a token.

  3. 03

    Per-lead watermark.Replace the single global timestamp so a lead that changes mid-run can never be skipped.

  4. 04

    Cron demoted to a backstop.Webhooks can be missed, so a lightweight nightly sweep reconciles new leads and dropped events. Event-driven for speed, periodic sweep for correctness.

  5. 05

    Durable queue + dead-letter.A right-sized SQLite table on the same VPS: failures retry with backoff, and one bad lead never stalls the batch.

  How it runs today

Autonomous overnight, verified by 9am.

Vendor leads arriveNightly cron firesFetch · normalize · scoreLLM reads flagged repliesScore · tier · persona → CRMTeam verifies in Slack

  The impact — measured, and honestly estimated

Measured2h → 30mDaily scoring, per day~2 hours of manual scoring became a ~30-minute verification. Live in production.
Estimated30+ hrsSenior sales time / monthAssuming ~1.5 hrs/day reclaimed across the team over a work-month — redirected from spreadsheets to selling. Stated assumptions.
Measured~10³Tokens per daily runA few thousand tokens a day instead of hundreds of thousands — because deterministic work never enters a model's context.
What’s next

The event-driven v2 above, plus pushing the vendor on field completeness — the single highest-ROI fix, because unscoreable leads become scoreable. Both fit the existing architecture without a rewrite.

  Brixline · Autonomous lead-scoring agent

Want an agent that hands your team back its mornings?

Agent ArchitectureToken EconomicsHuman-in-the-LoopConsent-Based DataProduct Judgment