A wizard who structures all your emails for you.
Codes in this repo should be able to parse raw email contents into structured contents, including email title, sender, content summary, and important dates. Optionally, it may be able to pull emails from modern mail boxes (such as outlook, gmail, 126/163.com, etc.), store parsed results in a calendar format and present them to users.
Architecture for asynchronous services (with kafka streams marked with /)
- use IMAP/POP3 protocol to retrieve emails from various mailboxes
- support 126/163.com mailboxes (with IMAP)
- support outlook mailboxes
- retrieve raw email contents from retrieved emails
- transform raw email contents into plain text
- discard image (for now)
- extract and keep plain text content
- extract email subject, sender, date and time
- deploy with microservice (together with A1)
- benchmark microservice performance
- construct prompts for ChatGPT/GPT
- build a small dataset of emails and the structured summary
- explore different models and different prompts
- set up evaluation metrics
- concurrent ChatGPT requests
- use OpenAI API or other models to get structured summary
- obtain model output from prompts
- parse model output into structured summary
- migrate to langchain?
- deploy with microservice
- benchmark microservice performance
- design API protocol
- CRUD operations interface
- Implement APIs
- database design
- choose database engine
- design database schema
- CRUD for email db
-
add_row -
update_item -
delete_row -
query
-
- CRUD for user db
-
add_row -
update_item -
delete_row -
query
-
- CRUD for event db
-
add_row -
update_item -
delete_row -
query
-
- testing
- database design
- deploy as a microservice
- testing
- benchmark microservice performance
- backend API interface design
- refresh events, query events, and more
- handle requests by interacting with microservices
- choose microservice framework
- implement logic with prepared microservices
- retrieve emails from user mailboxes
- extract new emails
- parse to events
- store results to database
- query database for results
- user registration
- testing
- script testing
- API tools testing
- frontend UI design and development
- UI wireframe
- build UI with React
- implement main calendar page (use fake user_id and secret for now)
- implement add email account (use fake autheticate for now)
- implement login page (get user_id and secret)
- implement register page (get user_id and secret)
- implement logout mechanism
- implement intro page
- implement account authorization grants
- integrate with backend API
- integrate with updated APIs
- deploy to production server
- support gmail mailboxes
- refine API interface
- migrate to RESTful APIs
- refine API interface
- add remove mailbox functionality
- revoke authorized mailbox access
- add event search (pure frontend for now)
- make the UI more beautiful
- iterate with @mui
Following the best practices for building scalable backend system
- refactor the microservice to listen from kafka logs
- async / multi-threading retrieving emails
- optimize QPS
- refactor the microservice to listen from kafka logs
- async / multi-threading calling LLM API
- optimize query
- implement caching
- implement auto-scaling
- monitor systems
- use CDN
- improve responsiveness via message queues
- set up kafka servers
- refactor retrieve-parse-display flow to be asynchronous
- listen to kafka logs
- return events via websocket
- faster source retrival
- update outlook oauth to auth code flow
- support exchange protocol
- handle html content
- better precision and recall
- timezone
- refine API interface
- refine API interface
- API testing
- microservices testing
- migrate to full docker orchestration
- migrate to docker compose
- deploy with k8s (depending on machine resources)
- update outlook auth to auth code flow
- add forget password functionaility
- make the UI more beautiful
- add/remove events in user calendar based on user actions
- find libraries to access user calendar (possibly outlook calendar)
- add links to user calendar in UI
Use ghz with Docker for benchmarking gRPC microservice performance:
DOCKER_BUILDKIT=1 sudo docker build --output=/usr/local/bin --target=ghz-binary-built https://github.com/bojand/ghz.git