EFELIA Hackathon Team 6 commited on
Commit
d61a2eb
·
verified ·
1 Parent(s): 808e1fa

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +58 -0
app.py ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import pandas as pd
3
+
4
+ df = pd.read_csv("filtered_openfoodfacts(Sheet1).csv", sep=";", encoding="utf-8")
5
+ df.columns = [col.lower().replace(" ", "_") for col in df.columns]
6
+ df = df[df['warning'].str.lower() != 'warning']
7
+
8
+ def search_product(query, filters):
9
+ query = query.strip().lower()
10
+ filtered_df = df.copy()
11
+
12
+ for f in filters:
13
+ filtered_df = filtered_df[filtered_df['labels_tags'].str.lower().str.contains(f.lower(), na=False)]
14
+
15
+ matched = filtered_df[
16
+ filtered_df['product_reference'].str.lower().str.contains(query, na=False) |
17
+ filtered_df['product_brand'].str.lower().str.contains(query, na=False) |
18
+ filtered_df['product_name'].str.lower().str.contains(query, na=False)
19
+ ]
20
+
21
+ if matched.empty:
22
+ return "❌ Product not found."
23
+
24
+ result = ""
25
+ for _, row in matched.head(3).iterrows():
26
+ result += f"🔎 Reference: {row.get('product_reference', '-') }\n"
27
+ result += f"🏷️ Brand: {row.get('product_brand', '-') }\n"
28
+ result += f"🧾 Product: {row.get('product_name', '-') }\n"
29
+ result += f"- Ingredients: {row.get('ingredients_text', '-') }\n"
30
+ result += f"- Additives: {row.get('additives', '-') }\n"
31
+ result += f"- Allergens: {row.get('allergens', '-') }\n"
32
+ result += f"- Tags: {row.get('labels_tags', '-') }\n"
33
+ warning = str(row.get('warning', '')).strip()
34
+ if warning and warning.lower() != "none":
35
+ cleaned = warning.lower().replace("⚠️", "").replace("✅", "").replace("warning:", "").strip().capitalize()
36
+ if "safe for general consumption" in cleaned.lower():
37
+ result += f"✅ {cleaned}\n"
38
+ else:
39
+ result += f"⚠️ {cleaned}\n"
40
+ result += "\n"
41
+
42
+ return result.strip()
43
+
44
+ demo = gr.Interface(
45
+ fn=search_product,
46
+ inputs=[
47
+ gr.Textbox(label="Search by product name, brand or REF code"),
48
+ gr.CheckboxGroup(
49
+ choices=["vegan", "organic", "gluten-free", "lactose-free", "halal", "kosher"],
50
+ label="Filter by tags"
51
+ )
52
+ ],
53
+ outputs=gr.Textbox(label="Product Details"),
54
+ title="NutriCheck Bot – Clean & Smart",
55
+ description="Search by name, brand, or reference. Warnings styled cleanly with one emoji max."
56
+ )
57
+
58
+ demo.launch()