{
  "$schema": "https://raw.githubusercontent.com/jsonresume/resume-schema/v1.0.0/schema.json",
  "basics": {
    "name": "Tomislav Krnic",
    "label": "Senior software developer. Founder of Krnic CommV.",
    "email": "info@krnic.be",
    "phone": "+32 490 36 49 17",
    "url": "https://krnic.be/about",
    "summary": "Twenty-five years of building software, twenty of them at the pace of the American market: decide in the morning, ship in the evening. A founder eight times over, with two of those companies sold. More than a hundred products shipped to market, in roles from engineer to founder, mostly at the hard parts: the demanding early phases of a startup, or the big leaps in a product’s life. An early member of the Toptal network, where the client work for Bird Buddy, Journey and Full Proof came from. Croatian by origin, based in Gent, Belgium, working through Krnic CommV. AI-native means the product is designed around AI from the first day, and the company around it as well. The studio’s own products are built, marketed, sold and run by AI agents with defined roles, under human approval. The badge “AI self-driving business” on a project means exactly that: no human in the daily operating loop. Model-agnostic by principle: Claude, Gemini and others, chosen per job, never one provider as a lock-in. The same rule applies to client work.",
    "location": {
      "city": "Gent",
      "countryCode": "BE",
      "region": "East Flanders"
    },
    "profiles": [
      {
        "network": "Toptal",
        "url": "https://www.toptal.com/developers/resume/tomislav-krnic"
      },
      {
        "network": "GitHub",
        "url": "https://github.com/Krnic-CommV"
      }
    ]
  },
  "work": [
    {
      "name": "Krnic CommV",
      "position": "Founder, senior software developer",
      "url": "https://krnic.be/",
      "location": "Gent, Belgium",
      "summary": "AI-native software studio: builds its own products (run by AI agents, with a human directing) and takes over the AI agenda of companies as one senior, accountable person, from the first decision to production.",
      "highlights": [
        "QuizMonster: A quiz with a monster who cheers you on.",
        "CityX: A modular platform cities run their services on.",
        "Mealmate: From craving to table.",
        "Daydeck: Every project, on your wallpaper.",
        "Insenia: A mirror, not a judge.",
        "Undiet: Social where it helps, private where it counts.",
        "Roko: A company name in. A live site out.",
        "HRphotocontest: A photography legend."
      ]
    },
    {
      "name": "Toptal",
      "position": "Senior developer, network member",
      "url": "https://www.toptal.com/developers/resume/tomislav-krnic",
      "summary": "Client work through the Toptal network.",
      "highlights": [
        "Bird Buddy (Bird Buddy): Meet your birds.",
        "Full Proof (Full Proof): For every vibe.",
        "Journey (Journey Rewards): Stay everywhere. One key."
      ]
    },
    {
      "name": "HRphotocontest",
      "position": "Founder",
      "url": "https://www.hrphotocontest.com",
      "startDate": "2003",
      "summary": "HRphotocontest is one of Croatia’s largest and longest-running photography communities. Running since 2003, it grew to more than 12,000 photographers, 200,000 photos and close to three million ratings across thousands of Fotomaraton competitions."
    }
  ],
  "skills": [
    {
      "name": "Mobile",
      "level": "Senior",
      "keywords": [
        "React Native",
        "Expo",
        "TypeScript",
        "Reanimated",
        "Skia",
        "HealthKit"
      ]
    },
    {
      "name": "Web",
      "level": "Senior",
      "keywords": [
        "Next.js",
        "React",
        "Vite",
        "Tailwind",
        "MUI"
      ]
    },
    {
      "name": "Backend and data",
      "level": "Senior",
      "keywords": [
        "Node.js",
        "PostgreSQL",
        "Supabase",
        "Firebase",
        "Drizzle",
        "Strapi",
        "Redis",
        "Stripe"
      ]
    },
    {
      "name": "AI",
      "level": "Senior",
      "keywords": [
        "Claude and Claude Code agents",
        "Gemini",
        "MCP",
        "Vercel AI SDK",
        "Recombee",
        "generative video pipelines"
      ]
    },
    {
      "name": "Native",
      "level": "Senior",
      "keywords": [
        "Swift",
        "AppKit",
        "WebKit",
        "StoreKit"
      ]
    }
  ],
  "languages": [
    {
      "language": "English",
      "fluency": "Professional"
    },
    {
      "language": "Dutch",
      "fluency": "Professional"
    },
    {
      "language": "Croatian",
      "fluency": "Native speaker"
    }
  ],
  "projects": [
    {
      "name": "QuizMonster",
      "description": "A quiz with a monster who cheers you on. QuizMonster is a quiz app for children aged 6 to 12. A friendly monster reads the question, waits while you think, and celebrates every right answer. There is no red and no X: a wrong answer gets an encouraging thumbs up and another go. Bombo, Nina and Chip each have their own personality, and every quiz turns into a small show.",
      "highlights": [
        "Designed and built from scratch as an Expo and React Native app on a hand-built cartoon design system: cream surfaces, four pastel answer colours, chunky rounded type in Baloo 2 and Nunito, big touch targets, warm haptic feedback, and reduced motion respected throughout.",
        "The monsters are not rigs. They are AI-rendered video clips with transparency, produced by a pipeline of Nano Banana Pro for the master pose, Kling v3 Pro for image-to-video with the same first and last frame, Bria for matting and ffmpeg for encoding: HEVC with alpha for iOS, VP9 with alpha for Android and web, animated WebP as fallback. Because every clip starts and ends in the neutral pose, a small character state machine cuts from idle to a reaction and back without a visible seam."
      ],
      "keywords": [
        "React Native",
        "Expo",
        "TypeScript",
        "Reanimated",
        "expo-video",
        "Kling",
        "Nano Banana",
        "Bria",
        "ffmpeg",
        "Python"
      ],
      "startDate": "2026",
      "url": "https://krnic.be/projects/quizmonster",
      "roles": [
        "Founder, Full-stack"
      ],
      "entity": "Krnic CommV",
      "type": "application"
    },
    {
      "name": "CityX",
      "description": "A modular platform cities run their services on. CityX is a modular platform cities run their services on: a citizen app, the core behind it and a console for city staff. More than 30 modules, from fault reports to live departures, connect to the systems a city already has. In production since 2023.",
      "highlights": [
        "Krnic designed, built and operates the platform: the module engine and gateway in the Core, the citizen app, the role-scoped Console, and the integrations with city systems and open data. The business around it is run by twelve AI agents with defined roles, under human approval."
      ],
      "keywords": [
        "React Native",
        "Expo",
        "TypeScript",
        "Firebase Functions",
        "PostgreSQL",
        "Supabase",
        "Firestore",
        "Next.js",
        "Claude Code agents"
      ],
      "startDate": "2023",
      "url": "https://krnic.be/projects/cityx",
      "roles": [
        "Founder, Full-stack"
      ],
      "entity": "Krnic CommV",
      "type": "application"
    },
    {
      "name": "Mealmate",
      "description": "From craving to table. Mealmate is the platform for restaurants: a free discovery listing that AI assistants can read and book, a video feed of real food nearby, and pickup, table QR and reservations run from one dashboard, with no commission on anything.",
      "highlights": [
        "Co-founder and technical builder of the entire platform. On the surface: React Native customer and business apps, a Next.js and MUI web app, and a restaurant CMS with visual floor and paydesk layouts, all backed by a Firebase Functions API with Stripe payments and payouts.",
        "Underneath runs a real AI layer: a menu-import pipeline that extracts with Gemini and verifies with Claude, a Recombee-powered personalised video feed with taste and location signals, automatic vibe-tagging of video, and an agentic layer that lets any assistant discover, reserve and order from live Mealmate data."
      ],
      "keywords": [
        "React Native",
        "Next.js",
        "TypeScript",
        "MUI",
        "Firebase",
        "Cloud Functions",
        "Stripe",
        "Recombee",
        "Gemini",
        "Claude"
      ],
      "startDate": "2025",
      "url": "https://krnic.be/projects/mealmate",
      "roles": [
        "Co-founder, Full-stack"
      ],
      "entity": "Krnic CommV",
      "type": "application"
    },
    {
      "name": "Daydeck",
      "description": "Every project, on your wallpaper. Daydeck is a calm macro timeline on your Mac’s desktop wallpaper. One lane per project, a few big blocks per lane, one soft line for today. It answers one question at a glance: what am I on today, and which part of which project.",
      "highlights": [
        "Born from a real need: AI removed the natural pauses from work, and with ten things in flight there was no calm place to see them from above. Daydeck is not a task manager and not a calendar. It is the pacing layer: it helps you do the right amount, in order.",
        "A native macOS app in Swift on AppKit and WebKit that renders as the actual wallpaper, behind the icons, on every Space and display, and ships on the Mac App Store with StoreKit. Around it: a Claude skill that teaches the pacing rules, an MCP connector that gives Claude Desktop, Claude Code and Cursor hands on the plan, and a daydeck:// URL scheme for Shortcuts and Raycast. The app never touches the network; everything is one local file it watches and redraws instantly."
      ],
      "keywords": [
        "Swift",
        "AppKit",
        "WebKit",
        "StoreKit",
        "macOS",
        "MCP",
        "Claude skill"
      ],
      "startDate": "2026",
      "url": "https://krnic.be/projects/daydeck",
      "roles": [
        "Founder, Design & build"
      ],
      "entity": "Krnic CommV",
      "type": "application"
    },
    {
      "name": "Insenia",
      "description": "A mirror, not a judge. Insenia is an evening reflection ritual: a private space to unwind, journal by voice, and watch gentle patterns emerge over time, without pressure or scoring.",
      "highlights": [
        "Designed and built the product. The Expo and React Native app pairs voice journaling, backed by on-device speech recognition and audio, with calm, hand-drawn visuals rendered in Skia and a fluid interface animated with Reanimated and haptics. Health signals flow in from Apple HealthKit and Android Health Connect, while entries live locally in SQLite through Drizzle ORM.",
        "A Supabase backend with Postgres and Deno edge functions powers the reflective side: voice intake, weekly insights and a generated monthly portrait that turn scattered notes into something worth returning to. Subscriptions run through RevenueCat, with a Next.js marketing site alongside."
      ],
      "keywords": [
        "React Native",
        "Expo",
        "TypeScript",
        "Skia",
        "Supabase",
        "PostgreSQL",
        "Drizzle",
        "HealthKit",
        "RevenueCat",
        "Next.js"
      ],
      "startDate": "2026",
      "url": "https://krnic.be/projects/insenia",
      "roles": [
        "Founder, Full-stack"
      ],
      "entity": "Krnic CommV",
      "type": "application"
    },
    {
      "name": "Loop Africa",
      "description": "One membership. Every studio. Loop Africa is a credit-based wellness membership: one subscription to book fitness classes and events across partner studios, built for the African market.",
      "highlights": [
        "Full-stack development across the React Native member app, three Next.js web platforms and a Firebase backend. The app leans on the Firebase suite for authentication, data, storage and push, with Google and Apple sign-in, Mapbox maps for studio discovery, Skia visuals and Apple Wallet membership passes.",
        "On the web sit separate Next.js instances for members, partner studios and platform admins, styled with Tailwind and backed by Leaflet maps and Recharts dashboards. Firebase Cloud Functions carry the credit, booking and payout logic with Paystack payments tuned for the local market."
      ],
      "keywords": [
        "React Native",
        "Next.js",
        "TypeScript",
        "Firebase",
        "Firestore",
        "Cloud Functions",
        "Mapbox",
        "Paystack",
        "Tailwind",
        "Recharts"
      ],
      "startDate": "2026",
      "url": "https://krnic.be/projects/loop-africa",
      "roles": [
        "Freelance, Full-stack"
      ],
      "entity": "Loop Africa",
      "type": "application"
    },
    {
      "name": "Bird Buddy",
      "description": "Meet your birds. The original AI smart bird feeder: a camera that photographs backyard visitors and identifies thousands of species, with a companion app that turns every visit into a moment worth keeping.",
      "highlights": [
        "Full-stack work on an early prototype of the companion mobile app, exploring live video streaming, realtime updates and AI bird recognition."
      ],
      "keywords": [
        "React Native",
        "TypeScript",
        "iOS"
      ],
      "startDate": "2024",
      "url": "https://krnic.be/projects/bird-buddy",
      "roles": [
        "Freelance, Full-stack"
      ],
      "entity": "Bird Buddy",
      "type": "application"
    },
    {
      "name": "Undiet",
      "description": "Social where it helps, private where it counts. Undiet is a social network and tracker for people losing weight: a private journey, an anonymous community of people on the same road, and a diet catalog that shows what actually works, from the people on it. Diet-agnostic, with first-class support for GLP-1 medications.",
      "highlights": [
        "A full rewrite as a bare React Native app on a Supabase backend. The journey is modelled as a timeline of diet periods, so one engine tracks a 90-day rotation, a GLP-1 therapy or simply no diet, and turns it into both personal and crowd-level insight on what works.",
        "Two strictly separated worlds sit at the core: a private diary and a public, nickname-only persona, bridged only by an explicit share with a preview. Progress photos live in a biometric-locked vault, are cut out on the device and compared day by day on a private timeline, and never become a before-and-after post. Rewards are for showing up, never for kilograms."
      ],
      "keywords": [
        "React Native",
        "TypeScript",
        "Supabase",
        "PostgreSQL",
        "Row-level security",
        "Edge Functions",
        "Reanimated",
        "On-device vision",
        "RevenueCat"
      ],
      "startDate": "2026",
      "url": "https://krnic.be/projects/undiet",
      "roles": [
        "Founder, Full-stack"
      ],
      "entity": "Krnic CommV",
      "type": "application"
    },
    {
      "name": "Full Proof",
      "description": "For every vibe. Full Proof is a curated online marketplace, bringing a hand-picked selection into one clean, fast shopping experience with nationwide shipping and a simple guarantee.",
      "highlights": [
        "Full-stack build of the online store. The React storefront carries the whole shopping journey: browsing and search, product pages with variants, a persistent cart and a streamlined checkout, alongside accounts, order history and a responsive, fast-loading interface.",
        "Behind it, a Firebase backend runs the catalogue, customers and orders across Firestore, Auth and Cloud Functions, with Stripe handling payments and secure webhooks reconciling each transaction into fulfilled orders. Media and pages are served worldwide through Firebase Storage and a Cloudflare CDN."
      ],
      "keywords": [
        "React",
        "TypeScript",
        "Firebase",
        "Firestore",
        "Cloud Functions",
        "Stripe",
        "Cloudflare"
      ],
      "startDate": "2024",
      "url": "https://krnic.be/projects/full-proof",
      "roles": [
        "Freelance, Full-stack"
      ],
      "entity": "Full Proof",
      "type": "application"
    },
    {
      "name": "Roko",
      "description": "A company name in. A live site out. Roko is an AI starter kit for new companies: enter a business and it generates a complete, localised website in minutes, with copy grounded in real registry facts rather than anything invented.",
      "highlights": [
        "At the heart is an AI generation pipeline. It pulls verified company facts from the Belgian business registry, reads the sector from the NACE code, and has Claude write the marketing copy, hero, about, services and SEO, in Dutch, French or English. Real contact and identity data passes through untouched, so nothing factual is ever made up.",
        "Built as a Turborepo monorepo with three Next.js apps on shared UI, type and config packages: the marketing site, a multi-tenant renderer that serves every generated site, and a CMS to manage them. A Firebase backend carries the data and logic with Firestore rules and Cloud Functions."
      ],
      "keywords": [
        "Next.js",
        "TypeScript",
        "Turborepo",
        "Claude",
        "Firebase",
        "Firestore",
        "Cloud Functions"
      ],
      "startDate": "2026",
      "url": "https://krnic.be/projects/roko",
      "roles": [
        "Founder, Full-stack"
      ],
      "entity": "Krnic CommV",
      "type": "application"
    },
    {
      "name": "Journey",
      "description": "Stay everywhere. One key. Journey Rewards is a members-only loyalty platform that unites independent boutique hotels and residences under a single membership, turning thousands of character-driven stays into one personalised rewards experience on iOS and Android.",
      "highlights": [
        "Full-stack development across the React Native app and its Strapi API. On the client, the work spanned passwordless authentication with Clerk and Descope, in-app Apple Pay and Google Pay with PCI-compliant card tokenization, map-based property discovery with Mapbox, and an offline-first data layer on TanStack Query and MMKV. Much of the craft went into a fluid, animated interface: gesture-driven transitions and micro-interactions with Reanimated and Gesture Handler, Lottie sequences, haptic feedback and dynamic colour theming drawn from imagery, all on a shared design-token system.",
        "Behind it sits a Strapi 5 and PostgreSQL API with Redis and BullMQ workers, a Google Cloud media pipeline, and analytics, experimentation and monitoring through Statsig, Hightouch, Customer.io and Sentry."
      ],
      "keywords": [
        "React Native",
        "Expo",
        "TypeScript",
        "React Query",
        "Zustand",
        "Strapi",
        "PostgreSQL",
        "Redis",
        "Mapbox",
        "Google Cloud"
      ],
      "startDate": "2026",
      "url": "https://krnic.be/projects/journey",
      "roles": [
        "Freelance, Full-stack"
      ],
      "entity": "Journey Rewards",
      "type": "application"
    },
    {
      "name": "HRphotocontest",
      "description": "A photography legend. HRphotocontest is one of Croatia’s largest and longest-running photography communities. Running since 2003, it grew to more than 12,000 photographers, 200,000 photos and close to three million ratings across thousands of Fotomaraton competitions.",
      "highlights": [
        "Bringing two decades of photography onto a modern foundation: a Next.js 16 and React app with a bilingual interface and a hand-built design system, passwordless auth with better-auth, AI features through the Vercel AI SDK, and a Drizzle and PostgreSQL data layer that maps the archive of photos, competitions and ratings."
      ],
      "keywords": [
        "Next.js",
        "React",
        "TypeScript",
        "better-auth",
        "Vercel AI SDK",
        "Drizzle",
        "PostgreSQL"
      ],
      "startDate": "2003",
      "url": "https://krnic.be/projects/hrphotocontest",
      "roles": [
        "Founder, Full-stack"
      ],
      "entity": "Krnic CommV",
      "type": "application"
    }
  ],
  "publications": [
    {
      "name": "A plan on the wallpaper",
      "publisher": "Krnic blog",
      "releaseDate": "2026-10-04",
      "url": "https://krnic.be/blog/a-plan-on-the-wallpaper",
      "summary": "I pay serious money for AI agents, and they work fast. What I was missing was one plan above everything that tells me what I am on today and what can wait."
    },
    {
      "name": "A pram, just in case",
      "publisher": "Krnic blog",
      "releaseDate": "2026-09-29",
      "url": "https://krnic.be/blog/a-pram-just-in-case",
      "summary": "An architecture studio offered to design a house for me because my company delivers on time. A funny email, but it points to something that is not funny in software: work nobody looked at before it went out."
    },
    {
      "name": "The last ten percent",
      "publisher": "Krnic blog",
      "releaseDate": "2026-09-22",
      "url": "https://krnic.be/blog/the-last-ten-percent",
      "summary": "Twenty-five years of building software, and it has never been easier to make something that looks finished. Or harder to make something that works. The first post in a series on software development in the age of AI and agents, from someone who builds it every day."
    }
  ],
  "meta": {
    "canonical": "https://krnic.be/cv.json",
    "version": "v1.0.0",
    "lastModified": "2026-10-06"
  }
}
