Career Clip

Breakdown

Career Clip logo mark

Independent product · designed and built end to end

Independent product

A calmer way to navigate the job search.

Career Clip turns a scattered job hunt into one visual system: every application, the stage it is at, and the next thing actually worth doing.

Role

Product Designer · UX Engineer · Developer

Focus

Product strategy, UX/UI, interaction design, development

Platform

iOS and Android · React Native / Expo

Status

In development · local beta

Career Clip applications list with search, saved views and filters
Career Clip home dashboard
Career Clip Clip Card milestone summary

The problem

The search stops being a search and turns into an admin job.

Past the first twenty applications the hard part is no longer finding roles. It is remembering what you already did: who replied, what stage each role is at, and which thread has gone quiet.

01

The spreadsheet

Accurate the first week. Out of date by the third, because updating a row is never the most urgent thing.

02

The inbox

Rejections, scheduling and recruiter threads live next to everything else you get sent.

03

Twenty open tabs

Job posts stay open because closing one means losing it. The posting expires anyway.

04

Memory

The part that fails first, usually right before someone asks how the search is going.

This started as an observation, not a brief. The same sentence kept turning up wherever graduates talked about looking for work:

“I’ve applied to 50 jobs.”

“I’ve sent more than 100 applications.”

“I can’t even remember where I’ve applied anymore.”

An enormous amount of work, with almost nothing tangible to show for it. That contradiction is where the product started, and it is the reason the Clip Card exists at all.

I wanted Career Clip to answer one question immediately: where does every application stand?

Positioning

Not another job board.

Career Clip doesn’t need to compete with LinkedIn or Indeed for job listings. It handles the part that starts once you’ve decided a role is worth going for.

Everywhere else

Helps you find jobs

Job boards, company pages, recruiters and referrals all end at the same place: you have applied, and now it is your problem to remember.

Career Clip

Manages everything that happens because you are looking

The record of where you applied, what stage it reached, what you sent, what came back, and what all of it adds up to. It gets more useful the longer the search runs.

Product principles

Four rules that settled most of the arguments.

Every screen in the product had to earn its place against these. When a feature and a principle disagreed, the principle won.

Clarity

Know where everything stands

One glance should answer the status question. No counting, no cross-referencing, no scrolling to be sure.

Low friction

Updating takes seconds

If logging a change costs more than the change is worth, people stop logging. Capture had to be near-instant.

Calm

The interface adds no pressure

Job searching is stressful enough. No streaks, no scores, no red badges for being human.

Progress

Effort stays visible

Long searches feel static. The product shows movement that already happened, not just what is outstanding.

The system

One product doing four jobs.

Capture a role, keep it current, understand the pattern, and carry something out of it. Each surface answers a different question, and none of them ask you to maintain a database.

Home

What changed, and what needs you today

Attention first, then the pipeline snapshot, then recent movement. The order matches how people actually check in: the overdue thing before the summary.

Career Clip home dashboard
Career Clip home dashboard

Clip Card

Making invisible effort visible

Career Clip Clip Card milestone summary
Career Clip logo mark

Career Clip

Clip. Track. Get hired.

Applications

Search, saved views, stages

Career Clip applications list with search, saved views and filters

Insights

Pattern, not a scoreboard

Career Clip insights dashboard

Capture

Two ways in, both reviewed

Career Clip add application menu

The loop

The job is found somewhere else. Everything after that happens here.

Career Clip does not compete for job listings. It starts the moment a role becomes interesting and carries it through to something worth looking back on.

01

Find

The job lives somewhere else. A board, a careers page, a recruiter.

02

Clip

One action brings it in, before the tab closes.

03

Track

Stage, dates, source and notes stay with the role.

04

Progress

The status changes as things actually move.

05

Understand

Patterns across the whole search, not one row.

06

Share

Effort becomes something you can actually show.

Stages an application moves through

Saved

Applied

Assessment

Interview

Offer

Closed

Evolution

Where it started, and what it became.

