This feature allows users to add new information to specific metrics for companies, which triggers an AI agent to analyze the changes and update the score accordingly. Each metric has its own specialized AI agent that understands the scoring criteria.
- Each metric section now has an "Add Information" button
- Clicking the button reveals a Notion-like text area where users can enter additional context
- The text area accepts any information about the metric (achievements, updates, new data, etc.)
- Users click "Save & Rescore" to trigger the AI analysis
- The UI shows a loading state: "Analyzing & Updating..."
- After completion, displays the new score and updated overall score
Endpoint: POST /api/companies/:id/metrics/update
Request Body:
{
"metricName": "Team Quality",
"additionalInfo": "The founder just closed a $2M seed round and hired 3 senior engineers from Google."
}Response:
{
"success": true,
"data": {
"company": { /* full company object with updated evaluation */ },
"updatedMetric": {
"metric_name": "domain_expertise",
"score": 4,
"explanation": "Updated explanation based on new information...",
"confidence": "high"
},
"newOverallScore": 3.5
}
}Each metric has a specialized AI agent with specific scoring criteria:
- Score 4: Founder/market fit, complementary team, coachable
- Score 3: Some domain knowledge, well researched
- Score 2: Limited background but strong learning skills
- Score 1: No relevant background, not coachable
- Score 4: Usable product with regular users, high retention, monetizable
- Score 3: Product built with initial users, promising data
- Score 2: Prototype/MVP built, interesting ideas
- Score 1: Nothing built, pre-product
- Score 4: Well spoken, strong clarity, hot space, oversubscribed round
- Score 3: Decent storyteller, majority of round filled
- Score 2: Struggles off-script, minority of round filled
- Score 1: Poor communicator, little fundraising progress
- Score 4: $100M+ TAM
- Score 3: $50M+ TAM
- Score 2: $25M+ TAM
- Score 1: $10M+ TAM
- Score 4: Takes initiative, high velocity, constantly hits milestones
- Score 3: Consistent velocity but needs guidance
- Score 2: Slowly executing
- Score 1: Poor execution, doesn't know what to measure
- Score 4: $500k+ ARR pre-seed
- Score 3: $200k+ ARR pre-seed or strong partnerships
- Score 2: $50k+ ARR pre-seed or waitlist
- Score 1: Minimal traction
When a user adds information to a metric:
- Retrieve Context: Get company details and current metric score/explanation
- AI Analysis: Call Claude API with:
- Company information (name, description, website, etc.)
- Previous score and explanation (for context)
- New additional information from user
- Specific scoring criteria for the metric
- Score Calculation: AI returns:
- New score (1-4)
- Updated explanation
- Key factors considered
- Confidence level (high/medium/low)
- Database Update:
- Update EvaluationDetail table with new score and explanation
- Update Evaluation table with new metric score
- Recalculate overall score (average of all 6 metrics)
- Return Results: Send updated company data back to frontend
EvaluationDetail Table:
evaluation_id: FK to evaluations tablemetric_name: One of the 6 core metricsscore: DECIMAL(3,2) between 1-4explanation: TEXT with detailed reasoningreferences: JSONB array of reference sources
Evaluation Table:
overall_score: Average of all metric scoresdomain_expertise: Score for team qualityproduct: Score for productfundraisability: Score for fundraising abilitymarket: Score for market sizeexecution: Score for execution abilitytraction: Score for traction/revenue
backend/ai/metricScoring.js- AI scoring agents with criteriabackend/controllers/companyController.js-updateMetricInfo()endpointbackend/routes/companies.js- Route definitionbackend/models/EvaluationDetail.js- Database model
frontend/src/pages/CompanyDetail.tsx- UI with editable sectionsfrontend/src/utils/api.ts- API client methodupdateMetricInfo()
- Navigate to a company detail page
- Expand any metric section (e.g., "Product")
- Click "Add Information"
- Enter text: "Just launched v2 with 500 active users, 40% retention"
- Click "Save & Rescore"
- AI analyzes the information against Product criteria
- Returns new score (e.g., 3 → 4) with updated explanation
- Overall company score recalculates automatically
- AI Model: Uses Claude API via existing
callClaudeJSON()helper - Temperature: 0.5 (balanced between consistency and creativity)
- Max Tokens: 1024 per metric scoring request
- Transaction Safety: All database updates wrapped in transactions
- Error Handling: Graceful failures with rollback on errors
- Validation: Input validation on both frontend and backend
- History Tracking: Store all previous scores and reasoning
- Batch Updates: Update multiple metrics at once
- Information Storage: Save the additional info as a separate record
- Confidence Indicators: Show AI confidence level in UI
- Comparison View: Show before/after scores side by side
- Audit Trail: Track who made changes and when