Yachtsy Models

Listings Agent

Lightning-fast boat listings search with real-time formatted results from thousands of current boat listings.

Overview

The Listings Agent is a tool-based model that combines fast Typesense database queries with intelligent LLM formatting to provide real-time boat search results.

Data Sources: 25,000+ listings from SailboatListings.com, YachtWorld, BoatTrader, and regional brokers

Key Features

  • Lightning Fast: Sub-second database queries
  • Real-time Streaming: See formatted results appear instantly
  • Comprehensive Database: 25,000+ current listings
  • Smart Filtering: Price, location, make, model, year filtering
  • Professional Formatting: Structured, readable results

When to Use

Choose yachtsy-listings-agent when you need to:

  • Find boats currently for sale
  • Search by specific criteria (price, location, model)
  • Get current market inventory
  • Compare available options in real-time

Usage Examples

from openai import OpenAI

client = OpenAI(
    base_url="https://api.yachtsy.ai/v1",
    api_key="your-api-key"
)

# Fast boat search with streaming results
response = client.chat.completions.create(
    model="yachtsy-listings-agent",
    messages=[{
        "role": "user",
        "content": "Find Catalina 34 boats under $50,000"
    }],
    stream=True
)

for chunk in response:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")

Advanced Search Criteria

const listingsStream = await client.chat.completions.create({
    model: 'yachtsy-listings-agent',
    messages: [{
        role: 'user',
        content: 'Find Hunter 40 boats in the Pacific Northwest under $150k. Show boats from 1995 or newer.'
    }],
    stream: true
});

for await (const chunk of listingsStream) {
    if (chunk.choices[0]?.delta?.content) {
        process.stdout.write(chunk.choices[0].delta.content);
    }
}
curl -N -X POST https://api.yachtsy.ai/v1/chat/completions \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "yachtsy-listings-agent",
    "messages": [{
      "role": "user",
      "content": "Beneteau 40 boats for sale in Florida and the Caribbean"
    }],
    "stream": true
  }'

Search Capabilities

Supported Search Types

  • Make/Model: "Catalina 34", "Hunter 40", "Beneteau Oceanis"
  • Price Range: "under $50k", "between $100k-200k", "$300k+"
  • Location: "Florida", "Pacific Northwest", "East Coast"
  • Year: "1990 or newer", "2000-2010", "recent models"
  • Size: "35-40 feet", "under 35ft", "40ft+"

Search Examples

# Specific model search
"Find Catalina 34 boats for sale"

# Price-filtered search  
"Hunter 40 boats under $150,000"

# Location-specific search
"Sailboats for sale in San Diego under $100k"

# Multi-criteria search
"Beneteau 40-43 foot boats from 2000 or newer in Florida under $200k"

# Market overview
"What Catalina sailboats are currently available?"

Response Format

Structured Listings Output

## Boat Listings Results

Found 15 listings for Catalina 34:

