<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Kevin Filteau — Intelligently built apps</title>
    <meta name="description" content="Kevin Filteau builds apps that fit your business and feel natural for your team. Clear explanations, solid infrastructure, no smoke and mirrors.">
    <meta name="author" content="Kevin Filteau">
    <meta name="robots" content="index, follow">
    <meta name="theme-color" content="#0a0a0a">
    <link rel="icon" type="image/svg+xml" href="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'><rect width='64' height='64' rx='12' fill='%230a0a0a'/><text x='50%25' y='52%25' text-anchor='middle' dominant-baseline='middle' font-family='-apple-system,Helvetica,Arial,sans-serif' font-weight='700' font-size='40' fill='%23f0f0f0'>K</text></svg>">
    <link rel="canonical" href="https://kevinfilteau.com/">
    <link rel="alternate" hreflang="en" href="https://kevinfilteau.com/">
    <link rel="alternate" hreflang="fr" href="https://kevinfilteau.com/fr/">
    <link rel="alternate" hreflang="x-default" href="https://kevinfilteau.com/">

    <meta property="og:type" content="website">
    <meta property="og:site_name" content="Kevin Filteau">
    <meta property="og:title" content="Kevin Filteau — Intelligently built apps">
    <meta property="og:description" content="Builds apps that fit your business and feel natural for your team. Clear explanations, solid infrastructure.">
    <meta property="og:url" content="https://kevinfilteau.com/">
    <meta property="og:locale" content="en_US">
    <meta property="og:locale:alternate" content="fr_CA">
    <meta property="og:image" content="https://kevinfilteau.com/og-image.png">
    <meta property="og:image:width" content="1200">
    <meta property="og:image:height" content="630">
    <meta property="og:image:alt" content="Kevin Filteau — Intelligently built">

    <meta name="twitter:card" content="summary_large_image">
    <meta name="twitter:title" content="Kevin Filteau — Intelligently built apps">
    <meta name="twitter:description" content="Builds apps that fit your business and feel natural for your team.">
    <meta name="twitter:image" content="https://kevinfilteau.com/og-image.png">

    <script type="application/ld+json">
    {
        "@context": "https://schema.org",
        "@type": "Person",
        "name": "Kevin Filteau",
        "url": "https://kevinfilteau.com/",
        "email": "info@kevinfilteau.com",
        "telephone": "+1-418-254-7193",
        "jobTitle": "Software Developer",
        "description": "Builds apps that fit your business and feel natural for your team.",
        "image": "https://kevinfilteau.com/og-image.png",
        "inLanguage": "en"
    }
    </script>

    <script>
        (function () {
            try {
                var saved = localStorage.getItem('lang');
                if (saved === 'fr') { location.replace('/fr/'); return; }
                if (!saved) {
                    var nav = (navigator.language || navigator.userLanguage || 'en').toLowerCase();
                    if (nav.indexOf('fr') === 0) { location.replace('/fr/'); return; }
                }
            } catch (err) {}
        })();
    </script>

    <style>
        * { margin: 0; padding: 0; box-sizing: border-box; }

        body {
            background-color: #0a0a0a;
            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
            -webkit-font-smoothing: antialiased;
            -moz-osx-font-smoothing: grayscale;
            color: #f0f0f0;
        }

        .lang-switcher {
            position: fixed;
            top: 1.25rem;
            right: 1.25rem;
            display: flex;
            gap: 0.25rem;
            font-size: 0.85rem;
            font-weight: 400;
            letter-spacing: 0.08em;
            text-transform: uppercase;
            z-index: 10;
        }

        .lang-switcher a {
            color: #666;
            padding: 0.25rem 0.5rem;
            text-decoration: none;
            transition: color 0.15s;
        }

        .lang-switcher a:hover { color: #a0a0a0; }
        .lang-switcher a.active { color: #f0f0f0; }
        .lang-switcher .sep { color: #333; align-self: center; }

        main {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            min-height: 100vh;
            padding: 4rem 1.5rem;
            gap: 5rem;
        }

        .hero {
            text-align: center;
            text-decoration: none;
            cursor: pointer;
        }

        .hero h1 {
            color: #f0f0f0;
            font-size: 3rem;
            font-weight: 700;
            letter-spacing: -0.02em;
        }

        .hero p {
            color: #a0a0a0;
            font-size: 1.25rem;
            font-weight: 300;
            margin-top: 0.5rem;
            letter-spacing: 0.05em;
            text-transform: uppercase;
        }

        .intro {
            text-align: center;
            color: #d4d4d4;
            font-size: 1.5rem;
            font-weight: 300;
            line-height: 1.55;
            text-wrap: pretty;
        }

        .intro p + p { margin-top: 1rem; }

        .pillars {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 2.5rem;
            max-width: 960px;
            width: 100%;
        }

        .pillar h2 {
            color: #f0f0f0;
            font-size: 1.25rem;
            font-weight: 600;
            letter-spacing: 0.02em;
            margin-bottom: 0.75rem;
        }

        .pillar p {
            color: #a0a0a0;
            font-size: 1rem;
            font-weight: 300;
            line-height: 1.6;
        }

        .contact {
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 0.5rem;
            color: #a0a0a0;
            font-size: 1rem;
            font-weight: 300;
        }

        .contact a {
            color: #d4d4d4;
            text-decoration: none;
            border-bottom: 1px solid #2a2a2a;
            padding-bottom: 2px;
        }

        .contact a:hover { color: #f0f0f0; border-bottom-color: #555; }

        .obf { unicode-bidi: bidi-override; direction: rtl; }
        .obf-hide { display: none; }

        @media (max-width: 720px) {
            .pillars { grid-template-columns: 1fr; gap: 2rem; }
            .hero h1 { font-size: 2.25rem; }
            .intro { font-size: 1.15rem; }
        }
    </style>
</head>
<body>
    <nav class="lang-switcher" aria-label="Language">
        <a href="/" class="active" data-lang="en" hreflang="en">EN</a>
        <span class="sep">/</span>
        <a href="/fr/" data-lang="fr" hreflang="fr">FR</a>
    </nav>

    <main>
        <a href="/cdn-cgi/l/email-protection#4a23242c250a212f3c23242c23263e2f2b3f64292527" class="hero">
            <h1>Kevin Filteau</h1>
            <p>Intelligently built</p>
        </a>

        <section class="intro">
            <p>I understand what you really need — not just what you think you need.</p>
            <p>I build apps that fit your business well and feel natural for your team.</p>
            <p>I speak your language, so you know how it works and feel in control.</p>
        </section>

        <section class="pillars">
            <div class="pillar">
                <h2>Understanding</h2>
                <p>I don't just slap code together. I make sure I understand what I'm building and that it actually works in the real world.</p>
            </div>
            <div class="pillar">
                <h2>Taste</h2>
                <p>I have good taste in infrastructure. I know what's solid, what scales, and what will grow with you.</p>
            </div>
            <div class="pillar">
                <h2>Explanation</h2>
                <p>I'll explain everything clearly: what works, what doesn't, why we're doing it this way, and any risks involved. No smoke and mirrors — you'll know exactly what you're getting.</p>
            </div>
        </section>

        <footer class="contact">
            <span id="email-link" data-u="info" data-d="kevinfilteau.com">
                <span class="obf">moc.uaetlifnivek<span class="obf-hide">null</span>@ofni</span>
            </span>
            <span id="phone-link" data-a="1418" data-b="254" data-c="7193">
                <span class="obf">3917-452-814 1+</span>
            </span>
        </footer>
    </main>

    <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script>
        (function () {
            var e = document.getElementById('email-link');
            if (e) {
                var addr = e.dataset.u + '@' + e.dataset.d;
                var a = document.createElement('a');
                a.href = 'mailto:' + addr;
                a.textContent = addr;
                e.replaceWith(a);
            }
            var p = document.getElementById('phone-link');
            if (p) {
                var a1 = p.dataset.a, a2 = p.dataset.b, a3 = p.dataset.c;
                var raw = a1 + a2 + a3;
                var pretty = '+' + raw[0] + ' ' + raw.slice(1, 4) + '-' + a2 + '-' + a3;
                var t = document.createElement('a');
                t.href = 'tel:+' + raw;
                t.textContent = pretty;
                p.replaceWith(t);
            }

            document.querySelectorAll('.lang-switcher a').forEach(function (link) {
                link.addEventListener('click', function () {
                    try { localStorage.setItem('lang', link.dataset.lang); } catch (err) {}
                });
            });
        })();
    </script>
</body>
</html>
