// Project + skills data
// Status taxonomy: shipped | production | beta | wip
// Domain tags: mobile | desktop | ai | edge | orchestration

const PROJECTS = [
  {
    id: "pallinhealth",
    kpi: "100% on-device PHI\nSub-3s SOAP notes",
    name: "PallinHealth AI Scribe",
    sub: "On-device medical scribe — local LLMs, RAG, sub-3s SOAP notes",
    desc: "On-device AI documentation that keeps every transcript on clinician-owned hardware. CoreML pipelines plus quantized LLMs assemble SOAP notes with inline references; data never leaves the box. Designed to plug into any EHR.",
    domains: ["ai", "edge", "desktop"],
    type: "AI · Edge ML",
    status: "beta", statusLabel: "TestFlight Beta",
    year: "2025",
    role: "Solo",
    image: "transcribepad.png?v=1",
    video: "pallin.mov",
    tech: ["Golang", "SwiftUI", "Next.js", "CoreML", "LLMs", "RAG", "Quantization", "ObjectBox", "DynamoDB"],
    impact: "100% PHI ownership on-device. Sub-3s average turnaround on SOAP note assembly.",
    approach: "Ran a CoreML pipeline to host quantized LLMs entirely on-device. Built a Go backend for orchestration and used ObjectBox as an embedded vector store for RAG — matching transcripts against prior notes without any cloud round-trip.",
    links: [
      { label: "Live", url: "https://www.transcribepad.com/", primary: true },
    ],
  },
  {
    id: "focusbar",
    kpi: "+27% task completion\nZero telemetry",
    name: "FocusBar AI",
    sub: "Ambient macOS focus companion with on-device intelligence",
    desc: "macOS app that uses on-device AI to keep creatives in flow. OCR + intent detection + habit nudges, all local — no telemetry, no network. Built on Apple's intelligence stack with SwiftData persistence.",
    domains: ["ai", "edge", "desktop"],
    type: "AI · Desktop",
    status: "beta", statusLabel: "Developer Beta",
    year: "2025",
    role: "Solo",
    image: "focusbar.png",
    tech: ["SwiftUI", "AppKit", "On-device AI", "OCR", "SwiftData", "Apple Intelligence"],
    impact: "+27% task completion in pilot. Zero data leaves the machine.",
    approach: "Used Apple Intelligence APIs for on-device intent detection. OCR reads the active app's window title and content, feeds a lightweight classifier that decides nudge timing and type. All history in SwiftData — nothing leaves the process.",
    links: [
      { label: "Request beta", url: "mailto:intiser4@gmail.com?subject=FocusBar%20AI%20Developer%20Beta", primary: true },
    ],
  },
  {
    id: "realtor",
    kpi: "~50% less prep time\nRealtime A/B compare",
    name: "AI Realtor Photo Editor",
    sub: "Credit-based AI photo enhancement for property teams",
    desc: "iOS studio for property teams to enhance listing photos at scale. Custom prompts, realtime before/after comparison via WebSockets, credit ledger, and Supabase + Cloudflare R2 orchestration keep teams in sync.",
    domains: ["ai", "mobile", "orchestration"],
    type: "AI · Mobile",
    status: "beta", statusLabel: "TestFlight Beta",
    year: "2025",
    role: "Solo",
    image: "realstateDevice.png",
    tech: ["SwiftUI", "Supabase", "Cloudflare R2", "WebSockets", "PhotosUI", "Kingfisher"],
    impact: "Cut listing prep hours by ~50% for high-volume agencies in pilot.",
    approach: "Custom iOS camera pipeline sends frames to a Supabase edge function that triggers a diffusion model. Results stream back over WebSockets and the UI renders a before/after split view in realtime. Credit ledger in Postgres prevents runaway usage.",
    links: [],
  },
  {
    id: "continental",
    kpi: "Millions saved/yr\n90%+ accuracy",
    name: "Continental AG Automation",
    sub: "Cross-departmental warehouse automation platform",
    desc: "Took a proof-of-concept to a production-grade automation system spanning IT and R&D across multiple regions. Designed end-to-end tracking with compliance-ready audit trails for industrial-scale rollout.",
    domains: ["orchestration", "mobile"],
    type: "Enterprise · Orchestration",
    status: "production", statusLabel: "In Production",
    year: "2023—24",
    role: "Lead Engineer",
    image: null,
    tech: ["REST APIs", "System Integration", "Multi-region", "Performance Opt.", "iOS", "Audit Trails"],
    impact: "Millions saved annually. 90%+ accuracy maintained across multi-region rollout.",
    approach: "Scoped requirements across IT and R&D in parallel workshops. Designed a REST API contract first, then built the iOS client and backend integration layer independently so teams could work in parallel. Staged rollout region-by-region with a compliance-ready audit trail at every step.",
    links: [
      { label: "Continental", url: "https://continental-tires.com" },
    ],
  },
  {
    id: "gazey",
    kpi: "40+ countries\nNative iOS + Android",
    name: "Gazey Talk",
    sub: "Speak with eyes & gesture — personalized AI, data never leaves device",
    desc: "AAC app that lets people with motor disabilities speak using just their eyes and head gestures. Personalized AI assistant learns each user's world — family, routines, context — entirely on-device. No cloud round-trip, no PHI exposure. Native iOS and Android for the reliability that life-critical communication demands.",
    domains: ["mobile", "ai"],
    type: "Mobile · Assistive · AI",
    status: "shipped", statusLabel: "App Store & Play",
    year: "2024",
    role: "Solo",
    image: "gazey-talk-new-cover.png",
    tech: ["SwiftUI", "UIKit", "Jetpack Compose", "Kotlin", "Eye Tracking", "On-device AI", "Accessibility"],
    impact: "Restored voice for users across 40+ countries. Personalized AI knows each user's world — zero bytes leave the device.",
    approach: "Separate native codebases per platform — no shared UI layer. Eye-tracking and head-gesture APIs feed a custom AAC engine tuned for low-motor-control users. An on-device AI model learns personal context (names, places, phrases) via a local vector store so responses feel natural without ever sending data to the cloud. Accessibility hardened against WCAG and each platform's own a11y guidelines before every release.",
    links: [
      { label: "gazeytalk.com", url: "https://www.gazeytalk.com", primary: true },
    ],
  },
  {
    id: "voiceping",
    kpi: "−30% battery\n−20% crash rate",
    name: "Smart Walkie · VoicePing",
    sub: "Real-time enterprise PTT with WebRTC & Opus",
    desc: "Senior iOS role optimising legacy infrastructure and audio. Implemented Opus codec end-to-end and reworked WebRTC pipelines for secure, low-latency push-to-talk at enterprise scale.",
    domains: ["mobile", "orchestration"],
    type: "Mobile · Enterprise",
    status: "shipped", statusLabel: "On App Store",
    year: "2023",
    role: "Senior iOS",
    image: null,
    tech: ["Swift", "Objective-C", "SwiftUI", "Combine", "WebRTC", "Opus Codec"],
    impact: "−30% battery use, −20% crash rate, audio quality up materially.",
    approach: "Profiled live WebRTC sessions with Instruments to pin battery bottlenecks to the legacy audio stack. Replaced the codec with Opus end-to-end, tuned jitter buffers, and rewrote a memory-leaking Objective-C pipeline in modern Swift with Combine.",
    links: [
      { label: "App Store", url: "https://apps.apple.com/my/app/voiceping/id1249953303", primary: true },
      { label: "smartwalkie.com", url: "https://smartwalkie.com" },
    ],
  },
  {
    id: "tips",
    kpi: "Multi-model routing\nClaude · Gemini · Groq",
    name: "Tips",
    sub: "macOS menu-bar interview co-pilot, multi-LLM orchestration",
    desc: "Menu bar utility that captures screenshots, transcribes voice, and routes prompts to Claude, Gemini, or Groq with structured output. Invisible multi-window overlays designed for live coding interviews.",
    domains: ["desktop", "ai", "orchestration"],
    type: "Desktop · AI",
    status: "beta", statusLabel: "Internal Beta",
    year: "2025",
    role: "Solo",
    image: null,
    tech: ["SwiftUI", "Menu Bar", "Claude", "Gemini", "Groq", "Apple Speech"],
    impact: "Instant problem breakdowns without leaving the desktop. Multi-model fallback routing.",
    approach: "Transparent NSWindow overlay (click-through to the host OS) captures screenshots on hotkey. Apple Speech transcribes audio, then a priority-ordered model chain — Claude first, Gemini fallback, Groq for speed — returns structured JSON that the UI parses into actionable hints.",
    links: [],
  },
  {
    id: "piperportal",
    kpi: "Hours saved weekly\nAppKit + SwiftUI",
    name: "Piperportal",
    sub: "Intelligent macOS file management",
    desc: "Native macOS app for power users — automated categorization, smart workspaces, Spotlight integration. Built on AppKit + SwiftUI hybrid for the right tool at every layer.",
    domains: ["desktop"],
    type: "Desktop · Productivity",
    status: "shipped", statusLabel: "Mac App Store",
    year: "2024",
    role: "Solo",
    image: null,
    tech: ["Swift", "SwiftUI", "AppKit", "Core Data", "FileSystem", "Spotlight"],
    impact: "Saves power users hours of manual sorting weekly.",
    approach: "FSEvents API for real-time file system monitoring. Rule engine evaluates metadata (extension, date, tags) and moves files into smart workspaces automatically. Spotlight metadata indexing surfaces deep-folder content in system search without duplicating files.",
    links: [
      { label: "piperportal.com", url: "https://www.piperportal.com", primary: true },
    ],
  },
  {
    id: "meetingcrm",
    kpi: "On-device transcribe\n→ HubSpot sync",
    name: "MeetingCRM",
    sub: "On-device meeting intelligence → HubSpot sync",
    desc: "SwiftUI iOS assistant that records sales calls, runs on-device Apple Speech transcription, synthesises summaries, and pushes action items into HubSpot via secure OAuth.",
    domains: ["mobile", "ai", "orchestration"],
    type: "Mobile · AI",
    status: "wip", statusLabel: "Internal Pilot",
    year: "2025",
    role: "Solo",
    image: null,
    tech: ["SwiftUI", "SwiftData", "Apple Speech", "HubSpot API", "OAuth"],
    impact: "Turns conversations into CRM-ready actions without manual notes.",
    approach: "Apple Speech streaming session transcribes the call in realtime. On call end, an on-device summarizer extracts action items and contact updates. SwiftData queues the payload locally, then a background task pushes to HubSpot via OAuth 2 — so the CRM stays in sync even on spotty connections.",
    links: [],
  },
  {
    id: "spectreora",
    kpi: "IEEE Silver Award\nRealtime ECG + ML",
    name: "Spectreora",
    sub: "IoT cardiac monitoring with predictive stroke alerts",
    desc: "Portable ecosystem combining MicroPython firmware, Flutter app, and FastAPI cloud for continuous ECG monitoring. IEEE silver-award winning research project.",
    domains: ["orchestration", "mobile", "edge"],
    type: "IoT · Healthcare",
    status: "wip", statusLabel: "Prototype",
    year: "2024",
    role: "Team",
    image: null,
    tech: ["Flutter", "MicroPython", "FastAPI", "AWS", "Supabase", "Riverpod"],
    impact: "Silver Award + IEEE conference paper. Real-time ECG with predictive analytics.",
    approach: "MicroPython firmware on ESP32 reads ECG via ADC and publishes samples over MQTT. A FastAPI server on AWS runs a lightweight ML model for anomaly detection and pushes alerts via SSE. The Flutter app consumes the stream and renders a live ECG graph with threshold annotations.",
    links: [
      { label: "GitHub", url: "https://github.com/Intiserahmed/SpectreOra-IoT-Mobile-ML", primary: true },
    ],
  },
  {
    id: "sacredfort",
    kpi: "Zero-knowledge E2EE\nSystem-wide autofill",
    name: "Sacred Fort",
    sub: "Zero-knowledge password manager with autofill",
    desc: "Secure password manager using the AtSign protocol for end-to-end encryption. Custom Kotlin autofill service for system-wide credential delivery on Android.",
    domains: ["mobile"],
    type: "Mobile · Security",
    status: "shipped", statusLabel: "Released",
    year: "2023",
    role: "Solo",
    image: null,
    tech: ["Flutter", "Kotlin Autofill", "AtSign SDK", "GetX", "Hive", "Encryption"],
    impact: "Privacy-first architecture — zero-knowledge by construction.",
    approach: "AtSign protocol handles zero-knowledge key exchange — the server never sees plaintext. Built a custom Kotlin AccessibilityService for system-wide autofill injection that reads field hints and fills credentials without exposing them to the clipboard.",
    links: [
      { label: "GitHub", url: "https://github.com/Intiserahmed/Password-Manager-Atsign", primary: true },
    ],
  },
  {
    id: "glowscroll",
    kpi: "7 exercises tracked\nEarned screen time",
    name: "GlowScroll",
    sub: "Earn your screen time — on-device pose detection gates access to distracting apps",
    desc: "iOS app that flips screen-time blocking on its head. Instead of passive friction timers, access to TikTok, Instagram, and YouTube is a currency you earn through real physical reps — squats, lunges, planks — verified in real time by on-device MediaPipe pose detection. No emergency bypass button. You earned it or you didn't.",
    domains: ["mobile", "ai", "edge"],
    type: "Mobile · AI · Health",
    status: "wip", statusLabel: "In Development",
    year: "2025",
    role: "Solo",
    image: null,
    tech: ["SwiftUI", "UIKit", "On-device AI", "MediaPipe", "FamilyControls", "ManagedSettings", "DeviceActivity", "SwiftData", "WidgetKit", "StoreKit 2"],
    impact: "Transforms doomscrolling guilt into a post-workout dopamine hit. Reps are the only unlock mechanism — willpower happens proactively at the gym, not in the moment of temptation.",
    approach: "MediaPipe Pose Landmarker runs fully on-device for real-time rep counting and form feedback across 7 exercises. FamilyControls + ManagedSettings shield blocked apps via the Screen Time API. A DeviceActivity extension automatically re-applies shields when unlock windows expire. SwiftData tracks workout history; WidgetKit surfaces the live time bank and streak on the home screen.",
    links: [
      { label: "GitHub", url: "https://github.com/Intiserahmed/glowscroll", primary: true },
    ],
  },
  {
    id: "arkhon",
    page: "arkhon.html",
    kpi: "700MB · 100% on-device\nChat · Fill · Agent",
    name: "Arkhon AI",
    sub: "Chrome extension — chat any page, fill forms, autonomous agent. Nothing leaves your browser.",
    desc: "Chrome MV3 extension that runs Gemma 3 1B entirely on-device via WebAssembly. Injects a floating chat UI into every page — read & summarise content, fill forms using personal knowledge, or hand off to an autonomous agent that navigates the page via Chrome DevTools Protocol. Zero cloud round-trips, zero egress.",
    domains: ["ai", "edge", "desktop"],
    type: "Browser Extension · AI",
    status: "beta", statusLabel: "Developer Beta",
    year: "2025",
    role: "Solo",
    image: null,
    tech: ["Chrome MV3", "Gemma 3 1B", "wllama", "WebAssembly", "ONNX Runtime", "nomic-embed-text", "BM25", "React", "OPFS", "CDP", "Shadow DOM"],
    impact: "Full LLM in the browser — no API key, no server, no data leaving the machine. Agent mode can autonomously fill multi-step forms, click buttons, and complete goals across any website.",
    approach: "Uses a persistent pinned tab as the model host (avoids the 30s service worker kill limit). Gemma 3 1B GGUF loads via wllama into OPFS (~700MB, cached after first download). BM25 retrieval scopes page context to 8 000 chars before each prompt. nomic-embed-text ONNX handles semantic search for form-fill knowledge matching. CDP agent loop walks the Accessibility tree, scores elements via ORT cosine similarity, and drives click/fill/scroll actions with GBNF-constrained JSON output.",
    links: [],
  },
  {
    id: "spacechat",
    kpi: "−60% dev time\nE2EE @platform",
    name: "ATSIGN SpaceChat",
    sub: "End-to-end encrypted messaging on the @platform",
    desc: "E2EE messaging app with advanced group features and automated UI testing. Cross-platform Flutter shell with native Swift/Kotlin modules where it counts.",
    domains: ["mobile", "orchestration"],
    type: "Mobile · Messaging",
    status: "shipped", statusLabel: "Released",
    year: "2023",
    role: "Team",
    image: null,
    tech: ["Flutter", "Swift", "Kotlin", "AtSign SDK", "E2EE", "Docker"],
    impact: "−60% development time vs. prior approach. Enhanced security posture.",
    approach: "@platform SDK manages cryptographic identity — each user is a unique @sign, messages are encrypted at source. Native Swift/Kotlin modules handle platform-critical paths (notifications, background sync) bridged into Flutter. An Appium + XCTest suite covers the full E2EE message flow automatically.",
    links: [
      { label: "atsign.com", url: "https://atsign.com" },
    ],
  },
  {
    id: "merger",
    kpi: "Offline-first\nAuto-save loop",
    name: "Merger",
    sub: "Cozy merge-to-build game in Flutter",
    desc: "Offline-first merge game with scripted events and dynamic quests. Riverpod for state, Isar for fast local persistence so progress is always saved.",
    domains: ["mobile"],
    type: "Mobile · Game",
    status: "wip", statusLabel: "In Development",
    year: "2025",
    role: "Solo",
    image: null,
    tech: ["Flutter", "Riverpod", "Isar", "Offline-first", "Game Design"],
    impact: "Relaxing progression loop with auto-save and scripted events.",
    approach: "Riverpod state machine drives all game events — merge, quest triggers, unlock gates. Isar embedded DB persists every change in under 1ms so progress is always auto-saved. Scripted events fire on merge-count thresholds, keeping the gameplay loop fresh without a backend.",
    links: [
      { label: "GitHub", url: "https://github.com/Intiserahmed/Merger", primary: true },
    ],
  },
];

