Available for work
2026
Donya
Yarahmadi
UI/UX Designer

I design complex products that feel simple — the kind where multiple user roles share one system and it still makes sense for all of them. I think in flows and systems, and I ship with engineers, not over the wall.

6
Features shipped
3
User roles designed for
2
Net-new systems (0 → production)
Milan
Based in Italy
How I work

A process built around
clarity and iteration

01
Understand
I map how different user roles interact with the same feature — identifying where their needs conflict, not just where they overlap. No design before understanding the full picture.
02
Structure
I define the information architecture and data model before touching UI. For one system, I designed the entity relationships (Collections → Documents → Items) before drawing a single screen. The structure is the design.
03
Design & iterate
I design in Figma with a component-first approach, but I validate structure by prototyping in code. On a billing system I designed, a coded prototype caught edge cases that static mocks couldn't reveal.
04
Deliver
I hand off annotated Figma specs and stay through implementation. I use Cursor to build 1:1 functional prototypes that engineers use as working references — not just static redlines.
Selected work

Systems I've designed.
Problems I've solved.

02 — Course Creation
Mobile & DesktopCreator tools
Course Creation
The original creator tool forced users to manage a live product from four disconnected screens. I redesigned the full end-to-end flow — collapsing it into a three-panel layout with guided progress, live data, and a curriculum builder that eliminated context switching.
View case study
03 — Book Creation
Mobile & DesktopContent tools
Book Creation
A net-new content management system built from scratch — before this, teachers could only attach files to individual lectures with no library, no reuse, and no organisation. I designed the full library architecture, upload flows, chapter organisation, in-platform editor, and a smart course-integration flow.
View case study
04 — Subscription
Mobile & DesktopMonetisation
Subscription
One subscription system, three audiences. I defined the pricing architecture, designed checkout, plan comparison, and billing management for both B2C and B2B users — including seat management for team admins. A coded prototype in Cursor caught billing edge cases before engineering began.
View case study
05 — Exam Creation
Mobile & DesktopAssessmentProctoring
Exam Creation
A net-new assessment and real-time monitoring engine designed from scratch — 13 screens spanning creation, live proctoring with breakout rooms, 8 question types, AI-assisted content generation, and a normalised grading system portable across different contexts.
View case study
06 — Subject Creation
Mobile & DesktopIANavigation
Subject Creation
Designed the platform's connective tissue — a global taxonomy system that turned isolated, per-project data into a connected graph. When an entity is added to one context, its linked resources and team members follow automatically. The architecture reduced manual steps across every other feature.
View case study
07 — Dolce Casa
Desktop & MobileE-commerceInterior Design
Dolce Casa
Led UX research, user personas, style guide, and full responsive prototyping for an e-commerce platform redesign. A 6-week Double Diamond sprint with a team of four designers — from discovery interviews through interactive prototype and usability testing.
View case study
Platform architecture

How six features
connect as one system

I didn't design six isolated features — I designed a connected platform. Every feature in the Education domain feeds into Courses, and the system handles permissions, content linking, and team invitations automatically.

Education domain (profile-level)
SA
Subject Areas
Has assigned teacher · Links to books and exams · Role-based team (Owner, Curator, Editor, Viewer)
BL
Book Libraries
Contains books with metadata · Each book can have 1+ subjects · Same role-based team
EC
Exam Collections
Contains exam documents with questions · Each exam can have 1+ subjects · Same role-based team
Course (space-level)
C
Course / Space
Where students learn · Contains curriculum, lectures, scheduling, analytics
M
Marketplace
Where students discover and purchase courses
S
Subscription Plans
Monetisation layer · B2C and B2B seat management
How they connect: When an instructor adds a Subject to a Course, the subject's assigned teacher is automatically invited to the course (mandatory). The system then asks: "This subject has linked books and exams — add them too?" The instructor decides which to include. Books and exams travel with their subject metadata, so they're always properly categorised inside the course. All three Education features share the same role model (Owner, Curator, Editor, Viewer), so permissions are consistent and predictable across the platform.
Donya Yarahmadi
About me

I think in systems, not just screens

My work isn't about designing screens — it's about designing systems. A content library that made resources reusable across an entire platform. An assessment engine portable enough to work across different grading scales. A taxonomy architecture that turned isolated data into a connected graph. Each feature solved a structural problem, not just a visual one.

I trained as an Architecture Engineer at Politecnico di Milano, which taught me to think in structures before surfaces. I bridge design and development using Cursor and Claude Code — building functional prototypes that catch edge cases static mocks can't, and reducing handoff friction by giving engineers a working reference, not a PDF.

I care about the unsexy parts of design: empty states, error recovery, permission logic, and the flows that happen after the happy path. That's where most products break — and it's where I do my best work.

Figma & FigJam
User research & Maze
Information architecture
Design systems
Usability testing
Design QA
Cursor & Claude Code
Agile workflows
Thinking

Writing about design

Reflections on the design problems I think about most — systems thinking, the gap between design and engineering, and the parts of products that most designers skip.

01
Why I design the data model before the UI
Most designers start with screens. I start with entities and relationships. When I designed the Exam system, the Collections → Documents → Questions structure came before any visual work — because the structure is the design. If the data model is wrong, no amount of UI polish will fix the experience. This is the case for thinking in systems, not screens.
02
The case for coding your own prototypes
I use Cursor and Claude Code to build functional prototypes — not because I want to be an engineer, but because static mocks lie. On the Subscription system, a coded prototype caught billing edge cases that Figma never could. When engineers get a working reference instead of a PDF, handoff friction drops and what ships matches what was designed. The prototype is the spec.
03
Designing the unsexy parts: empty states, error recovery, and permission logic
The happy path gets all the attention. But most products break in the moments nobody designs for: the first-time user who sees an empty screen, the instructor whose camera drops during a live exam, the admin who needs to revoke a licence without filing a support ticket. These flows are where trust is built or lost. I've learned to design for the edges first, then fill in the middle.
Contact

Let's build something
great together

Open to full-time product design roles, freelance projects, and collaborations across industries.

Case study 01
Aladia
Marketplace

Designing a full discovery-to-purchase marketplace — from browsing categories to checkout — for a multi-feature platform serving thousands of users across mobile and desktop.

Platform
Mobile & Desktop
Role
Sole product designer — IA, 6 screens, competitive analysis
Tool
Figma
Focus areas
Discovery Search & filters Course detail Checkout

Students couldn't find, compare,
or confidently buy a course

The Aladia platform offered a wide catalogue of courses but the marketplace made it hard to navigate. Students were overwhelmed by too many options with no clear hierarchy, struggled to compare courses side by side, and the purchase flow had too many steps — leading to drop-offs before checkout.

01
Hard to find the right course
No clear filtering system or category hierarchy made the catalogue feel like a wall of content with no entry point.
02
No way to compare courses
Students couldn't easily see pricing, duration, instructor quality, or skill level at a glance from the listing view.
03
Too many steps to purchase
The checkout flow was disconnected from the course detail page, creating friction right at the moment of decision.

Understanding why users
weren't converting

Before designing anything, I needed to understand where the existing experience was failing. I combined qualitative observation with competitive analysis to build a clear picture of the problem space.

Competitive analysis
I audited 4 marketplace platforms (Udemy, Coursera, Teachable, Thinkific) and mapped their discovery patterns — filter placement, card information density, and detail page structure. Aladia's catalogue lacked the progressive disclosure that made competitors scannable.
Stakeholder interviews
Conversations with the PM and support team revealed three recurring complaints: "I can't find what I'm looking for," "I didn't realise the course was in [language]," and "The price wasn't clear until checkout." These mapped directly to IA, card design, and checkout flow problems.
User observation
I watched 4 users attempt to find and purchase a specific course. Average task completion time was over 4 minutes. 2 out of 4 abandoned the flow entirely — both cited "too many options, no way to narrow down" as the reason.
Key insight
The core problem wasn't content volume — it was information architecture. Users needed hierarchy (categories → filters → comparison → decision) not just a flat list. The purchase decision happens on the detail page, so that page needed to be the primary design focus.

Two distinct users,
one marketplace

From research, two clear user archetypes emerged — each with different browsing behaviours, trust signals, and decision-making patterns.

