File size: 3,401 Bytes
217440f
 
 
 
 
 
 
 
 
 
dbca1df
 
 
217440f
 
dbca1df
1fcafa8
 
 
 
 
 
8a11446
 
1fcafa8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f3f06e4
1fcafa8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67d7d43
 
7d58c6f
1fcafa8
f3f06e4
 
1fcafa8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
---
title: Craftwise
emoji: 🧢
colorFrom: green
colorTo: green
sdk: gradio
sdk_version: 5.33.0
app_file: app.py
pinned: false
license: mit
tags:
  - agent-demo-track
  - agents
---

# 🧢 Agent Demo Track: Craftwise 

**Craftwise** is an AI-native learning assistant for hands-on crafts including (but not limited to!) origami, knitting, and crochet, and even more exotic crafts like Balkan lacework or Kente cloth making.
It guides users through creative projects with smart project suggestions, real-time explanations, YouTube tutorial retrieval, and visual feedback on uploaded photos.

Built with a multi-agent architecture using LangGraph and powered by LLMs, Craftwise helps users learn-by-doingβ€”just like a friendly workshop mentor.

**Watch our [demo video on Loom](https://www.loom.com/share/fb64d6e163c142a8bd634e483c6165b1#Settings)**

---

## ✨ Features

- 🎨 Personalized craft project recommendations  
- πŸ€– Multi-agent orchestration with LangGraph  
- πŸ” YouTube tutorial search 
- πŸ“· Visual feedback on uploaded craft work  
- πŸ’¬ Conversational interface via Gradio  
- 🧡 Modular agent setup for easy extension

---

## πŸš€ Getting Started

### 1. **Clone the Repository**

```bash
git clone https://huggingface.co/spaces/Agents-MCP-Hackathon/craftwise
cd craftwise
```

### 2. **Install Dependencies with [uv](https://github.com/astral-sh/uv)**

```bash
uv venv
source .venv/bin/activate
uv sync
```

> ℹ️ Don't have `uv` installed?  
> Install via pip: `pip install uv`

---

### 3. **Configure Environment Variables**

Copy the example file and set your keys:

```bash
cp .env.example .env
```

Fill in:
- Gemini API key - for the LLM calls
- Google Maps API key - for searching local craft shops
- YouTube API key (usually the same as Google Maps API key retrieved from your Google Cloud Console)
- Tavily API key - for searching the web

---

### 4. **Run the Gradio App**

```bash
gradio app.py
```

Then open your browser at: [http://localhost:7860](http://localhost:7860)

---

## 🧭 Project Structure

```
craftwise/
β”œβ”€β”€ agents/           # LangGraph agents: Planner, Mentor, Perception
β”œβ”€β”€ analysis_utils.py # Media analysis logic
β”œβ”€β”€ app.py            # Gradio interface
β”œβ”€β”€ main.py           # LangGraph supervisor setup
β”œβ”€β”€ .env.example      # Sample environment config
└── resources/        # Static images, backgrounds, styles
```

---

## πŸ§ͺ Development Notes

- 🧠 Agents are defined modularly under `agents/`
- 🧡 Media feedback handled by PerceptionAgent (`analyze_media_structured`)
- πŸ”Ž YouTube search is integrated via API with fallback validation
- 🌐 Background and UI assets are served via FastAPI + Gradio hybrid

---

## 🧩 Ideas for Expansion

- Track user learning progress over time
- Search for online or in-presence workshops and connect to teachers who know the craft

---

## 🀝 Contributing

Pull requests and forks welcome!  
To contribute:

1. Fork the repo  
2. Create a feature branch: `git checkout -b feature/my-feature`  
3. Commit your changes: `git commit -m "Add awesome feature"`  
4. Push and open a PR

---

## πŸ“„ License

MIT License Β© 2025 

Made by: [Alisa Bogatinovski](https://www.linkedin.com/in/alisakrstova) and [Jasmin Bogatinovski](https://www.linkedin.com/in/bogatinovskijasmin/)

---

> Made with code, curiosity, and a little bit of yarn. 🧢