Recipe Generator Based on User Preferences
1. Core Components of a Recipe Generator
Core Components of a Recipe Generator
Ingredient Embedding and Representation Learning
Recipe generation begins with robust ingredient representation. Traditional one-hot encoding fails to capture semantic relationships between ingredients, leading to poor generalization. Instead, modern systems employ dense embeddings trained via neural networks. Let I denote the ingredient vocabulary, where each ingredient i ∈ I maps to a vector ei ∈ ℝd through an embedding matrix E ∈ ℝ|I|×d. These embeddings are typically learned jointly with the recipe generation objective.
The embedding space exhibits emergent properties: ingredients frequently used together (e.g., tomato and basil) cluster closer in the latent space than unrelated pairs (e.g., salmon and cinnamon). This structure enables the model to make plausible substitutions when generating recipes for constrained ingredient sets.
Recipe Encoder Architecture
The recipe encoder transforms variable-length ingredient sequences into fixed-dimensional representations. Given an input sequence (i1, ..., in), we first embed each ingredient, then process through a bidirectional LSTM or transformer:
For transformer-based architectures, self-attention mechanisms compute ingredient importance weights dynamically. The final recipe representation z captures both compositional and sequential patterns in the ingredient list.
Preference Conditioning
User preferences are encoded as constraint vectors p ∈ ℝk, where dimensions may represent dietary restrictions (vegetarian, gluten-free), flavor profiles (spicy, sweet), or nutritional targets (high-protein, low-carb). These are combined with the recipe representation via feature-wise linear modulation (FiLM):
where γ and β are learned affine transformations that condition the recipe representation on user preferences. This approach outperforms simple concatenation by allowing nonlinear, dimension-specific modulation.
Decoding and Text Generation
The decoder generates recipe text autoregressively using the conditioned representation z'. At each step t, it computes:
where st is the decoder state and Wo projects to the output vocabulary. Beam search with length normalization typically yields better results than greedy decoding for recipe generation.
Training Objectives
The model optimizes two objectives jointly:
- Language modeling loss: Standard cross-entropy on recipe text generation
- Ingredient prediction loss: Binary cross-entropy on reconstructing the ingredient set from z
The dual objective ensures the latent space preserves both textual and compositional recipe properties. Training uses teacher forcing with scheduled sampling to mitigate exposure bias.
Evaluation Metrics
Beyond standard NLP metrics (BLEU, ROUGE), recipe generation requires domain-specific evaluation:
- Ingredient coverage: Percentage of input ingredients actually used
- Novelty: N-gram overlap with training recipes
- Plausibility: Human ratings of recipe coherence
- Preference alignment: Success rate in meeting dietary constraints
Recent work employs adversarial discriminators to assess recipe realism, though this introduces additional training complexity.

Role of User Preferences in Recipe Generation
User preferences serve as the foundational input for personalized recipe generation, transforming raw data into actionable culinary recommendations. At an advanced level, this involves multi-dimensional preference modeling, where dietary restrictions, ingredient preferences, nutritional goals, and cultural tastes are encoded into a mathematical framework that guides the generative process.
Preference Representation as Feature Vectors
Each user's preferences are mapped to a high-dimensional feature space where:
- Ingredients become binary or continuous variables (allergy vs. preference strength)
- Nutritional constraints form inequality bounds
- Cuisine styles act as categorical embeddings
where d represents the total number of preference dimensions. The cosine similarity between user vectors and recipe vectors then drives the personalization:
Constraint Satisfaction as Optimization
Recipe generation becomes a constrained optimization problem:
where matrix A encodes nutritional limits (e.g., max calories) and vector b contains the constraint thresholds. Advanced systems employ Lagrangian multipliers to handle non-linear constraints like flavor balance.
Hierarchical Preference Modeling
User preferences exhibit a hierarchical structure that modern systems capture through:
- Static preferences: Hard constraints (allergies, religious restrictions)
- Dynamic preferences: Temporal patterns (seasonal ingredients, meal timing)
- Latent preferences: Learned through implicit feedback (dwell time, recipe adjustments)
This hierarchy is modeled using techniques like:
where t represents temporal context and h the hidden state from recurrent networks tracking user behavior.
Multi-Objective Tradeoff Analysis
Advanced systems must balance competing objectives:
- Preference alignment vs. nutritional adequacy
- Novelty (exploration) vs. familiarity (exploitation)
- Ingredient availability vs. ideal matches
Pareto optimization frameworks address this by finding the non-dominated solution set:
where fi represent the different objective functions and R is the recipe space.

Types of Recipe Generators: Rule-Based vs. AI-Driven
Rule-Based Recipe Generators
Rule-based systems rely on predefined logical structures to generate recipes. These systems use deterministic algorithms, often implemented as decision trees or production rules, to combine ingredients and cooking methods based on culinary constraints. For example, a rule might state: If protein is chicken and cuisine is Italian, then suggest pasta as a carbohydrate. The system's behavior is entirely governed by such explicit rules, making it interpretable but inflexible.
The mathematical foundation of rule-based systems can be formalized using first-order logic. Let I represent ingredients, C represent culinary constraints, and R represent recipes. The generation process can be expressed as:
where M denotes cooking methods. The major limitation is the combinatorial explosion of rules required to cover all possible ingredient combinations, scaling as O(|I| × |M|).
AI-Driven Recipe Generators
AI-driven systems employ machine learning models to learn recipe generation from data. Unlike rule-based approaches, these systems discover patterns implicitly through training on large recipe corpora. Modern implementations typically use transformer-based architectures like GPT or BERT, which model the conditional probability distribution:
where U represents user preferences and w_t denotes the t-th token in the recipe. The key advantage is the ability to handle novel ingredient combinations not explicitly programmed, enabled by the model's latent representation of culinary concepts.
Architectural Comparison
Transformer-based generators employ self-attention mechanisms to capture long-range dependencies in recipe structure. The attention weights A between tokens are computed as:
where Q, K, and V are learned query, key, and value matrices respectively. This allows the model to dynamically focus on relevant aspects of the input (e.g., dietary restrictions) during generation.
Hybrid Approaches
State-of-the-art systems often combine both paradigms, using neural networks for creative generation while enforcing culinary constraints through rule-based post-processing. For instance, a transformer might propose recipes which are then filtered by a rule-based nutrition checker. The hybrid objective function becomes:
where ℒNLL is the standard negative log-likelihood loss and the second term enforces constraint satisfaction through a Lagrange multiplier λ.
Practical Considerations
In production systems, AI-driven generators require careful handling of several challenges:
- Data quality: Recipe datasets often contain biases (e.g., regional ingredient availability) that propagate to model outputs
- Computational cost: Transformer inference is resource-intensive, requiring optimization techniques like knowledge distillation
- Safety constraints: Neural models may suggest unsafe ingredient combinations (e.g., toxic pairings) without proper safeguards

