PROJECT CASE STUDY
Featured build

Spanish Helper

A study companion built for one — not the market

Jul '26
Started
3
Weeks active
50
Words learned
4
News read
1
Travel note

The problem

Most Spanish dictionaries stop at a translation. They don't know my level, can't hold a conversation about my trip, and definitely don't remember what I struggled with last week. I wanted something that actually adapted to me.

What I built

An AI study companion built on Dify, wired to Gemini, Tavily Search, and Notion. Four features, one Notion workspace as the interface:

Vocabulary database in Notion with spaced-repetition tags

Vocabulary

Look up a word and get a core definition plus common collocations, saved into Notion with a spaced-repetition tag (Forgot / Mastered) — the same logic as Anki, written in my own words.

News database leveled by CEFR with grammar breakdowns

News, leveled

Enter a word and a CEFR level. Tavily pulls real news; the LLM is constrained to include the queried word, its verb/tense variations, and a breakdown of the original sentence structure.

Travel database with bilingual guide and phrases

Travel

Tavily surfaces real spots and food recommendations for a destination; the LLM turns it into a bilingual guide plus practical conversation phrases.

Auto-generated weekly report

Weekly report

Every week, the workflow reads back through what I studied and generates a summary — new words, grammar covered, and where I'm still shaky.

How it works

User input branches through conditional logic in Dify: a word triggers the vocabulary flow, a travel query pulls from Tavily's travel index, a date triggers the weekly-report flow that reads existing Notion data before writing a new summary. Each branch calls Gemini, reformats the output, and writes back to a dedicated Notion database — with a 3x retry on every API call.

Full Dify workflow diagram showing branching logic
The full Dify workflow — branching logic for word lookup, news, travel, and weekly reports.

What I learned

The hardest part wasn't the workflow — it was the prompting. Early on, the LLM couldn't tell where its job ended. I'd ask it to show a 2–3 row preview in a Notion table; it would "fix" the request but quietly return broken formatting that spilled an entire block into one cell. The output looked plausible, so I kept re-checking manually. The fix was tightening the prompt's boundaries: when the model is unsure, it stops and flags it instead of guessing — which cut my manual double-checking dramatically.

What's next

Currently for personal use only. Next step is publishing the workflow to the Dify Marketplace, with an eye toward opening it up as a tool other Spanish learners can actually use.

Private use → publishing to Dify Marketplace
Dify Gemini Tavily Search API Notion API
All work Get in touch