ChanlChanl
Side Hustle

The Real Estate Agent Who Qualified Leads While Sleeping

Build an AI lead qualifier for real estate agents. Respond in under 60 seconds, score by budget and timeline, match listings, and book showings automatically.

DGDean GroverCo-founderFollow
March 27, 2026
14 min read
A phone screen showing a text conversation qualifying a home buyer at 2 AM, with a sleeping real estate agent in the background

Jen's alarm goes off at 5:45 AM. Not because she wants to get up. Because her Zillow leads came in overnight and every hour she waits costs her money.

She pours coffee, opens her laptop, and starts dialing. Three hundred leads came in this month. That's the good news. The bad news is that 70% of them are going nowhere. No pre-approval. No real timeline. Wrong city entirely. "Just looking" is the phrase she hears most, right before she crosses another name off the list.

By 9 AM she's made 40 calls. Eight people picked up. Two were somewhat qualified. One was already working with another agent.

The hot leads, the ones who are pre-approved and ready to move in 30 days, are buried in the same list as everyone else. Some of them submitted a form at 11 PM last night. Jen won't get to them until tomorrow morning. By then, they've already heard back from three other agents.

This is the math that keeps real estate agents up at night: the best leads have the shortest shelf life, and the worst leads consume the most time.

Table of contents

The speed-to-lead problem

The Harvard Business Review published a study that changed how sales teams think about response time. Companies that responded to leads within 5 minutes were 100x more likely to make contact than those that waited 30 minutes. Not 10% more likely. One hundred times.

In real estate, the numbers are even more dramatic. The National Association of Realtors found that the first agent to respond to an inquiry gets the appointment 78% of the time. Not the best agent. Not the one with the most listings. The fastest one.

Jen's 3-hour morning call session means her average response time is 8-14 hours. For the leads that came in after she stopped calling yesterday, it's closer to 20 hours. At that point, she's not competing for the lead. She's hoping the lead hasn't already found someone else.

Agencies that adopt AI lead qualification routinely report qualified appointments increasing 30-50% while agents spend far less time on unqualified inquiries. The reason is simple: every lead gets a response within 60 seconds, 24 hours a day.

That's not just a nice improvement. That's the difference between building a client roster and watching it happen for someone else.

What Jen would pay for

Jen already spends money on leads. Zillow Premier Agent costs $300-1,000 per month depending on the zip code. Realtor.com charges similar rates. Facebook ads add another few hundred. She's spending $1,000-2,000 per month on lead generation.

What she doesn't have is lead qualification. Every lead hits her phone as a name, email, and maybe a property they clicked on. No budget information. No timeline. No pre-approval status. Sorting the hot from the cold is manual work, and it takes hours every single day.

She would pay $400/month for a system that does four things:

  1. Responds to every lead within 60 seconds. Text, chat, email. Doesn't matter. The lead hears back before they've moved on.
  2. Asks the qualifying questions. Budget range, pre-approval status, timeline, preferred neighborhoods, must-haves. The questions Jen asks on every call, asked automatically.
  3. Matches qualified leads with actual listings. Not generic responses. Real listings from her inventory that match what the buyer wants.
  4. Books showings for hot leads. Pre-approved, ready to move in 30 days, found a listing they like? The AI checks Jen's calendar and books the showing right there.

When Jen wakes up at 5:45, instead of 300 unsorted leads, she has a dashboard: 12 hot leads with showings already booked, 45 warm leads with profiles saved, and 243 cold leads that were handled politely and told to reach back out when they're ready.

That's the product you build.

What you build: the lead qualification system

The system has four components that work together: a knowledge base of current listings, a qualification tool that scores leads, a showing scheduler that books appointments, and persistent memory that tracks every lead's preferences over time.

Each component is useful on its own. Together, they create something a single real estate agent can't replicate manually, no matter how many hours they work.

typescript
import { Chanl } from '@chanl/sdk'
 
const chanl = new Chanl({ apiKey: process.env.CHANL_API_KEY })

Part 1: Knowledge base from listings

A lead texts: "Do you have any 3-bedroom homes under $400K in Riverside?"

If your AI responds with "I'd be happy to help you search for homes! Let me connect you with an agent," you've already lost. The lead wants an answer, not a referral. They want to know about specific properties, right now, at 11 PM on a Tuesday.