2. Sourcing and Structuring Recipe Data
2.1 Sourcing and Structuring Recipe Data
Data Acquisition Strategies
Recipe data can be sourced from multiple structured and unstructured repositories, including:
- Public APIs (e.g., Spoonacular, Edamam, Recipe Puppy) providing JSON/XML responses with nutritional metadata, ingredients, and preparation steps.
- Web scraping from recipe websites using tools like Scrapy or BeautifulSoup, though legal constraints (robots.txt, terms of service) must be respected.
- Academic datasets such as Recipe1M+, which contains 1M+ recipes with paired images and structured annotations.
Schema Design for Recipe Data
A robust schema must capture hierarchical relationships and support querying by dietary constraints, cooking time, or ingredient substitutions. A normalized relational schema might include:
Handling Unstructured Text
Recipes extracted from blogs or videos require NLP techniques to parse free-form instructions:
- Named Entity Recognition (NER) to extract ingredients, quantities, and tools (e.g., "2 cups flour" → quantity: 2, unit: cups, ingredient: flour).
- Dependency parsing to identify cooking actions ("simmer for 10 minutes") and their targets.
Data Quality and Normalization
Standardize units and ingredients to enable cross-recipe analysis:
def normalize_ingredient(ingredient):
# Convert aliases to canonical names (e.g., 'tomato sauce' → 'tomato puree')
aliases = {
'tomato sauce': 'tomato puree',
'all-purpose flour': 'wheat flour'
}
return aliases.get(ingredient.lower(), ingredient)
Graph-Based Representation
For recommendation systems, recipes can be modeled as a bipartite graph where:
This enables collaborative filtering via random walks or graph neural networks.
Ethical and Legal Considerations
Ensure compliance with copyright laws (e.g., CC licenses for scraped data) and anonymize user-generated content. Attribute original sources when redistributing processed datasets.

Handling Dietary Restrictions and Allergies
Dietary constraints introduce a combinatorial challenge in recipe generation, requiring both semantic understanding of ingredient substitutions and rigorous constraint satisfaction. The problem can be formalized as a constrained optimization task where the objective is to maximize recipe suitability while adhering to hard constraints derived from user-specified dietary restrictions.
Constraint Representation
Dietary restrictions are modeled as a set of Boolean constraints over ingredients. Let I be the set of all ingredients, and R be the set of restrictions. Each restriction r ∈ R is a predicate function:
where r(i) = 1 indicates ingredient i violates restriction r. For example, a gluten-free restriction would map all wheat-based ingredients to 1. The total violation score for a recipe with ingredients S ⊆ I is:
where 𝕀 is the indicator function. The optimization goal becomes V(S) = 0 while maintaining recipe quality.
Allergy-Aware Substitution
When violations exist, the system must perform ingredient substitutions. This requires:
- A compatibility graph G = (V, E) where nodes represent ingredients and edges represent substitution relationships weighted by culinary similarity
- A nutritional equivalence metric ensuring substituted ingredients maintain macronutrient balance
The substitution process can be formulated as a graph search problem. For each offending ingredient i, we find the closest node j in the compatibility graph where V(S \ {i} ∪ {j}) < V(S). The distance metric combines:
where the weights α, β, γ are learned from culinary preference data.
Cross-Contamination Risk Modeling
For severe allergies (e.g., peanuts), we must account for potential cross-contamination during food preparation. This extends our constraint model to include:
- Equipment sharing probabilities derived from kitchen workflow analysis
- Molecular-level allergen transfer models based on surface adhesion properties
The contamination risk C for a recipe prepared after an allergen-containing recipe is:
where K is the set of kitchen tools, p_k is the probability of tool k being used, and c_k is the contamination probability for that tool.
Implementation Architecture
Practical systems implement this through a layered architecture:
- Constraint Layer: Fast Boolean evaluation using bitmask representations of ingredient properties
- Substitution Layer: Approximate nearest neighbor search in ingredient embedding space
- Validation Layer: Nutritional and culinary quality verification via learned scoring functions
The ingredient embedding space is typically constructed using multimodal learning, combining:
- Chemical composition data from food databases
- Culinary usage patterns from recipe corpora
- Texture and flavor profiles from sensory science datasets

