Share
Embed
2025 - Gally @ SymfonyCon - Building an AI Product Discovery Tool with Symfony
Romain Ruaud
January 14, 2026
Transcript
18 slides
-
ROMAIN RUAUD Creator INSIDE GALLY : Building an AI Product
Discovery Tool with Symfony -
Intro ➔ Last year: Gally as a product ➔ This
year: Technical deep dive ➔ How Symfony powers a modern AI-ready discovery engine -
Recommendations Product Discovery : Not (only) a search engine Categories
Search Merchandising Facets / Filters Recommended On sale Preorders Search … Fulltext search IA / LLM powered search Synonyms & Expansions Smart Categories Products ranking Facet management Category level facet management Ranking algorithm Boosting rules How to furnish your house Cross-content Multi-Languages Extensibility Plugins SDK API-First (composable) Up Sell, Cross Sell Personalization -
Context & Challenges ➔ Multi-catalog complexity, millions of products, locales…
➔ Hybrid search (lexical + vector + AI) ➔ Personalization ➔ Many channels ➔ Open : Merchants & agencies need power to adapt ➔ Sovereign : Product discovery data is sensitive Modern Product Discovery is complex — and must stay in control. -
Symfony as a Product Discovery Platform ➔ Modular ➔ Predictable
➔ Mature & powerful ecosystem : API Platform ➔ Long-term stability ➔ Enables platform-level design Symfony brings the structure to build a long-term, industrial, evolution-proof product. -
Abstraction of Search Configuration Business users define search behavior, not
developers. ➔ Business rules in config : - searchable fields - ranking strategies - filters - synonyms - rules ➔ Symfony interprets & transform business rules in search configuration & queries ➔ No need for handcrafted search queries or complex schema definition : - no knowledge needed on Elasticsearch/Opensearch ➔ Logic stays declarative -
Abstraction of Search Configuration ➡ Developers no longer manually write
search queries ➡ Symfony becomes the abstraction engine "query": { "function_score": { "query": { "match_all": {} }, "boost": "100", "boost_mode": "multiply" } } -
Automatic GraphQl API Generation Through Stitching ➔ API schema generated
from user-contributed configuration (compiled, real-time) ➔ No need to write repetitive classes or code ➔ Consistent request/response ➔ API-first delivery ➔ Adaptability to data changes API stitching turns configuration into a full GraphQL API with no repetitive boilerplate. -
Stitching in Action Schema is dynamically (re) generated according to
configuration, real-time. -
Modern Search Paradigms ➔ Lexical search : “caveman” search, BM25
algorithm was born in 1976 → ”nike shoes” → display exact matches ➔ Vector search : allowing semantic matching → ”ski outfit” → matches “ski jacket”, “ski pants”, “ski helmet” … ➔ Conversational search : real-life shopping experience with an agent → ”i’ll do my first trail soon, help me finding shoes” ➔ All combined when needed + taking rule-based ranking into account Modern search is hybrid — and Symfony allows assembling the right strategy. -
How Symfony routes all this ➔ GraphQL entry point receives
the query → Synonym Service rewrites if needed → Spellchecker Service dispatch the proper query type with a pre-flight analysis → forges an “exact match” query if possible : specific analyzers, tokenizers, etc… → forges a “fuzzy match” query either : deal with typo tolerance → Ranking Applier Service inject the scoring according to business configuration → Query is executed on Elasticsearch / Opensearch → If no results are found, it’s automatically replayed with Vector Search enabled → Results are returned to the end-user, ranked as the merchant wishes. Symfony logic decides how to execute the query, not the developer. -
Omnichannel Product Discovery at Scale ➔ Unified product information across
all channels ➔ API-first architecture (Symfony + API Platform) ➔ Real-time synchronization with Catalog data ➔ Consistent experience on web, mobile, kiosk, POS, marketplaces One engine. All channels. Same logic everywhere -
Omnichannel Product Discovery at Scale One engine. All channels. Same
logic everywhere Vendor tablet in physical shop End User Your cloud ecosystem A chatbot agent GraphQL GraphQL or REST Frontend E-Commerce App Index omnichannel data and leverage on cloud based features Frontend app -
Conversational Product Discovery ➔ Conversational logic runs externally in Python
➔ AI transforms natural language into valid GraphQL queries ➔ Symfony exposes “knowledge APIs” to guide the AI : → Reduces hallucination by giving structured business knowledge to the LLM → Merchants business rules remain applied ➔ Search execution stay in the Gally backend : → Predictable results AI generates the query. Symfony validates and executes it. -
Conversational Product Discovery AI generates the query. Symfony validates and
executes it. 3. Summarize user needs & generate the GraphQl query : "query": { "text": "screw", "size": "2" } LLM 4. Execute the query and get screws of good size, from the Fisher brand promoted by the merchant, and in stock. 1. Explain his needs : “which screws should I use for hanging a mirror in my bathroom ?” End User 2. Retrieve structured knowledge about screws in merchant catalog : - sizes = 2”, 4”, 5” - material : concrete, sandwall Python AI Agent 5. Sees relevants, in stock but merchandized screws Merchant 0. Promote products : - in stock - brand Fisher -
Leveraging AI Without Surrendering Control ➔ Transparent scoring ➔ Overrides
possible ➔ Governance & safety ➔ No black box AI enhances search without losing predictability. -
Lessons Learned & Business benefits Choosing to build Gally on
top of Symfony enabled: ➔ Faster onboarding for merchants, fewer PHP custom developments ➔ Business teams empowered to change relevance without developers ➔ Lower total cost of ownership compared to SaaS competitors ➔ Smooth transition from classical search → hybrid AI search ➔ All while staying Open Source and Sovereign Symfony is a powerful foundation for building future-proof AI-driven software. -
Romain RUAUD Creator [email protected] Any questions ? Daniel GUIZADO Channel
Manager [email protected] Book a demo on our booth or on https:/ /meetgally.com#demo