The first version solved the tracking problem but still read like a database. Later passes went after hierarchy, speed and visual noise, and removed things that were never connected.

01 · Home

Attention moved above the summary

The early build opened with a five-metric snapshot. Useful, but it never told you what to do next.

Needs attention was promoted to the top, grouped into Overdue, Today, Upcoming and Needs a date.

Snapshot tiles grew into larger scrollable targets instead of a cramped five-across row.

Early build · June

Early Career Clip home screen, June 2026

Current build

Career Clip home dashboard

02 · Applications

A list stops working at scale

Filter chips alone were fine at twenty roles and useless at a hundred. Search came first.

Saved views replaced setting the same filters again every week.

The list was virtualised. The earlier screen rendered every record at once.

Result count and active-filter count are always visible, so a filtered list never reads as an empty one.

Early build · June

Early Career Clip all-applications list

Current build

Career Clip applications list with search, saved views and filters

03 · Capture

Cutting the routes that were not real

The early screen offered four ways in, including screenshot import and Gmail. Two of them did not exist yet.

Anything without a working capability behind it was removed rather than shown as coming soon.

What was left got a clear promise: nothing is saved until you review and confirm it.

Early build · June

Early Career Clip add-application screen

Current build

Career Clip add application menu

Building it

Designing it was only half the work.

Career Clip isn’t a prototype of an app. It is the app: written, debugged, tested and running on a device. I used AI tools to move faster through exploration and boilerplate, but the product decisions, the interaction design, the debugging and the final build were mine.

React Native

Expo · Expo Router

TypeScript

Zustand

React Hook Form + Zod

Reanimated

react-i18next

Supabase schema + RLS

Vitest

EAS Update

The list had to be virtualised

Rendering every record in a scroll view was fine with test data and wrong with real volume. Moving to a virtualised list changed the screen too: search, result counts and sorting all had to keep working through re-renders and stay put during a session.

Local-first, with a real migration

Applications live on the device. Moving the stored schema from v1 to v2 meant reading v2 first, migrating a valid v1 payload once, and only removing v1 after the new write succeeded, with recovery from a corrupt v2 back to a valid v1 backup.

Accessibility was a code problem

Contrast was the easy part. The rest was semantics: roles and labels on icon-only buttons, 44–48pt tap targets, errors that get announced, and short text summaries for charts so a screen reader can read them.

design tokens · theme.ts

// Burnt orange keeps the identity and still

// Burnt orange keeps the identity and still

// clears 4.5:1 against the light canvas.

// clears 4.5:1 against the light canvas.

brand #C94F13

brand #C94F13

cta #B84312

cta #B84312

pressed #923109

pressed #923109

// A soft stone canvas reduces glare so white

// A soft stone canvas reduces glare so white

// content reads as its own level, not the page.

// content reads as its own level.

background #F4F3EF

background #F4F3EF

surface #FCFBF8

surface #FCFBF8

I kept the reasoning next to the values, so every token shows the constraint it came from.

Shipped state

218

unit tests passing

3

languages at key parity

5

core destinations

4

appearance modes

Light, dark, increased contrast and reduced motion are all honoured from system settings and from in-app preferences.

Iteration

Building the real thing exposed problems static screens never did.

Each of these seemed like a reasonable decision at the time, and turned out to be wrong once the app was running on a device with real data in it.

01 · Status

A board that could not be used as a board

Was

A drag-style status board that looked movable but was not, and could not be operated without a pointer.

Now

Renamed it to Status overview and added a proper move-to-stage control with undo. Same job, but it now works with assistive technology.

02 · Attention

“Needs attention” was a list, not a decision

Was

One flat list of everything overdue, which grew until it was as hard to read as the inbox it replaced.

Now

Split into Overdue, Today, Upcoming and Needs a date, each row carrying Mark done, Snooze, Not needed and Open.

03 · Import

Review asked for too much too early

Was

The import review screen presented every extracted field at once, so confirming a saved role felt like filling in a form twice.

Now