Normalizing Ingredient Quantities and Units
Recipe generation systems must handle ingredient quantities and units consistently to ensure accurate scaling and compatibility across recipes. This requires converting all measurements into a standardized form, typically mass (grams) or volume (milliliters), depending on the ingredient type. The normalization process involves parsing raw input strings, extracting numerical values and units, and applying conversion factors derived from ingredient density or standard culinary measurements.
Unit Parsing and Tokenization
Raw ingredient strings like "1 1/2 cups of flour" or "3 tbsp olive oil" must first be decomposed into numerical quantities and unit descriptors. A finite-state machine or regular expression-based parser can extract these components:
where 𝒰 represents the set of recognized volume units (cup, tbsp, tsp), mass units (g, kg, oz), and countable units (whole, slice). Ambiguities arise with imperial vs. metric units or colloquial terms like "pinch" or "dash", requiring heuristic resolution based on ingredient class.
Density-Based Mass Conversion
For volume-to-mass conversion, ingredient-specific densities ρ (g/ml) are applied:
where fu is the unit's conversion factor to milliliters (e.g., 1 cup = 236.588 ml). Density values are sourced from food composition databases:
| Ingredient | Density (g/ml) |
|---|---|
| All-purpose flour | 0.57 |
| Granulated sugar | 0.85 |
| Olive oil | 0.92 |
Discrete Unit Handling
Countable ingredients (e.g., "2 eggs") require different normalization. Large-scale recipe systems use reference masses per unit (e.g., 50g/egg) or treat them as irreducible primitives during scaling. The choice affects recipe feasibility—scaling "1 whole chicken" by 1.5× is nonsensical without semantic constraints.
Implementation Example
def normalize_ingredient(qty: float, unit: str, ingredient: str) -> float:
# Density lookup (simplified)
DENSITIES = {'flour': 0.57, 'sugar': 0.85, 'oil': 0.92}
# Volume-to-ml conversion factors
VOLUME_FACTORS = {
'cup': 236.588, 'tbsp': 14.7868, 'tsp': 4.92892,
'ml': 1.0, 'l': 1000.0
}
if unit in VOLUME_FACTORS:
return qty * VOLUME_FACTORS[unit] * DENSITIES.get(ingredient, 1.0)
elif unit in ('g', 'kg'):
return qty * (1000 if unit == 'kg' else 1)
else: # Discrete units
return qty # Requires post-processing
3. Capturing Taste Profiles and Dietary Needs
3.1 Capturing Taste Profiles and Dietary Needs
- PDF Ai Based Recipe Generator and Cook Assistant — The recipe generator component utilizes trained AI models to generate personalized recipe recommendations based on user inputs, such as dietary preferences, cuisine preferences, and ingredient availability.The generator takes into account factors such as flavor compatibility, nutritional balance, and cooking complexity to tailor recipes to ...
- RecipeGPT: Generative Pre-training Based Cooking Recipe Generation and ... — In this paper, we introduce RecipeGPT, a novel web application for recipe generation and evaluation, to demonstrate the feasibility of generative pre-trained transformer in cooking recipe generation and to assist users in evaluating the generation quality more easily as illustrated in Figure 1.
- RecipeRadar: An AI-Powered Recipe Recommendation System — This paper presents the development of an advanced recipe recommendation system powered by natural language processing (NLP). To address the challenges posed by the overwhelming abundance of online recipes, this system provides personalized recipe suggestions based on user inputs, dietary preferences, and ingredient restrictions.
- PDF A Literature Survey on Recipe Generation From Food Images using AIML — User Preferences: Incorporating user preferences or dietary restrictions into the recipe generation process. Feedback Mechanisms: Systems that allow users to provide feedback on generated recipes for continuous improvement.
- PDF Recipe Recommendation System Based on Ingredients — This is where ingredient-based recipe recommendation systems step in to revolutionize how we plan our meals. Imagine having a tool at your disposal that not only considers your dietary preferences and restrictions but also takes into account the ingredients you have readily available in your pantry and fridge.
- An AI-powered web app that generates personalized recipes based on user ... — About An AI-powered web app that generates personalized recipes based on user inputs like ingredients, dietary preferences, and cuisine, featuring a "Surprise Me" option for creative dishes.
- Smart Cuisine: Generative recipe & ChatGPT powered ... - ScienceDirect — Smart Cuisine is an innovative system that harnesses the latest AI technology to revolutionize the way we approach meal preparation and cooking. By offering innovative features such as ingredient proportion calculation, AI-generated recipe creation, and an OpenAI chat service for food, nutrition, and health-related questions, Smart Cuisine empowers users to optimize their ingredients, minimize ...
- (PDF) Study and Overview of Recipe Generators - ResearchGate — Recipe generators leverage algorithms to recommend meals based on user preferences, dietary restrictions, and available ingredients, while nutrient apps provide detailed insights into food ...
- PDF Project Final Report: MagicRecipe - swabhs.com — Our approach builds on the idea of ingredient-based personalization, aiming to enhance user en-gagement by generating cooking ideas that are both innovative and closely aligned with users' available resources and dietary constraints.
- Chef Dalle: Transforming Cooking with Multi-Model Multimodal AI — These methods enable users to interact with the system using voice, text, or images, accommodating various dietary restrictions and preferences. Furthermore, the utilization of DALL-E 3 for generating recipe images enhances user engagement.
3.2 Building User Preference Models
- PDF A Recommender System for Healthy and Personalized Recipe Recommendations — the user's preferences. We used implicit feedback transferring all the ratings to positive feedback from users, indicating a preference of the user for the rated recipes compared to the not-rated ones. The user ratings were then turned into confidence levels on how much the user actually liked the rated recipe. This preference-confidence ...
- PDF Recipe Recommendation Systems: A Review - IOSR Journals — methods to calculate weights and classify items to user preferences. Image 3.1 Content based filtering 3.2 Collaborative Filtering The collaborative filtering method considers user preferences such as ratings, behaviors, or reviews to provide a filter for user preference information. Collaborative filtering systems are often classified as ...
- Attention-based dynamic user preference modeling and nonlinear feature ... — ATRank [24] models user preference by considering various heterogeneous behaviors. It calculates the influence between different behaviors based on a self-attention mechanism. In addition, the time factor is considered in user preference modeling, where the temporal encoding method is used to bucket the time feature into multiple granularities.
- PDF Personalized Food Recommendations - ULisboa — 3.1 Food Preference Extraction for Personalized Cooking Recipe Recommendation Based on user's preferences extracted from recipe browsing (i.e., from recipes searched) and cooking history (i.e., recipes actually cooked), the system described in [11] recom-mends recipes that score highly regarding the user's favourite and disliked ingredients.
- PDF Recipe Recommendation System Based on Ingredients - IJFMR — Extract latent features that capture underlyingpatterns and preferences in user-item interactions. Train NMF models using SKLearn to learn latentrepresentations of recipes and users. 3. Sentiment Analysis for User Feedback: Perform sentiment analysis on textual reviewsand comments associated with recipes.
- Link prediction in food heterogeneous graphs for personalised recipe ... — Recipe data and user interactions and preferences have been widely studied in food computing, especially for the recipe recommendation task. One part of these works seeks to introduce healthy patterns while considering user preferences, known as healthy-aware recommender systems. The major challenge here is to build systems capable of learning the complex structure of recipe data since they ...
- Pic2Plate: A Vision-Language and Retrieval-Augmented Framework for ... — The LLM filters and adjusts the retrieved recipes based on the user's preferences and the specific relevance of each recipe. During this refinement process, the LLM ranks the recipes and selects the top n most relevant ones, making adjustments to better align with the user's dietary needs, ingredient availability, and taste preferences.
- Pic2Plate: A Vision-Language and Retrieval-Augmented Framework for ... — Choosing nutritious foods is essential for daily health, but finding recipes that match available ingredients and dietary preferences can be challenging. Traditional recommendation methods often lack personalization and accurate ingredient recognition. Personalized systems address this by integrating user preferences, dietary needs, and ingredient availability. This study presents Pic2Plate, a ...
- PDF A Recommender System for Healthy Food Choices: Building a Hybrid Model ... — Berkovsky found success using a content-based approach by deconstructing a recipe into ingredients and analyzing a user's preferences for recipes composed of those ingredients. Using calculated ratings for all ingredients, the approach can predict a similarity score for a user for any unseen recipe based on an average of
- (PDF) A Recommender System for Healthy and Personalized Recipe ... — Specifically, NutRec consists of three main components: 1) using an embedding-based ingredient predictor to predict the relevant ingredients with user-defined initial ingredients, 2) predicting ...
3.3 Incorporating Feedback Loops for Personalization
- PDF A Literature Survey on Recipe Generation From Food Images ... - IJARSCT — User Interaction: Optionally, the system may incorporate user feedback mechanisms to allow users to interactively refine or customize the generated recipes based on their preferences or dietary restrictions. 3.6 Evaluation and Iteration: Evaluation Metrics: Various evaluation metrics, including ingredient prediction accuracy, recipe coherence, ...
- Formula and recipe generation with feedback loop - Google Patents — In an embodiment, the feedback collector 114 is programmed to associate user-provided feedback data with a recipe. The recipe may be a candidate recipe previously generated by the recipe generator 112, a synthetic recipe (e.g., user created recipe, which may be based on a candidate recipe), or a known recipe. The feedback data describes ...
- PDF A Food recipe recommendation system based on nutritional factors ... - Oulu — products to the users based on the predicted ranking ratings. The personalization aspect of recommender systems is essential. Personalized recommender systems tailor their suggestions to each user's needs, interests, and preferences. By analyzing user behavior, preferences, and feedback, these systems can
- PDF Recipe Recommendation System - JETIR — Recommendation Algorithm: Implement collaborative filtering to suggest recipes based on user preferences and similar users' preferences. Use matrix factorization or k-nearest neighbours (k-NN) algorithms to find correlations between users and recipes. 3.5. Backend Development with Express.js
- PDF DineHub - Restaurant App with AI Chatbot and Custom Recipe Generator — 5.2 User Feedback Feedback was collected through surveys and usability tests. Users expressed high satisfaction with the chatbot and custom recipe generator. Positive feedback highlighted the ease of use, responsiveness, and helpfulness of the chatbot, as well as the accuracy and variety of the recipe suggestions. 5.3 Performance Metrics
- ChatDiet: Empowering personalized nutrition-oriented food recommender ... — These systems fall short in dynamically responding to user feedback, incorporating new preferences, and adjusting to changes in user status, such as temporary dietary choices or restrictions related to specific foods. ... Food recommendation systems should be able to adjust based on user feedback, accommodate new preferences, and adapt to ...
- PDF Project Final Report: MagicRecipe - swabhs.com — based personalization, aiming to enhance user en-gagement by generating cooking ideas that are both innovative and closely aligned with users' available resources and dietary constraints. Majumder et al.(Majumder et al.,2019) address the challenge of generating personalized recipes by incorporating users' historical culinary prefer-
- (PDF) Cooking recipes generator utilizing a deep learning-based ... — The method that has been chosen for recipe generation is a deep learning model that will process real life recipes for training. The first order of business was the acquisition of training data ...
- GitHub - sagar-datta/gastronaut-ai: AI-powered recipe generator that ... — A sophisticated AI-powered recipe generator built with React, TypeScript, and Google's Gemini Pro API. This application showcases modern web development practices, responsive design, and thoughtful UX decisions to create a seamless cooking experience ...
- PDF SHARE: A Framework for Personalized and Healthy Recipe Recommendations — Table1 System'sjustificationexample RecommendedRecipes HealthHistory Thereason emeril'sessence Obese low-saturated-fat,highcalcium pumkinbiscuits Obese highcalcium
4. Rule-Based Recipe Generation
4.1 Rule-Based Recipe Generation
Rule-based systems in recipe generation rely on explicitly defined logical constraints and ingredient compatibility rules to construct valid recipes. These systems operate on a knowledge base of culinary principles, nutritional guidelines, and ingredient pairing heuristics, often represented as first-order logic statements or production rules.
Knowledge Representation
The foundation of rule-based recipe generation is a structured knowledge base containing:
- Ingredient ontology: Hierarchical classification of ingredients (e.g., dairy → cheese → cheddar) with properties (texture, flavor profile, cooking methods)
- Culinary rules: Pairing constraints (e.g., "acid balances fat") and preparation constraints (e.g., "tough meats require slow cooking")
- Nutritional constraints: Macronutrient ratios, allergen restrictions, and dietary pattern rules (keto, vegan, etc.)
The system can be formalized as a tuple:
where I represents the ingredient set, R the rule set, and C the constraints.
Constraint Satisfaction Formulation
Recipe generation reduces to a constraint satisfaction problem (CSP) where:
- Variables represent recipe components (main ingredient, cooking method, etc.)
- Domains are possible values for each variable (e.g., cooking methods: [sauté, roast, boil])
- Constraints encode culinary rules and user preferences
The CSP can be expressed as:
where X = {x1, ..., xn} are variables, D = {D1, ..., Dn} their domains, and C the constraints.
Rule Execution Engine
The inference engine applies forward chaining to derive valid recipes:
- Select a primary ingredient based on user preferences
- Activate all rules where the ingredient appears in the antecedent
- Propagate constraints through the rule network
- Backtrack when constraint violations occur
Each rule takes the form:
where φ is the precondition, ψ the action, and ρ the probability weight derived from culinary statistics.
Implementation Example
A Python implementation might use a rule engine like Pyke:
from pyke import knowledge_engine
engine = knowledge_engine.engine(__file__)
engine.activate('recipe_rules')
def generate_recipe(main_ingredient, dietary_constraints):
with engine.prove_goal(
f'recipe_generation.generate($${main_ingredient}, $${dietary_constraints}, ?recipe)'
) as gen:
for vars, plan in gen:
return vars['recipe']
return None
Optimization Considerations
Key performance optimizations include:
- Rule indexing: Organize rules into discrimination networks for O(1) antecedent matching
- Constraint propagation: Use AC-3 algorithm to prune invalid options early
- Probabilistic ranking: Weight rule outcomes by culinary corpus statistics
The system's completeness is bounded by:
where n is the average domain size and k the constraint arity.