const DOMAINS = [
  { id: "all",          label: "All work" },
  { id: "ai",           label: "AI" },
  { id: "edge",         label: "Edge ML" },
  { id: "mobile",       label: "Mobile" },
  { id: "desktop",      label: "Desktop" },
  { id: "orchestration",label: "Orchestration" },
];

const SKILLS = [
  {
    h: "Native mobile",
    items: [
      { t: "Swift / SwiftUI / UIKit", lead: true },
      { t: "Kotlin / Jetpack Compose", lead: true },
      { t: "AppKit + SwiftData" },
      { t: "Combine + async/await" },
      { t: "Core ML + Apple Speech" },
      { t: "Accessibility & Eye-tracking" },
    ],
  },
  {
    h: "AI · Edge ML",
    items: [
      { t: "On-device LLM inference", lead: true },
      { t: "Quantization & CoreML pipelines", lead: true },
      { t: "RAG architectures" },
      { t: "Multi-model routing (Claude / Gemini / Groq)" },
      { t: "Fine-tuning for edge deployment" },
      { t: "Real-time transcription / OCR" },
    ],
  },
  {
    h: "Backend · Orchestration",
    items: [
      { t: "Go / gRPC / FastAPI", lead: true },
      { t: "Supabase + Postgres", lead: true },
      { t: "AWS / Cloudflare R2" },
      { t: "Realtime WebSockets" },
      { t: "Multi-region deployment" },
      { t: "CI/CD — Xcode Cloud, Fastlane" },
    ],
  },
];

