UnRavl / data /suggestions.py
ridhiibuilds's picture
Complete core loop: detection to translated upcycle suggestions
611330e
Raw
History Blame Contribute Delete
7.13 kB
# UnRavl — Upcycle Suggestions Database
# Ridhi Garg | June 2 2026
# Base of UnRavl
# Every garment type and its transformation possibilities
UPCYCLE_SUGGESTIONS = {
"Tshirt": {
"transformations": [
{
"name": "Crop Top",
"description": "Cut the hem to crop length, raw edge or hemmed",
"difficulty": "easy",
"tools": ["scissors"],
"vibe": ["casual", "Y2K", "minimal"]
},
{
"name": "Off Shoulder Top",
"description": "Cut the neckline wide, elastic through the hem",
"difficulty": "easy",
"tools": ["scissors", "elastic", "needle", "thread"],
"vibe": ["feminine", "casual", "summer"]
},
{
"name": "Backless Top",
"description": "Cut the back open, add ties or lace detail",
"difficulty": "medium",
"tools": ["scissors", "needle", "thread"],
"vibe": ["edgy", "going out", "Y2K"]
},
{
"name": "Corset Style",
"description": "Add ribbon lacing down the back or front",
"difficulty": "medium",
"tools": ["scissors", "ribbon", "needle", "thread"],
"vibe": ["dark feminine", "edgy", "going out"]
},
{
"name": "Bleach Dye",
"description": "Bleach pattern for a distressed editorial look",
"difficulty": "easy",
"tools": ["bleach", "gloves", "water"],
"vibe": ["edgy", "grunge", "streetwear"]
}
]
},
"Jeans": {
"transformations": [
{
"name": "Shorts",
"description": "Cut at desired length, distress the hem",
"difficulty": "easy",
"tools": ["scissors"],
"vibe": ["casual", "summer", "streetwear"]
},
{
"name": "Distressed",
"description": "Slash knees and thighs for a worn look",
"difficulty": "easy",
"tools": ["scissors", "sandpaper"],
"vibe": ["grunge", "casual", "streetwear"]
},
{
"name": "Embroidered",
"description": "Add floral or graphic embroidery on pockets or hem",
"difficulty": "hard",
"tools": ["embroidery needle", "thread", "hoop"],
"vibe": ["bohemian", "vintage", "feminine"]
},
{
"name": "Patchwork",
"description": "Add fabric patches over rips or as design detail",
"difficulty": "medium",
"tools": ["fabric scraps", "needle", "thread"],
"vibe": ["Y2K", "vintage", "bohemian"]
}
]
},
"Dress": {
"transformations": [
{
"name": "Mini Skirt",
"description": "Cut the top off, add elastic waistband",
"difficulty": "medium",
"tools": ["scissors", "elastic", "needle", "thread"],
"vibe": ["feminine", "going out", "Y2K"]
},
{
"name": "Two Piece",
"description": "Cut into crop top and skirt set",
"difficulty": "medium",
"tools": ["scissors", "needle", "thread"],
"vibe": ["going out", "summer", "feminine"]
},
{
"name": "Shorter Hem",
"description": "Cut and hem to a shorter length",
"difficulty": "easy",
"tools": ["scissors", "needle", "thread"],
"vibe": ["casual", "feminine", "minimal"]
}
]
},
"Jacket": {
"transformations": [
{
"name": "Cropped Jacket",
"description": "Cut the body shorter for a cropped silhouette",
"difficulty": "medium",
"tools": ["scissors", "needle", "thread"],
"vibe": ["streetwear", "Y2K", "edgy"]
},
{
"name": "Sleeveless Vest",
"description": "Remove the sleeves completely",
"difficulty": "easy",
"tools": ["scissors", "needle", "thread"],
"vibe": ["casual", "streetwear", "minimal"]
},
{
"name": "Painted Jacket",
"description": "Add fabric paint design on the back",
"difficulty": "medium",
"tools": ["fabric paint", "brushes"],
"vibe": ["streetwear", "artistic", "edgy"]
}
]
}
}
label_to_suggestion_key = {
"Blazer":None,
"Blouse":None,
"Cardigan":None,
"Dress":"Dress",
"Hoodie":None,
"Jacket":"Jacket",
"Jeans":"Jeans",
"Nightgown":None,
"Outerwear":None,
"Pajamas":None,
"Rain jacket":"Jacket",
"Rain trousers":None,
"Robe":None,
"Shirt":None,
"Shorts":None,
"Skirt":None,
"Sweater":None,
"T-shirt":"Tshirt",
"Tank top":"Tshirt",
"Tights":None,
"Top":"Tshirt",
"Training top":None,
"Trousers":None,
"Tunic":None,
"Vest":None,
"Winter jacket":"Jacket",
"Winter trousers":None
}
def get_suggestions(garment_type):
"""
Takes a garment type and returns all transformation ideas
"""
if garment_type in UPCYCLE_SUGGESTIONS:
return UPCYCLE_SUGGESTIONS[garment_type]["transformations"]
else:
return []
def get_suggestions_by_vibe(garment_type, vibe):
"""
Filters suggestions by aesthetic vibe
"""
all_suggestions = get_suggestions(garment_type)
filtered = []
for suggestion in all_suggestions:
if vibe.lower() in suggestion["vibe"]:
filtered.append(suggestion)
return filtered
def get_easy_suggestions(garment_type):
"""
Returns only easy transformations
Perfect for beginners
"""
all_suggestions = get_suggestions(garment_type)
easy = []
for suggestion in all_suggestions:
if suggestion["difficulty"] == "easy":
easy.append(suggestion)
return easy
# TEST — run this file to see it working
if __name__ == "__main__":
print("=== Testing UnRavl Suggestions Database ===\n")
# Test 1 — get all tshirt suggestions
print("All tshirt transformations:")
tshirt_ideas = get_suggestions("tshirt")
for idea in tshirt_ideas:
print(f" → {idea['name']} ({idea['difficulty']})")
print()
# Test 2 — filter by vibe
print("Edgy tshirt transformations:")
edgy_ideas = get_suggestions_by_vibe("tshirt", "edgy")
for idea in edgy_ideas:
print(f" → {idea['name']}")
print()
# Test 3 — easy only
print("Easy jeans transformations:")
easy_jeans = get_easy_suggestions("jeans")
for idea in easy_jeans:
print(f" → {idea['name']} — tools: {idea['tools']}")