Database Schema
Signal and gap data structures.
Core Entities
Signals
Raw pain signals collected from public sources. Each signal represents a single data point (a post, comment, review, or issue).
- source_type — which platform or category it came from
- url — permalink to the original content
- content — the raw text of the signal
- collected_at — when the signal was first seen
- cluster_id — which cluster this signal belongs to (if any)
Gaps
Market gaps derived from clustered signals. Each gap represents a coherent problem area with enough evidence to be actionable.
- title — the gap title (what to build)
- description — expanded description of the problem
- category — high-level category
- gap_validity — how confirmed the gap is
- heat_score — calculated heat score (0-100)
- opportunity_score — estimated market opportunity score
- created_at — when the gap was first identified
- status — active, stale, or resolved
All data is stored in JSON format for portability and ease of use. The site uses static generation for performance, with the JSON as the source of truth.