SF
Sara Ferretti
24 · Recent graduate · Rome · Tech comfort: 4/5
"I just want to see what's good, how much it costs, and whether the instructor knows what they're doing — without scrolling forever."
Goals
Find a course matching her certification needs · Compare prices across instructors · Purchase quickly without surprises
Frustrations
Overwhelmed by long unfiltered catalogues · Doesn't trust courses without reviews · Hates price changes at checkout
Mobile-first Price-sensitive Skimmer Social-proof-driven
MB
Marco Bianchi
38 · Accountant, upskilling · Milan · Tech comfort: 3/5
"I'm not a student — I'm a professional who needs to learn something specific. Don't make me wade through beginner content to find what I need."
Goals
Find advanced courses in a specific subject · Compare course depth, not just marketing copy · Fit learning into a busy schedule
Frustrations
Can't tell beginner from advanced at a glance · Descriptions are marketing-heavy but detail-light · No way to see time commitment upfront
Desktop-first Time-poor Detail-oriented Sceptical of hype

Browse-to-purchase:
the primary journey

The core flow I designed moves users from landing to purchase in 7 steps, with the detail page as the critical decision point.

Primary flowHappy path
Entry point
User lands on marketplace homepage from nav or external link
1
Browse
Sees "Top 10 Today" ranked list + category grid for orientation
2
Filter
Selects a category → applies filters (level, price, language, duration)
3
Compare
Scans course listing cards — price, instructor, rating visible at a glance
4
Evaluate
Taps a card → enters detail page. Reviews curriculum, instructor bio, reviews, pricing
5
Purchase
Taps persistent "Buy Now" CTA → checkout modal opens inline
Success
Payment confirmed → redirected to "My Courses" with the new course active
Edge cases I designed forAlternative flows
E1
Empty search results
User sees "No courses match your filters" with suggestion to broaden criteria. A "Popular in [category]" fallback section appears below.
E2
Social proof entry
User taps a verified instructor card on homepage → browses their profile → enters purchase flow from instructor page instead of category browsing.
E3
Returning user
User returns to a previously viewed course → detail page shows "Continue where you left off" with scroll position memory.

Four key screens across the full
discovery-to-purchase journey

The marketplace was designed across mobile and desktop with a consistent dark theme matching the Aladia brand. Each screen was built to move the student one step closer to a confident purchase.

Top Instructors and Organizations discovery section
01 — Marketplace homepage. Category hero with subject pills, Top 10 Today ranking, and New Courses feed.
Marketplace homepage with category hero and Top 10 Today section
02 — Social discovery. Top Instructors and Organizations sections with verified badges and follow actions.
Course detail page with video player and Buy Now CTA
03 — Course detail page. Full-screen video player with persistent Buy Now CTA, rating, and course metadata always visible.
Course description panel with chapters and lecture breakdown
04 — Course description panel. Chapter-by-chapter curriculum breakdown with lecture counts, durations, and locked/unlocked states.

The course detail page layout — the
decision that mattered most

The course detail page was the most critical screen in the entire flow. It's where students decide whether to buy or leave. I made several intentional structural choices to maximise confidence and reduce drop-off.

"The Buy Now button and price needed to be visible at all times — not just at the bottom of a long scroll. Keeping them persistent meant students could make the purchase decision the moment they felt ready, not after hunting for the CTA."

— Key design decision, Course Detail Page
1
Persistent Buy Now CTA
Pinned the price and purchase button to the bottom of the screen at all times — so the action is always one tap away regardless of scroll position.
2
Key metadata surfaced immediately
Rating, language, lecture count, and duration are shown directly below the title — the four things students check first before deciding to read further.
3
Curriculum as a drawer panel
The chapter and lecture breakdown slides in as a panel over the video — keeping the immersive experience intact while giving students full curriculum visibility.
4
Category pills for instant filtering
The homepage hero shows category-specific subject pills — so users who land on a category immediately see relevant sub-topics without touching any filter UI.

Shipped on the Aladia platform
across mobile and desktop

The marketplace was shipped as part of the full Aladia platform release. The design established a consistent discovery-to-purchase flow that scaled across screen sizes, with the dark theme and gold accents reinforcing the Aladia brand identity throughout the journey.

The ranked "Top 10 Today" section and verified instructor cards were particularly well-received — giving students social proof and a clear starting point even when they didn't know exactly what they were looking for.

Student purchase journey — conversion by stage
Persistent CTA and restructured detail page improved conversion at the purchase decision stage
Browse
100%
View detail
68%
Add to cart
42%
Purchase
31%
1-tap
Purchase from persistent CTA
~40%
Reduction in scroll to reach key info
6
Screens designed end-to-end

Designing for discovery taught me
how hierarchy drives decisions

The most valuable lesson from this project was understanding how information hierarchy directly influences purchase behaviour. Every element on the course detail page — from the position of the price to the order of metadata — either builds or erodes a student's confidence to buy.

Working on a large catalogue also taught me that good filtering is invisible — when it works well, users don't notice it. They just find what they're looking for. Designing the search and category system made me much more intentional about progressive disclosure and how to help users narrow down without feeling restricted.

Lesson 01
Hierarchy drives trust
The order and weight of information on a product page directly shapes whether a user feels confident enough to act.
Lesson 02
Good filters are invisible
When filtering works well, users just find what they need — the UI disappears. Designing that invisibility took more work than making it visible.
Lesson 03
Persistent CTAs convert
Keeping the Buy Now button visible at all times — not buried at the bottom — was a small decision with a large impact on conversion logic.
Next case study
Course Creation →
02
Case study 02
Course
Creation

Redesigning a complex creator tool from four disconnected screens into a unified three-panel system — from creating a course and building its curriculum, to scheduling lectures, tracking attendance, and publishing.

Platform
Mobile & Desktop
Role
Sole designer — redesigned 7 screens, before/after validation
Tool
Figma, Cursor (prototype)
Focus areas
Content builder Lecture management Analytics Simplicity

The old design forced instructors to manage
a live course from four disconnected screens

"The content builder was a single-panel list. Instructors had to leave this view entirely to check student notifications, reschedule requests, or upcoming exams — then navigate back. Every action required abandoning context."

— Starting point: the problem with the original design

The redesign was driven by four specific failures in the original system:

01
Context switching
The original content builder was a single-panel list with no lecture-level visibility. Instructors had to leave the view to check notifications, reschedule requests, or exams — losing their place in the curriculum every time.
02
Cognitive overload
All sections — billing, goals, content, certificates — were presented simultaneously with equal visual priority. No guided flow, no progress indicator. Every section felt equally urgent.
03
Planning vs live reality
The old design was built for static content creation. But live courses need real-time responses. Lecture schedules, attendance, and session health all lived in separate disconnected views.

I proposed collapsing four screens
into one three-panel layout

The original design spread course management across four separate screens. Every action required navigating away and losing context. I proposed a fundamentally different structure.

Original structure
Four separate screens: curriculum in one view, live notifications in another, reschedule requests in a third, upcoming exams in a fourth. Instructors had to switch between them constantly, losing their place every time.
What I proposed
A single three-panel layout: curriculum on the left, live notifications and reschedule requests in the centre, upcoming exams on the right. Everything visible simultaneously. No context switching, no lost state.

The result: After launch, instructors found the new course builder noticeably easier to use. The consolidated view meant they could manage a live course — curriculum, notifications, and scheduling — without ever leaving the content view.

How I learned what was
actually breaking

The redesign wasn't based on assumptions — I mapped the existing tool's failures through direct observation and stakeholder input.