const TESTIMONIALS = [
  {
    initials: "EW",
    name: "Edison Wang",
    title: "Mobile Solutions IT Manager | Project Manager",
    company: "Continental AG",
    relationship: "Direct manager",
    date: "Feb 2024",
    text: "Intiser's dedication and commitment are remarkable. He quickly adapts to new challenges, consistently delivers high-quality results, and brings significant value across the project lifecycle—from requirements to final handover.",
  },
  {
    initials: "TL",
    name: "Tommy Loh",
    title: "Mobile Application Developer",
    company: "Continental AG",
    relationship: "Senior teammate",
    date: "Jan 2024",
    text: "He independently delivered impactful features, managing time and tasks flawlessly. Intiser's humility, drive, and eagerness to learn make him an asset to any team seeking motivated builders.",
  },
  {
    initials: "SJ",
    name: "Suthahar Jegatheesan",
    title: "AI Solutions Specialist · Microsoft MCT · Author & Speaker",
    company: "Continental AG",
    relationship: "Mentor",
    date: "Jan 2024",
    text: "He operates with minimal supervision, shipping bug-free apps while constantly exploring new technologies. Intiser's craftsmanship, speed, and appetite for learning make him a future leader in the field.",
  },
];

const TIMELINE = [
  {
    n: "01",
    status: "current",
    year: "2024 — now",
    role: "Technical Co-Founder",
    company: "PallinHealth · Gazey Talk",
    type: "Founder",
    achievements: [
      "On-device AI scribe — sub-3s SOAP notes, 100% PHI on-device",
      "Sub-millisecond DynamoDB queries with CQRS patterns",
      "30+ FPS gaze tracking with on-device ML across 40+ countries",
      "CI/CD pipelines, offline-first SwiftUI app with encrypted sync",
    ],
  },
  {
    n: "02",
    status: "past",
    year: "May 2024 — Jan 2025",
    role: "Senior iOS Engineer",
    company: "Smart Walkie · VoicePing",
    type: "Full-time",
    achievements: [
      "40% lower latency for emergency dispatch flows",
      "Custom Opus codec pipeline & WebRTC bridging",
      "−30% battery use, −20% crash rate vs. prior builds",
      "Mentored junior engineers on modular Swift architecture",
    ],
  },
  {
    n: "03",
    status: "past",
    year: "Aug 2023 — Feb 2024",
    role: "Software Engineering Intern",
    company: "Continental AG",
    type: "Internship",
    achievements: [
      "Scaled PoC to production across IT & R&D, multi-region",
      "Millions saved annually via 90%+ inventory accuracy",
      "Compliance-ready audit trails and dashboards for leadership",
      "Uptime improvements via resilient event-driven pipelines",
    ],
  },
  {
    n: "04",
    status: "past",
    year: "Jun 2022 — Aug 2023",
    role: "AI Technology Trainer",
    company: "Computational Intelligence Research Group",
    type: "Part-time",
    achievements: [
      "Guided 100+ students through shipping production apps",
      "AI, IoT, and distributed systems curriculum design",
      "Personalised coaching across interdisciplinary cohorts",
      "Realtime data processing workshops for Princeton, Stanford teams",
    ],
  },
  {
    n: "05",
    status: "past",
    year: "Dec 2020 — Sep 2022",
    role: "Software Engineer",
    company: "Atsign",
    type: "Full-time",
    achievements: [
      "Encrypted P2P messaging backbone with Golang microservices & gRPC",
      "60% reduction in development time via modular APIs",
      "Scaled to thousands of secure connections with full observability",
      "SDK docs that boosted developer adoption by 30%",
    ],
  },
];

