Hoppa till huvudinnehåll
Rai Gomes / Dev+Des
Tillbaka till projekt

Flaggskeppsprodukt · Oberoende produkt · Publik beta

Lytdash

Håll ordning på jobbsökandet och fatta bättre CV-beslut.

Jag byggde Lytdash för att hantera ansökningar på ett ställe. Produkten följer varje ansökan, jämför ett CV med en jobbannons, skapar evidensbaserade utkast och importerar jobb från sidor som stöds. Den finns på svenska, engelska och portugisiska.

Besök webbplatsen
ROLL
Produktdesigner och frontendutvecklare
VARAKTIGHET
Pågående
TEKNIK
Next.js, TypeScript, Supabase, AI
TEAM
Solo (design & kod)
Produktdesign och frontendutveckling genom ett komplext arbetsflöde.
Produktdesign och frontendutveckling genom ett komplext arbetsflöde.

01 / Problemet

Mitt jobbsökande var utspritt på för många ställen

Jag började bygga Lytdash under mitt eget jobbsökande. Jag hade öppna flikar, sparade annonser, mejl och ett kalkylblad som snabbt blev inaktuellt. Jag saknade också ett tydligt sätt att jämföra mitt CV med varje roll.

01

Allt är utspritt

Ansökningar hamnar utspridda i flikar, bokmärken och mejl. Uppföljningar glöms bort, och plötsligt har du en intervju imorgon som du inte hunnit förbereda.

02

Du får aldrig återkoppling

Du skickar ditt CV och hör ingenting. Det finns inget sätt att veta om dina kompetenser matchar annonsen, vad som saknas eller varför ingen svarade.

03

Ett CV för alla jobb

Att anpassa ett CV för varje roll tar tid. Det är lätt att återanvända samma version utan att kontrollera om relevant erfarenhet framgår tydligt.

02 / Produkten

Från utspridda ansökningar till en tydlig pipeline

Användaren kan importera ett jobb, lägga det i pipelinen, jämföra sitt CV med annonsen och förbereda en anpassad version utan att växla mellan separata verktyg.

Pipeline-tavla: Ansökningarna bor på en kanban-tavla med uppföljningsknuffar och intervjupåminnelser. Försenade åtgärder får störst visuell vikt, så tavlan visar alltid var du ska titta härnäst.
01

Pipeline-tavla

Ansökningarna bor på en kanban-tavla med uppföljningsknuffar och intervjupåminnelser. Försenade åtgärder får störst visuell vikt, så tavlan visar alltid var du ska titta härnäst.

AI CV-matchning: AI:n läser annonsen och ditt CV en gång och sparar det den hittar. En deterministisk motor poängsätter sedan matchningen, så samma indata ger alltid samma poäng, med delpoäng du faktiskt kan agera på.
02

AI CV-matchning

AI:n läser annonsen och ditt CV en gång och sparar det den hittar. En deterministisk motor poängsätter sedan matchningen, så samma indata ger alltid samma poäng, med delpoäng du faktiskt kan agera på.

Skräddarsytt CV med kvalitetsgrind: Produkten skapar ett utkast utifrån annonsen. En kvalitetskontroll jämför det med originalet med samma sparade underlag. Effekten behöver fortfarande valideras på produktnivå.
03

Skräddarsytt CV med kvalitetsgrind

Produkten skapar ett utkast utifrån annonsen. En kvalitetskontroll jämför det med originalet med samma sparade underlag. Effekten behöver fortfarande valideras på produktnivå.

Import med ett klick: Chrome-tillägget fångar jobbannonser från plattformar och sidformat som stöds. Inget klipp och klistra, och inga API-nycklar sparas i webbläsaren.
04

Import med ett klick

Chrome-tillägget fångar jobbannonser från plattformar och sidformat som stöds. Inget klipp och klistra, och inga API-nycklar sparas i webbläsaren.

03 / Designprocess

Designsystemet kom före den första skärmen

Jag skrev designsystemet innan jag byggde dashboarden. Tokens, djupnivåer och åtgärdshierarki kom först, skärmarna efteråt. Varje yta hämtar från samma sanningskälla, i både mörkt och ljust läge.

01

Tydlighet först

