How souleyfall/airpost works
airpost is a personal apprenticeship-job search and application tracker. The user signs in, configures a profile, reviews collected and matched offers, drafts and validates tailored letters, and tracks application status and replies. The README documents Gmail drafts as user-reviewed only—never sent automatically—and lists the collection sources and Gemini letter generation. Backend source excerpts are incomplete, so unsampled collection, statistics, and reply-sync internals are represented at their existing subsystem directories; uncertain implementation links are omitted.
Main entry points: App.tsx Web routes · client.ts API client · prisma.service.ts PostgreSQL database · llm.service.ts LLM service
Components 26
Web application
- Web routes
apps/web/src/App.tsx - API client
apps/web/src/api/client.ts - Login screen
apps/web/src/pages/LoginPage.tsx - Profile screen
apps/web/src/pages/profile/ProfilePage.tsx - Offer review
apps/web/src/pages/review/ReviewPage.tsx - Application tracking
apps/web/src/pages/tracking/TrackingPage.tsx - Sources screen
apps/web/src/pages/sources/SourcesPage.tsx - Statistics screen
apps/web/src/pages/stats/StatsPage.tsx
Offer workflow
- User profile
apps/api/src/profile/profile.service.ts - Offer collection
apps/api/src/collection - Offer catalog
apps/api/src/sources/offers.service.ts - Offer matching
apps/api/src/matching/match.service.ts - Application lifecycle
apps/api/src/applications/applications.service.ts - Letter generation
apps/api/src/letters/letter.service.ts - Application statistics
apps/api/src/stats/stats.service.ts
External integrations
- Job sources
apps/api/src/sources - LLM service
apps/api/src/llm/llm.service.ts - Gmail drafts and replies
apps/api/src/gmail/gmail.service.ts - Reply synchronization
apps/api/src/gmail/reply-sync.service.ts
API and persistence
- Authentication
apps/api/src/auth/auth.controller.ts - Session guard
apps/api/src/auth/auth.guard.ts - PostgreSQL database
apps/api/src/prisma/prisma.service.ts
Other components
- User
- Gemini
- Gmail
- Job providers
Connections 30
- User → Web routes: uses
apps/web/src/App.tsx - Web routes → Login screen: routes to
apps/web/src/App.tsx - Web routes → Profile screen: routes to
apps/web/src/App.tsx - Web routes → Offer review: routes to
apps/web/src/App.tsx - Web routes → Application tracking: routes to
apps/web/src/App.tsx - Web routes → Sources screen: routes to
apps/web/src/App.tsx - Web routes → Statistics screen: routes to
apps/web/src/App.tsx - Login screen → API client: calls
apps/web/src/pages/LoginPage.tsx - Profile screen → API client: calls
apps/web/src/pages/profile/ProfilePage.tsx - Offer review → API client: calls
apps/web/src/pages/review/ReviewPage.tsx - Application tracking → API client: calls
apps/web/src/pages/tracking/TrackingPage.tsx - Sources screen → API client: calls
apps/web/src/pages/sources/SourcesPage.tsx - Statistics screen → API client: calls
apps/web/src/pages/stats/StatsPage.tsx - API client → Authentication: HTTP requests
apps/web/src/api/client.ts - Authentication → Session guard: creates sessions
apps/api/src/auth/auth.controller.ts - Session guard → PostgreSQL database: checks session
apps/api/src/auth/auth.guard.ts - User profile → PostgreSQL database: reads and writes
apps/api/src/profile/profile.service.ts - Offer collection → Job sources: collects from
apps/api/src/collection/collection.controller.ts - Job sources → Job providers: queries
- Offer collection → Offer catalog: updates offers
- Offer matching → PostgreSQL database: reads and writes
apps/api/src/matching/match.service.ts - Offer matching → LLM service: requests matches
apps/api/src/matching/match.service.ts - LLM service → Gemini: generates JSON
- Application lifecycle → PostgreSQL database: reads and writes
apps/api/src/applications/applications.service.ts - Application lifecycle → Gmail drafts and replies: manages drafts
apps/api/src/applications/applications.service.ts - Letter generation → LLM service: generates letters
- Gmail drafts and replies → Gmail: creates drafts
- Reply synchronization → Gmail: checks replies
- Reply synchronization → PostgreSQL database: updates applications
- Application statistics → PostgreSQL database: reads statistics