const PROCESS = [
  {
    n: "01",
    phase: "Discovery & Strategy",
    desc: "Align business goals, audiences, and success metrics before moving a single pixel.",
    activities: [
      "Stakeholder interviews & requirement gathering",
      "Technical feasibility spikes & risk mapping",
      "User personas, journeys & prototype loops",
      "Competitive landscape & heuristics review",
    ],
    deliverables: [
      "Experience blueprint & success metrics",
      "Technical architecture outline",
      "Delivery roadmap & milestones",
    ],
    tools: ["Figma", "Notion", "Linear", "Whimsical"],
  },
  {
    n: "02",
    phase: "Build & Iterate",
    desc: "Ship calmly with clean architecture, automated checks, and short feedback loops.",
    activities: [
      "CI/CD, environments & observability set-up",
      "API, microservice & data modelling",
      "SwiftUI / React / Flutter interface build",
      "Design reviews & inclusive QA alongside build",
    ],
    deliverables: [
      "Production-ready codebase",
      "API & schema documentation",
      "Automated test suites",
    ],
    tools: ["Xcode", "GitHub Actions", "Docker", "Postman"],
  },
  {
    n: "03",
    phase: "Validate & Harden",
    desc: "Prove performance, privacy, and reliability under real-world load.",
    activities: [
      "Unit, snapshot & integration coverage",
      "Performance benchmarking & load testing",
      "Security scans & compliance checks",
      "Closed beta feedback cycles",
    ],
    deliverables: [
      "Test coverage dashboards",
      "Performance optimisation reports",
      "Security & privacy audit notes",
    ],
    tools: ["XCTest", "Jest", "Artillery", "TestFlight"],
  },
  {
    n: "04",
    phase: "Launch & Evolve",
    desc: "Deploy with confidence, measure impact, and iterate with a calm continuous cadence.",
    activities: [
      "Rollout strategy & App Store submission",
      "Analytics instrumentation & retention funnels",
      "Operational dashboards & alerting",
      "Post-launch experimentation & optimisation",
    ],
    deliverables: [
      "Live production build",
      "Monitoring dashboards & alerts",
      "Continuous improvement backlog",
    ],
    tools: ["AWS", "Vercel", "Sentry", "Amplitude"],
  },
];

const PROJECT_ORDER = [
  "gazey", "pallinhealth", "continental", "focusbar", "arkhon",
  "glowscroll", "realtor", "voiceping", "piperportal", "tips",
  "spectreora", "meetingcrm", "sacredfort", "spacechat", "merger"
];
const _projectMap = Object.fromEntries(PROJECTS.map(p => [p.id, p]));
window.PROJECTS = PROJECT_ORDER.map(id => _projectMap[id]).filter(Boolean);
window.DOMAINS = DOMAINS;
window.SKILLS = SKILLS;
window.TESTIMONIALS = TESTIMONIALS;
window.TIMELINE = TIMELINE;
window.PROCESS = PROCESS;
