AI is revolutionizing industries across the globe, creating unprecedented demand for professionals who can bridge the gap between theoretical machine learning and practical software engineering.
Finding skilled software engineers or AI specialists individually is challenging enough—finding someone with strong foundations in both fields is even more difficult. That’s why BEON.tech created a specialized six-month program to help developers acquire the skills needed to become full-fledged AI Engineers.
In this article, I’ll walk you through how I tackled the final project of this program, building a functional AI system from scratch in just two weeks.
Our assignment was to develop a personalized meal recommendation system for a fictional company called TastyAI within a tight two-week timeline. The system needed to:
My first challenge was handling a massive dataset—2,231,142 rows across 7 columns, totaling 2.14 GB. The data included titles, ingredients, directions, and a crucial Named Entity Recognition (NER) column.
After analyzing what I was working with, I simplified by:
To make this data searchable, I needed to:
For the user interface, I chose Streamlit—an open-source tool that makes building interactive apps quick and painless, with built-in support for LLM chat applications.
For the conversational component, I went with gpt-4o-mini, striking an excellent balance between cost-effectiveness and performance quality. Now, users were able to freely ask for recipes, inform restrictions, and specify ingredients to use or avoid, all in natural language.
A few minutes later, the app looked like this:
Lastly, to ensure the LLM stayed on topic, I implemented detailed system instructions:
{
“role”: ROLE_SYSTEM,
“content”: “””You are an AI culinary assistant powered by a sophisticated recipe recommendation system. Your primary function is to help users discover personalized meal suggestions from our curated recipe database. Here’s how you operate:
1. Recipe Search & Recommendations:
– Process natural language queries to find relevant recipes from the database
– Consider dietary preferences and restrictions when suggesting meals
– Provide semantically similar alternatives when exact matches aren’t found
– Focus on recipes that are actually available in our database
2. Recipe Information Delivery:
– Present structured recipes with clear ingredients and instructions
– Mention any dietary categories (vegetarian, vegan, gluten-free, etc.)
3. Communication Guidelines:
– Use a friendly, helpful tone
– Reply on the same language as the user
– If a specific recipe isn’t found, suggest similar alternatives
– Always stay within the scope of available recipes
– Be transparent about limitations
Remember that you can only recommend recipes that exist in our database. Don’t invent or generate new recipes. If you’re unsure about specific details, acknowledge this and stick to the information available in our database.
“””,
}
It wasn’t enough to simply rely on the LLM to know when it should search the vector database for a recipe. To solve this, I leveraged a powerful new feature available in some LLMs: tools.
A key feature that brought real power to the system was the implementation of LLM tools (also known as function calling or tool use). These tools allow the model to call external code based on natural language input, effectively extending its capabilities beyond text generation.
Think of tools as plugins: they enable the model to interact with APIs, databases, or custom functions it wasn’t originally trained on.
For example, you could give a model access to your calendar, let it fetch real-time data from the web, or—in our case—allow it to structure user queries for a recipe search engine.
In this project, I defined a custom tool to extract and categorize ingredients from user requests. The function signature clearly specified the input format, enabling the LLM to:
This modular setup made the system much more flexible and accurate, bridging the gap between natural language and structured data queries.
def get_function_definition(self) -> dict:
return {
“type”: “function”,
“function”: {
“name”: “recipe_tool”,
“description”: “Get a recipe based on the input and ingredient preferences. All ingredients must be specified in English.”,
“parameters”: {
“type”: “object”,
“properties”: {
“ingredients_to_use”: {
“type”: “array”,
“items”: {“type”: “string”},
“description”: “List of ingredients that should be included in the recipe (the result have to be in English). e.g. [‘chicken’, ‘tomato’]”,
},
“ingredients_to_avoid”: {
“type”: “array”,
“items”: {“type”: “string”},
“description”: “List of ingredients that should not be included in the recipe (the result have to be in English). e.g. [‘beef’, ‘pork’]”,
},
},
“required”: [“ingredients_to_use”, “ingredients_to_avoid”],
“additionalProperties”: False,
},
“strict”: True,
},
}
One major challenge was handling multilingual input. While specialized models like bigscience/bloom-560m would have been ideal, I opted for a faster solution using prompt engineering to standardize ingredient lists in English.
I used two key techniques to achieve this:
My search algorithm followed these steps:
While I could have implemented more complex reranking algorithms, the simple approach delivered excellent results within our timeframe.
Since I was already using OpenAI’s API, DALL-E 3 was the natural choice for generating appetizing recipe images.
Creating effective image prompts proved interesting:
Finishing this project taught me several key lessons:
This project demonstrated how AI engineers must blend various disciplines—from data processing and embedding to language models and image generation—to create cohesive, functional systems. The experience gave me valuable insights into making architectural decisions and understanding when to take different approaches.
A special thanks to everyone at BEON.tech involved in this pioneering program, especially Luis Arboleda for his excellent instruction throughout the course.
Are you looking to hire software engineers specialized in AI? At BEON.tech, we focus on sourcing and equipping tech professionals with the right mindset. You can schedule a call with us here.
And if you’re an AI enthusiast looking to boost your career, check out our open positions!
The promise of agentive AI lies in its ability to reduce cognitive load, streamline workflows, and enable teams to focus on high-impact work. From writing code and triaging support tickets to analyzing employee engagement or personalizing customer outreach, AI agent tools are beginning to play a central role in the modern tech stack. But integrating…
As we move deeper into 2025, US businesses are navigating unprecedented economic headwinds. With inflation still looming, consumer spending contracting, and the very real threat of economic stagnation, engineering leaders and executives are being forced to make hard decisions. And in the world of software development, where top-tier engineering talent often comes with sky-high salaries…
Artificial intelligence (AI) is no longer a futuristic concept—it’s here, and it’s transforming industries quickly. From personalized recommendations in e-commerce to predictive analytics in healthcare, AI adoption is now essential. At the heart of this transformation lies machine learning (ML), which is key for companies leveraging data-driven strategies that can make the difference between leading…