En användare ska se vad som kräver uppmärksamhet inom en sekund efter att dashboarden öppnats. Försenade uppföljningar och kommande intervjuer får störst visuell vikt.

02

Djup i lager

Bakgrund, yta och upphöjda lager ser tydligt olika ut i båda teman. Djupet sköter hierarkin, vilket frigör färgen till att kommunicera status.

03

Tyst självförtroende

Inget dekorativt brus och inga generiska kortrutnät. Tunna kanter, lugn rörelse och typografi får göra grovjobbet.

04

Tillståndsverb, inte uppgiftsverb

Under en copy-genomgång märkte jag att 'Intervju bokad' känns mycket bättre än 'Boka intervju'. Gränssnittet firar ditt momentum i stället för att ge dig läxor.

04 / Utveckling

En arkitektur som inte litar på AI:n

Den svåra delen var att hålla den AI-stödda analysen konsekvent. Varje anrop passerar lager för återförsök, cache och evidens innan resultatet når poängmotorn.

  1. 01Default-deny-middleware och radnivåsäkerhet över produktens skyddade dataytor
  2. 02Auth-hjälparna är server-only, så ett misstag fäller bygget i stället för att slinka igenom
  3. 03Atomära Postgres-funktioner för rate-limit-räknare, utan läs-kontrollera-skriv-kapplöpningar
  4. 04CI kör typkontroll, lint, enhetstester och e2e-tester vid varje push
Lytdash browser-extension import flowing into the application pipeline
Jobb som importeras från tillägget går genom token-autentiserade API-routes. Varje AI-anrop omsluts av samma retry- och cachelager, och extraherad evidens sparas och återanvänds så att poängen förblir konsekventa överallt.

05 / Resultatet

En publik beta formad av verkligt produktarbete

Lytdash är live i publik beta och utvecklas aktivt. Inbjudna externa testare har använt produkten. Den samlar AI-stödda funktioner, säkerhetskontroller, kvalitetskontroller och tre gränssnittsspråk i en kodbas.

Publik beta
Nuvarande produktfasLive och under aktiv utveckling med inbjudna externa testare
3
GränssnittsspråkEngelska, portugisiska och svenska översättningskataloger hålls i paritet
Free + Pro
ProduktplanerPlandefinitioner och Stripe-baserade betalningsflöden är implementerade
Publik
Chrome-tilläggImporterar jobb från flera plattformar och sidformat som stöds

06 / Lärdomar

Vad projektet lärde mig

Arbetet med Lytdash lärde mig att planera för inkonsekvent AI-utdata, skydda användardata och göra produktregler till tester.

01

Behandla AI som ett opålitligt beroende

Jag lärde mig att designa för modellen jag faktiskt har, inte den jag önskar att jag hade. Spara dess utdata, omslut varje anrop med samma skyddsnät och låt aldrig två olika extraktioner låtsas vara en sanning.

02

Invarianter slår intentioner

En prompt som säger 'gör det aldrig sämre' är en önskan. Ett test som verifierar det är en garanti. Så ofta jag kan gör jag om produktlöften till tester.

03

Ett designsystem sparar tid senare

Att skriva tokens och hierarkiregler före den första skärmen kändes långsamt. Det gjorde senare skärmar snabbare att bygga och höll mörkt och ljust läge synkroniserade.

04

Säkerhet är en standard, inte en funktion

Neka som standard, skydda produktdata med explicita policies och håll hemligheter på servern. Lärdomen är strukturell: gör den säkra vägen enkel och granska undantagen.

05

Användare läser utfall, inte infrastruktur

Mitt första kvotfelmeddelande pratade om AI-leverantörens faktureringsinställningar. Ingen som använder produkten kan göra något med det. Nu berättar varje fel vad användaren faktiskt kan göra härnäst.

06

Skriv ner lärdomarna

Projektets learnings-fil har vuxit till över tusen rader regler ur riktiga buggar. Halva värdet ligger i själva skrivandet. En bugg är inte klar när den är fixad. Den är klar när regeln som förhindrar hela buggklassen är nedskriven.

Tack för att du läste. Låt oss höras.

Har du en roll eller ett produktproblem i åtanke?