# Apex Admins — Functional Requirements Document (FRD)

**Version:** 1.0  
**Date:** 2026-06-27  
**Project:** Apex Admins (Australia)  
**Status:** Approved for Development

---

## 1. Executive Summary

Apex Admins is a premium Australian Staff Augmentation and Virtual Staffing company website built on Laravel 13. The platform generates qualified leads, booked appointments, and hiring requests while establishing authority in AI, automation, staffing, and outsourcing.

---

## 2. Business Goals (Priority Order)

| Priority | Goal | Success Metric |
|----------|------|----------------|
| 1 | Qualified leads + booked appointments | Form submissions, Calendly bookings, phone clicks |
| 2 | Hiring requests | Career applications, talent pipeline volume |
| 3 | Authority building | Organic traffic, blog engagement, academy signups |

---

## 3. User Personas

### 3.1 Business Owner / Operations Manager
- **Need:** Fast access to VAs, EAs, automation specialists
- **Journey:** Google search → Service/Hire page → Book consultation
- **Pain:** Time cost of hiring locally, compliance uncertainty

### 3.2 Agency Principal
- **Need:** Scalable specialist bench (media, SEO, CRM, dev)
- **Journey:** Referral/organic → Case studies → Multi-role hire
- **Pain:** Margin pressure, talent churn

### 3.3 HR / People Ops
- **Need:** Evaluate offshore/onshore hybrid staffing models
- **Journey:** Industry page → Process section → Lead magnet → Call
- **Pain:** Risk, quality control, onboarding complexity

### 3.4 Job Seeker
- **Need:** Remote career with Australian company
- **Journey:** Careers page → Job detail → Application
- **Pain:** Legitimate employer verification

---

## 4. Functional Modules

### 4.1 Public Website
- Dynamic CMS pages with section-based page builder
- Service catalog (14 role types)
- Hire Talent conversion pages (14 roles + hub)
- Industry landing pages (10 industries + hub)
- Location hub (Australia national; city pages admin-addable)
- Blog with categories, tags, scheduling
- Case studies with structured results
- Testimonials with ratings
- Academy (courses + lessons)
- Careers (jobs + applications)
- Contact with multi-step forms
- Legal pages (privacy, terms)

### 4.2 Admin Panel (`/admin`)
- Dashboard with KPIs
- RBAC (Users, Roles, Permissions)
- Global Settings (all site configuration)
- Media Library (WordPress-style)
- SEO Management + Audit panel
- All content module CRUD
- Form builder + submission inbox
- Lead pipeline (CRM)
- Menu builder
- Redirect manager
- Analytics event log

### 4.3 Infrastructure
- Laravel Queue (Redis) for image optimization, SEO audits, emails
- Laravel Scout for admin/global search
- Redis cache for settings, pages, theme tokens
- Local + S3-ready storage
- Laravel Scheduler for sitemap regeneration, scheduled posts

---

## 5. Non-Functional Requirements

| Requirement | Target |
|-------------|--------|
| PageSpeed Desktop | 99+ |
| PageSpeed Mobile | 95+ |
| Lighthouse Accessibility | 100 |
| Lighthouse Best Practices | 100 |
| Lighthouse SEO | 100 |
| Core Web Vitals | Pass all |
| Uptime | 99.9% |
| Mobile-first | All breakpoints 320px–2560px |
| WCAG | 2.2 AA compliance |
| Browser support | Chrome, Safari, Firefox, Edge (last 2 versions) |

---

## 6. Global Configuration Rule

**Zero hardcoding.** The following MUST be editable via Global Settings admin:

- Brand colors and gradients
- Typography (font family, scale)
- CTA text and URLs
- Contact information (phone, email, address)
- Social media links
- Office addresses
- Footer content and columns
- SEO defaults (title suffix, meta template)
- Analytics codes (GA4, GTM, Meta Pixel)
- Custom scripts (head/body)
- Schema defaults (Organization, LocalBusiness)
- Email templates (notification, autoresponder)

Pages, sections, and components pull data via `SettingsService` — never inline constants in Blade.

---

## 7. Conversion Requirements

| Feature | Requirement |
|---------|-------------|
| Sticky CTA | Admin-configurable text, link, show/hide rules |
| Floating contact | Phone/email/chat toggle, position |
| Exit intent popup | Session-capped, admin copy, lead magnet link |
| Lead magnets | Gated download with form capture |
| Calendly | Embed + webhook for booked appointments |
| Multi-step forms | Progress bar, step validation, UTM capture |
| Social proof | Testimonials, logos, counters, case studies |

---

## 8. Tracking Requirements

Track and store in `analytics_events`:
- Form submissions (by form, page, UTM)
- CTA clicks (by label, position, page)
- Scroll depth (25%, 50%, 75%, 100%)
- Phone clicks (`tel:` links)
- Email clicks (`mailto:` links)
- Exit popup impressions and conversions

---

## 9. Content Types & Relationships

```
ServiceCategory → Services → HireRoles (optional link)
Industry → CaseStudies
Location (hierarchical: country → city)
BlogPost → BlogCategories, BlogTags
AcademyCourse → AcademyLessons
Career → CareerApplications
Form → FormFields → FormSubmissions → Leads
Any content → SeoMeta (polymorphic)
Any content → Media (via mediables)
```

---

## 10. Acceptance Criteria (Launch)

- [ ] All ~60 provisional URLs render with unique SEO meta
- [ ] Admin can manage all content without code changes
- [ ] SEO audit score calculable on every content type
- [ ] Media library supports upload, folders, WebP/AVIF, alt tags
- [ ] Forms submit, notify, create leads
- [ ] RBAC enforced on all admin routes
- [ ] Sitemap.xml index with child sitemaps
- [ ] robots.txt editable in admin
- [ ] Lighthouse targets met on homepage and 3 sample inner pages

---

## 11. Out of Scope (Phase 1 / Launch)

- Client portal
- A/B testing engine
- Meilisearch (use database Scout driver)
- City location pages (admin-ready, content post-launch)
- Payment/billing integration
- Multi-language (hreflang-ready structure only)

---

## 12. Assumptions & Dependencies

- MySQL database `ronnie_apex` provisioned on server
- Redis available for cache and queues
- SSL certificate on production domain
- Calendly account for booking embed
- Content provided or seeded via database seeders for launch
