All projects

Deployed project

Askel Job-Search Workspace

Job seekers lose track of applications and interviews buried in their inbox. I built and run Askel, a production app that reads Gmail and Calendar, proposes board updates for review, and keeps every application, interview and contact in one place.

Problem and constraints

A job search spreads across email threads, calendar invites and booking links. Updating a tracker by hand falls behind within a week, and a missed recruiter reply can cost an offer.

Role and ownership

Founder and sole engineer at CIE LTD: product, architecture, code, infrastructure, releases and support.

Key engineering decisions

  • Sync proposes, the user accepts: email and calendar changes land in a Review Queue, and opt-in auto-apply for clear cases can always be undone
  • Rule-based email classifier first, with optional Claude passes for polish and questions, so the core works without a model call
  • Browser working copy plus a Neon-backed board with optimistic concurrency, so two devices stay in step without losing edits
  • Gmail access through InboxLink, a separate connector service, instead of mail code inside the app
  • Askel Assistant, an in-app help chat with configurable agent versions, per-user spending budgets and response limits, so model costs stay bounded
  • Claude Code and Codex set up for the repo with project instructions, reusable skills, memory and tool restrictions; Codex reviews and tests pull requests with read-only access

Tradeoffs and alternatives

  • Asking the user to accept changes is slower than full automation, but nothing changes on the board without the user seeing it
  • Read-only mail and calendar scopes limit features (no sending on the user's behalf) in exchange for a smaller security surface

Reliability, deployment, and observability

Every pull request runs lint, type checks, the full test suite and a production build; changes go to staging before production, and classifier changes are scored against the real-mail test set before merge.

Results and lessons

  • A production app with web, installable PWA and phone builds, shipped by one engineer
  • Classifier regressions are caught before release by fixtures taken from real recruiting email
  • AI features ship with a cost ceiling per user, set in configuration rather than code

Technologies

Next.jsTypeScriptReactAuth.jsNeon PostgresVercelGitHub ActionsClaude APIReact Native