This is a submission for the Algolia Agent Studio Challenge: Consumer-Facing Non-Conversational Experiences
What I Built
PCBuild Assist - A smart PC component builder that uses Algolia to proactively suggest compatible components as users make selections. No chatbots, no back-and-forth dialogue - just intelligent assistance that feels natural.
Demo
🔗 Live Demo: https://pcassist.vercel.app/
📦 GitHub Repo: https://github.com/Srijan-XI/pcbuild_assist
💡 The Problem I Wanted to Solve
Building a PC is intimidating. Even experienced builders struggle with questions like:
- "Will this AMD Ryzen CPU work with this motherboard?"
- "Is my power supply strong enough for an RTX 4090?"
- "Should I get DDR4 or DDR5 RAM?"
Traditional solutions either:
- Require users to research everything manually - time-consuming and error-prone
- Use chatbots - feels clunky for a visual building experience
I wanted something different: proactive intelligence that works silently in the background.
⚡ How Algolia Powers the Experience
The Non-Conversational AI Approach
Instead of asking users "What are you looking for?", PCBuild Assist watches what they select and proactively suggests what they need next.
User selects: AMD Ryzen 9 9900X (AM5 socket)
↓
Algolia instantly searches: motherboards with socket=AM5
↓
User sees: Compatible X670, B650 motherboards - no questions asked!
Why Algolia Was Perfect for This
- Blazing Fast Search - Sub-10ms responses feel instant
- Faceted Filtering - Filter by socket, memory type, price range simultaneously
- Typo Tolerance - Users can type "Ryzen" or "Rizen" and still find results
- Custom Ranking - Surface the best value components first
🛠️ Tech Stack
| Layer | Technology |
|---|---|
| Backend | Python FastAPI |
| Search | Algolia |
| Frontend | React + Vite |
| Styling | Vanilla CSS + Tailwind |
| Data | 10,000+ components from 25+ CSV datasets |
🔧 Key Implementation Details
1. Smart Socket Extraction
CPUs don't always list their socket explicitly. I built an algorithm to extract it:
def extract_socket(cpu_name: str, specs: dict) -> str:
name_lower = cpu_name.lower()
# AMD Detection
if 'ryzen' in name_lower:
if any(x in name_lower for x in ['9000', '8000', '7000']):
return 'AM5'
return 'AM4'
# Intel Detection
if 'core' in name_lower:
if any(x in name_lower for x in ['14th', '13th', '12th']):
return 'LGA1700'
if any(x in name_lower for x in ['11th', '10th']):
return 'LGA1200'
return specs.get('socket', 'Unknown')
2. Performance Tier Matching
To prevent bottlenecking (pairing a budget CPU with a $2000 GPU), I implemented tier matching:
TIER_THRESHOLDS = {
'CPU': {'high': 400, 'mid': 200},
'GPU': {'high': 800, 'mid': 400},
}
def get_balanced_gpu(cpu_tier: str) -> list:
tier_map = {
'high-end': ['high-end', 'mid-range'],
'mid-range': ['mid-range', 'high-end'],
'budget': ['budget', 'mid-range']
}
return tier_map.get(cpu_tier, ['mid-range'])
3. Power Supply Calculator
Automatically calculates power requirements with 25% headroom:
def calculate_psu(cpu_tdp: int, gpu_tdp: int) -> int:
base_power = cpu_tdp + gpu_tdp + 150 # 150W for other components
recommended = base_power * 1.25 # 25% headroom
# Round to standard PSU wattages
standard_sizes = [450, 550, 650, 750, 850, 1000, 1200]
return next(w for w in standard_sizes if w >= recommended)
4. Algolia Index Configuration
client = SearchClient.create(ALGOLIA_APP_ID, ALGOLIA_API_KEY)
index = client.init_index('pc_components')
index.set_settings({
'searchableAttributes': ['name', 'brand', 'specs'],
'attributesForFaceting': [
'filterOnly(type)',
'filterOnly(socket)',
'filterOnly(memory_type)',
'searchable(brand)',
'performance_tier'
],
'customRanking': ['desc(popularity)', 'asc(price)'],
'typoTolerance': True
})
🎨 The User Experience
Flow 1: Building from Scratch
1️⃣ User searches "Ryzen 9" → Algolia returns CPUs instantly
2️⃣ User clicks AMD Ryzen 9 9900X
3️⃣ System auto-suggests AM5 motherboards (no search needed!)
4️⃣ User picks ASUS ROG X670E
5️⃣ System shows DDR5 RAM options (knows X670 needs DDR5)
6️⃣ User adds 32GB DDR5-6000
7️⃣ System recommends balanced GPUs based on CPU tier
8️⃣ PSU suggestions appear based on total power draw
Flow 2: Compatibility Warnings
⚠️ User tries to add DDR4 RAM to DDR5 motherboard
→ Instant warning: "This motherboard requires DDR5 memory"
⚠️ User's build exceeds PSU capacity
→ Warning: "Total power (650W) exceeds your 550W PSU"
📊 Compatibility Rules Engine
| Check | Rule | Example |
|---|---|---|
| CPU-Motherboard | Socket must match | AM5 CPU ↔ AM5 Board |
| RAM-Motherboard | Memory type must match | DDR5 Board → DDR5 RAM |
| PSU Capacity | PSU ≥ Total Power × 1.25 | 500W draw → 650W PSU |
| GPU Tier | Match CPU performance tier | High-end CPU → High-end GPU |
🚀 What I Learned
1. Non-Conversational AI is Powerful
Users don't always want to chat. Sometimes they want the system to just know what they need. Algolia's instant search made this possible.
2. Data Quality Matters
My initial dataset had inconsistent naming. Spending time on data normalization (extracting sockets, standardizing brands) dramatically improved suggestion accuracy.
3. Faceted Search is Magic
Algolia's faceting let me filter 10,000+ components by multiple attributes simultaneously without complex database queries.
🔮 Future Enhancements
- [ ] Price tracking - Alert users when components drop in price
- [ ] Build templates - Pre-configured builds for gaming, workstation, etc.
- [ ] Benchmark integration - Show expected FPS in games
- [ ] Export to retailers - Generate shopping lists for Newegg, Amazon
🏁 Conclusion
Building PCBuild Assist taught me that AI doesn't have to mean chatbots. By leveraging Algolia's powerful search capabilities, I created an experience that feels magical - the system anticipates what users need before they ask.
The key insight: Proactive assistance > Reactive conversation for task-focused applications.
Built for the Algolia Dev Challenge 2025 🏆

Top comments (0)