Cut to the required and uncertain values, with the rest behind progressive disclosure, and edited drafts now persist if you leave and come back.

04 · Honesty

Interface promising things the code could not do

Was

Screenshot import, Gmail import, subscriptions and support actions were all visible while none of them were connected.

Now

Anything without a real capability behind it was removed rather than labelled “coming soon”, and the beta says plainly that data stays on the device.

Also fixed on the way, none of which were visible in a mockup

profile editing crashing to a white screen

category reordering

keyboards covering input fields

the wrong application opening from a list

location text truncation

dropdown behaviour

salary and date inputs

quote editing

brand colour drift

The audit

I scored my own product 5.2 out of 10.

Partway through I stopped adding features and ran a full audit of the build: UX, accessibility, trust, data handling and store readiness. It didn’t go well, and that ended up being the most useful week of the project.

The finding

The interface was promising a level of trust and completeness that the app couldn’t actually deliver yet.

It looked like a finished product. Underneath, account creation was a local simulation, deletion and support rows did nothing, the legal copy still said it was a draft, and career data sat in unencrypted device storage.

What changed because of it

The roadmap stopped being a list of features. Everything before the next release is the infrastructure the interface had already been promising.

Priority areas

Trust

Security

Account lifecycle

Data lifecycle

Privacy

Localisation

Consistency

Target after the roadmap: 8.2. Being honest about the score was more useful than another round of polish.

The current build

Where it is now.

A local beta running on a device. No account, no cloud sync, and nothing left in the interface that the app can’t actually do.

Application detail

One role, one next action

Location, dates, source and categories sit under the role, and the next action carries a date with Mark done and Snooze right beside it.

Career Clip application detail with next action
Career Clip application detail with next action

Context

The things you forget first

People, interviews, materials and a sanitised copy of the job description stay attached to the application instead of only being in your head.

Career Clip application context: people, interviews and materials
Career Clip application context: people, interviews and materials

Dark mode

A palette, not an inversion

Career Clip home dashboard in dark mode

Insights

The pipeline as a shape

Career Clip pipeline detail

Your data

Exportable, and stripped

Career Clip data export

What I took from it

A product can look finished long before it is finished.

The screens I was happiest with were usually the first ones to break. A dense home screen looks confident in a mockup, but on a real phone at arm’s length it just looks busy.

Early on I was mostly working on screens, states and visual polish. The audit showed me that product design is also about data, trust, error handling, privacy and giving people control, and none of that shows up in a mockup.

Doing both the design and the build changed how fast I could work. When a layout problem turned out to be a data problem, being able to go and fix it myself meant I could solve it properly instead of working around it.

What it changed about how I work

Audit before adding

A week spent auditing my own product was more useful than a month of new screens.

Design the data, not just the screen

A lot of the layout problems turned out to be data problems.

Get it onto a device early

Assumptions that seemed fine in a mockup fell apart on a real phone with real content.

Future direction

Where it goes after the beta.

None of this is built yet. It’s the direction I’m taking the product, and the reason the data model already looks the way it does. Everything below is a concept, not something that shipped.

Not built

Clip it from anywhere

Adding a role should be the fastest thing in the product. A browser extension and a share sheet would make “clip it” a single action from wherever the job was found, rather than something you come back to later.

Not built

Let the inbox do the updating

Forward a confirmation, a recruiter reply or a rejection, and the tracker updates itself. The application record is already set up for it. What’s missing is safe parsing and a review step so nothing changes without you approving it.

Not built

Tailoring a CV to a posting

One master CV in the product. Point it at a saved job description and it emphasises the experience that role actually asks for, without inventing any. The generated version stays attached to that application, which answers the question nobody can ever remember: which CV did I send them?

Not built

A web half to the product

Mobile is for capturing and tracking. The heavier work belongs on a bigger screen: documents, CV versions, deeper analysis and bulk organising. One system, two places, each doing what it’s best at.

Career Clip logo mark

Career Clip

Designed by Tsepo Tsolo-Mohlakwana

Back to desktop