Modules Documentation
Validation rules
Required fields, formats, ranges.
Complete
Every founder profile passes 5 verification gates before publication. The verification depth depends on profile flavor: editorial profiles get full editorial fact-check; founder-led profiles get editor approval of founder-submitted content. Both routes pass through the same 5 gates.
Schema-level validation
- All required fields present + correctly typed.
- `slug` matches `^[a-z0-9-]+$` and is unique within the Founder table.
- `name` and `name_ar` BOTH populated (no English-only or Arabic-only profiles).
- `profileStatus` is one of the two enum values; no invalid status.
- `industry`, `stage`, `country` use canonical taxonomy values.
- `role` matches a known i18n key under `tx.role.*`.
- `linkedStartupId` (when present) resolves to an existing Startup entry.
The 5 editorial verification gates
- Founder identity verified — Editor confirms the person exists, is the actual founder of the named startup, and the photo represents them (no synthetic or stock photos).
- Startup link is accurate — If `linkedStartupId` is set, the editor verifies the founder is currently with that startup (not stale from a prior role).
- About content is factual — No invented credentials, no inflated funding claims, no unverifiable accolades. "Featured in TechCrunch" requires a real article reference.
- Social links are real + active — Editor opens each declared social link to confirm it leads to the founder’s actual profile. Dead links are removed before publication.
- Visibility flags applied — For founder-led profiles, editor confirms the founder’s visibility choices are respected (e.g. `hiddenContactEmail = true` does NOT render the email).
