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
Basic Boat Search
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);
}
}
Location-Based Search
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

##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
- Be Specific: Include make, model, or size preferences
- Set Budgets: Include price ranges for better filtering
- Specify Locations: Geographic preferences help narrow results
- Include Years: Age preferences improve relevance
- 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
- Use Streaming: Always enable streaming for better UX
- Specific Queries: Include make, model, price, location
- Handle Empty Results: Check for "no listings found" responses
- Cache Results: Consider caching for repeated queries
- Error Recovery: Implement retry logic for network issues
Next Steps
- Combine with Deep Research Agent for analysis
- Use Survey Agent to inspect found boats
- Explore API Reference for technical details
- See Integration Guides for framework examples
Pro Tip: Start with broader searches to see what's available, then narrow down with specific criteria for targeted results.