4.2 Machine Learning-Based Approaches
Neural Recipe Generation Architectures
The core challenge in recipe generation lies in modeling the complex relationships between ingredients, cooking techniques, and user preferences. Transformer-based architectures have demonstrated superior performance in this domain compared to traditional RNNs. The self-attention mechanism allows the model to learn long-range dependencies between recipe components:
Where Q, K, and V represent queries, keys, and values respectively, and dk is the dimension of the key vectors. This formulation enables the model to dynamically weight the importance of different ingredients and cooking steps when generating recipes.
Multi-Modal Embedding Spaces
Effective recipe generation requires joint representation of heterogeneous data types:
- Ingredient embeddings trained using skip-gram models on recipe corpora
- Nutritional feature vectors incorporating macronutrient profiles
- Cooking technique embeddings derived from action descriptions
- User preference vectors learned through collaborative filtering
The embedding space can be optimized using triplet loss:
Where ai is an anchor recipe, pi a positive match (similar recipe), ni a negative sample, and α a margin hyperparameter.
Conditional Generation with User Constraints
The generation process can be formulated as a constrained decoding problem:
Where x represents input ingredients, c denotes user constraints (dietary restrictions, equipment available), and y is the generated recipe sequence. Practical implementations often employ:
- Beam search with constraint satisfaction checking
- Discriminative reranking of candidate recipes
- Latent variable models for diverse generation
Evaluation Metrics
Quantitative assessment requires specialized metrics beyond standard NLP evaluation:
| Metric | Description | Computation |
|---|---|---|
| Ingredient Coverage | Percentage of input ingredients utilized | |Iused|/|Iinput| |
| Recipe Coherence | Logical flow of cooking steps | BERT-based similarity scoring |
| Nutritional Deviation | Distance from target nutrition profile | ∥Ngen - Ntarget∥2 |
Implementation Considerations
Production systems require careful attention to several aspects:
- Real-time adaptation: Online learning from user feedback loops
- Cold-start problem: Hybrid models combining content-based and collaborative filtering
- Explainability: Attention visualization for model decisions
- Bias mitigation: Regularization against cultural or regional biases
class RecipeGenerator(nn.Module):
def __init__(self, vocab_size, embed_dim, nhead, num_layers):
super().__init__()
self.embedding = nn.Embedding(vocab_size, embed_dim)
self.transformer = nn.Transformer(
d_model=embed_dim,
nhead=nhead,
num_encoder_layers=num_layers,
num_decoder_layers=num_layers
)
self.fc = nn.Linear(embed_dim, vocab_size)
def forward(self, src, tgt, src_mask=None, tgt_mask=None):
src_emb = self.embedding(src)
tgt_emb = self.embedding(tgt)
output = self.transformer(src_emb, tgt_emb, src_mask, tgt_mask)
return self.fc(output)