The knowledge base is what makes the difference between a glorified autoresponder and an actual useful assistant. You import Jen's current listings, property descriptions, pricing, photos, and neighborhood details. The AI can search that data and return real answers to real questions.

Structuring the data

Real estate listings have consistent structure, which makes them great candidates for knowledge base ingestion. Each listing becomes a document with searchable metadata:

typescript
// Import a listing into the knowledge base
await chanl.knowledge.create({
  agentId: 'jens-lead-qualifier',
  title: '4821 Oak Street - 3BR/2BA Ranch',
  content: `
    Property: 4821 Oak Street, Riverside, CA 92501
    Type: Single Family Ranch
    Bedrooms: 3 | Bathrooms: 2
    Square Feet: 1,850
    List Price: $385,000
    Year Built: 2004
    Lot Size: 0.18 acres
 
    Features: Updated kitchen with granite counters, hardwood floors
    throughout, attached 2-car garage, fenced backyard with covered patio,
    central AC, new roof 2024.
 
    Neighborhood: Riverside Heights. Walking distance to Palm Elementary
    (8/10 rating). 5 min to 91 freeway. Quiet residential street.
 
    Status: Active
    Days on Market: 12
    Open House: Saturday March 29, 1-4 PM
  `,
  metadata: {
    mlsId: 'RS2026-4821',
    price: 385000,
    bedrooms: 3,
    bathrooms: 2,
    city: 'Riverside',
    neighborhood: 'Riverside Heights',
    propertyType: 'single-family',
    status: 'active',
  }
})

When a lead asks about homes in Riverside under $400K, the knowledge base returns this listing along with any others that match. The AI doesn't guess. It searches.

typescript
// Search listings based on buyer criteria
const results = await chanl.knowledge.search({
  agentId: 'jens-lead-qualifier',
  query: '3 bedroom homes under 400K in Riverside with garage',
  limit: 5,
})
 
// results.data contains matching listings ranked by relevance

Keeping listings fresh

Stale listings kill trust faster than anything. A lead gets excited about a property, asks to schedule a showing, and finds out it sold two weeks ago. Now they don't trust anything else your AI told them.

Set up a nightly sync from Jen's MLS feed. Remove sold listings, update price changes, add new properties. The knowledge base should reflect what's actually available today, not last week.

typescript
// Remove sold listings by ID
await chanl.knowledge.delete('kb-entry-rs2026-3345')
 
// Update price reduction
await chanl.knowledge.create({
  agentId: 'jens-lead-qualifier',
  title: '1200 Elm Drive - PRICE REDUCED',
  content: `Price reduced from $425,000 to $399,000...`,
  metadata: {
    mlsId: 'RS2026-1200',
    price: 399000,
    priceReduced: true,
    // ... rest of metadata
  }
})

This is where your service earns its monthly fee. The AI is only as good as the data behind it. Keeping that data current is ongoing work, and it's work most agents can't do themselves.

Part 2: The qualification tool

Every lead gets the same questions. Budget range. Timeline to move. Pre-approval status. Preferred neighborhoods. Must-haves versus nice-to-haves. Jen asks these on every call because the answers determine whether this lead is worth her Saturday afternoon.

The qualification tool structures this intake and scores the result:

typescript
await chanl.tools.create({
  agentId: 'jens-lead-qualifier',
  name: 'qualify_lead',
  description: 'Collect buyer qualification data and score the lead',
  parameters: {
    type: 'object',
    properties: {
      buyerName: {
        type: 'string',
        description: 'Full name of the prospective buyer'
      },
      budgetMin: {
        type: 'number',
        description: 'Minimum budget in dollars'
      },
      budgetMax: {
        type: 'number',
        description: 'Maximum budget in dollars'
      },
      preApprovalStatus: {
        type: 'string',
        enum: ['pre-approved', 'pre-qualified', 'not-started', 'unknown'],
        description: 'Mortgage pre-approval status'
      },
      preApprovalAmount: {
        type: 'number',
        description: 'Pre-approval amount if applicable'
      },
      timeline: {
        type: 'string',
        enum: ['30-days', '3-months', '6-months', '12-months', 'just-looking'],
        description: 'How soon they plan to buy'
      },
      preferredAreas: {
        type: 'array',
        items: { type: 'string' },
        description: 'Preferred neighborhoods or cities'
      },
      mustHaves: {
        type: 'array',
        items: { type: 'string' },
        description: 'Non-negotiable features (garage, yard, pool, etc.)'
      },
      currentSituation: {
        type: 'string',
        description: 'Renting, selling current home, relocating, etc.'
      }
    },
    required: ['buyerName', 'budgetMax', 'timeline']
  },
  handler: 'https://your-api.com/webhooks/qualify-lead'
})