Shadowed onboarding calls
I sat in on 3 instructor onboarding sessions and watched where they got stuck. Every instructor struggled with the same pattern: they'd start filling in course info, then need to check something in another screen, and lose their place. Context switching was the #1 pain point.
Support ticket review
Reviewed 2 months of support tickets. The top recurring themes: "How do I add a live lecture?" (they couldn't find the option), "I accidentally published an incomplete course" (no draft state), and "Where are my student notifications?" (different screen entirely).
Existing UI audit
The original design used 4 separate screens for one task. I mapped every action an instructor needed during a live course and found that 68% required navigating away from the content builder — losing context every time.
Key insight
The root cause wasn't complexity — it was fragmentation. Instructors needed a single view that showed curriculum, notifications, and scheduling simultaneously. The three-panel layout emerged from this insight.

Designing for the instructor
who has 20 minutes

EM
Prof. Elena Marchetti
45 · University lecturer, first-time LMS user · Bologna · Tech comfort: 2/5
"I'm an expert in my subject, not in software. If I can't figure out how to set up my course in 20 minutes, I'll go back to email and PDFs."
Goals
Set up her course without IT support · Organise lectures to mirror her syllabus · Track which students attended which sessions
Frustrations
Interfaces that show everything at once with no guidance · Switching between 4 screens to manage one course · No "what do I do next?" indicator
Desktop-only Needs hand-holding Low error tolerance Prefers guided flows
AR
Andrea Russo
32 · Freelance instructor, teaches 5 courses · Milan · Tech comfort: 4/5
"I run 5 live courses simultaneously. If I can't see reschedule requests, notifications, and my curriculum in one place, I'll miss something important."
Goals
Manage multiple courses from one dashboard · See live data (attendance, requests) alongside curriculum · Publish and update quickly
Frustrations
Scattered information across separate screens · No batch actions for common tasks · Can't see session health at a glance
Power user Efficiency-driven Multi-tasker Wants density

Create → Build → Schedule → Publish

Primary flow — New course creationHappy path
Entry point
Instructor clicks "Create Course" from their dashboard
1
Basic info
Fills in title, description, category, cover image — one section at a time with guided progress
2
Curriculum builder
Adds chapters → adds lectures within chapters (drag-to-reorder). Chooses type: video, live session, or document
3
Scheduling
For live lectures, sets date/time → system checks for conflicts automatically
4
Pricing & review
Sets price (or free) → sees summary of all sections with completion indicators
Publish
Course goes live in marketplace. Draft state available as a safe exit at any point
Edge casesAlternative flows
E1
Incomplete publish attempt
System highlights missing required fields with inline errors. "Save as Draft" always available — no data loss.
E2
Subject with assigned teacher
Instructor adds a Subject Area mid-creation → system detects assigned teacher isn't a course member → prompts auto-invite.

Seven screens across the full
course management experience

The course creation system was redesigned to give instructors a clear, structured flow. The highlight was a three-panel content view that surfaced notifications, schedule changes, and exams alongside the curriculum — eliminating context switching.

Before & after — real screens
Before — single panel, no live data
Static curriculum list only. Notifications, schedule changes, and exams required separate screens.
After — three panels, all context visible

Curriculum (left) · Live notifications & reschedule requests (centre) · Upcoming exams (right) — all at once.
Spaces course list view
01 — Spaces view. Course cards with Published/Live status badges, start dates, and pricing — giving instructors an instant overview of all their courses.
Course management panel with all sections
02 — Course management panel. All course sections — Categories, Billing, Goals, Content, Certificate, Educational Toolbox, Control Center — visible in one structured side panel with live counts.
Three-panel content builder with notifications and exams
03 — Redesigned content builder (key highlight). Three-panel layout: curriculum on the left, live notifications and reschedule requests in the centre, upcoming exams on the right. Instructors can manage everything without leaving the content view.
Lecture edit panel
04 — Lecture edit panel. Title, date/time, subject assignment, repeat settings, and thumbnail — all in one clean side panel with Save and Delete actions.
Lecture overview with session details
05 — Lecture overview. Session details including room ID, host, participants, start/end times, duration, and linked calendars — giving instructors full post-session visibility.
Lecture activity with user attendance table
07 — Lecture activity. The Activity tab logs all session participants — name, role (Host, Co-host, Attendant), issues detected, join and leave times. The Recording & Summary section shows generated recordings with resolution, file size, duration and status.
Lecture analytics with timeline and session health
06 — Lecture analytics. The Analytics tab (powered by 100ms) shows a participant timeline of joins, leaves, recording events and errors. Session Health score surfaces quality issues, join/publish/subscribe failures and disconnections. Device & Browser breakdown shows how participants accessed the session.

The three-panel content view —
eliminating context switching

The most significant design decision was redesigning the content builder from a single-panel list into a three-panel layout. This was driven by the insight that instructors constantly needed to cross-reference their curriculum with incoming notifications and upcoming exams — but had to switch screens to do it.

"Instructors shouldn't have to leave the content view to check if a student requested a reschedule or to see what exam is coming up next. Bringing notifications, schedule changes, and exams into the same view as the curriculum made the whole system feel connected."

— Key design decision, Content Builder
1
★ Three-panel content builder — key highlight
Split the content view into curriculum (left), live notifications and reschedule requests (centre), and upcoming exams (right) — all visible simultaneously without any tab switching. This layout was chosen specifically to reduce the mental effort of jumping between pages. In the old design, curriculum, notifications, and exams each lived in a separate screen. An instructor managing a live course had to mentally track context across all three, constantly rebuilding it after each switch. The three-panel layout contains that complexity — grouping curriculum, live communication, and assessment into one unified workspace that matches how instructors actually think.
2
Lecture details as a side panel
Clicking any lecture opens a side panel with Edit, Overview, Analytics, and Activity tabs — keeping the curriculum visible while editing a specific lecture.
3
Live counts on every section
The course management panel shows live counts next to each section (e.g. "5 Goals · 1 Requirements", "1 Chapter · 5 Lessons") so instructors always know the state of their course at a glance.
4
Per-lecture analytics dashboard
Each lecture has its own analytics tab with a participant timeline, session health score, and device breakdown — giving instructors data to improve future sessions without leaving the course.

Shipped as part of the Aladia
platform — used by instructors daily

The course creation system shipped across mobile and desktop as a core part of the Aladia platform. The redesigned content builder reduced the need for instructors to switch between views, while the lecture-level analytics gave them meaningful data about each session's quality and engagement.

The three-panel layout was particularly valued for live courses — where real-time notifications, reschedule requests, and exam visibility all needed to coexist with active curriculum management.

Instructor time spent per task — before vs after redesign
Three-panel layout consolidated views, reducing time spent on non-curriculum tasks significantly
Curriculum editing
~45 min
Checking notifications
~8 min
Schedule management
~6 min
Exam oversight
~5 min
~60%
Less context-switching between views
3→1
Screens consolidated into one layout
7
Screens across full course lifecycle

Complexity doesn't disappear —
you just have to contain it

Designing the course creation system taught me that the job isn't to simplify what's genuinely complex — it's to contain that complexity so users only encounter what they need, when they need it. The three-panel content view wasn't about adding features; it was about reorganising existing information into a layout that matched how instructors actually think while managing a live course.

Working closely with the development team through Cursor also reinforced how important it is to design with implementation in mind. Decisions that looked clean in Figma sometimes had hidden engineering costs — and vice versa. That back-and-forth made me a sharper, more collaborative designer.

Lesson 01
Contain, don't simplify
Complex workflows need structure, not reduction. The goal is to surface the right information at the right moment — not to remove necessary depth.
Lesson 02
Design with devs, not for them
Using Cursor for design-to-code handoff taught me to think about implementation early — catching costly decisions before they reach production.
Lesson 03
Live data changes everything
Designing the analytics dashboard around 100ms live session data meant building for uncertainty — handling empty states, errors, and partial data as carefully as the ideal state.
Back to portfolio
View all case studies →
Case study 03
Book
Creation

A net-new feature I designed from scratch — a centralised Book Library system enabling teachers and organisations to upload, organise, and reuse educational books across courses, lectures, subjects, and live sessions for the first time on the platform.

Platform
Mobile & Desktop
Role
Sole designer — net-new system, 0 → production
Tool
Figma
Focus areas
Library management Upload flows Role permissions Clean layout

Books were scattered — no universal place
to upload, organise, and reuse them

Before the Book Library, there was no single place on the Aladia platform where teachers or organisations could upload books and reuse them across everything — courses, subjects, lectures, and calendar events. Every time an instructor needed a book in a new context, they had to re-upload or re-attach it from scratch. There was no source of truth, no reuse, and no connection between books and the educational structure around them.

The deeper complexity was that books on Aladia don't exist in isolation. A book can be linked to a Subject Area — and each subject may have its own assigned teacher. When a book is added to a course, the system needs to ask: should the subject be added too? And if so, should the subject's teacher be invited to the course? Getting this smart, connected flow right was the core design challenge.

01
No universal place for books
Books were added ad-hoc to individual courses or lectures with no library — so the same book had to be re-uploaded every time it was needed in a new context. No reuse, no single source of truth.
02
No connection to subjects & teachers
Subject Areas can have books assigned to them — and each subject may have its own teacher. When adding a book to a course, the system needed to intelligently surface these connections rather than ignoring them.
03
No smart course integration flow
When a book with an assigned subject was added to a course, there was no prompt to also add that subject — or invite its teacher to the course. These decisions were left entirely to the instructor, creating missed connections.

I argued for a central library
instead of per-course attachments

Before this feature existed, books were just files attached to individual lectures. There was no concept of a "book" as a reusable object. I argued for something fundamentally different.

Status quo
Teachers uploaded the same PDF to every lecture that needed it. No metadata, no versioning, no link between copies. Updating a book meant remembering every place it was uploaded — and always missing at least one.
What I proposed
A centralised Book Library at the profile level (inside the Education domain). Books become first-class objects with metadata, subject links, and team roles. Create once, link to any course. Updates propagate automatically.

Why this mattered: This wasn't just a UI feature — it required designing a new data model from scratch. Books needed to be entities with their own identity, linked to subjects and courses through the same architecture as Exams and Subject Areas. The consistency across all three Education features is what makes the platform feel like a system, not a collection of tools.

Before this feature, books
didn't exist as a concept

This wasn't a redesign — it was inventing a system from nothing. Before the Book Library, the platform had no concept of "books" at all. Teachers could only attach files to individual lectures, one at a time. There was no library, no reuse, no metadata, and no connection between content and the educational structure around it.

Existing workflow audit
The only way to share a book was to upload it as a lecture attachment — every single time. If the same textbook was needed in 3 courses, the instructor uploaded it 3 times with no link between copies. Updating one meant manually updating all the others (and always missing one).
Stakeholder mapping
Mapped the relationship between books, subjects, teachers, and courses with the PM. A single book could logically belong to multiple subjects and courses, but the platform had no way to express this. The entire concept of "reusable content" needed to be designed from scratch.
Instructor pain points
Watched 2 instructors attempt to share the same book across 3 courses. Each time they uploaded a new copy as a lecture attachment — creating duplicates with no metadata, no versioning, and no link between them. When the book was updated, none of the copies reflected the change.
Key insight
The problem wasn't just "no library" — it was that books needed to be first-class objects on the platform, not attachments. They needed metadata, subject links, teacher associations, and a smart course-integration flow. The entire data model had to be designed before any UI.

The instructor drowning
in lecture attachments

LV
Prof. Laura Vitale
50 · Department head, 200+ educational PDFs · Naples · Tech comfort: 2/5
"Every time I need a textbook in a new course, I have to upload it again as a lecture attachment. I have the same PDF uploaded 12 times across my courses. When I update it, I always forget at least one."
Goals
Upload a book once and link it everywhere · See which courses use which books · Update in one place, have changes propagate automatically
Frustrations
Re-uploading the same file as an attachment to every lecture · No way to see where a book is used across the platform · Duplicate attachments that go out of sync after updates
Desktop-onlyLarge content libraryNeeds single source of truthLow tech patience

Upload once, link everywhere

Primary flowHappy path
Entry
Instructor navigates to Book Library from profile
1
Upload
Uploads PDF, fills metadata: title, subject area, description
2
Link to subject
Assigns book to a Subject Area, connecting it to the subject's teacher and exams
3
Add to course
System detects linked subject and asks: "Add this subject too?"
Connected
Book, subject, and teacher linked to the course in one action

Four screens covering the full
library-to-book creation flow

The Book Library system was designed as a side panel within the existing Spaces context — keeping instructors oriented within their course while managing an entirely new content type. The clean layout was the priority throughout.

Book Libraries panel showing 3 libraries
01 — Book Libraries panel. Accessible from Settings under Spaces, teachers and organisations see all their libraries in one place — with a book count per library and a New Library action.
Single library with members and roles
02 — Library members & roles. Inside a single library (Grammar & Writing), the member list shows 12 members with assigned roles — Owner, Curator, Editor, Viewer — with inline role management and online status.
Books list inside a library with subject tags
03 — Books list. All books inside the library are shown with their cover thumbnail, author, and subject/study level tags. Multiple editions of the same book (Italian, Spanish, First Biennium) are clearly differentiated by tag.
Book Details creation form with ISBN, title, author, file upload
04 — Book Details form. The New Book panel supports ISBN lookup (optional), title, author, file upload, thumbnail, subject assignment, and description — with an Add Companion Volume action for sub-books and a 0 Courses counter at the bottom.
Book preview with companion volume
05 — Book detail & Companion Volume. The book detail view shows the cover, subject tags, an Open Book action, full description, and a linked Companion Volume (sub-book) with its own tags and Open Volume action.
Student PDF reader two-column layout
06 — Student PDF reader. The integrated PDF viewer opens in a clean two-column layout with a full toolbar — page navigation (25/200), zoom, bookmark, annotation, table of contents, and search — giving students a focused reading experience inside the platform.

A clean layout that handles
4 creation methods in one form

The most interesting design challenge was consolidating four completely different book creation methods — PDF upload, ISBN lookup, AI generation, and manual entry — into a single, clean panel that didn't feel overwhelming. The solution was a smart ISBN field at the top: optional, but when used, it auto-fills all metadata below — reducing the form from a chore to a single tap.

"The hardest part wasn't designing the book form — it was designing the moment a book gets added to a course. That's where the system needs to ask: this book is linked to a subject. Do you want to add that subject to the course? And that subject has a teacher — do you want to invite them? Getting that flow to feel helpful rather than interruptive was the real challenge."

— Key design decision, Book-to-Course integration
1
One library, reused everywhere
Books are uploaded once to a Book Library and can then be added to any course, subject, lecture, or calendar event — without re-uploading. The library is the single source of truth for all educational reading material on the platform.
2
Smart subject & teacher suggestion on book add
When a book linked to a Subject Area is added to a course, the system shows a confirmation modal: "This book is linked to [Subject]. Do you want to add this subject to the course?" — and if the subject has an assigned teacher: "Do you also want to invite [Teacher] to this course?" This removes a manual step instructors would otherwise always forget.
3
Subject tags on book cards
Each book card shows its subject and study level tags inline — making it immediately clear which edition or language version is which without opening each book individually.
4
Companion Volumes as an action, not a setting
Add Companion Volume is surfaced as a prominent action in the Book Details header — not buried in settings — because sub-books are a core part of how instructors structure multilingual or multi-edition content.
5
Role permissions with online status
The member list shows live online status alongside each role — giving library owners real-time awareness of who is actively working in the library at any moment.

Designed from zero — shipped as a core
new feature of the Aladia platform

I designed the Book Library system entirely from scratch — no prior designs, no existing patterns to follow. It shipped as a fully functional new module accessible to teachers and organisations, supporting all four book creation methods (PDF upload, ISBN lookup, AI generation, manual entry), role-based access control, and deep integration with courses, lectures, subjects, calendar events, and live meeting rooms.

Shipping a brand-new content type meant I had to establish the mental model, the navigation patterns, and the permission system simultaneously — while keeping the interface clean enough that instructors never felt the weight of what was running underneath.

Book creation method usage
Distribution showing ISBN smart-fill as the most-used creation path — validating the key design decision
ISBN lookup
48%
PDF upload
31%
Manual entry
14%
AI generated
7%
48%
Books added via ISBN smart-fill
4
Creation methods in one unified form
6
Screens across the book lifecycle

Designing a new content type means
designing a mental model first

The biggest challenge with Book Creation wasn't the UI — it was helping users understand what a "Book Library" even was and how it related to their courses, lectures, and events. I had to design a mental model (library → book → course → lecture → page) before designing any screen, so every interface decision could reference a clear conceptual structure.

I also learned a lot about permission system design — specifically how to make role hierarchies (Owner, Curator, Editor, Viewer) feel intuitive rather than bureaucratic. The key was showing permissions through what users can and can't see, not through warning messages.

Lesson 01
Mental model before UI
For new content types, designing the conceptual hierarchy first makes every interface decision easier and more consistent.
Lesson 02
Permissions through visibility
Role-based access feels natural when users simply don't see actions they can't take — not when they see disabled buttons with error messages.
Lesson 03
Smart defaults reduce friction
The ISBN auto-fill was the biggest usability win — turning a 10-field form into a 1-action flow for the majority of books instructors already know by ISBN.
Back to portfolio
View all case studies →
Case study 05
Exam
Creation

A net-new feature I designed entirely from scratch — a comprehensive exam system covering Exam Collections, an AI-powered Document Builder, live proctoring with breakout rooms, oral exams, student recheck flows, and a normalised grading system that works across multiple courses.

Platform
Mobile & Desktop
Role
Sole designer — 13 screens, data model + live monitoring
Tool
Figma, Cursor (prototype)
Focus areas
Document builder Proctoring Breakout rooms Making complexity simple

A brand new feature — building an exam system
for Aladia from the ground up

The Exam Creation system was a net-new feature I designed from scratch. Aladia had no exam infrastructure before this — no builder, no collections, no proctoring, no results dashboard. I was responsible for defining and designing the entire system: how exams are created, stored, assigned to courses, taken by students, monitored by teachers, and evaluated.

The scope was significant. The system needed to handle three fundamentally different exam modes — written scheduled, written flexible, and oral — each with different availability windows, retake rules, evaluation flows, and proctoring requirements. On top of this, the grading system needed to keep exams course-agnostic (reusable across courses) while letting each course define its own scoring scale and weights per exam type.

01
No central exam hub
Exams were created per-course with no library system. The same exam had to be rebuilt every time it was needed in a new context — no reuse, no single source of truth.
02
No live oversight
Teachers had no way to monitor students during live written exams. There was no proctoring system, no breakout rooms, no way to see who had submitted, abandoned, or needed intervention.
03
Complex grading logic
Exams needed to be reusable across courses — but each course needed its own passing threshold, score scale, and exam type weighting. Designing a grading system that was both portable and flexible was a core UX challenge.

I proposed the portable
Collections model

The original brief was straightforward: build an exam feature inside courses. But as I mapped the requirements, I realised per-course exams would create the same duplication problem we'd already solved with Books and Subjects.

Original brief
Build exam creation and delivery inside each course. Teachers create exams per-course, students take them within the course context. Standard LMS approach.
What I proposed instead
Separate exam content from exam delivery. Exam Collections live at the profile level (inside the Education domain), so teachers create once and assign to any course. Each course configures its own settings (schedule, proctoring, grading scale) independently. The exam document stays portable.

Why this mattered: Without portability, a teacher with the same exam in 3 courses would maintain 3 separate copies. Changes wouldn't sync. The Collections model meant one source of truth — consistent with how Books and Subjects already worked, and reducing the maintenance burden for teachers managing multiple courses.

Understanding the full assessment lifecycle

The exam system touched more platform components than any other feature. Before designing, I mapped the full lifecycle and the different users at each stage.

Stakeholder workshops
Ran 3 workshops to map the exam lifecycle. Identified 3 distinct UX moments: creation (async), exam-taking (live), and monitoring (real-time). Each had completely different requirements.
Competitor audit
Audited Google Forms, Typeform, Moodle. None handled proctoring + creation + grading in one system. Most required separate tools, confirming the value of a unified approach.
Edge case mapping
Documented 14 live exam edge cases: WiFi drops, camera failures, fullscreen exits, score conflicts across grading scales. Each needed its own UI state.
Key insight
Exams needed to be portable — created once, reused with different settings. This led to the Collections → Documents → Questions data model.

The teacher who needs 40 students
visible in 2 seconds

LC
Dr. Luca Conti
52 · Department head, 40+ students/course · Naples · Tech: 3/5
"During a live exam with 40 students, I need to know in 2 seconds if someone's camera went off. I can't be clicking through tabs."
Goals
Reusable exams across courses · Live monitoring without missing alerts · Performance trends over time
Frustrations
Recreating exams per-course · No quick triage during live sessions · Manual grading conversion
Desktop-onlyHigh-stakesInstant triagePortability
CM
Chiara Moretti
21 · Student, final exams · Rome · Tech: 5/5
"I want to know exactly what to expect before the timer starts. Don't surprise me mid-exam."
Goals
Understand exam rules upfront · Track remaining time · Immediate results visibility
Frustrations
Unclear instructions · Proctoring anxiety · Waiting days for results
Mobile + DesktopFairness-focusedTransparency

Create → Assign → Monitor → Grade

Teacher flowHappy path
Entry
Teacher navigates to Exam Collections
1
Create
Creates collection, builds document with 8 question types + inline AI
2
Assign
Assigns to courses with per-course settings (duration, proctoring, eligibility)
3
Monitor
Breakout Room Monitor: 40 rooms as grid, webcam + screen, alert tabs for triage
Grade
Scores auto-normalised and scaled to course grading range
Edge casesAlternative flows
E1
Proctoring alert
Camera off → room moves to Alert tab → student gets calm recovery instruction
E2
Cross-course grading
Same exam, different scales (0-100 vs 0-30). Auto-normalised, no manual work.

13 screens across the full exam lifecycle —
from creation to evaluation

The exam system was designed end-to-end: instructors create and organise exams in Exam Collections, build questions using the Document Builder with AI assistance, assign exams to courses with scheduling and proctoring settings, monitor live sessions via breakout rooms, and evaluate results — including recheck requests from students.

Exam Collection members and roles
01 — Exam Collection members. Each collection supports role-based access — Owner, Curator, Editor, Viewer — with live online status and inline role management. The same mental model as Book Libraries and Subject Areas.
Exam list inside a collection
02 — Exams inside a collection. Each exam card shows its type (Midterm, Quiz, Pre-Test, Final), subject tags, language, and study level — giving instructors a scannable overview of their full exam library.
New exam metadata panel
03 — New exam details panel. Instructors define the exam title, difficulty level, type, subject assignment, description, and retake count — all in one clean side panel before entering the builder.
Question type selector
04 — Question type selector. The Document Builder supports 8 question types — Multiple-choice, Single-select, True/False, Match the Pairs, Fill in the Blank, Essay, Short Answer, File Upload — plus Saved Questions for reuse.
Exam builder with MCQ question
05 — Exam Builder with a Multiple-choice question. Each answer option is marked Correct or Incorrect inline. The Ask AI action appears per-question for AI-assisted content generation or improvement. Points are set per question.
Exam builder pages sidebar
06 — Multi-page exam structure. The Pages sidebar lets instructors organise exam content across multiple pages — enabling long exams to be broken into logical sections without losing structure.
Exam assigned to course with proctoring settings
07 — Exam assigned to course. When an exam is added to a course, instructors configure scheduling, select the exam template, set duration, enable the proctoring system, and define eligibility rules — all in one panel.
Student exam start page
08 — Student exam start page. Before beginning, students see the exam title, type badge, subject, instructor, duration, difficulty, question count, score, attempts left, and a Before You Start checklist — setting clear expectations.
Student exam list with statuses
09 — Student exam list by chapter. Each exam shows its type, subject, difficulty, current score, attempts remaining, and status (Passed, Failed, Start) — giving students a complete progress overview per chapter.
Student submitting exam with answer feedback
10 — Student exam submission view. After submitting, students see their answers marked correct or incorrect inline, with a score breakdown per question (0 out of 5). The overall score (25/30) is shown persistently in the header.
Teacher exam results dashboard
11 — Teacher exam results dashboard. The teacher sees exam metadata, total students (12), average score (24.4), pass rate (67%), and a per-student table with submission status, proctoring alerts, and individual scores. A "14 submissions awaiting review" banner surfaces urgent actions immediately.
Breakout rooms creation for live exam
12 — ★ Main visual: Live virtual exam room with breakout rooms. The centrepiece of the live proctored exam experience — the teacher sees all participants in a live video call and creates individual breakout rooms (one per student). Each room shows its Co-Host, assigned Guests, Invite and Move To actions. The teacher can enter any room at any time to observe, communicate, or resolve issues. This screen drove the majority of design decisions for the entire exam system.
Teacher monitoring breakout rooms grid
13 — Teacher breakout room monitor. All 40 rooms shown as a live grid — each with the student's name, webcam feed, and exam screen preview. Tabs separate Open Rooms, Closed Rooms, and Proctoring Alert Rooms for fast triage.

Making complexity simple — a system that spans
creation, live monitoring, and evaluation

The exam system touched more parts of the platform than any other feature — it connected to courses, subjects, calendars, live sessions (100ms), the grading engine, and the proctoring system. The biggest design challenge was making all of this feel like one coherent experience rather than a collection of disconnected tools.

"The teacher's job during a live exam is triage — who needs help, who has submitted, who set off a proctoring alert. The breakout room monitor had to make that scan instant. A grid of 40 rooms, each showing the student's face and exam screen side by side, with colour-coded status tabs, meant a teacher could assess the entire cohort in seconds."

— Key design decision, Breakout Room Monitor
1
Exam Collections as the single source of truth
Exams live in Exam Collections — not inside courses. They are created once and reused across as many courses as needed. Course-level settings (duration, schedule, proctoring, eligibility) are configured at the point of assignment, keeping the exam itself portable and course-agnostic.
2
Document Builder with AI per question
The Ask AI action appears inline on every question — not as a separate AI mode. This means instructors can mix manual and AI-generated questions freely, using AI to improve a specific question without losing control of the others.
3
Before You Start checklist for students
Before any exam attempt, students see a dedicated start screen with all key metadata (duration, difficulty, score, attempts left) and a checklist of exam rules. This reduces mid-exam confusion and support requests — students know exactly what to expect before the timer starts.
4
Proctoring alert rooms surfaced separately
During live exams, rooms flagged by the proctoring system are separated into a dedicated Proctoring Alert Rooms tab — pinned to the top and visually distinct. Each alert has its own modal with a calm recovery instruction:
📷 Camera off → reconnect prompt
🎤 Mic off → reconnect prompt
📶 WiFi lost → paused + reconnecting
⛶ Fullscreen exit → return prompt
5
Normalised grading — portable scores, per-course scaling
Exams store only raw points (questions × points per question). When assigned to a course, the score is normalised to a percentage, then scaled to the course's grading range (e.g. 0–30, 18–30). This means the same exam can be used in multiple courses with completely different grading systems without any conflict.

Beyond the exam — tracking progress,
giving feedback, and visualising growth

The Registry is the teacher's command centre after exams are done. It brings together attendance, scores, and performance into one view — and introduces two powerful features: written teacher feedback with student acknowledgement chips, and a Subjects Radar that shows each student's strengths and weaknesses across all subjects compared to the class average.

Performance is calculated using a fixed formula: Attendance (30%) + Exams (70%). This ensures scores are comparable across courses, chapters, and time periods — and gives both teachers and students a consistent benchmark to work from.

User performance distribution
Sample distribution across a course cohort — illustrating how the fixed formula surfaces learning outcomes
Excellent
22%
Good
35%
Average
28%
Needs work
15%
Registry performance dashboard
14 — Registry performance dashboard. Teachers see all enrolled students with attendance %, average score, and performance % with trend indicators (▲▼). Clicking a student opens their full profile — with a per-chapter average performance chart, grouped by subject, showing progress across the entire course cycle.
Teacher feedback panel
15 — Teacher feedback panel. Teachers write direct, structured feedback per student — with visibility settings (Teachers only / All) and optional student acknowledgement chips: Understood, Thanks, I'll improve. Low-friction replies that confirm the student read the feedback without opening a full reply flow.
Subjects Radar chart
16 — Subjects Radar. A radar chart comparing a student's Attendance, Average Score, and Performance across all subjects — plotted against the class average. Each subject gets its own axis with a trend indicator, giving teachers and students an instant visual of where the student excels and where they need support.

Designed from zero — the most complex
new feature I shipped at Aladia

The Exam Creation system was a brand-new feature I designed entirely from scratch — the most technically and experientially complex thing I worked on at Aladia. Starting with a blank canvas, I defined the information architecture, user flows, and UI for the full system: written scheduled exams, written flexible exams, oral exams with breakout rooms, on-demand exams, AI-assisted question generation, live proctoring, post-exam evaluation, student recheck requests, and a normalised grading engine.

The Registry and performance system rounded out the full exam lifecycle — giving teachers a structured way to track progress over time, write meaningful feedback, and visualise each student's strengths across subjects through the Subjects Radar. The fixed performance formula (Attendance 30% + Exams 70%) was a deliberate design decision to ensure scores remained comparable and trustworthy across all courses.

Exam type usage distribution — across courses
Shows how instructors use different exam types, validating the need for flexible scheduling and evaluation modes
Quiz
38%
Midterm exam
27%
Final exam
19%
Pre-test
10%
Assessment
6%
3
Exam modes: written, flexible, oral
8
Question types in Document Builder
16
Screens across full exam lifecycle

The most important design skill is
knowing what to show and when

This project taught me that the biggest UX risk in complex systems isn't missing a feature — it's showing everything at once. The exam system had dozens of settings, states, and edge cases. My job was to sequence them: show the teacher only what they need for this step, trust that the next step will surface the next decision.

I also learned how to design for error states and edge cases as seriously as the happy path. The proctoring edge cases — microphone lost, WiFi dropped, student trying to exit fullscreen — each needed a clear, non-alarming UI that told the student exactly what happened and what to do next without killing the exam session.

Lesson 01
Sequence over exposure
In complex systems, showing users fewer things at the right moment is more powerful than showing them everything at once.
Lesson 02
Design edge cases first
Designing the proctoring error states before the happy path forced me to build a more robust and considered system overall.
Lesson 03
Portability is a design decision
Making exams course-agnostic wasn't just a technical choice — it shaped every screen in the flow. Designing for reuse from the start changed how the creation, assignment, and grading UX worked.
Back to portfolio
View all case studies →
Case study 06
Subject
Creation

The design decision that connected everything — reimagining Subject Areas from per-course silos into a global reusable system that links subjects, books, exams, and teachers across the entire Aladia platform.

Platform
Mobile & Desktop
Role
Sole designer — platform architecture, connected system design
Tool
Figma
Focus areas
Systems thinking IA Reusability Assignment flow

Subjects were trapped inside courses —
created once, used once, forgotten

Before this redesign, subjects on Aladia were created individually inside each course. Every time an instructor started a new course, they had to recreate the same subjects from scratch — Mathematics, Italian, History — with no connection to anything else on the platform. A subject assigned to one course had no relationship to the same subject in another course. There was no global Subject Area, no reuse, and no link between subjects and the books or exams that belonged to them.

The deeper issue was that each subject could have an assigned teacher — but that assignment only existed within the course it was created in. If a teacher was assigned to a subject in one course, they had to be manually invited to every new course that used the same subject. The platform had no way to understand that these were the same subject, the same teacher, and the same educational context.

01
No global subject system
Subjects were created per-course with no central library. The same subject had to be rebuilt from scratch every time a new course was created — no reuse, no shared structure.
02
Teacher assignments were isolated
A teacher assigned to a subject in one course had no connection to the same subject in another course. Every new course required a fresh manual invitation — even for the same teacher doing the same subject.
03
No link between subjects, books, and exams
Books and exams had no relationship to subjects at the platform level. There was no way to say "this book belongs to this subject" and have that connection automatically carry over when the subject was added to a course.

The admin who manages
50 subjects across 12 courses

FM
Francesca Mancini
41 · Academic coordinator, manages 12 courses and 50+ subjects · Rome · Tech comfort: 3/5
"I have Mathematics in 8 different courses. Each one has a separate copy with a separate teacher assignment. When Prof. Rossi goes on leave and I need to replace him everywhere — I have to do it 8 times."
Goals
Create subjects once and reuse them across all courses · Assign teachers to subjects globally, not per-course · See which subjects are connected to which books and exams
Frustrations
Rebuilding the same subject from scratch in every new course · Manual teacher invitations that get forgotten · No visibility into the full subject-book-exam-teacher graph
Desktop-only Manages at scale Needs global control Hates repetitive tasks

Create once, connect everywhere

Primary flow — Create subject and add to courseHappy path
Entry point
Admin navigates to Subject Areas from profile
1
Create subject
Creates new Subject Area with name, description, and optional hierarchy (parent subject)
2
Assign teacher
Assigns a teacher to the subject. This teacher will auto-follow the subject into any course
3
Link resources
Links books and exams to the subject. These resources travel with the subject when added to courses
4
Add to course
From any course, adds the subject → system prompts: "This subject has a teacher (Prof. X) and 2 books. Add them too?"
Connected
Subject, teacher, books, and exams all linked to the course in one action. Future changes propagate globally.

Move subjects out of courses and into
a global profile-level Subject Area

The core insight was that a subject is not a course-level concept — it's an organisational concept. Mathematics is Mathematics whether it's taught in Course A or Course B. The teacher who teaches Mathematics is the same person regardless of which course they're in. The books and exams for Mathematics are the same resources regardless of where they're used.

"The decision was to move Subject Areas out of courses entirely — into the profile of each organisation or freelance teacher. Create your subjects once, assign your teachers, link your books and exams. Then add any subject to any course — and everything follows automatically."

— Core design decision, Subject Areas

This single architectural decision cascaded into a connected system. When a subject is added to a course, and that subject has an assigned teacher who isn't yet a member of the course — the teacher is invited automatically. When a book or exam is linked to a subject, and that subject is added to a course — the system asks whether the book or exam should also be added, carrying the link forward. Subjects became the connective tissue of the platform.

One subject creation — everything
connected across the platform

The Subject Area system is what made Books, Exams, and Course Creation all feel like parts of one coherent platform rather than separate tools. Here's how the connections work in practice:

1
Subject → Teacher → Course (automatic invitation)
When a teacher is assigned to a Subject Area, and that subject is later added to a course, the system checks whether the teacher is already a course member. If not, they are automatically invited — eliminating a manual step that instructors consistently forgot to do.
2
Subject → Books → Course (smart suggestion)
When books are linked to a Subject Area, and that subject is added to a course, the system asks: "This subject has books. Do you want to add them to the course?" The book comes with its subject — instructors don't have to remember to add it separately.
3
Subject → Exams → Course (smart suggestion)
The same logic applies to exams. Exams linked to a subject travel with it when the subject is added to a course. This means a teacher who built a full subject — with a teacher, books, and exams — can add the entire package to any new course in one action.
4
Create once, reuse everywhere
Together, Subject Areas, Book Libraries, and Exam Collections form a universal reusable layer on the platform. A teacher or organisation builds their educational content once — and deploys it across as many courses as they need, with all relationships and assignments intact.

The architectural decision that made
the whole platform feel connected

The Subject Area redesign wasn't just a UI improvement — it was a platform-level architectural decision that I proposed and designed. By moving subjects from course-level silos into global profile-level libraries, I created the connective tissue that made Books, Exams, and Course Creation work as one coherent system rather than separate tools.

The automatic teacher invitation flow, the smart book and exam suggestions on subject assignment, and the reusable subject-to-course flow all emerged from this single decision. A teacher or organisation can now build their complete educational content once — subjects, books, exams, teachers — and reuse it across every course they create, with all connections carrying forward automatically.

This case study is the foundation on which the Book Creation and Exam Creation systems were built. Without global Subject Areas, neither the Book Library's subject assignment nor the Exam Collection's subject linking would have been possible.

Subject system — platform-wide impact
3
Systems connected — Books, Exams, Courses
0
Manual teacher invitations after subject link
1→∞
Create once, reuse across unlimited courses
Automatic connections triggered per subject assignment
When a subject is added to a course, the system automatically handles these connections — removing manual steps
Teacher auto-invited
82%
Books suggested
67%
Exams suggested
54%
All three triggered
41%
3
Systems connected by subject
0
Manual invites needed after link
1→∞
Create once, reuse anywhere

The best UX decisions are sometimes
architectural, not visual

This project taught me that the most impactful design decisions aren't always about the interface — sometimes they're about the underlying structure. Moving Subject Areas from course-level to profile-level was a structural decision, not a visual one. But it unlocked more UX improvements than any screen redesign could have.

I also learned the value of designing systems that think ahead for the user. The automatic teacher invitation, the smart book and exam suggestions — these weren't features the user asked for explicitly. They were friction points I identified by mapping the full workflow end to end, and then designing the system to handle them invisibly.

Lesson 01
Architecture is UX
The decision to move subjects to a global profile level was a structural choice — but it had more UX impact than any screen design in this project.
Lesson 02
Design the system, not the screen
Mapping the full workflow — subject → teacher → book → exam → course — revealed friction that no single screen would have shown. Systems thinking before screen design.
Lesson 03
Invisible UX is the best UX
Auto-inviting teachers and suggesting books on subject add weren't features users asked for — they were friction points I removed before users ever encountered them.
Next case study
Dolce Casa →
07
Case study 07
Dolce Casa
Interior Design

Redesigning an interior design e-commerce platform to democratize access to professional design services — making beautiful spaces accessible regardless of budget.

Platform
Desktop & Mobile
Role
UX/UI Designer
Duration
6 Weeks
Method
Double Diamond
Focus areas
UX Research Mobile-First E-Commerce Design System

Interior design is perceived as a
luxury most people can't access

78% of surveyed users felt interior design services were too expensive for their budget. Existing platforms failed to serve budget-conscious users or provide clear service tiers. No platform offered transparent, tiered pricing for diverse budgets.

Dolce Casa was built to change that — a platform where everyone can transform their living spaces through accessible consultations, curated furniture, and transparent pricing.

Problem
78% of surveyed users felt interior design services were too expensive. No existing platform offered transparent, tiered pricing for diverse budgets.
Solution
A platform where designers offer services at multiple price points, with upfront pricing, portfolio browsing, and a seamless booking-to-delivery experience.
6
Week sprint
12+
Screens designed
20+
Interviews

Double Diamond — from divergence
to a focused solution

We followed the Double Diamond framework — diverging to explore the problem space, then converging on a defined solution before expanding into development and refining through delivery.

Wk 1
Discover
Explored the problem space through user interviews, market research, and stakeholder mapping to understand motivations and pain points.
Wk 2
Define
Synthesised findings into user personas, journey maps, and a clear problem statement. Identified the core value proposition.
Wk 3–4
Develop
Ideated solutions through sketching and wireframing. Created low-fi prototypes and tested with users. Built out the visual design system.
Wk 5–6
Deliver
High-fidelity prototyping, usability testing with 12 participants, design iteration, and final handoff.

What we learned from
20+ user interviews

We conducted interviews, surveys, and competitive analysis to understand how people approach home design and what barriers prevent them from seeking professional help.

78%
felt interior design services were too expensive for their budget
65%
primarily use mobile when browsing for home design inspiration
82%
wanted to see pricing information upfront before committing
71%
preferred real project examples over generic product catalogs

User persona — designing for
real people, real constraints

M
Martin
40 · IT Developer · Works from home

An introverted developer who recently started working from home. He needs a proper home office that reduces stress and increases productivity, but feels overwhelmed by design choices and doesn't know where to start.

Goals
Separate work area from living space · Increase efficiency and focus · Create a calming environment
Needs
Proper home office setup guidance · Comfortable, stress-free layout · Expert help within a modest budget
Pain points
Can't find the right lighting · Overwhelmed by too many options · Needs help organizing limited space

A warm, approachable
visual design system

A palette anchored by teal as the primary action colour, with taupe and rose providing warmth and sophistication. Source Sans Pro serves as the type family across all weights.

Taupe
#A39E93
Cream
#EDEDED
Teal
#016655
Rose
#A8786D

Six key screens across the full
Dolce Casa landing experience

The landing page was designed to guide homeowners from inspiration to action — with transparent pricing, curated galleries, and a streamlined consultation booking flow. Every section was built mobile-first, then expanded to desktop.

Hero section
01 — Hero section. Trust badge, bold headline with italic accent, dual CTAs (primary teal + secondary outline), and social proof stats. Floating cards surface ratings and satisfaction data.
Features grid
02 — Why Dolce Casa. Six feature cards in a 3×2 grid with teal accent bars on hover. Icon-led layout communicates value propositions at a glance.
Design gallery
03 — Featured Designs. Filterable gallery with category tabs (All, Living Room, Bedroom, Office). Card-based layout with overlay hover effects.
Services section
04 — How We Work. Three-step numbered process with hero image. Guides users from Discovery through Design to Delivery.
Testimonials
05 — Testimonials. Star ratings with customer quotes, avatar badges, and role labels. Social proof from homeowners, designers, and developers.
CTA section
06 — CTA section. Final conversion block with three trust signals (free consultations, 30-day returns, white glove delivery) and a primary action button.

Validated through usability testing
with 12 participants

We measured task completion, time-on-task, and satisfaction scores across the full prototype. Results validated core design decisions and surfaced four key iterations.

94%
Task completion
2.3m
Avg. task time
84
SUS score
+62
NPS score
1
Navigation simplification
Reduced nav items from 9 to 6, decreasing time-to-target by 40%.
2
Price transparency
Added upfront pricing badges after 82% of test users asked about costs before clicking.
3
Mobile touch targets
Increased button sizes to 48px minimum with generous spacing for thumb navigation.
4
Checkout streamlining
Reduced checkout from 5 steps to 3, decreasing cart abandonment by 28%.

Research prevents assumptions,
transparency builds trust

This project reinforced that starting with thorough user research leads to solutions that address real needs rather than perceived ones. Designing for mobile first forced better content hierarchy, resulting in a cleaner desktop experience too.

Lesson 01
Research prevents assumptions
Starting with thorough user research led to solutions that addressed real needs rather than perceived ones.
Lesson 02
Mobile-first forces clarity
Designing for mobile first forced better content hierarchy, resulting in a cleaner desktop experience too.
Lesson 03
Test early, test often
Usability tests at multiple stages caught issues early and saved significant rework time.
Lesson 04
Transparency builds trust
Pricing transparency was the single most impactful feature for building user trust and conversion.
Back to portfolio
View all case studies →
Case study 04
Subscription Plans
Monetization System

Designing an end-to-end subscription system that lets organizations create tiered plans, learners discover and subscribe, and admins manage seats and licenses — turning one-time course sales into recurring revenue.

Platform
Web (Desktop & Mobile)
Role
Lead designer — research, personas, prototype, usability testing
Duration
8 Weeks
Method
End-to-end feature design
Focus areas
Information Architecture UI Design Prototyping Design System

Teachers had courses but
no way to package them

Organizations on the platform were selling courses individually — one-off transactions with no recurring revenue. Teachers wanted to bundle courses into subscription tiers (Starter, Pro, Team), but the platform had no mechanism for creating plans, managing subscribers, handling billing cycles, or assigning seats within an organization.

Learners, on the other hand, had no visibility into which organizations offered subscription access. There was no unified place to browse plans, compare tiers, or manage active memberships.

0
Recurring revenue options existed for teachers — every sale was a one-time transaction with no retention mechanism
3
Distinct user roles needed to interact with subscriptions: plan creators, individual subscribers, and organization admins managing seats
6+
Screens and flows required to cover the full lifecycle — from plan creation through checkout, management, and cancellation
B2B + B2C
The system needed to serve both individual learners subscribing for themselves and organizations purchasing seats for their teams

Understanding subscription
patterns across platforms

I studied how established platforms handle subscription creation and management — Stripe's plan builder, Kajabi's offer system, Teachable's pricing pages, and Coursera's enterprise seat management. The goal was to identify patterns that users already understand and adapt them to Aladia's unique model where organizations subscribe to other organizations.

"The most effective subscription builders show a live preview as the creator fills in details — this removes guesswork entirely and is the single most impactful UX choice."

01
Stripe's three-layer model
Separating Product (what you sell), Price (how much and how often), and Features (what the subscriber gets) keeps the system flexible as organizations grow and add tiers.
02
Draft-first creation
Plans should be saved as drafts and only published when ready — teachers may want to configure a plan before their course catalog is complete.
03
Seat-based licensing for B2B
When an organization subscribes, the admin needs to assign seats to individual team members — a pattern borrowed from tools like Slack, Figma, and Notion.

Mapping the subscription
lifecycle end-to-end

The subscription system touches three distinct user types, each with different entry points and goals. I mapped the complete lifecycle to identify every screen and decision point before moving to UI.

Creator
Build Plan
Set Pricing
Add Courses
Publish
Subscriber
Browse Plans
Compare Tiers
Checkout
Access Content
Org Admin
Subscribe
Assign Seats
Monitor Usage

From Figma to a working
prototype in code

Beyond Figma prototypes, I built a fully functional 1:1 prototype of the subscription system using Cursor and Claude. This wasn't a throwaway demo — it was a production-fidelity prototype that matched the platform's actual design system, component library, and interaction patterns.

{ }
Designer-built prototype, production-fidelity

Using Cursor as the IDE and Claude as an AI pair-programmer, I coded a working front-end prototype that replicated the full subscription flow — plan creation, tier comparison, checkout, and membership management. This bridged the gap between static mockups and the final implementation, allowing engineers to reference real, interactive screens instead of annotated wireframes. It also let me test edge cases (annual billing toggles, seat limits, price change displays) that are hard to validate in Figma alone.

Cursor Claude React Tailwind CSS

Three audiences, one billing system

Subscription systems are deceptively complex. The hardest part isn't checkout — it's the lifecycle after purchase.

Competitor benchmarking
Audited Stripe, Notion, and Figma subscription flows. Key patterns: annual/monthly toggle, "most popular" social proof, price change transparency. Most B2B tools treat seat management as an afterthought.
Role mapping
Three distinct users: creators (build plans), subscribers (buy/manage), org admins (purchase seats, assign licences). Each needed different info and actions from the same system.

The admin spending company money

GR
Giulia Romano
34 · Training coordinator · Turin · Tech: 4/5
"I'm spending company money. I need to see who has a seat, whether they're using it, and how to reassign it."
Goals
Clear team pricing · Self-serve seat management · Usage tracking for budgets
Frustrations
No individual/team distinction · No seat visibility · Can't reassign self-serve
Desktop-firstBudget-accountableAudit trail
DP
Davide Pellegrini
27 · Freelance instructor · Milan · Tech: 4/5
"I want monthly and annual plans with different pricing. I need subscriber counts and revenue at a glance."
Goals
Multi-tier plans · Revenue visibility · Draft/publish control
Frustrations
Accidental publishes · No subscriber preview · Manual price change comms
Mobile + DesktopRevenue-focusedControl

Three flows, one system

Creator flowHappy path
Entry
Creator navigates to Subscription Plans
1
Build
Sets tier name, features, pricing. Annual toggle auto-calculates savings
2
Preview
Sees exactly what subscribers will see
Publish
Plan goes live. Draft state prevents incomplete publishes
Org admin flowB2B path
Entry
Admin selects plan from marketplace
1
Seats
Chooses seat count, sees per-seat and total pricing
2
Assign
Opens seat panel, assigns licences, sees usage (5/8)
E1
Revoke
Member leaves → revoke → seat available → reassign. No ticket needed.

A plan builder that handles
the full tier lifecycle

Each teacher or organization creates their own subscription plan with multiple tiers (e.g. Starter, Pro, Team) — following the Kajabi/Teachable model, not the Udemy marketplace model. The builder needed to handle tier naming, pricing with monthly/annual toggle, course scope selection, seat type (individual vs team), free trials, and extras like books — all with a draft/publish workflow to prevent accidental launches.

01
Draft → Published workflow
Plans start as drafts so creators can configure everything before going live. Required to activate: tier name, price (or Free toggle), and at least one course. The Unpublish button lets creators pull a plan back without deleting it.
02
Course scope as the primary differentiator
Access is controlled entirely by course selection — not by feature toggles. This simplified the mental model: higher tiers include more courses, not more checkboxes. The "Include future courses" toggle auto-adds new content for premium tiers.
03
Cross-tier validation rules
No two tiers can have identical price AND course scope. Team tier price must exceed all individual tiers. Annual price must be less than 12× monthly. These rules prevent creator mistakes without blocking legitimate configurations.

From discovery to checkout
in three clicks

Subscribers encounter plans in four ways: browsing the homepage feed, visiting an organization's profile, viewing the Plans tab with tier comparison, and checking out through a modal. Each touchpoint is designed to move the user one step closer to a confident purchase decision.

Seven subscriber states,
one consistent pattern

The subscription lifecycle has 7 distinct states — from "no plan published" through active, trial, cancelled, and expired. Each state changes the UI: button text, banner colour, available actions, and price display. I designed a unified card pattern that adapts to every state while staying instantly readable.

Edge cases drove the design,
not just the happy path

01
Time-limited price lock over grandfathering
When a teacher raises a tier price, existing subscribers keep the old price for a fixed period, then transition to the new price with 30 days' notice. I chose this over permanent grandfathering (teacher loses revenue long-term) and next-renewal updates (too aggressive, high churn). The membership card shows both prices with the effective date — "$19/mo → $29 on May 18" — so there are no surprises.
02
Three discount layers with smart stacking
Annual discount (structural, always applies) + either marketplace promo or coupon code (whichever is better for the user, never both). If a coupon wasn't applied because the marketplace deal was better, we show: "Your coupon SAVE10 was not applied because the current promotion gives you a better deal." Transparency builds trust.
03
Seat management as a first-class panel
For B2B subscriptions, seat assignment is a persistent right-side panel in IAM. Admins see available seats (5/8), assign or revoke licenses per member with last-seen timestamps, and manage multiple tier subscriptions from the same creator. One member = one tier — reassigning moves them automatically.
04
Course removal blocked while subscribers exist
I pushed for this constraint: you cannot remove a course from an active plan with subscribers. Adding courses gives immediate access to everyone (Netflix model — the bundle grows, everyone benefits). But removing content would break the promise subscribers paid for. This asymmetry is intentional.
05
Seven subscriber states, one card pattern
No plan → Active → Trial → Cancelled → Expired → Reactivated (price same / up / down). Each state changes button text, banner colour, and available actions — but the card structure stays identical. I designed every state transition before drawing the happy path, because the edge cases define the system.

A complete subscription
ecosystem, shipped

The subscription system launched across all user roles — creators build multi-tier plans, learners discover and subscribe through the feed or profiles, and admins manage seats and licenses for their teams.

8
Screens designed across creation, discovery, checkout, and management
3
User roles served — creators, individual subscribers, and org admins
B2B+B2C
Both individual and team-based subscriptions supported from day one

What I learned from designing
a monetization system

Subscription ≠ payment
The hardest part wasn't checkout — it was the lifecycle after purchase. Renewals, cancellations, seat management, and price changes create an ongoing relationship that requires careful state management in the UI.
Three audiences, one system
Designing for creators, subscribers, and admins simultaneously forced me to think in systems rather than screens. Every decision in the plan builder had a downstream effect.
Prototyping in code changes the conversation
Building a 1:1 prototype with Cursor and Claude let me test edge cases that Figma couldn't — annual billing math, seat limit behaviors, price change displays. Engineers received a working reference, not a static spec.
Draft states prevent mistakes
Adding a draft/publish workflow prevented teachers from accidentally publishing incomplete plans. This small UX detail saved multiple support tickets during the first week of launch.
Back to portfolio
View all case studies →