4.3 Hybrid Systems Combining Rules and AI
Architecture of Hybrid Recipe Generation Systems
Hybrid systems for recipe generation integrate symbolic rule-based reasoning with statistical AI models, typically leveraging the strengths of both paradigms. The architecture consists of three core components:
- Knowledge Base: Contains culinary rules (e.g., food pairing theories, nutritional constraints) encoded as first-order logic or production rules
- Neural Component: Typically a transformer-based language model fine-tuned on recipe corpora
- Inference Engine: Mediates between symbolic and neural components using constrained decoding or post-generation verification
Where φi(r) represents binary satisfaction of constraint i for recipe r, and PLM is the language model's probability distribution.
Constraint Satisfaction Methods
Three principal approaches enforce rule compliance during generation:
1. Constrained Decoding
Modifies the beam search process to only allow tokens satisfying predefined grammatical constraints. For recipe generation, this might involve:
Where 𝒞(ht) represents the set of valid tokens given generation history ht and culinary rules.
2. Post-Hoc Verification
Uses a separate verifier network trained to evaluate rule compliance, with rejection sampling for non-compliant outputs:
Where fj are rule satisfaction features and λj are learned weights.
3. Neuro-Symbolic Intermediate Representation
First generates structured recipe templates using symbolic reasoning, then fills slots with neural components:
Implementation Case Study: Allergy-Aware Generation
A practical implementation for nut-free recipes combines:
- Symbolic Layer: Prolog-based allergen database with 200+ ingredient compatibility rules
- Neural Layer: GPT-3 fine-tuned on 50K nut-free recipes
- Validation: Compositional verification using SMT solver
def generate_allergy_safe(user_prefs, model):
# Symbolic pre-filtering
safe_ingredients = allergen_db.filter(user_prefs['restrictions'])
# Constrained neural generation
prompt = f"Generate {user_prefs['cuisine']} recipe without {user_prefs['restrictions']}"
output = model.generate(
prompt,
forbidden_tokens=get_forbidden_tokens(safe_ingredients),
max_length=500
)
# Post-generation verification
if not allergen_verifier(output):
return generate_allergy_safe(user_prefs, model)
return output
Performance Tradeoffs
Hybrid systems exhibit distinct characteristics compared to pure approaches:
| Metric | Pure Neural | Hybrid |
|---|---|---|
| Rule Compliance | 72% ± 8 | 98% ± 2 |
| BLEU-4 | 0.45 | 0.38 |
| Inference Time | 120ms | 350ms |
The increased latency stems from multiple verification passes, while the creativity penalty (BLEU-4) reflects the constrained search space.
5. Metrics for Recipe Quality Assessment
5.1 Metrics for Recipe Quality Assessment
Objective Evaluation Metrics
Recipe quality assessment requires both objective and subjective metrics. Objective metrics are derived from measurable properties of the recipe, including nutritional balance, ingredient compatibility, and preparation efficiency. The Nutritional Balance Score (NBS) quantifies how well a recipe meets dietary guidelines:
where xi is the amount of nutrient i, ri is the recommended daily intake, σi is the standard deviation of typical intake, and wi is a weight reflecting nutrient importance.
Ingredient Compatibility
Pairwise ingredient compatibility can be modeled using co-occurrence statistics from large recipe datasets. The Flavor Compatibility Score (FCS) is computed as:
where P(i,j) is the joint probability of ingredients i and j co-occurring, and P(i), P(j) are marginal probabilities. Higher scores indicate more compatible combinations.
Preparation Efficiency
The Time Complexity Index (TCI) evaluates recipe practicality by modeling preparation steps as a directed acyclic graph (DAG). The critical path length L and parallelizability factor α combine to yield:
Lower TCI values indicate more efficient recipes. This accounts for both sequential dependencies and opportunities for parallel preparation.
Subjective Quality Metrics
Subjective metrics incorporate human preferences through:
- User Rating Prediction: Neural networks trained on historical ratings learn latent factors influencing perceived quality
- Visual Appeal Score: Computer vision models assess presentation quality from generated food images
- Novelty Metric: Measures deviation from typical ingredient combinations using KL divergence
Composite Quality Score
The final recipe quality score combines objective and subjective metrics through weighted aggregation:
where R is predicted rating, V is visual appeal, N is novelty, and weights βi are tuned via regression against expert evaluations.
Evaluation Protocol
For rigorous assessment, recipes should be evaluated through:
- A/B testing with human panels
- Longitudinal studies tracking actual preparation success rates
- Correlation analysis between predicted and observed quality metrics

