Skip to content
Sophie Yin
← All work

agentic selling

2026 · Shipped · Built at Alt · LLM agents, Python, AWS

case study

Problem

An offer used to go out as a bare number. Accepting it is a trust decision, and a number alone gives the customer nothing to trust — no comparables, no reasoning, no answer to "why is this fair?"

What it does

For every quote, the system researches comparable sales, uses an LLM judge to select the strongest comps, and runs a self-correcting generator that writes a pitch grounded in them — so each offer arrives with its argument attached, automatically.

System

How a quote gets the case for its offer — and what runs underneath. Click Offer moment to open it.

LLM step

What builds the offer's case · ⊕ opens a step

Offer moment pipelineA priced quote reaches the offer-moment Lambda. Inside, data retrieval grounds each card, comp research finds comparable cards, comp selection keeps at most three sales, generation writes the pitch, and a judge fact-checks it, sending it back for up to four revisions. The result goes to the offer-ready queue, then the seller is notified and the offer page renders.REVISE · UP TO 4×Quote pricedPRICING FINISHEDOffer readySQSNotify seller+ OFFER PAGEOffer moment pipelineA priced quote reaches the offer-moment Lambda. Inside, data retrieval grounds each card, comp research finds comparable cards, comp selection keeps at most three sales, generation writes the pitch, and a judge fact-checks it, sending it back for up to four revisions. The result goes to the offer-ready queue, then the seller is notified and the offer page renders.Quote pricedPRICING FINISHEDOffer readySQSNotify seller+ OFFER PAGE
Overview · 01/03

A quote finishes pricing. Offer moment builds the case for its offer in one Lambda. Click the box to open it.

Architecture

  1. 01Quote priced (event-driven trigger)
  2. 02Structured data retrieval to ground each card
  3. 03Comparable research: own sales, expert comps, or agent search
  4. 04Deterministic gate, then LLM-judge comp selection
  5. 05Pitch generation
  6. 06Faithfulness judge, with up to 4 revisions
  7. 07Pitch attached to the offer

Stack

  • TriggerEvent-driven backbone (SQS + Lambda)
  • RetrievalSQL over the platform replica + Snowflake sales
  • ModelsGemini via pydantic-ai, structured outputs
  • SelectionCode gate + LLM-as-judge picks by ID
  • GenerationSelf-correcting generator ⇄ judge loop
  • ObservabilityLangfuse traces · PostHog prompts + LLM analytics
  • RuntimePython on AWS Lambda, S3 checkpoints

Outcomes

  • Offer acceptance more than doubled in phase one: 11.5% → 26%
  • Every quote ships with an evidence-backed pitch, no human in the loop

Code is private — happy to walk through it.