<!-- LISTINGS_TABLE_START -->
### 1. 1987 Catalina Yachts (USA) Catalina 34
##Image
![1987 Catalina 34](https://sailboatlistings.com/image.jpg)

##Location
- **Location:** San Diego, CA, US

##Price  
- **Price:** $45,000

##Class
- **Class:** cruiser

##Link
- [View Listing](https://sailboatlistings.com/view/123456)

### 2. 1989 Catalina Yachts (USA) Catalina 34
...
<!-- LISTINGS_TABLE_END -->

Performance Characteristics

  • Database Query: ~1ms (Typesense)
  • Formatting Time: 1-3 seconds
  • Streaming: Real-time as LLM formats results
  • Total Response Time: 2-5 seconds
  • Listings Returned: Up to 10 per query

Advanced Usage

Custom Formatting Requests

response = client.chat.completions.create(
    model="yachtsy-listings-agent",
    messages=[{
        "role": "system",
        "content": "Format listings results in a table with columns for Year, Model, Price, Location, and Link. Include only boats that meet the user's criteria."
    }, {
        "role": "user", 
        "content": "Catalina sailboats 32-36 feet under $60k on the East Coast"
    }],
    stream=True
)

Integration with Research

# First, research the best models
research = client.chat.completions.create(
    model="yachtsy-deep-research-agent",
    messages=[{"role": "user", "content": "Best 35ft cruising sailboats under $100k"}]
)

# Then search for those specific models
listings = client.chat.completions.create(
    model="yachtsy-listings-agent", 
    messages=[{
        "role": "user",
        "content": "Find Catalina 34, Hunter 34, and Pearson 34 boats under $100k"
    }],
    stream=True
)

Data Sources

Primary Sources

  • SailboatListings.com: Comprehensive sailboat inventory
  • YachtWorld: Premium yacht listings
  • BoatTrader: Broad boat marketplace
  • Regional Brokers: Local dealership inventory

Data Freshness

  • Update Frequency: Daily synchronization
  • Coverage: North America, Europe, Caribbean
  • Listing Count: 25,000+ active listings
  • Data Quality: Verified pricing and specifications

Search Optimization

Effective Query Patterns

Good queries:

"Catalina 34 boats under $50k in California"
"Hunter 40 sailboats from 1995 or newer"  
"Beneteau cruising sailboats 38-42 feet"
"What Jeanneau boats are available under $200k?"

Less effective:

"Show me boats" # Too vague
"Expensive yachts" # No specific criteria
"Best deals" # No model or price range

Query Optimization Tips

  1. Be Specific: Include make, model, or size preferences
  2. Set Budgets: Include price ranges for better filtering
  3. Specify Locations: Geographic preferences help narrow results
  4. Include Years: Age preferences improve relevance
  5. Use Natural Language: "Find boats" works better than "search database"

Error Handling

try:
    response = client.chat.completions.create(
        model="yachtsy-listings-agent",
        messages=[{"role": "user", "content": "boat search query"}],
        stream=True
    )
    
    for chunk in response:
        if chunk.choices[0].delta.content:
            print(chunk.choices[0].delta.content, end="")
            
except Exception as e:
    if "no listings found" in str(e).lower():
        print("No boats match your criteria. Try broadening your search.")
    elif "timeout" in str(e).lower():
        print("Search took too long. Try a more specific query.")
    else:
        print(f"Search failed: {str(e)}")

Integration Examples

React Application

import { useState, useEffect } from 'react';
import OpenAI from 'openai';

function BoatSearch() {
    const [listings, setListings] = useState('');
    const [loading, setLoading] = useState(false);
    
    const searchBoats = async (query: string) => {
        setLoading(true);
        setListings('');
        
        const client = new OpenAI({
            baseURL: 'https://api.yachtsy.ai/v1',
            apiKey: process.env.REACT_APP_YACHTSY_KEY
        });
        
        const stream = await client.chat.completions.create({
            model: 'yachtsy-listings-agent',
            messages: [{ role: 'user', content: query }],
            stream: true
        });
        
        for await (const chunk of stream) {
            if (chunk.choices[0]?.delta?.content) {
                setListings(prev => prev + chunk.choices[0].delta.content);
            }
        }
        
        setLoading(false);
    };
    
    return (
        <div>
            <button onClick={() => searchBoats('Catalina 34 boats under $50k')}>
                Search Boats
            </button>
            {loading && <div>Searching...</div>}
            <pre>{listings}</pre>
        </div>
    );
}

Best Practices

  1. Use Streaming: Always enable streaming for better UX
  2. Specific Queries: Include make, model, price, location
  3. Handle Empty Results: Check for "no listings found" responses
  4. Cache Results: Consider caching for repeated queries
  5. Error Recovery: Implement retry logic for network issues

Next Steps

Pro Tip: Start with broader searches to see what's available, then narrow down with specific criteria for targeted results.