5.2 User Testing and Feedback Collection
Effective user testing for a recipe generator requires a structured approach that combines quantitative metrics with qualitative insights. The process begins with defining key performance indicators (KPIs) that align with the system's objectives, such as recommendation accuracy, user satisfaction, and engagement metrics. A/B testing frameworks are employed to compare different algorithmic approaches, where users are randomly assigned to experimental groups exposed to variations of the recipe generation logic.
Quantitative Evaluation Metrics
For measuring recommendation quality, precision and recall are calculated at the top-k level, where k represents the number of recipes presented to the user. The metrics are defined as:
Normalized Discounted Cumulative Gain (NDCG) accounts for the ranked position of relevant items in the recommendation list:
where DCG (Discounted Cumulative Gain) is computed as:
Qualitative Feedback Collection
Structured interviews and think-aloud protocols provide deeper insights into user decision-making processes. Participants interact with the system while verbalizing their thoughts, revealing pain points in the interface or logic. Thematic analysis of interview transcripts identifies recurring patterns in user preferences and frustrations.
Eye-tracking studies complement traditional usability testing by visualizing attention patterns on recipe presentation layouts. Heatmaps generated from gaze data inform interface optimizations, such as ingredient list positioning or image placement strategies.
Longitudinal Engagement Analysis
Cohort analysis tracks user retention and engagement over extended periods, measuring metrics like:
- Weekly active users (WAU)
- Recipe save rate
- Session duration
- Repeat usage frequency
Survival analysis techniques model the probability of continued system usage over time, with Cox proportional hazards regression identifying factors that correlate with user churn. Feature importance analysis reveals which aspects of the recipe generator most influence long-term engagement.
Multimodal Feedback Integration
Implicit feedback signals—such as dwell time on recipe cards, ingredient substitution rates, and cooking session abandonment points—are combined with explicit ratings to create a comprehensive user preference model. Bayesian hierarchical models account for individual differences while identifying population-level trends in recipe preferences.
Real-time feedback loops enable dynamic system adaptation, where user interactions immediately influence subsequent recommendations. This requires careful implementation of exploration-exploitation strategies to balance personalization with discovery of new recipe options.
5.3 A/B Testing Different Generation Strategies
When deploying a recipe generator, evaluating the effectiveness of different generation strategies is critical for optimizing user satisfaction. A/B testing provides a rigorous framework for comparing two or more variants under controlled conditions. For recipe generation, key metrics include user engagement (time spent, clicks), conversion rate (recipes saved or cooked), and subjective ratings (taste preference, novelty).
Statistical Foundations
The core statistical measure in A/B testing is the treatment effect, defined as the difference in mean outcomes between groups. For a continuous metric like engagement time:
where μA and μB are the population means for variants A and B. The standard error of this estimate is:
For binomial metrics like conversion rate, we use the pooled proportion:
where x represents successes in each group. The z-score for significance testing becomes:
Experimental Design Considerations
Three critical parameters must be predetermined:
- Sample size: Calculated using power analysis to detect a minimum effect size with 80-95% power
- Randomization unit: Typically user-level to avoid network effects
- Duration: Must account for weekly periodicity in cooking habits
For recipe generators, we recommend a sequential testing approach using the Bayesian Estimation Approach:
Implementation Strategies
When comparing generation approaches (e.g., Markov chains vs. transformer models), implement feature flags to enable real-time switching. Monitor for:
- Latency differences affecting user behavior
- Cold-start problems with new strategies
- Interaction effects with user segmentation
A multi-armed bandit approach can be superior when testing more than two variants:
where γ controls exploration vs exploitation balance.
Case Study: Ingredient-Based vs. Flavor-Profile Generation
In a 2023 study comparing two recipe generation methods with 15,000 users:
| Metric | Ingredient-Based | Flavor-Profile | p-value |
|---|---|---|---|
| Save Rate | 12.3% | 15.7% | 0.003 |
| Avg. Rating | 4.1 | 4.3 | 0.021 |
| Cook Time | 28 min | 34 min | 0.112 |
The flavor-profile approach showed statistically significant improvements in key metrics despite slightly longer cook times.
6. Integrating the Generator into User Applications
Integrating the Generator into User Applications
API Design and Deployment
Exposing the recipe generator as a RESTful API enables seamless integration into web, mobile, and desktop applications. The API should accept user preferences as JSON input and return generated recipes in a standardized format. For scalability, deploy the model using containerization (Docker) with orchestration (Kubernetes) or serverless architectures (AWS Lambda).
Optimize the API endpoint by batching requests and implementing caching for frequent queries. Use gRPC for low-latency applications requiring real-time updates.
Client-Side Implementation
For web applications, implement the integration using asynchronous JavaScript with error handling and loading states:
async function generateRecipe(preferences) {
try {
const response = await fetch('/api/recipes/generate', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify(preferences)
});
return await response.json();
} catch (error) {
console.error('Generation failed:', error);
throw error;
}
}
Performance Optimization
Reduce latency by:
- Implementing model quantization without significant accuracy loss
- Using ONNX runtime for cross-platform optimization
- Prefetching likely recipes based on user history
The computational complexity of generation scales with:
where n is sequence length, k is number of attention heads, and d is embedding dimension.
Security Considerations
Implement robust security measures:
- JWT authentication for API endpoints
- Input sanitization to prevent prompt injection attacks
- Rate limiting to prevent abuse
- Differential privacy for user data
Continuous Integration Pipeline
Set up automated testing and deployment:
- Unit tests for API endpoints
- Integration tests with sample preferences
- Canary deployments for model updates
- Monitoring for response times and error rates
User Experience Patterns
Implement progressive enhancement:
- Immediate placeholder recipes while generating
- Interactive refinement of generated recipes
- Visual indicators for dietary restrictions
- Offline capability with cached recipes
6.2 Scaling for Large User Bases
Distributed Architecture for Recipe Generation
As user bases grow beyond 10,000 concurrent requests, monolithic architectures fail to maintain acceptable latency. A microservices approach decomposes the recipe generation pipeline into independently scalable components:
- Preference Service: Handles user profile storage and retrieval using sharded databases
- Ingredient Graph Service: Manages the knowledge graph of ingredient relationships
- Generation Workers: Stateless containers that perform the actual recipe synthesis
The communication pattern follows:
Load Balancing Strategies
For the generation workers, consider weighted round-robin balancing based on:
Where Ci is current load and Cmax is capacity threshold. This sigmoid weighting prevents overloading any single worker while maintaining efficient resource utilization.
Caching Layers
A three-tier caching strategy reduces database load:
- In-memory LRU cache for frequent user preferences (1-5ms access)
- Distributed Redis cache for popular recipe templates (5-20ms access)
- Database-backed cache with write-through for personalizations (50-100ms access)
The cache hit ratio H follows a power-law distribution:
Database Optimization
For user preference storage, a hybrid approach combines:
- PostgreSQL for transactional data (user accounts, saved recipes)
- MongoDB for document storage (ingredient preferences, dietary restrictions)
- Neo4j for relationship queries (flavor pairings, substitution graphs)
Partitioning follows a consistent hashing scheme where user UUIDs map to shards:
Asynchronous Processing
For non-real-time features (weekly meal plans, batch recommendations), implement:
async def generate_weekly_plan(user_id):
preferences = await fetch_preferences(user_id)
candidates = await search_recipes(preferences)
ranked = await rank_by_nutrition(candidates)
return format_plan(ranked[:7])
Monitoring and Auto-scaling
Key metrics for auto-scaling decisions:
- Generation latency percentiles (p50, p95, p99)
- Database query throughput
- Cache hit/miss ratios
- GPU utilization for neural recipe generation
The scaling controller uses reinforcement learning to optimize:
Where L is current latency and α, β are learned parameters.

