AI Contact Reminder
Run the project with npm start from the project directory.
A lightweight contact management system that helps users prioritize professional relationships and decide who to reach out to.
It includes:
- Contact storage (file-based JSON)
- Recommendation engine
- Priority ranking system
- AI-style message generator
- Minimal web UI for managing contacts
System Design:
Frontend (HTML/CSS/JS) ↓ Express API (server.js) ↓ JSON File Storage (contacts.json)
The backend exposes REST-like endpoints. Contacts are stored in a local JSON file. The UI is built with HTML, CSS, JavaScript.
Recommendation System: Contacts are recommended if
- Last contacted ≥ 30 days ago
- Contains keywords: mentor, investor, advisor, friend, potential customer
Scoring Model: Each contact is assigned a score, computed using a weighted heuristic.
- Relationship Type Weight
Relationship Score potential customer +100 investor +80 mentor +60 advisor +50 friend +30 default / unknown +10
- Recency Factor Contacts that haven’t been reached out to recently are prioritized:
score += daysSinceLastContact * 0.3 (capped at 180 days)
- Notes Signal Boost If notes contain high-intent signals:
“interested” → +20 “potential customer” → +50 equivalent via keyword logic
Final Ranking Output decided by computing score for each contact, sorting in descending order, and returning top 3 scores.
Future Improvements: This project is intentionally minimal and built for speed. Given more time, I would evolve it into a more robust relationship intelligence tool with stronger UX, smarter ranking, and richer personalization. Currently, message generation is simulated using template-based text. This could be significantly improved by introducing a real LLM-based system. I would also implement a full search and filtering system where users can search by name, company, and role, and filter by relationship type, last contacted, and priority score ranges. I would also include a smarter ranking system that learns weights from user behavior (who they contact, response rates, etc). Similarly, I would add an analytics layer tracking who gets connected this most, who is ignored, and the effectivness of reccomendations. I would also add a mini timeline for each contact which shows the last message they sent, past notes, and an interaction history.