A comprehensive TypeScript application for generating executive meeting briefs using AI, Slack data, HubSpot CRM, and web research. Successfully refactored from Python to TypeScript with improved type safety, modularity, and maintainability.
- Analyze Slack conversations with thread expansion
- Enrich attendee data from HubSpot CRM
- Generate strategic meeting briefs with AI
- Customizable lookback periods and message limits
- Multi-phase attendee research workflow
- LinkedIn profile discovery
- Company and competitive landscape analysis
- HubSpot CRM integration for contact management
- Comprehensive intelligence reports with source citations
- Full TypeScript with strict mode for type safety
- React frontend with Tailwind CSS
- Express backend with clean architecture
- OpenAI GPT-4 for report generation
- Rate limiting and security middleware
- Usage analytics and logging
βββ backend/ # Node.js/Express backend
β βββ src/
β β βββ config/ # Environment and constants
β β βββ controllers/ # API route handlers
β β βββ services/ # Business logic
β β βββ middleware/ # Express middleware
β β βββ types/ # TypeScript definitions
β β βββ utils/ # Utilities
β βββ package.json
βββ frontend/ # React frontend
β βββ src/
β β βββ components/ # React components
β β βββ services/ # API client
β β βββ hooks/ # Custom React hooks
β β βββ types/ # TypeScript types
β βββ package.json
βββ .claude/
β βββ docs/ # Architecture documentation
βββ .env.example # Environment template
- Node.js 18+
- npm or yarn
- API Keys: OpenAI, Slack, HubSpot (optional), Serper (optional)
- Clone the repository
git clone <repository-url>
cd weeee- Install dependencies
npm run install:all- Configure environment
cp .env.example .env
# Edit .env with your API keys- Start development servers
npm run devThis starts:
- Backend on http://localhost:3001
- Frontend on http://localhost:5173
Required:
OPENAI_API_KEY- OpenAI API key for GPT-4SLACK_TOKEN- Slack user or bot token
Optional:
HUBSPOT_TOKEN- HubSpot private app tokenSERPER_API_KEY- Serper API key for web searchPORT- Backend port (default: 3001)OPENAI_MODEL- AI model (default: gpt-4-turbo-preview)
See .env.example for all configuration options.
GET /api/channels- List Slack channelsPOST /api/run- Generate meeting brief
POST /api/bd/research-attendees- Research attendeesPOST /api/bd/generate- Generate intelligence reportPOST /api/bd/add-to-hubspot- Add contacts to CRM
GET /api/usage-logs- View usage analyticsGET /api/debug/openai-test- Test OpenAI connection
- SlackService - Channel and message operations
- HubSpotService - CRM contact management
- OpenAIService - AI report generation with tool calling
- ResearchService - Web search and scraping
- MeetingBriefForm - Internal meeting configuration
- BDMeetingForm - BD meeting setup
- React Query - Data fetching and caching
- Tailwind CSS - Responsive styling
Successfully migrated from FastAPI/Python to Express/TypeScript with:
- 100% feature parity - All original functionality preserved
- Improved type safety - Full TypeScript with Zod validation
- Better architecture - Clean separation of concerns
- Enhanced error handling - Custom error classes and middleware
- Modern tooling - Vite, React Query, Tailwind CSS
The application tracks usage metrics for analysis:
- API endpoint usage
- Report generation statistics
- Error tracking
- Performance metrics
View logs at /api/usage-logs or in logs/usage.log
# Backend tests
cd backend && npm test
# Frontend tests
cd frontend && npm test
# Type checking
npm run type-check# Build both frontend and backend
npm run build
# Start production server
cd backend && npm start- Follow TypeScript best practices
- Maintain type safety (no
anytypes) - Write self-documenting code
- Test thoroughly before committing
- Follow the style guide in
.claude/docs/
Private - CroMetrics Internal Use Only
- Original Python implementation by CroMetrics team
- Refactored to TypeScript following CroMetrics development guidelines
- Built with modern web technologies and best practices# Trigger Railway deployment - Thu Sep 4 09:17:44 MDT 2025