Skip to content

Taskflow

Taskflow is a portfolio concept project: a SaaS project management tool for small teams, with real traction but a landing page that failed to communicate its value within the first 5 seconds. The work involved diagnosing the conversion problem, redesigning the message hierarchy, and building the full landing from scratch, with the visual system, copy, and responsive included.

The design was developed in Figma, the code in pure HTML/CSS/JS, using Claude Code to structure the component flow and ChatGPT to iterate copy alternatives before locking in the final direction.

Project Phases

Cold analysis of the original landing: without prior knowledge of the product, I measured what information was available within the first 5 seconds and what required scrolling to find. The diagnosis revealed the problem wasn't aesthetic but structural: the value proposition didn't survive the initial fold.

Full visual system built in Figma: indigo/violet palette with gradients, Google Sans type system, reusable components (feature cards, testimonials, pricing) and design of the sticky-scroll features section, the most technically and visually complex piece of the landing.

Built in pure HTML/CSS/JS, no UI frameworks. Claude Code was used to structure the component architecture and manage the interactive scroll states. Responsive was an independent iterative phase: mobile and desktop with completely separate layout logic to preserve visual integrity across both breakpoints.
6 Sections designed
2 Breakpoints with separate logic
20+ Headline variants compared
0 External libraries
The Challenge
"Traffic was coming in. Conversion wasn't. The problem wasn't in the design. It was in the order of the message."

The scenario is a product with traction and a landing page that fails to communicate its value in the first five seconds. A case where changing the CTA, moving the form or adding testimonials solves nothing, because the problem comes earlier: the visitor decides to leave before reaching the CTA.

The cold analysis was blunt: within the first 5 seconds, a visitor could see a product screenshot, a generic headline and a button. What they couldn't see was what the product did, who it was for, or why it was different from the 40 competitors in the same category. The value proposition was three scrolls down. Most visitors never got there.

How I
built it

A process that prioritized diagnosis over solution, and message structure over visual design.

01

Cold landing analysis

I reviewed the original landing without any prior context, timing exactly what information was visible before the first scroll. In 5 seconds: product screenshot, generic headline, CTA button. The differentiating value proposition didn't appear until the second section. The visitor had to work to understand what was being offered.

02

Rewriting the headline from the user's problem

The original headline described the product. I replaced it with one that names the specific problem it solves: "Teamwork, without the friction." I used ChatGPT to generate and compare over 20 variants before locking in the final direction, including an aspirational headline and a product-name-first headline, both of which we ruled out.

03

Building the visual system in Figma

Built the palette from scratch: indigo (#4F46E5) as primary accent with a gradient toward violet (#7C3AED), white background with very soft gray variants for alternate sections. The type system uses Google Sans across all weights. I defined all base components before designing any complete section.

04

Splitting the two CTAs by intent

The original landing had a single CTA: "Start for free." The cold visitor isn't ready to start: they're still trying to understand. I designed a secondary CTA ("See how it works") that keeps the evaluating visitor on the page without forcing a premature decision. The limit is two: more CTAs cause decision paralysis.

05

Building the sticky-scroll section with Claude Code

The features section was the most technically complex piece: a visual panel on the left that changes state (Kanban → Timeline → Reports) based on scroll position on the right. I used Claude Code to structure the Intersection Observer logic and manage active states without relying on jQuery or external libraries.

06

Responsive as a separate design phase

Responsive wasn't a final adjustment but a complete redesign phase. Mobile and desktop have entirely different layout logic in key sections (hero with cropped image, sticky-scroll converted to a simple list, featured pricing card with order -1). Each breakpoint has its own reading intent.

Tools & Stack

Pure HTML/CSS/JS as the development base, Figma for the visual system, and two AI tools as active working instruments throughout the process.

Figma HTML5 / CSS3 JavaScript (vanilla) Claude Code ChatGPT Google Fonts (Google Sans) Intersection Observer API

Design Decisions

The three choices that had the most impact on the final outcome, and the alternatives that were ruled out along the way.

Copy / Hierarchy
Headline written from the user's problem, not from the product

The original headline described the product: generic, no immediate identification. I replaced it with one that names the friction the visitor already knows before they know what Taskflow is. That inversion made visitors recognize themselves before evaluating the solution, which shortened the path to the CTA.

UX / Conversion
Dual CTA with differentiated intent

A single sign-up CTA assumes all visitors are equally ready to decide. The hot visitor converts with "Start for free." The cold visitor needs more context, so the secondary CTA ("See how it works") keeps them on the page without forcing a premature decision. Two CTAs in the hero don't compete: they complement each other.

Dev / Interaction
Native sticky-scroll with no external libraries

The features section required a visual panel that changed state based on scroll progress. I chose native Intersection Observer over GSAP ScrollTrigger or similar libraries: lower load weight, lower risk of cross-browser conflicts, and more readable code to maintain. The visual result is identical with a tenth of the overhead.

What I
learned

A conversion project teaches more about message and behavior than about visual design.

Before redesigning, you need to re-diagnose

A conversion problem can originate in the message, the visual hierarchy, the form friction, or a mismatch between traffic and the proposition. In this project, the team had tried three CTA changes without moving the needle because the problem came before the CTA: visitors had already decided to leave before reaching it. Redesigning without re-diagnosing produces a prettier landing with the same conversion rate.

Claude Code and ChatGPT as process tools, not replacements

Claude Code was useful for structuring the Intersection Observer logic and managing sticky-scroll states, tasks where a syntax error is costly and the correction cycle is slow. ChatGPT helped generate copy variants in parallel for comparison before deciding. Neither replaced design judgment: what they accelerated was the time between hypothesis and test.

Responsive on a conversion landing is a redesign, not a tweak

The mobile version can't just be the desktop shrunk down. In this project, the sticky-scroll that worked perfectly on desktop became a simple list on mobile, because trying to preserve the interaction on a small screen would have generated more friction than the product promised to eliminate. Every breakpoint needs its own reading intent.

Let's talk.

Location

Buenos Aires, Argentina.

Whatsapp

+5491123883442

Get in touch