The Genesis of an Idea

Turning “language objectives are hard” into a guided, teacher-friendly workflow.

I’ve often been asked to write Language Objectives—and I’ve often struggled with them. This app is my solution. I won’t explain what a Language Objective is here (see WIDA or try the app), but below is how the idea took shape.

Early wireframe for WIDA flow
Early “stage 1” concept

Born from UX Design Projects

The idea grew out of a UX course. I’d made a PowerPoint on stress management—useful, but not very marketable. Then I read a blog where designers described building small, focused apps (like a bird-call trainer) from sketches to code. That unlocked it for me: start simple, iterate, and ship.

I mocked ideas in Figma: quick links to WIDA, a “view finished objectives” mode, and a “create your own” flow.

Objective viewer mockup
Simple viewer mockup

Basic Viewing Mode & Learning Figma

The first goal was a clean viewer: one objective per screen, with next/back and a “create” button. Learning Figma took time, but it helped me think like a builder—iterate fast, get feedback, refine.

Flow & Storyboarding

From there, I sketched the create flow (storyboarding). The core idea became the Combiner: gather the teacher’s choices and combine them into a polished objective.

Flow diagram
Rough create-flow storyboard
Early prototype
Very early prototype

Early Versions

The first versions were barebones and click-heavy—basically dropdowns and “Next.” Feedback from my UX-designer brother-in-law confirmed it: useful, but tedious. Time to evolve the interaction.

The Rise of AI

I’d been using AI to problem-solve, so I embedded it into the builder. Instead of “just ask ChatGPT,” I combined AI with structured UI: dropdowns, cards, and selections. The result: an objective-building guide/avatar.

Integrating AI into Flask had a learning curve. Beyond basic imports, I tuned prompts and its temperature to steer behavior—like stage directions:

assistant_reply = clean_gpt_response(
    ask_llm(
        [
            {"role": "system", "content":
             "Explain WIDA language domains (Listening, Speaking, Reading, Writing) "
             "in one short line each. End with one question: "
             "'Which domain fits your lesson?' Use bullets; ≤8 words per bullet."
            }
        ] + chat_history,
        model="gpt-4",
        max_tokens=120,
        temperature=0.2
    )
)
Assistant avatar
Assistant avatar concept

Finishing Touches

I’m continuing to improve the site. Recent additions include a progress tracker so teachers can see how many questions remain. I’m collecting feedback and iterating.

Here’s a quick how-to guide to help you navigate the app:

Progress tracker
Progress tracker
Interactive KLU cards

Interactive cards let users explore concepts and ask questions inline.

Selectable options

Cleaner inputs: radio buttons and structured choices replace click-heavy flows.

Downloadable objective

The end result is a polished, downloadable language objective teachers can use immediately.