All blogs / Software / engineering practice
Yelp Engineering and Product Blog
The making of the Yelp Assistant UI Daniel Andrade Groppe, Services Tech Lead Sep 29, 2026 As simple as it may look, a chat application is made up of thousands...
Software / engineering practiceAI / MLDevOps / SRE / infrastructureDatabases
- Posts
- 339 from 1 Aug 2010 to 29 Sep 2026
- Posting
- monthly (13 in the last year)
- Kind
- company blog
- Feed
- https://engineeringblog.yelp.com/feed.xml
2026 13
- The making of the Yelp Assistant UI
- ML based ranking using Nrtsearch
- Building Menu Vision: Real-Time Dish Recognition
- Migrating a Large Flow Monorepo to TypeScript
- Migrating from Apollo Tooling to GraphQL Codegen at Yelp
- Training Orchestrator: Unifying Model Training at Yelp
- Beyond the Menu Tree: How Yelp Built a Smarter Customer Success Chatbot with AI
- How Partition Access Visualizations Reduced our Data Lake S3 Cost by 33%
- Optimizing Our Build Times by Migrating from Webpack to Rspack
- How Yelp Keeps Server-Driven UI Consistent Across Four Platforms
- Zero downtime Upgrade: Yelp’s Cassandra 4.x Upgrade Story
- Building Biz Ask Anything: From Prototype to Product
- How Yelp Built a Back-Testing Engine for Safer, Smarter Ad Budget Allocation
2025 8
- S3 server access logs at scale
- Exploring CHAOS: Building a Backend for Server-Driven UI
- Revenue Automation Series: Testing an Integration with Third-Party System
- Nrtsearch 1.0.0: Incremental Backups, Lucene 10, and More
- Journey to Zero Trust Access
- Revenue Automation Series: Building Revenue Data Pipeline
- Search Query Understanding with LLMs: From Ideation to Production
- Enhancing Neural Network Training at Yelp: Achieving 1,400x Speedup with WideAndDeep
2024 14
- Revisiting Compute Scaling
- Revenue Automation Series: Modernizing Yelp's Legacy Billing System
- Loading data into Redshift with DBT
- How we improved our Android navigation performance by ~30%
- Migrating in-place from PostgreSQL to MySQL
- Boosting ML Pipeline Efficiency: Direct Cassandra Ingestion from Spark
- Implementing multi-metric scaling: making changes to legacy code safely
- dbt Generic Tests in Sessions Validation at Yelp
- Fine-tuning AWS ASGs with Attribute Based Instance Selection
- Moderating Inappropriate Video Content at Yelp
- CHAOS: Yelp's Unified Framework for Server-Driven UI
- Keeping track of engineering-wide goals and migrations
- Yelp’s AI pipeline for inappropriate language detection in reviews
- Building data abstractions with streaming at Yelp
2023 9
- Coordinator - The Gateway For Nrtsearch
- Overview of JupyterHub Ecosystem
- Speeding Up Delivery With Merge Queues
- Dependency Management at Scale
- Performance for Free on Android with our MVI Library
- Yelp Content As Embeddings
- Gondola: an internal PaaS architecture for frontend app deployment
- Rebuilding a Cassandra cluster using Yelp’s Data Pipeline
- Recycling Kubernetes Nodes
2022 11
- Lessons from A/B Testing on Bandit Subjects
- Spark Data Lineage
- Android in Analytics Infra
- Writing Emails Using React
- Migrating from Styleguidist to Storybook
- A Simply, Ordinary Reduction
- Data Sanitization with Vitess
- Beyond Matrix Factorization: Using hybrid features for user-business recommendations
- Kafka on PaaSTA: Running Kafka on Kubernetes at Yelp (Part 2 - Migration)
- Server Side Rendering at Scale
- Developing a New Native Ads Dashboard Using Server-Driven UI
2021 24
- Kafka on PaaSTA: Running Kafka on Kubernetes at Yelp (Part 1 - Architecture)
- Building a unified setup flow to better onboard business users
- Building a server-driven foundation for mobile app development
- Awesome Women in Engineering Hosts its First Virtual Summit
- Nrtsearch: Yelp’s Fast, Scalable and Cost Effective Search Engine
- Engineering Career Series: Building a thriving engineering team
- Engineering Career Series: Fostering inclusion & belonging within Yelp Engineering
- Engineering Career Series: Ensuring Pay Equity & Career Progression in Yelp Engineering
- Why Yelp's hiring strategy in Canada no longer requires being in an office
- Analyzing Experiments with Changing Cohort Allocations
- Engineering Career Series: How we think about engineering management
- Engineering Career Series: Technical Leadership at Yelp
- Modernizing Business Data Indexing
- Engineering Career Series: Career paths for engineers at Yelp
- Engineering Career Series: How we onboard engineers across the world at Yelp
- Moderating Promotional Spam and Inappropriate Content in Photos at Scale at Yelp
- Engineering Career Series: Using structured interviews to improve equity
- One year later: building Trust Levels during COVID
- Engineering Career Series: Hiring a diverse team by reducing bias
- Engineering Career Series: Building a happy, diverse, and inclusive engineering team
- Powering Messaging Enabledness with Yelp's Data Infrastructure
- Passwordless Login: Reengaging Business Owners with Less Friction
- Boosting user conversion with UX performance wins
- Whose Code is it Anyway?
2020 19
- Now You See Me: How NICE and PDQ plots Uncover Model Behaviors Hidden by Partial Dependence Plots
- Orchestrating Cassandra on Kubernetes with Operators
- Tales of a Mobile Developer on Consumer Growth
- Minimizing read-write MySQL downtime
- Introducing Folium: Enabling Reproducible Notebooks at Yelp
- Flink on PaaSTA: Yelp’s new stream processing platform runs on Kubernetes
- The Dream Query: How we scope projects with GraphQL
- Improving the performance of the Prometheus JMX Exporter
- Introducing Yelp's Machine Learning Platform
- How businesses have reacted to COVID-19 using Yelp features
- dataloader-codegen: Autogenerate DataLoaders for your GraphQL Server!
- An Ever Evolving Company Requires an Ever Evolving Communication Plan
- Supporting Spark as a First-Class Citizen in Yelp’s Computing Platform
- Accelerating Retention Experiments with Partially Observed Data
- Yelp Takes on Grace Hopper 2019!
- Open-Sourcing Varanus and Rusty Jetpack
- Modernizing Ads Targeting Machine Learning Pipeline
- Streams and Monk – How Yelp is Approaching Kafka in 2020
- Automated IDOR Discovery through Stateful Swagger Fuzzing
2019 21
- Streaming Cassandra into Kafka in (Near) Real-Time: Part 2
- Architecting Restaurant Wait Time Predictions
- Streaming Cassandra into Kafka in (Near) Real-Time: Part 1
- Organizing and Securing Third-Party CDN Assets at Yelp
- Remember Clusterman? Now It's Open-Source, and Supports Kubernetes Too!
- Inside TensorFlow
- Winning the Hackathon with Sourcegraph
- Beyond Labels: Stories of Asian Pacific Islanders at Yelp
- Open sourcing spark-redshift-community
- Redesigning Yelp for Apple Watch with SwiftUI
- Discovering Popular Dishes with Deep Learning
- Hosting Our First Awesome Women in Engineering Summit in SF
- Breaking Down Technical Interviews
- Maptype — fast doc-value lookups for map data in Elasticsearch
- Autoscaling AWS Step Functions Activities
- Introducing Bento
- Jira & Ansible: Scaling Jira Server Administration for the Enterprise
- Tech Intersections Conference
- Autoscaling Mesos Clusters with Clusterman
- Yelp Dataset Challenge: Round 11 Winners
- Migrating Kafka's Zookeeper With No Downtime
2018 28
- Joinery: A Tale of Un-Windowed Joins
- TTL as a Service: Automatic Revocation of Stale Privileges
- All About Yelp Hackathon
- A Guide to Software Engineering for the Visually Impaired
- The Yelp Production Engineering Documentation Style Guide
- How We’re Keeping Our Android UI Consistent
- First AWE EU Summit
- Yelp Dataset Challenge: Round 10 Winners And Round 12 Announcement
- Happy 10th Birthday to Yelp on iOS!
- Performance Improvements for Search on The Yelp Android App - Part 3
- Yelp's Secret Detector: Preventing Secrets in Source Code
- How Yelp Modularized the Android App
- Fast Order Search Using Yelp’s Data Pipeline and Elasticsearch
- Performance Improvements for Search on The Yelp Android App - Part 2
- PySpark Coding Practices: Lessons Learned
- Scaling Collaborative Filtering with PySpark
- Performance Improvements for Search on The Yelp Android App - Part 1
- Introducing Salsa: A tool for exporting iOS components into Sketch
- Active Directory Password Blacklisting
- Black-Box Auditing: Verifying End-to-End Replication Integrity between MySQL and Redshift
- CSS in the Age of React: How We Traded the Cascade for Consistency
- Introducing LogFeeder - A log collection system
- Celebrating the Women of Yelp: AWE the Book
- Making 30x performance improvements on Yelp’s MySQLStreamer
- Yelp Dataset Challenge Round 11 Announcement and Kaggle Weekly Kernel Award
- Scaling Gradient Boosted Trees for CTR Prediction - Part II
- Scaling Gradient Boosted Trees for CTR Prediction - Part I
- Yelp Dataset Challenge Round 9 Winner
2017 27
- Keeping Yelp two steps ahead: How we built GSET to protect employee email
- Breaking down the monolith with AWS Step Functions
- Code Review Guidelines
- Yelp @ Grace Hopper - Orlando Edition!
- Day in the Life of a Product Manager
- SignalForm: Charts as Code with SignalFx and Terraform
- The Road To HSTS
- Introducing Yelp Events Data to Our Developer APIs
- Yelp Open Dataset and Dataset Challenge Round 10
- Auto-suppressing Tests for More Reliable Code in our Android App
- Progressive Enhancement with Brotli
- What Does A Yelp Associate Product Manager Do? Fred Wang Shares All
- Generating Web Pages in Parallel with Pagelets, the Building Blocks of Yelp.com
- Upcoming Deprecation of Yelp API v2
- Moving Yelp's Core Business Search to Elasticsearch
- Yelp Dataset Challenge Round 8 Winner
- Making Photos Smaller Without Quality Loss
- Introducing Yelp's Local Graph
- How Yelp Runs Millions of Tests Every Day
- Continuous Integration on Android
- Returning to Grace Hopper: Bringing our Workshop Back for Round Two
- Open Sourcing Yelp Beans: Bringing People Together, One Cup of Coffee at a Time
- Recent Improvements to the Fusion API (and Upcoming v2 Changes)
- Open Sourcing Yelp Love
- Announcing Docker Hook Support for Pre-Commit
- Yelp Dataset Challenge Round 7 Winner and Announcing Round 9
- What it’s Like To Be a First-Time Speaker at Grace Hopper
2016 34
- First 100 Days of Yelp's Public Bug Bounty Program
- Finding Beautiful Yelp Photos Using Deep Learning
- Open-Sourcing Yelp's Data Pipeline
- Comparing searches at the DNC and RNC
- Streaming Messages from Kafka into Redshift in near Real-Time
- Embedded Reviews at Yelp
- Data Pipeline: Salesforce Connector
- The Great HTTPS Migration
- Yelp's Bug-Bounty Map
- PaaStorm: A Streaming Processor
- Undebt: How We Refactored 3 Million Lines of Code
- AMIRA: Automated Malware Incident Response and Analysis
- More Than Just a Schema Store
- How We Scaled Our Ad Analytics with Apache Cassandra
- Yelp Dataset Challenge Round 6 Winner
- Streaming MySQL tables in real-time to Kafka
- Yelp API v3 Developer Preview
- Billions of Messages a Day - Yelp's Real-time Data Pipeline
- Yelp Hackathon 19: Color Code
- Monitoring Cassandra at Scale
- Autoscaling PaaSTA Services
- Yelpicons: A Cross-Platform Icon Build System
- Yelp Android App Went On A Diet
- Yelp Restaurant Photo Classification, Winner's Interview: 2nd Place, Thuyen Ngo
- Announcing the Winners of Yelp's Online Hackathon
- Yelp Restaurant Photo Classification, Winner's Interview: 1st Place, Dmitrii Tsybulevskii
- Dropdown Like It's Hot
- ElastAlert: Alerting At Scale With Elasticsearch, Part 2
- Introducing venv-update
- Announcing the Yelp Dataset Challenge Round 7
- Leaping into February
- Yelp Dataset Challenge Round 5 Winner
- Critical CSS Middleware: Inlining The Important CSS rules On-The-Fly
- Introducing dumb-init, an init system for Docker containers
2015 41
- Introducing the Yelp Restaurant Photo Classification Challenge
- How We Made Yelp Search Filters Data Driven
- It's The Holiday Season and We’re Giving You A Present: PaaSTA!
- Introducing PaaSTA: An Open, Distributed, Platform as a Service
- Getting Festive In November
- Yelp Hackathon 17: Jurassic Hacks
- Fullerite: A New Mineral To Collect Metrics
- How We Use Deep Learning to Classify Business Photos at Yelp
- ElastAlert: Alerting At Scale With Elasticsearch, Part 1
- Start Fall With a Little Yelp
- Intern Project: Building the Yelp iOS Widget
- Designing the Android Navigation Drawer
- Automatically Categorizing Yelp Businesses
- Docker in the Real World at Yelp
- Yelp Dataset Challenge Rides Again
- Roaring into August
- iPhone vs. Android: What Does Your Phone Say About You?
- Know Thyself: My Internship Quest to Build a Framework to Analyze Our Yelp Feed
- Glide - How Yelp’s Android App Loads Images
- Yelp API Now Returns Action Links
- New Yelp API Console: Life’s Easier in v2
- Advanced UITableViews Made Simple: YLTableView
- Things To Do Outside of WWDC
- Seeing Double On Yelp
- HTTPS Client Testing Made Easy
- Yelp Tech Talks: Mobile Testing 1, 2, 3 Wrap Up
- Mycroft - Load Data into Redshift Automatically
- Data Science Contest “Keeping it Fresh”: Predict Restaurant Health Scores
- CocoaPods (or How to Stop Worrying About Dependency Management)
- March Events @ Yelp
- Yelp Hackathon 16: What the hack is a Kühlkdebeulefotoapparat
- Analyzing the Web For the Price of a Sandwich
- Reading Between the Lines: How We Make Sense of Users' Searches
- Yelp Dataset Challenge is Doubling Up!
- assert_called_once: Threat or Menace
- February Events At Yelp
- Animating the Mobile Web
- CTEs and Window Functions: Unleashing the Power of Redshift
- 2014 Highlights from the Yelp Engineering Team
- OSXCollector: Forensic Collection and Automated Analysis for OS X
- MySQL @ Yelp
2014 35
- Learning to Rank for Business Matching
- December Events At Yelp
- Yelp Dataset Challenge Round 3 Winners and Dataset Tools for Round 4
- November Events at Yelp
- Yelp Hackathon 15: Sharks, Sock Puppets and Spectacular Projects
- Scaling Elasticsearch to Hundreds of Developers
- Reflections from Grace Hopper (Part 2)
- Reflections from Grace Hopper (Part 1)
- Scaling Traffic from 0 to 139 Million Unique Visitors
- Introducing Pyleus: An Open-source Framework for Building Storm Topologies in Pure Python
- Using MOE, the Metric Optimization Engine, to Optimize an A/B Testing Experiment Framework
- October Events at Yelp
- Yelp At Grace Hopper
- Intern Project: Real-Time Log Tailing with Franz, our Kafka Wrapper
- Hackathon 14: Puzzles, Pizza and Projects Galore!
- Yelp Sponsors Women Who Code (WWCode)
- Making Sense of CSP Reports @ Scale
- Maker’s Day – Or How Thursdays Became Every Yelp Engineer’s Dream
- Announcing pre-commit: Yelp’s Multi-Language Package Manager For Pre-Commit Hooks
- HACK209 - dockersh
- Meet Yelp Trends: A Fun Way to Visualize Trends From Millions of Reviews on Yelp
- August Events at Yelp: Our Schedule is Heating Up!
- Keeping Yelp Safe at Security BSides Las Vegas!
- The Yelp Dataset Challenge Goes International! New Data, New Cities, Open to Students Worldwide!
- Introducing MOE: Metric Optimization Engine; a new open source, machine learning service for optimal experiment design
- May the Yelps be with You
- More Yelp in your Ruby
- April Showers Bring More Talks to Yelp
- MySQL replication, error 1159, and why you might want to upgrade
- March Events at Yelp HQ: Python Madness & More!
- Introducing RequestBucketer: A system for putting HTTP requests in named buckets
- Yelp Dataset Challenge Round 2 Winner and New Data
- Yelp’s got style (and the guide to back it up)
- Fab February Events @Yelp
- 3D Printing at Yelp: Space, Drones and Monopoly
2013 23
- Yelp Internship Program Summer 2013
- Cool New Space, Cool New Tech
- Whoa! That Embedded Web View Looks Hot in Your iOS App!
- Data Quality: How Yelp stacks up to the competition
- Guido is coming to Yelp -- to talk about Tulip!
- Yelp Dataset Challenge Winners & Round Two Now Live
- Yelp Engineering Opens an Office in Palo Alto: Come Help the World Find Great Local Businesses!
- HTML5 Canvas Learning Group
- Hot August Events at Yelp
- Building the Wordmap
- Django in July
- Never Stop Learning: School’s Out, Yelp’s In!
- GrossQueryChecker: Don't get surprised by query performance in production!
- Databases, Selenium, and MLBase - oh May!
- April Events at Yelp!
- Event Listing Classifier: an Intern Story
- mrjob Sprint at Pycon 2013!
- March Events at Yelp
- February Events at Yelp!
- Mission: Beyond The Mobile Browser
- Bringing Health Inspection Scores to Yelp
- More January Events at Yelp
- January Events at Yelp!
2012 10
- Yelp re:Invents!
- Building and Testing Yelp Mobile
- Firefly: Illuminate Your Website's Performance
- GPS vs WiFi: The Battle for Location Accuracy Using Yelp Check-Ins
- Introducing EMRio: Optimize your AWS bills
- Datamining and Visualization with the Academic Dataset
- After Hours Project: Simulating Flight with Kinect
- Hack@thon 7: Are You a Nerd?
- Day in the Life of a Yelp Systems Engineer
- Diving into Yelpy Insights
2011 14
- Lookin' Good: UI Verification in GHUnit
- Output Filtering Failure
- Mission: Mobile Makeover
- Calling All Data Miners!
- Yelp Hackathon #5 Brings You KegTime and More
- Day in the Life of a Yelp Engineer
- Understanding Git
- Parcelgen: A Code Generator for Android Data Objects
- Gotta Bounce... to an Engineering Offsite
- MySQL Minutiae & InnoDB Internals
- After Hours Project: Kinect Hacking
- Upcoming Tech Events at Yelp
- Weird iPhone Compiler/Architecture Bug
- Towards Building a High-Quality Workforce with Mechanical Turk