Modules Documentation
Data fields
Entities, fields, and types.
Complete
The `Startup` interface (defined in `core/models/startup.model.ts`) is the canonical entity shape. Every field maps to a display element, a cross-module connection, or an editorial verification flag.
Required fields
- id · string
- Stable identifier. Format: `stp-<short-name>`. Used in cross-module mentions and JSON-LD @id.
- slug · string
- URL-stable slug. Usually matches brand name in kebab-case (e.g. `paymob`, `vezeeta`, `flat6labs-portfolio-co`).
- name · string
- Brand name as the company uses it. Typically untranslated (brand names rarely translate). Used everywhere on cards + JSON-LD `name`.
- tagline · Bilingual
- `{ en: string; ar: string }`. One-line value proposition. Both languages required. ~80 chars per locale.
- description · Bilingual
- 2-3 sentence paragraph describing what the startup does. Drives the meta description and renders on the detail page.
- sector · StartupSector
- One of: `fintech` | `healthtech` | `edtech` | `logistics` | `agritech` | `cleantech` | `saas` | `ai-ml` | `ecommerce` | `proptech` | `media`. Drives taxonomy matching.
- country · StartupCountry
- ISO-2 of HQ country. One of: EG / SA / AE / JO / MA / TN / BH / KW / OM / LB / QA. Drives geographic linking.
- stage · StartupStage
- One of: `pre-seed` | `seed` | `series-a` | `series-b` | `series-c` | `growth`. Stage matching drives opportunity eligibility surfacing.
- foundedYear · number
- 4-digit year. Displays on the card + snapshot sidecard + JSON-LD `foundingDate`.
- founderIds · string[]
- Founder.id values. T1 structural link — every founder in this array surfaces as a "linked_founder" in cross-module signals.
- updatedAt · string (ISO date)
- Last meaningful update. Drives the showcase listing default sort (descending). Updated by editorial when sector / stage / founders change.
Optional fields
- `name_ar?` — Arabic brand variant when authored (most startups use the same brand across locales).
- `hqCity?` — Specific city (e.g. Cairo, Riyadh). Optional because some startups are remote-first.
- `logoUrl?` — When absent, the card renders the brand name as text inside the 16:9 canvas.
- `websiteUrl?` — Drives the Visit Website CTA. Opens in a new tab with `rel="noopener external"`.
- `isFeatured?` — Top strip of brand-orange on the card. Limited to ~10% of entries.
- `isVerified?` — Verified badge on the card + chip on detail. Always true for production entries.