The scoring logic

Your webhook receives the structured data and assigns a score. The scoring rules are straightforward, but they encode exactly what Jen has learned over years of experience:

typescript
function scoreLead(qualification) {
  let score = 0
  let tier = 'cold'
 
  // Pre-approval is the strongest signal
  if (qualification.preApprovalStatus === 'pre-approved') score += 40
  else if (qualification.preApprovalStatus === 'pre-qualified') score += 20
 
  // Timeline urgency
  if (qualification.timeline === '30-days') score += 30
  else if (qualification.timeline === '3-months') score += 20
  else if (qualification.timeline === '6-months') score += 10
 
  // Budget alignment with available inventory
  if (qualification.budgetMax >= 250000 && qualification.budgetMax <= 600000) score += 15
 
  // Specific area preference (knows what they want)
  if (qualification.preferredAreas?.length > 0) score += 10
 
  // Currently selling or relocating (motivated)
  if (['selling', 'relocating'].includes(qualification.currentSituation)) score += 15
 
  // Assign tier
  if (score >= 70) tier = 'hot'
  else if (score >= 40) tier = 'warm'
 
  return { score, tier }
}

A hot lead is pre-approved, wants to move within 30 days, has a budget that matches available inventory, and knows which neighborhoods they want. That lead should never wait for a callback. The AI should be matching them with listings and offering showing times in the same conversation.

A warm lead is pre-qualified or has a 3-6 month timeline. Worth nurturing, not worth pulling Jen out of a showing for.

A cold lead is "just looking" with no pre-approval and no real timeline. The AI handles them politely, answers their questions, and stores their preferences for later follow-up.

What happens after the conversation

You don't need to write code to store the qualification. When the conversation ends, fact extraction runs automatically on the full transcript. An LLM reads the conversation and pulls out every relevant detail: budget range, pre-approval status, timeline, preferred neighborhoods, must-haves, deal-breakers. These facts are saved to the lead's memory profile automatically.

When that lead comes back two weeks later and asks "anything new in Riverside Heights?", the AI already knows their budget, their must-haves, and their timeline. No re-qualifying. The conversation picks up where it left off. (More on how memory works in Part 4.)

Part 3: Showing scheduler

The whole point of lead qualification is getting qualified buyers in front of properties. For hot leads, that should happen in the same conversation where they were qualified.

The showing scheduler is a tool that checks Jen's availability and books appointments:

typescript
await chanl.tools.create({
  agentId: 'jens-lead-qualifier',
  name: 'schedule_showing',
  description: 'Check agent availability and schedule a property showing',
  parameters: {
    type: 'object',
    properties: {
      propertyAddress: {
        type: 'string',
        description: 'Address of the property to show'
      },
      mlsId: {
        type: 'string',
        description: 'MLS listing ID'
      },
      buyerName: {
        type: 'string',
        description: 'Name of the buyer'
      },
      buyerPhone: {
        type: 'string',
        description: 'Buyer phone number for confirmation'
      },
      buyerEmail: {
        type: 'string',
        description: 'Buyer email for calendar invite'
      },
      preferredDates: {
        type: 'array',
        items: { type: 'string' },
        description: 'Preferred showing dates/times'
      }
    },
    required: ['propertyAddress', 'buyerName', 'preferredDates']
  },
  handler: 'https://your-api.com/webhooks/schedule-showing'
})

Your webhook integrates with Jen's Google Calendar (or Calendly, or whatever she uses). It checks for open slots, avoids double-booking, and sends confirmations to both Jen and the buyer.

The conversation flow looks like this:

Lead (11:23 PM): I'm looking for a 3-bedroom in Riverside Heights, under $400K. We're pre-approved for $415K and need to move by end of April.

AI (11:23 PM): Great news. I have two active listings that match what you're looking for. The first is 4821 Oak Street, a 3-bed/2-bath ranch listed at $385,000. Updated kitchen, fenced backyard, 2-car garage. The second is 1200 Elm Drive, a 3-bed/2.5-bath just reduced to $399,000 with a pool and mountain views. Would you like to schedule a showing for either of these?