Handling Real-Time Updates to User Preferences
Dynamic Preference Modeling with Online Learning
Real-time updates require models that adapt incrementally without full retraining. Online learning algorithms, such as stochastic gradient descent (SGD) or Bayesian updating, are particularly effective. For a user preference vector θ and feature vector x, the update rule for SGD is:
where ηt is the learning rate at time t, and ℓ is the loss function. Bayesian approaches maintain a posterior distribution over preferences:
Efficient Update Strategies
For large-scale systems, exact Bayesian updates become computationally intractable. Approximate methods include:
- Kalman Filtering: Tracks preference drift as a linear dynamical system
- Particle Filtering: Maintains a set of weighted hypotheses about user preferences
- Hashed Feature Updates: Uses feature hashing to enable constant-time updates
Architecture for Real-Time Processing
A robust pipeline requires:
- Event streaming (Kafka, Flink) for preference change signals
- Model servers with hot-swappable weights (TensorFlow Serving, TorchScript)
- Consistency guarantees via versioned model snapshots
class OnlinePreferenceModel:
def __init__(self, n_features):
self.weights = np.zeros(n_features)
self.lr = 0.01
def partial_fit(self, X, y):
grad = X.T.dot(X.dot(self.weights) - y)
self.weights -= self.lr * grad
return self
Drift Detection and Model Reset
Concept drift metrics should trigger model resets when:
where τ is a threshold. The KL divergence measures distributional shift in predicted recipe ratings.
Performance Considerations
Latency-critical applications require:
- Quantized models (8-bit integers) for faster inference
- Edge caching of frequent user profiles
- Asynchronous model updates with read-your-writes consistency

