← Return to work

Case study / 07 / Job application assistant

ApplyPH

A mobile-first job application assistant for Filipino job seekers, combining guided resume workflows, evidence-linked job matching, application packages, and tracking in a privacy-aware PWA.

Role
Independent developer
Context
Personal project
Status
In active development
ApplyPH — project interface

ApplyPH / Interface overview

01 / Context

The problem to solve.

Job seekers need to compare their real experience with a vacancy and prepare tailored documents without introducing unsupported claims or exposing private resume data.

02 / Approach

From need to interface.

ApplyPH guides applicants through resume intake, evidence-linked matching, follow-up questions, application-package generation, review, download, and tracking while requiring confirmation for factual changes.

What I built

  • Responsive, mobile-first interface
  • Private document and resume workflows
  • Application tracking with offline support
  • Automated and browser test foundations

03 / Implementation

How it fits together.

A Next.js and TypeScript PWA uses server-rendered routes and protected server APIs. Supabase provides authentication, PostgreSQL persistence, row-level ownership controls, and private file storage. Provider adapters support mock and planned live AI/payment modes; Docker and Node deployment files target a DigitalOcean VPS.

Decisions that shaped the build

  • Made evidence atoms and explicit confirmation the source of truth for generated facts
  • Revalidated sessions and roles on the server instead of relying on hidden frontend controls
  • Used deterministic mock providers so core workflows remain testable without paid credentials

Challenges

  • Keeping generated claims traceable to applicant-confirmed evidence
  • Protecting private documents and owner-scoped records
  • Preserving progress across multi-step AI, payment, and document workflows

04 / Delivery & lessons

Built, tested, and still learning.

Testing

Vitest covers validation, authentication policy, environment safety, downloads, PDF generation, application services, and other domain behavior. Playwright covers public pages, authentication, profile, matching, packages, downloads, payments, tracking, admin operations, security headers, and responsive layouts. Run `npm test` and `npm run test:browser`. Runtime Supabase RLS and Storage tests still need a working local Supabase environment; no coverage percentage is claimed.

Deployment

Next.js Node and Docker deployment path configured; public launch pending.

What I took forward

  • AI output should be treated as untrusted input and validated against confirmed facts
  • Authorization must be enforced at every server and database boundary
  • Idempotent workflow steps make retries safer for document and payment operations

05 / A conversation starts here

Have a website, web app, or Android project in mind?
Tell me what you’re working on.

Let’s make
it work.