Lead (11:25 PM): The Oak Street one sounds perfect. Can we see it Saturday?

AI (11:25 PM): Jen has availability Saturday at 10 AM and 2 PM. Which works better for you?

Lead (11:26 PM): 10 AM.

AI (11:26 PM): Done. You're scheduled for 4821 Oak Street, Saturday March 29 at 10 AM with Jen Martinez. I've sent a confirmation to your email with the property details and directions. Anything else you'd like to know about the neighborhood?

That entire interaction happened at 11 PM. The lead is pre-approved, moving in 30 days, and now has a showing booked. If Jen had to handle this manually, the earliest response would be tomorrow morning. By then, this lead might have booked a showing with someone else's listing.

Part 4: Memory for ongoing relationships

Real estate isn't always a single conversation. Some buyers take months. They browse, they compare, they change their minds about neighborhoods, they get outbid on one house and have to start over. The agents who close these deals are the ones who remember every detail and follow up at the right time.

Persistent memory turns your AI from a one-shot qualifier into a relationship manager. And the best part: it happens automatically. You don't write code to save preferences. The agent handles the entire memory lifecycle on its own.

How it works: the automatic memory lifecycle

When a conversation starts, the agent loads everything it already knows about the lead. If Marcus Chen calls from the same phone number he used last week, the agent pulls his memory profile before the first word is spoken. Budget, timeline, pre-approval status, preferred neighborhoods, the fact that his wife wants a home office -- all of it is injected into the LLM context automatically.

First-time leads get a fresh qualification. The agent asks the standard questions: budget, timeline, pre-approval. No special code required. That's just the system prompt doing its job.

During the conversation, the agent has a memory_add MCP tool available. When Marcus mentions something new -- "we decided we need at least 2,000 square feet" or "my budget went up, we got approved for $450K" -- the agent stores it in real-time without interrupting the conversation. The lead doesn't know anything was saved. They just had a natural conversation.

After the conversation ends, fact extraction runs automatically on the full transcript. An LLM reads the entire conversation and pulls out structured facts: budget changes, new neighborhood preferences, deal-breakers mentioned in passing, showing feedback, life context. These facts are saved to the lead's memory profile without any manual data entry.

No CRM updates. No spreadsheet rows. No sticky notes on Jen's monitor. Everything the lead said is captured, structured, and searchable.

What this looks like in practice

First conversation with Marcus Chen, Tuesday at 9 PM:

Marcus: We're pre-approved for $425K and want to be in Riverside Heights. Need at least 3 bedrooms. My wife works from home so a dedicated office would be huge.

The agent qualifies him, searches listings, and offers two matches. Marcus books a showing for Saturday. After the call, fact extraction saves: pre-approved $425K, 3+ bedrooms, Riverside Heights, home office required, wife works remotely.

Second conversation, two weeks later:

AI: Hi Marcus, good to hear from you again. Last time we talked, you were looking at 3-beds in Riverside Heights with a home office, pre-approved up to $425K. How did the showing at Oak Street go?

Marcus: We loved the neighborhood but the house was too small. We really need at least 2,000 square feet. Oh, and our approval went up to $450K.

The agent updates his profile mid-conversation. After the call, fact extraction adds: minimum 2,000 sqft, pre-approval increased to $450K, liked Riverside Heights neighborhood, Oak Street too small.

Third conversation, a month later:

AI: Marcus, a new listing just hit the market that I think you'll want to see. 2,200 square feet, craftsman style on Birch Lane in Riverside Heights. Dedicated home office, quarter-acre lot. Listed at $395K, well under your $450K approval. Want me to set up a showing?

The agent didn't need to re-qualify Marcus. It didn't ask his budget, his timeline, or his neighborhood preference. It already knew all of that from the previous two conversations. By the time Jen meets Marcus at the showing, she knows everything the agent learned across every interaction -- without reading a single call transcript.

Why this matters for real estate

This is what separates a lead qualifier from a lead nurturer. A qualifier asks questions once and scores a lead. A nurturer builds a relationship over weeks and months, remembering every detail, following up at the right moment, and matching new inventory against accumulated preferences.

Top-producing agents do this manually with spreadsheets and sticky notes. They check their notes before every call, jot down new details after, and scan new listings against their mental model of each buyer's preferences. It works, but it doesn't scale. By the time an agent has 50 active buyers, details start falling through the cracks.