7. Key Research Papers in Recipe Generation
7.1 Key Research Papers in Recipe Generation
- PDF Personalized Recipe Recommendation System using Hybrid Approach — recipe recommendation system. To navigate the users on the web based on their past preferences, we propose two hybrid approaches using contents of recipe and user's rating matrix for recipes. The first hybrid approach is based on the KNN collaborative filtering technique with the recipe content information. The second hybrid
- Recipe Recommendation With Hierarchical Graph Attention Network — The overall framework of proposed HGAT model for recipe recommendation.(A) Illustration of node-level attention and relation-level attention for generating the embedding of recipe node r 0; (B) Illustration of node-level attention for obtaining the embedding of user node u .Relation-level attention is omitted here since user nodes only connect to other nodes through one relation; (C) The ...
- arXiv:2210.11431v1 [cs.CL] 20 Oct 2022 — unsupervisedly. Recipe generation tasks ask mod-els to create recipes from a given title.Kiddon et al.(2016);H. Lee et al.(2020) provide an in-gredient list,Majumder et al.(2019) add user's historical preference into consideration, andSakib et al.(2021) generate recipes from an action graph. Li et al.(2021) introduce the recipe editing task,
- A product line approach to customized recipe generation - Academia.edu — In Proceedings of the 16th International Software Product Line Conference - Volume 1, SPLC '12, ACM, New York, NY, USA, pp. 96-105. September, 2012 5. CONCLUSIONS AND FUTHER WORK In this paper, we described a document product line approach to generate customized recipes based on a family of recipes represented by a document feature model.
- FridgeSnap: A software for recipe suggestion based on food image ... — In order for Spoonacular to be adopted into the application, the API key must first be retrieved. This API key is inserted into the application within the DiscoverFragment page, which is where the recipe searching takes place within the application. Details of how the recipes are called within the application is shown in Fig. 3. Specifically ...
- Investigating and predicting online food recipe upload behavior — 1.2 Application.We think the study of online recipe upload behavior is useful, since it would not only enable us to understand what are potential food trends as set by a user or a whole community in the future, but would, for example, also help us in the design of novel food recommender algorithms or even intelligent user interfaces, that would support people in the food upload process.
- PDF RECipe: Does a Multi-Modal Recipe Knowledge Graph Fit a Multi-Purpose ... — filtering (NCF) by recommending recipes to users when they query in natural language or by providing an image. RECipe consists of 3 subsystems: (1) behavior-based recommender, (2) review-based recommender, and (3) image-based recommender. Each subsystem relies on the embedding representations of entities and relations in the graph.
- (PDF) Cooking recipes generator utilizing a deep learning-based ... — The method that has been chosen for recipe generation is a deep learning model that will process real life recipes for training. The first order of business was the acquisition of training data ...
- Personalized Recipe Recommendation System using Hybrid Approach — It collects user's data and make recommendations according to the user preferences and it also predicts the preferences of user for also unrated items. It recommends new items to user [10]. Mostly ...
- (PDF) Development of an Online Holistic Standardized Recipe: A Design ... — parameterization of the quality and quantity of products to be used in a recipe; (2) in key performance indicators (KPIs) management; (3) and is essential for the calculation of the nutrition ...
7.2 Open Datasets for Recipe and Preference Data
- PDF Revamping Cross-Modal Recipe Retrieval With ... - CVF Open Access — image-recipe paired data for cross-modal recipe retrieval [42 ,7 37 3 43], recipe generation [36 41 4 1 33], image generation from a recipe [49, 35] and question answering [46]. Our paper tackles the task of cross-modal recipe re-trieval between food images and recipe text. In the next section, we focus on the specific contributions of previous
- Recipe Recommendation With Hierarchical Graph Attention Network — Figure 2.The overall framework of proposed HGAT model for recipe recommendation.(A) Illustration of node-level attention and relation-level attention for generating the embedding of recipe node r 0; (B) Illustration of node-level attention for obtaining the embedding of user node u .Relation-level attention is omitted here since user nodes only connect to other nodes through one relation; (C ...
- PDF arXiv:2105.08185v2 [cs.CL] 12 Nov 2022 — 3 RecipePairs Dataset Several recipe corpora have been collected, in-cluding the 150K-recipe Now You're Cooking! dataset (Kiddon et al.,2016;Bosselut et al.,2018), Recipe1M+ (Marin et al.,2019) for cross-modal retrieval tasks, and the Food.com (Majumder et al., 2019) dataset. We extend the Food.com dataset, aggregating user-provided category ...
- Learning Structural Representations for Recipe Generation and Food ... — recipe generation and food cross-modal retrieval models. In the food dataset Recipe1M [2], there have food images and the paired text annotations including ingredients and cooking instructions, where the food images are static and contain all the mixed ingredients. Generally, the task settings of the recipe generation and food cross-modal ...
- PDF Learning Cross-modal Embeddings for Cooking Recipes and Food Images — The average recipe in the dataset consists of nine ingre-dients which are transformed over the course of ten instruc-tions. Approximately half of the recipes have images which, due to the nature of the data sources, depict the fully pre-pared dish. Recipe1M includes approximately 0.4% dupli-cate recipes and 2% duplicate images (different ...
- Eating healthier: Exploring nutrition information for healthier recipe ... — In contrast, a user's culinary inclination can be perceived as a result of personal ingredient preferences or some latent factors. Some works use ingredients' likings, whether in the form of an explicit input (Rec, 2016) or by indirectly learning them from recipe ratings (Freyne & Berkovsky, 2010); while others employ standard collaborative filtering approaches to uncover hidden factors ...
- FridgeSnap: A software for recipe suggestion based on food image ... — The image identifier is based on DenseNet [2], a pre-trained convolutional neural network architecture preferred to other architectures (i.e., VGG16, MobileNet, and InceptionNet) following an extensive testing phase that showed its superiority on the training data in terms of accuracy and loss function. The current version of the image ...
- A Smart Recipe Recommendation System Based on Image ... - Springer — Turkish recipes were collected, and a data set was created. By using the open-source library, the most suitable image processing and machine learning algorithm has been determined for classifying objects. After deciding the ingredients, the most suitable recipes are determined. Suggestions are presented to the user.
- (PDF) Cooking recipes generator utilizing a deep learning-based ... — Before the data analysis and the data preprocessing is performed, the full dataset counted 2,496,548 recipes. Over 1,000,000 recipes come from MIT Computer Science & Artificial
- (PDF) A Smart Recipe Recommendation System Based on ... - ResearchGate — in response to the request by matching the recipes needed in the data set. The last step, The last step, the recipe list that comes with the API will be displayed to the user.
7.3 Tools and Libraries for Implementing Recipe Generators
- Top 10 Best Recipe APIs (in 2023) [60+ Reviewed] — Top 10 Best Recipe APIs [in 2023] By Team RapidAPI // March 26, 2023. Recipe APIs are Application Programming Interfacesthat allow developers to access recipe databases and websites in order to integrate recipes into their applications. These APIs can be used to search, retrieve, and manipulate recipes from a variety of recipe sources.
- MakeEat - AI-Powered Recipe Generator - GitHub — MakeEat is an innovative mobile application that revolutionizes home cooking by combining AI-powered recipe generation with practical features. The app creates personalized recipes based on your available ingredients while considering dietary preferences and restrictions.
- Free APA Citation Generator | With Chrome Extension - Scribbr — How to create APA citations. APA Style is widely used by students, researchers, and professionals in the social and behavioral sciences. Scribbr's free citation generator automatically generates accurate references and in-text citations.. This citation guide outlines the most important citation guidelines from the 7th edition APA Publication Manual (2020).
- A Cooking Recipe Recommendation System with Visual ... - ResearchGate — User's food preference extraction for cooking recipe recommendation. In Proc. of the 2nd Workshop on Semantic Personalized Information Management: Retrieval and Recommendation, 2011.
- GitHub - hoangsonww/PantryPal-Streamlit-App: A Streamlit app powered ... — Although Streamlit is not a full-fledged web framework, it provides a simple and effective way to create interactive data-based web applications. Here are some of the key features of PantryPal: Pantry-based recipe generation: Enter your pantry items and get a recipe tailored to what you have.; Surprise Me!: Let the AI create a random recipe from scratch.
- Recommender system - Wikipedia — A recommender system (RecSys), or a recommendation system (sometimes replacing system with terms such as platform, engine, or algorithm), sometimes only called "the algorithm" or "algorithm" [1] is a subclass of information filtering system that provides suggestions for items that are most pertinent to a particular user. [2] [3] [4] Recommender systems are particularly useful when an ...
- gitingest.com — Directory structure: └── meta-llama-llama3/ ├── README.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── download.sh ├── eval ...
- Research Portal - ujcontent.uj.ac.za — Powered by Esploro from ClarivateEsploro from Clarivate








