How michelebellitti/loop works
Loop is an email-first job application tracker: it reads mailbox signals, classifies and resolves them into applications, derives pipeline state, and asks the user to review uncertain cases. The user signs in, connects a mailbox or manually adds an application, then views the derived pipeline and can correct or review it. The README documents chat, statistics, nudges, push, and calendar signals as additional product capabilities. Some service wiring is documented only at a high level, so uncertain call relationships are omitted.
Main entry points: pool.py Application database · app.py HTTP API · applications.py Application routes · api.ts API client
Components 25
PWA
- App shell
frontend/src/App.tsx - Pipeline view
frontend/src/mobile/Pipeline.tsx - Review queue
frontend/src/sheets/ReviewQueue.tsx - API client
frontend/src/api.ts
API
- HTTP API
backend/loop/api/app.py - Sessions and auth
backend/loop/api/auth.py - Application routes
backend/loop/api/routes/applications.py - Review routes
backend/loop/api/routes/review.py - Assistant chat
backend/loop/chat/agent.py
Mailbox ingestion
- Google mailbox client
backend/loop/google/client.py - Mailbox connector service
backend/loop/services/connector.py - Message normalisation
backend/loop/connector/normalise.py - Calendar signals
backend/loop/google/mailbox.py
Signal processing
- Signal extraction
backend/loop/services/extractor.py - Ladder classifier
backend/loop/ladder/classifier.py - Application resolution
backend/loop/services/resolver.py - Stages and activity
backend/loop/domain/stages.py
Application state
- Event pipeline
backend/loop/services/pipeline.py - Work queue
backend/loop/db/queue.py - Application database
backend/loop/db/pool.py - Nudges and notifications
backend/loop/services/nudge.py - Web push
backend/loop/services/push.py
Other components
- User
- Mail provider
- Browser user
Connections 25
- User → App shell: uses
- App shell → API client: requests
- API client → HTTP API: HTTP calls
- HTTP API → Sessions and auth: gates requests
- HTTP API → Application routes: dispatches
- HTTP API → Review routes: dispatches
- Application routes → Application database: reads and writes
- Review routes → Application database: reads and writes
- Pipeline view → API client: fetches board
- Review queue → API client: fetches and answers
- Mailbox connector service → Google mailbox client: reads mailbox
- Google mailbox client → Mail provider: OAuth and Gmail API
- Mailbox connector service → Message normalisation: normalises messages
- Calendar signals → Google mailbox client: reads calendar parts
- Signal extraction → Ladder classifier: classifies signals
- Application resolution → Ladder classifier: uses classification
- Event pipeline → Work queue: consumes events
- Event pipeline → Application database: appends and projects
- Application routes → Work queue: publishes manual events
- Review routes → Work queue: publishes corrections
- Application routes → Stages and activity: derives display state
- Assistant chat → Application database: uses application context
- Nudges and notifications → Application database: reads application state
- Nudges and notifications → Web push: dispatches notifications
- Web push → Browser user: pushes alert