The AI doesn't forget. The memory compounds. Every interaction adds context:

  • Preferences: Style, size, features, neighborhoods, deal-breakers
  • Objections: "Too far from the highway," "HOA fees are too high," "Street was too busy"
  • Life context: Moving for a job transfer, expecting a baby, downsizing after kids leave
  • Showing feedback: Liked the layout but not the yard, loved the kitchen, hated the carpet

Six months into working with a buyer, the AI knows more about their preferences than most human agents would remember. And every new listing gets automatically matched against that accumulated knowledge.

Proactive outreach from memory

A nightly script can search memory for leads whose preferences match new listings:

typescript
// Search for leads who might be interested in a new listing
const matchingLeads = await chanl.memory.search({
  entityType: 'customer',
  query: 'craftsman style 2000 sqft home office large yard Riverside',
  agentId: 'jens-lead-qualifier',
  limit: 20,
})
 
// For each matching lead, the AI can initiate proactive outreach
for (const lead of matchingLeads.data.memories) {
  const session = await chanl.chat.createSession('jens-lead-qualifier', {
    metadata: { leadId: lead.entityId, trigger: 'new-listing-match' }
  })
 
  await chanl.chat.sendMessage(
    session.data.sessionId,
    `Hi Marcus, a new listing just hit the market that I think you'll love. It's a 2,200 sqft craftsman on Birch Lane in Riverside Heights with a home office and a big backyard. Listed at $395K, well within your budget. Want me to set up a showing?`
  )
}

This is the kind of proactive outreach that top-producing agents do manually. The AI does it automatically, at scale, without forgetting a single preference.

Putting it all together

The agent ties all four components into a single conversational flow. Create the agent with a prompt that establishes its role:

typescript
const agent = await chanl.agents.create({
  name: 'Jen Martinez - Lead Qualifier',
  description: 'AI assistant for Jen Martinez Real Estate. Qualifies leads, matches listings, schedules showings.',
  systemPrompt: `You are a friendly, knowledgeable real estate assistant working for Jen Martinez,
a licensed real estate agent in Riverside County, CA.
 
Your job is to:
1. Respond to new leads quickly and warmly
2. Ask qualifying questions naturally (don't make it feel like an interrogation)
3. Search available listings that match their criteria
4. For qualified buyers, offer to schedule showings
5. Remember everything about each lead for future conversations
 
Be conversational but efficient. Real estate buyers appreciate someone who respects their time.
If a lead isn't ready to buy yet, that's fine. Be helpful, save their preferences, and let them
know you'll reach out when something matching comes up.
 
Never pressure. Never make up listings. If nothing matches their criteria, say so honestly and
ask if they'd like to adjust their search.`,
  model: 'gpt-4o',
  temperature: 0.7,
})

The agent connects to your tools -- qualify_lead, schedule_showing, memory_add, and the knowledge base -- through MCP (Model Context Protocol). You add the tools to a toolset, assign the toolset to the agent, and every conversation automatically has access to all of them. The agent decides which tool to call based on the conversation context. When a lead mentions their budget, it calls qualify_lead. When they want to see a property Saturday, it calls schedule_showing. When they mention a new preference, it calls memory_add. No routing logic required.

You can test the full flow with scenarios before putting it in front of real leads. Create test personas that simulate different buyer types: the hot lead who's ready to go, the tire-kicker who's "just browsing," the lead who's interested but won't be ready for six months, the one who asks about a property that doesn't exist.

Then run those scenarios against your agent and check the results through monitoring. Does the AI qualify correctly? Does it find the right listings? Does it handle the "just looking" leads gracefully without wasting Jen's time?

The business case

Here's where this turns from a project into a business.

What you charge

Setup fee: $500-750. This covers importing their current listings into the knowledge base, configuring the qualification criteria to match their market, integrating with their calendar system, and setting up the communication channels (text, web chat, or both).

Monthly fee: $400-500 per agent. This covers the AI infrastructure, ongoing listing sync, memory storage, and your time maintaining the system. Compared to what agents already spend on lead generation ($1,000-2,000/month on Zillow and Realtor.com alone), this is the cheapest part of their marketing budget.

What Jen gets

The average real estate commission on a home sale is $8,000-15,000. One missed hot lead per quarter costs Jen more than a year of your service.

