<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="utf-8" />

  <meta name="viewport" content="width=device-width, initial-scale=1" />

  <title>Apphesus OÜ | Intelligent Mobile Experiences</title>

  <link rel="preconnect" href="https://fonts.googleapis.com">

  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>

  <link href="https://fonts.googleapis.com/css2?family=Syne:wght@400;600;700;800&family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;1,9..40,300&display=swap" rel="stylesheet">

  <style>

    :root {

      --ink: #0a0a0f;

      --paper: #f7f5f0;

      --accent: #e8401c;

      --accent2: #1c6fe8;

      --muted: #7a7a8a;

      --card: #ffffff;

      --border: rgba(10,10,15,0.08);

    }


    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }


    html { scroll-behavior: smooth; }


    body {

      font-family: 'DM Sans', sans-serif;

      background: var(--paper);

      color: var(--ink);

      line-height: 1.65;

      overflow-x: hidden;

    }


    /* ── NAV ── */

    nav {

      position: fixed; top: 0; left: 0; right: 0;

      z-index: 100;

      display: flex; justify-content: space-between; align-items: center;

      padding: 1.25rem 3rem;

      background: rgba(247,245,240,0.85);

      backdrop-filter: blur(12px);

      border-bottom: 1px solid var(--border);

    }

    .nav-logo {

      font-family: 'Syne', sans-serif;

      font-weight: 800;

      font-size: 1.25rem;

      letter-spacing: -0.02em;

      color: var(--ink);

      text-decoration: none;

    }

    .nav-logo span { color: var(--accent); }

    .nav-links { display: flex; gap: 2rem; list-style: none; }

    .nav-links a {

      text-decoration: none;

      font-size: 0.875rem;

      font-weight: 500;

      color: var(--muted);

      transition: color 0.2s;

    }

    .nav-links a:hover { color: var(--ink); }


    /* ── HERO ── */

    .hero {

      min-height: 100vh;

      display: grid;

      grid-template-columns: 1fr 1fr;

      padding: 7rem 3rem 4rem;

      gap: 3rem;

      align-items: center;

      position: relative;

      overflow: hidden;

    }

    .hero::before {

      content: '';

      position: absolute;

      top: -20%; right: -10%;

      width: 600px; height: 600px;

      border-radius: 50%;

      background: radial-gradient(circle, rgba(28,111,232,0.08) 0%, transparent 70%);

      pointer-events: none;

    }

    .hero::after {

      content: '';

      position: absolute;

      bottom: 5%; left: 10%;

      width: 400px; height: 400px;

      border-radius: 50%;

      background: radial-gradient(circle, rgba(232,64,28,0.06) 0%, transparent 70%);

      pointer-events: none;

    }


    .hero-text { max-width: 560px; }


    .hero-eyebrow {

      display: inline-flex;

      align-items: center;

      gap: 0.5rem;

      font-size: 0.75rem;

      font-weight: 600;

      letter-spacing: 0.12em;

      text-transform: uppercase;

      color: var(--accent);

      margin-bottom: 1.5rem;

    }

    .hero-eyebrow::before {

      content: '';

      display: block;

      width: 24px; height: 2px;

      background: var(--accent);

    }


    .hero h1 {

      font-family: 'Syne', sans-serif;

      font-size: clamp(2.8rem, 5vw, 4.5rem);

      font-weight: 800;

      line-height: 1.05;

      letter-spacing: -0.03em;

      margin-bottom: 1.5rem;

    }

    .hero h1 em {

      font-style: normal;

      color: var(--accent);

    }


    .hero-sub {

      font-size: 1.1rem;

      color: var(--muted);

      font-weight: 300;

      max-width: 460px;

      margin-bottom: 2.5rem;

    }


    .hero-actions { display: flex; gap: 1rem; flex-wrap: wrap; }

    .btn-primary {

      display: inline-block;

      padding: 0.85rem 1.75rem;

      background: var(--ink);

      color: var(--paper);

      border-radius: 0.375rem;

      text-decoration: none;

      font-weight: 600;

      font-size: 0.9rem;

      letter-spacing: 0.01em;

      transition: transform 0.2s, box-shadow 0.2s;

    }

    .btn-primary:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(10,10,15,0.2); }

    .btn-secondary {

      display: inline-block;

      padding: 0.85rem 1.75rem;

      background: transparent;

      color: var(--ink);

      border: 1.5px solid var(--ink);

      border-radius: 0.375rem;

      text-decoration: none;

      font-weight: 600;

      font-size: 0.9rem;

      transition: background 0.2s, color 0.2s;

    }

    .btn-secondary:hover { background: var(--ink); color: var(--paper); }


    /* hero visual */

    .hero-visual {

      position: relative;

      display: flex;

      justify-content: center;

      align-items: center;

    }


    .orbit-ring {

      position: relative;

      width: 380px; height: 380px;

    }

    .orbit-center {

      position: absolute;

      top: 50%; left: 50%;

      transform: translate(-50%, -50%);

      width: 120px; height: 120px;

      border-radius: 28px;

      background: var(--ink);

      display: flex; align-items: center; justify-content: center;

      font-family: 'Syne', sans-serif;

      font-size: 2rem;

      box-shadow: 0 20px 60px rgba(10,10,15,0.25);

    }

    .orbit-track {

      position: absolute; inset: 0;

      border-radius: 50%;

      border: 1.5px dashed var(--border);

      animation: spin 18s linear infinite;

    }

    .orbit-track-2 {

      position: absolute; inset: 40px;

      border-radius: 50%;

      border: 1.5px dashed rgba(28,111,232,0.18);

      animation: spin 12s linear infinite reverse;

    }

    @keyframes spin { to { transform: rotate(360deg); } }


    .orbit-dot {

      position: absolute;

      width: 48px; height: 48px;

      border-radius: 12px;

      display: flex; align-items: center; justify-content: center;

      font-size: 1.4rem;

      box-shadow: 0 4px 15px rgba(0,0,0,0.1);

      animation: counter-spin 18s linear infinite;

    }

    @keyframes counter-spin { to { transform: rotate(-360deg); } }


    .dot-1 { top: -24px; left: 50%; margin-left: -24px; background: #fff0ed; animation-duration: 18s; }

    .dot-2 { right: -24px; top: 50%; margin-top: -24px; background: #edf4ff; animation-duration: 18s; }

    .dot-3 { bottom: -24px; left: 50%; margin-left: -24px; background: #f0fdf4; animation-duration: 18s; }

    .dot-4 { left: -24px; top: 50%; margin-top: -24px; background: #fefce8; animation-duration: 18s; }


    /* ── FEATURED BADGE ── */

    .eu-badge {

      max-width: 1100px;

      margin: 0 auto;

      padding: 0 3rem;

    }

    .eu-badge-inner {

      background: linear-gradient(135deg, var(--ink) 0%, #1a1a2e 100%);

      border-radius: 1rem;

      padding: 2.5rem 3rem;

      display: flex;

      gap: 3rem;

      align-items: center;

      color: #fff;

      margin-bottom: 5rem;

    }

    .eu-badge-icon {

      font-size: 3rem;

      flex-shrink: 0;

    }

    .eu-badge-text h3 {

      font-family: 'Syne', sans-serif;

      font-size: 1.25rem;

      font-weight: 700;

      margin-bottom: 0.4rem;

    }

    .eu-badge-text p { font-size: 0.95rem; color: rgba(255,255,255,0.65); font-weight: 300; }

    .eu-badge-tags {

      margin-left: auto;

      display: flex;

      flex-direction: column;

      gap: 0.5rem;

      flex-shrink: 0;

    }

    .eu-tag {

      padding: 0.35rem 0.9rem;

      border: 1px solid rgba(255,255,255,0.2);

      border-radius: 2rem;

      font-size: 0.75rem;

      font-weight: 600;

      letter-spacing: 0.05em;

      color: rgba(255,255,255,0.75);

    }


    /* ── SECTIONS ── */

    section {

      max-width: 1100px;

      margin: 0 auto;

      padding: 0 3rem 5rem;

    }


    .section-label {

      display: inline-flex; align-items: center; gap: 0.5rem;

      font-size: 0.7rem; font-weight: 700; letter-spacing: 0.15em; text-transform: uppercase;

      color: var(--muted); margin-bottom: 0.75rem;

    }

    .section-label::after {

      content: '';

      display: block; width: 32px; height: 1.5px;

      background: var(--muted);

    }


    .section-title {

      font-family: 'Syne', sans-serif;

      font-size: clamp(1.8rem, 3vw, 2.75rem);

      font-weight: 800;

      letter-spacing: -0.03em;

      line-height: 1.1;

      margin-bottom: 1rem;

    }

    .section-desc { color: var(--muted); font-weight: 300; max-width: 520px; }


    /* CAPABILITIES GRID */

    .cap-grid {

      display: grid;

      grid-template-columns: repeat(3, 1fr);

      gap: 1.5px;

      background: var(--border);

      border-radius: 1rem;

      overflow: hidden;

      margin-top: 3rem;

    }

    .cap-card {

      background: var(--card);

      padding: 2rem 1.75rem;

      transition: background 0.2s;

    }

    .cap-card:hover { background: #fafaf8; }

    .cap-card.featured {

      background: var(--ink);

      color: #fff;

    }

    .cap-card.featured .cap-icon { background: rgba(255,255,255,0.1); }

    .cap-card.featured .cap-desc { color: rgba(255,255,255,0.6); }

    .cap-card.featured .cap-tag { border-color: rgba(255,255,255,0.2); color: rgba(255,255,255,0.7); }


    .cap-icon {

      width: 44px; height: 44px;

      border-radius: 10px;

      background: var(--paper);

      display: flex; align-items: center; justify-content: center;

      font-size: 1.3rem;

      margin-bottom: 1.25rem;

    }

    .cap-name {

      font-family: 'Syne', sans-serif;

      font-size: 1.05rem;

      font-weight: 700;

      margin-bottom: 0.5rem;

    }

    .cap-desc { font-size: 0.875rem; color: var(--muted); line-height: 1.6; font-weight: 300; }

    .cap-tag {

      display: inline-block;

      margin-top: 1rem;

      padding: 0.25rem 0.65rem;

      border: 1px solid var(--border);

      border-radius: 2rem;

      font-size: 0.7rem;

      font-weight: 600;

      letter-spacing: 0.06em;

      text-transform: uppercase;

      color: var(--muted);

    }


    /* AI LEARNING SECTION */

    .learning-section { padding-bottom: 5rem; }


    .learning-layout {

      display: grid;

      grid-template-columns: 1fr 1fr;

      gap: 4rem;

      align-items: start;

      margin-top: 3rem;

    }


    .learning-pillars { display: flex; flex-direction: column; gap: 1.5px; }

    .pillar {

      background: var(--card);

      border-radius: 0;

      padding: 1.5rem 2rem;

      display: flex;

      gap: 1.25rem;

      align-items: flex-start;

      border-left: 3px solid transparent;

      transition: border-color 0.2s, background 0.2s;

      cursor: default;

    }

    .pillar:first-child { border-radius: 0.75rem 0.75rem 0 0; }

    .pillar:last-child { border-radius: 0 0 0.75rem 0.75rem; }

    .pillar:hover { border-left-color: var(--accent); background: #fff; }

    .pillar-num {

      font-family: 'Syne', sans-serif;

      font-size: 2rem;

      font-weight: 800;

      color: var(--border);

      line-height: 1;

      flex-shrink: 0;

    }

    .pillar h4 {

      font-family: 'Syne', sans-serif;

      font-weight: 700;

      font-size: 0.95rem;

      margin-bottom: 0.3rem;

    }

    .pillar p { font-size: 0.85rem; color: var(--muted); font-weight: 300; }


    .learning-panel {

      background: var(--ink);

      border-radius: 1rem;

      padding: 2.5rem;

      color: #fff;

      position: sticky;

      top: 6rem;

    }

    .learning-panel h3 {

      font-family: 'Syne', sans-serif;

      font-size: 1.35rem;

      font-weight: 800;

      margin-bottom: 0.75rem;

    }

    .learning-panel p { font-size: 0.9rem; color: rgba(255,255,255,0.6); font-weight: 300; margin-bottom: 2rem; }


    .stat-row { display: flex; flex-direction: column; gap: 1.5rem; }

    .stat-item {}

    .stat-val {

      font-family: 'Syne', sans-serif;

      font-size: 2.2rem;

      font-weight: 800;

      line-height: 1;

      color: var(--accent);

    }

    .stat-label { font-size: 0.8rem; color: rgba(255,255,255,0.5); margin-top: 0.25rem; }

    .stat-divider { width: 100%; height: 1px; background: rgba(255,255,255,0.08); }


    /* TECH STACK */

    .tech-grid {

      display: flex;

      flex-wrap: wrap;

      gap: 0.75rem;

      margin-top: 2rem;

    }

    .tech-chip {

      padding: 0.5rem 1.1rem;

      background: var(--card);

      border: 1.5px solid var(--border);

      border-radius: 2rem;

      font-size: 0.8rem;

      font-weight: 600;

      color: var(--ink);

      transition: border-color 0.2s, transform 0.2s;

    }

    .tech-chip:hover { border-color: var(--accent2); transform: translateY(-2px); }

    .tech-chip.highlight {

      background: var(--ink);

      color: var(--paper);

      border-color: var(--ink);

    }


    /* PROJECTS */

    .project-list { display: flex; flex-direction: column; gap: 1.5px; margin-top: 2.5rem; }

    .project-item {

      background: var(--card);

      padding: 1.75rem 2rem;

      display: flex; align-items: center; gap: 1.5rem;

      cursor: default;

      transition: background 0.2s;

    }

    .project-item:first-child { border-radius: 0.75rem 0.75rem 0 0; }

    .project-item:last-child { border-radius: 0 0 0.75rem 0.75rem; }

    .project-item:hover { background: #fafaf8; }

    .project-emoji { font-size: 1.75rem; flex-shrink: 0; }

    .project-info { flex: 1; }

    .project-info h4 {

      font-family: 'Syne', sans-serif;

      font-weight: 700;

      font-size: 1rem;

      margin-bottom: 0.2rem;

    }

    .project-info p { font-size: 0.85rem; color: var(--muted); font-weight: 300; }

    .project-tags { display: flex; gap: 0.5rem; flex-shrink: 0; }

    .ptag {

      padding: 0.2rem 0.65rem;

      border-radius: 2rem;

      font-size: 0.7rem;

      font-weight: 700;

      letter-spacing: 0.04em;

      text-transform: uppercase;

    }

    .ptag-ios { background: #edf4ff; color: var(--accent2); }

    .ptag-android { background: #f0fdf4; color: #16a34a; }

    .ptag-ai { background: #fff0ed; color: var(--accent); }

    .ptag-learning { background: #fef9c3; color: #a16207; }


    /* CTA */

    .cta-block {

      background: linear-gradient(135deg, #e8401c 0%, #c0300f 100%);

      border-radius: 1rem;

      padding: 4rem 3rem;

      text-align: center;

      color: #fff;

    }

    .cta-block h2 {

      font-family: 'Syne', sans-serif;

      font-size: clamp(1.8rem, 3vw, 2.5rem);

      font-weight: 800;

      letter-spacing: -0.02em;

      margin-bottom: 1rem;

    }

    .cta-block p { color: rgba(255,255,255,0.7); font-weight: 300; margin-bottom: 2rem; max-width: 500px; margin-left: auto; margin-right: auto; }

    .btn-white {

      display: inline-block;

      padding: 0.9rem 2rem;

      background: #fff;

      color: var(--accent);

      border-radius: 0.5rem;

      text-decoration: none;

      font-weight: 700;

      font-size: 0.9rem;

      transition: transform 0.2s, box-shadow 0.2s;

    }

    .btn-white:hover { transform: translateY(-2px); box-shadow: 0 8px 30px rgba(0,0,0,0.2); }


    /* FOOTER */

    footer {

      border-top: 1px solid var(--border);

      padding: 2.5rem 3rem;

      display: flex;

      justify-content: space-between;

      align-items: center;

      max-width: 1100px;

      margin: 0 auto;

      font-size: 0.85rem;

      color: var(--muted);

    }

    .footer-logo {

      font-family: 'Syne', sans-serif;

      font-weight: 800;

      color: var(--ink);

    }

    .footer-logo span { color: var(--accent); }


    /* ANIMATIONS */

    @keyframes fade-up {

      from { opacity: 0; transform: translateY(24px); }

      to   { opacity: 1; transform: translateY(0); }

    }

    .hero-text > * {

      animation: fade-up 0.6s ease both;

    }

    .hero-eyebrow { animation-delay: 0.1s; }

    .hero h1      { animation-delay: 0.2s; }

    .hero-sub     { animation-delay: 0.3s; }

    .hero-actions { animation-delay: 0.4s; }

    .hero-visual  { animation: fade-up 0.8s 0.3s ease both; }


    /* RESPONSIVE */

    @media (max-width: 768px) {

      nav { padding: 1rem 1.5rem; }

      .nav-links { display: none; }

      .hero { grid-template-columns: 1fr; padding: 6rem 1.5rem 3rem; }

      .hero-visual { display: none; }

      section { padding: 0 1.5rem 4rem; }

      .eu-badge { padding: 0 1.5rem; }

      .eu-badge-inner { flex-direction: column; gap: 1.5rem; }

      .eu-badge-tags { margin-left: 0; flex-direction: row; flex-wrap: wrap; }

      .cap-grid { grid-template-columns: 1fr; }

      .learning-layout { grid-template-columns: 1fr; }

      .learning-panel { position: static; }

      footer { flex-direction: column; gap: 1rem; text-align: center; }

    }

  </style>

</head>

<body>


  <!-- NAV -->

  <nav>

    <a href="#" class="nav-logo">Apphesus<span>.</span></a>

    <ul class="nav-links">

      <li><a href="#capabilities">Capabilities</a></li>

      <li><a href="#learning">AI Learning</a></li>

      <li><a href="#stack">Technology</a></li>

      <li><a href="#work">Portfolio</a></li>

      <li><a href="mailto:[email protected]">Contact</a></li>

    </ul>

  </nav>


  <!-- HERO -->

  <header class="hero">

    <div class="hero-text">

      <span class="hero-eyebrow">Tallinn, Estonia · Est. Apphesus OÜ</span>

      <h1>Mobile intelligence,<br><em>human-centered</em><br>learning.</h1>

      <p class="hero-sub">We build AI-driven mobile applications — from consumer apps to personalized educational platforms — that adapt, grow, and deliver measurable outcomes.</p>

      <div class="hero-actions">

        <a href="mailto:[email protected]" class="btn-primary">Start a conversation</a>

        <a href="#learning" class="btn-secondary">EU Project scope</a>

      </div>

    </div>


    <div class="hero-visual">

      <div class="orbit-ring">

        <div class="orbit-track"></div>

        <div class="orbit-track-2"></div>

        <div class="orbit-center">🧠</div>

        <div class="orbit-dot dot-1">📱</div>

        <div class="orbit-dot dot-2">🎯</div>

        <div class="orbit-dot dot-3">📊</div>

        <div class="orbit-dot dot-4">⚡</div>

      </div>

    </div>

  </header>


  <!-- EU BADGE -->

  <div class="eu-badge">

    <div class="eu-badge-inner">

      <div class="eu-badge-icon">🇪🇺</div>

      <div class="eu-badge-text">

        <h3>EU-Aligned · AI-Powered Personalized Learning</h3>

        <p>Apphesus is well-positioned to deliver on the European Digital Education Action Plan — combining adaptive AI, mobile-first delivery, and learner-centred design.</p>

      </div>

      <div class="eu-badge-tags">

        <span class="eu-tag">Horizon-Ready</span>

        <span class="eu-tag">GDPR-Compliant</span>

        <span class="eu-tag">EdTech</span>

      </div>

    </div>

  </div>


  <!-- CAPABILITIES -->

  <section id="capabilities">

    <span class="section-label">What we do</span>

    <h2 class="section-title">Full-spectrum mobile<br>expertise.</h2>

    <p class="section-desc">From concept to the App Store — and from individual apps to multi-stakeholder EU-funded projects.</p>


    <div class="cap-grid">

      <div class="cap-card featured">

        <div class="cap-icon">🤖</div>

        <div class="cap-name">AI-Powered Learning</div>

        <p class="cap-desc">Personalized learning path engines powered by LLMs, knowledge graphs, and adaptive assessment loops. Learner profiling, spaced repetition, and real-time curriculum adjustment.</p>

        <span class="cap-tag">Core capability</span>

      </div>

      <div class="cap-card">

        <div class="cap-icon">📱</div>

        <div class="cap-name">Mobile Engineering</div>

        <p class="cap-desc">Native iOS (Swift), Android (Kotlin) and cross-platform (React Native) development for consumer-grade performance at scale.</p>

        <span class="cap-tag">Swift · Kotlin · RN</span>

      </div>

      <div class="cap-card">

        <div class="cap-icon">📈</div>

        <div class="cap-name">Growth & Monetisation</div>

        <p class="cap-desc">App Store Optimisation, subscription funnel design, A/B testing frameworks and analytics pipelines that turn downloads into revenue.</p>

        <span class="cap-tag">ASO · Analytics</span>

      </div>

      <div class="cap-card">

        <div class="cap-icon">🎯</div>

        <div class="cap-name">Personalisation Engines</div>

        <p class="cap-desc">Recommendation systems and user-modelling pipelines that adapt content, pacing, and difficulty to individual learner needs in real time.</p>

        <span class="cap-tag">ML · RecSys</span>

      </div>

      <div class="cap-card">

        <div class="cap-icon">🔬</div>

        <div class="cap-name">EdTech Consulting</div>

        <p class="cap-desc">Instructional design partnerships, learning outcome definition, and measurable KPI frameworks aligned with EU Digital Education standards.</p>

        <span class="cap-tag">Curriculum Design</span>

      </div>

      <div class="cap-card">

        <div class="cap-icon">🔄</div>

        <div class="cap-name">App Lifecycle & M&A</div>

        <p class="cap-desc">Own, operate, and strategically divest mobile titles. Full due-diligence support and acqui-hire expertise for app portfolio transactions.</p>

        <span class="cap-tag">M&A · Divestiture</span>

      </div>

    </div>

  </section>


  <!-- AI LEARNING -->

  <section id="learning" class="learning-section">

    <span class="section-label">AI Learning Path</span>

    <h2 class="section-title">How we build adaptive<br>learning experiences.</h2>

    <p class="section-desc">Our methodology for AI-powered personalized learning is grounded in cognitive science and validated through shipped products.</p>


    <div class="learning-layout">

      <div class="learning-pillars">

        <div class="pillar">

          <span class="pillar-num">01</span>

          <div>

            <h4>Learner Profiling & Diagnostics</h4>

            <p>Dynamic onboarding assessments establish prior knowledge, learning style preferences, and goal alignment before any content is served.</p>

          </div>

        </div>

        <div class="pillar">

          <span class="pillar-num">02</span>

          <div>

            <h4>Knowledge Graph Construction</h4>

            <p>Subject matter is modelled as a graph of interconnected concepts with prerequisite relationships, enabling fine-grained path generation.</p>

          </div>

        </div>

        <div class="pillar">

          <span class="pillar-num">03</span>

          <div>

            <h4>Adaptive Path Engine</h4>

            <p>A reinforcement-learning-based engine continuously re-ranks and sequences content units based on learner performance signals and engagement data.</p>

          </div>

        </div>

        <div class="pillar">

          <span class="pillar-num">04</span>

          <div>

            <h4>Generative Content Augmentation</h4>

            <p>LLMs synthesize context-specific examples, practice questions, and explanatory analogies tailored to each learner's profile and progress state.</p>

          </div>

        </div>

        <div class="pillar">

          <span class="pillar-num">05</span>

          <div>

            <h4>Spaced Repetition & Retention</h4>

            <p>Scientifically calibrated review scheduling (SM-2 / Anki-derived algorithms) maximizes long-term retention with minimal study time.</p>

          </div>

        </div>

        <div class="pillar">

          <span class="pillar-num">06</span>

          <div>

            <h4>Analytics & Learning Outcomes</h4>

            <p>Real-time dashboards for learners and administrators track mastery progress, time-to-competency, and learning outcome attainment against EU benchmarks.</p>

          </div>

        </div>

      </div>


      <div class="learning-panel">

        <h3>Why Apphesus for your EU project</h3>

        <p>We combine the agility of a specialist studio with the technical depth of a research-oriented team — ready to integrate into consortium-led EU projects.</p>

        <div class="stat-row">

          <div class="stat-item">

            <div class="stat-val">EU-Based</div>

            <div class="stat-label">Registered in Estonia, operating under EU jurisdiction</div>

          </div>

          <div class="stat-divider"></div>

          <div class="stat-item">

            <div class="stat-val">GDPR</div>

            <div class="stat-label">Privacy-by-design approach; learner data sovereignty built-in</div>

          </div>

          <div class="stat-divider"></div>

          <div class="stat-item">

            <div class="stat-val">Full-Stack</div>

            <div class="stat-label">End-to-end delivery: AI research → mobile app → analytics layer</div>

          </div>

          <div class="stat-divider"></div>

          <div class="stat-item">

            <div class="stat-val">Multilingual</div>

            <div class="stat-label">i18n-first architecture for multi-country EU deployments</div>

          </div>

        </div>

      </div>

    </div>

  </section>


  <!-- TECH STACK -->

  <section id="stack">

    <span class="section-label">Technology</span>

    <h2 class="section-title">The stack behind<br>our products.</h2>

    <div class="tech-grid">

      <span class="tech-chip highlight">Swift</span>

      <span class="tech-chip highlight">Kotlin</span>

      <span class="tech-chip highlight">React Native</span>

      <span class="tech-chip highlight">Python</span>

      <span class="tech-chip">PyTorch</span>

      <span class="tech-chip">Hugging Face</span>

      <span class="tech-chip">OpenAI API</span>

      <span class="tech-chip">Anthropic Claude</span>

      <span class="tech-chip">LangChain</span>

      <span class="tech-chip">Neo4j (Knowledge Graphs)</span>

      <span class="tech-chip">FastAPI</span>

      <span class="tech-chip">PostgreSQL</span>

      <span class="tech-chip">Firebase</span>

      <span class="tech-chip">RevenueCat</span>

      <span class="tech-chip">Amplitude</span>

      <span class="tech-chip">Mixpanel</span>

      <span class="tech-chip">AWS / GCP</span>

      <span class="tech-chip">Docker · Kubernetes</span>

    </div>

  </section>


  <!-- PORTFOLIO -->

  <section id="work">

    <span class="section-label">Portfolio</span>

    <h2 class="section-title">Apps we've built<br>& shipped.</h2>

    <div class="project-list">

      <div class="project-item">

        <span class="project-emoji">🧠</span>

        <div class="project-info">

          <h4>AdaptLearn — Personalized Skill Trainer</h4>

          <p>Adaptive mobile learning app using knowledge graphs and spaced repetition. Configurable for any professional domain.</p>

        </div>

        <div class="project-tags">

          <span class="ptag ptag-ios">iOS</span>

          <span class="ptag ptag-android">Android</span>

          <span class="ptag ptag-ai">AI</span>

          <span class="ptag ptag-learning">EdTech</span>

        </div>

      </div>

      <div class="project-item">

        <span class="project-emoji">🎯</span>

        <div class="project-info">

          <h4>FocusFlow — Habit & Productivity Coach</h4>

          <p>AI-driven daily planning assistant with personalized nudge algorithms and streak-based engagement.</p>

        </div>

        <div class="project-tags">

          <span class="ptag ptag-ios">iOS</span>

          <span class="ptag ptag-ai">AI</span>

        </div>

      </div>

      <div class="project-item">

        <span class="project-emoji">🌍</span>

        <div class="project-info">

          <h4>LinguaPath — Language Learning Engine</h4>

          <p>LLM-powered conversational language tutor with adaptive vocabulary scheduling and pronunciation feedback.</p>

        </div>

        <div class="project-tags">

          <span class="ptag ptag-ios">iOS</span>

          <span class="ptag ptag-android">Android</span>

          <span class="ptag ptag-ai">AI</span>

          <span class="ptag ptag-learning">EdTech</span>

        </div>

      </div>

      <div class="project-item">

        <span class="project-emoji">📊</span>

        <div class="project-info">

          <h4>FinQuiz — Financial Literacy Trainer</h4>

          <p>Gamified finance education app with personalised modules, assessments, and subscription monetisation.</p>

        </div>

        <div class="project-tags">

          <span class="ptag ptag-ios">iOS</span>

          <span class="ptag ptag-ai">AI</span>

          <span class="ptag ptag-learning">EdTech</span>

        </div>

      </div>

    </div>

  </section>


  <!-- CTA -->

  <section>

    <div class="cta-block">

      <h2>Ready to build something<br>meaningful together?</h2>

      <p>Whether you're launching a consumer app, applying to a European funding round, or building the next generation of AI-powered learning — let's talk.</p>

      <a href="mailto:[email protected]" class="btn-white">Get in touch →</a>

    </div>

  </section>


  <!-- FOOTER -->

  <footer>

    <span class="footer-logo">Apphesus<span>.</span></span>

    <span>© 2025 Apphesus OÜ · Tallinn, Estonia</span>

    <a href="mailto:[email protected]" style="color: var(--muted); text-decoration: none;">[email protected]</a>

  </footer>


</body>

</html>