Run the numbers:

  • Before AI: 300 leads/month. 20 hours/week qualifying. Average response time 8-14 hours. Estimated 2-3 hot leads lost per quarter due to slow follow-up.
  • After AI: 300 leads/month. 2 hours/week reviewing pre-qualified leads. Average response time under 60 seconds. Zero hot leads lost to response time.

If the AI helps Jen close one extra deal per quarter (by not losing hot leads to faster agents), that's $30,000-60,000 per year in recovered commission. She's paying you $4,800-6,000 per year. That's a 5-10x return.

You don't have to convince Jen that AI is cool. You have to show her the commission checks she's leaving on the table every time a hot lead waits 12 hours for a callback.

What you earn

Ten real estate agent clients at $400-500/month each is $4,000-5,000 in monthly recurring revenue. That's $48,000-60,000 per year from a system you built once and customize per client.

The economics scale because the core system is the same for every agent. The knowledge base content changes (different listings, different markets), the qualification criteria shift slightly (luxury vs. starter homes, urban vs. suburban), but the architecture is identical.

Client fifteen takes 3 hours to onboard instead of 30 hours, because you've already built everything. You're just importing their data and adjusting their scoring weights.

Expansion paths

Once you've built the core system, there are natural extensions:

  • Listing presentation AI. An agent for sellers that answers questions about Jen's marketing plan, recent comparable sales, and pricing strategy. Sellers research agents before hiring them. An AI that answers their questions at midnight wins the listing appointment.
  • Open house follow-up. Every person who signs in at an open house gets an immediate follow-up text with the listing details and a qualification conversation. Most agents lose 80% of open house leads because they don't follow up fast enough.
  • Market reports. Weekly automated reports to warm leads showing new listings that match their criteria, recent sales in their preferred neighborhoods, and price trends. Keeps Jen top-of-mind without any manual work.
  • Team scaling. A brokerage with 20 agents needs the same system for each one. That's one client, 20 subscriptions.

Finding your first clients

Real estate agents are one of the easiest clients to find for this kind of service because they have three characteristics that matter:

They already spend money on leads. You're not asking them to start spending. You're asking them to get more value from money they're already spending. That's a much easier conversation.

They measure everything in commissions. The ROI math is simple and concrete. One extra closing per quarter is $8,000-15,000. Your service costs $400/month. The question isn't "can I afford this?" It's "can I afford not to?"

They talk to each other. Real estate agents work in offices and attend local association meetings. One happy client tells three others. Your second and third clients often come from your first client's brokerage.

Where to find them

Start with agents who advertise on Zillow Premier Agent in your area. They're already spending $500-1,000/month on leads, which means they have leads to qualify and budget allocated for lead-related services.

Check local real estate Facebook groups and association meetings. Agents who post about being overwhelmed with leads are your target market. They have the volume but not the system.

Approach agents at open houses. They're already in sales mode, and you can see firsthand how they follow up (or don't) with visitors.

The pitch

Keep it simple: "I build AI assistants that respond to your leads within 60 seconds, qualify them automatically, match them with your listings, and book showings for the hot ones. Your leads get answered at 11 PM on a Tuesday. You wake up to a list of qualified buyers with showings already scheduled."

Offer a 2-week free trial with their real leads. When they see the first hot lead that got qualified and booked at midnight, the sale makes itself.


Jen still gets up at 5:45. Old habits. But now she reaches for her phone and checks the overnight dashboard instead of opening her dialer. Three showings booked for today. Eight new warm leads with full profiles. And one proactive outreach that landed: Marcus Chen responded to the new Birch Lane listing at 6 AM and wants to see it this afternoon.

She didn't dial a single number. She didn't ask a single qualifying question. She didn't lose a single hot lead to a faster agent.

She just slept.


This is part of our side hustle series on building AI agent businesses. See also: restaurant AI assistant, HVAC AI receptionist, and dental clinic AI.

Qualify Leads Before Your Morning Coffee

Import listings as knowledge. Build a qualification tool. Every lead gets a response in seconds, not hours.

Start Building
DG

Co-founder

Building the platform for AI agents at Chanl — tools, testing, and observability for customer experience.

Learn Agentic AI

One lesson a week — practical techniques for building, testing, and shipping AI agents. From prompt engineering to production monitoring. Learn by doing.

500+ engineers subscribed

Frequently Asked Questions