Skip to content
hvidom

Based in Dublin, Ireland

Made in Ukraine

Hryhorii Ilin

Full-stack developer, infrastructure tinkerer, ex-sales director

shipping TypeScript from DB to UI. building CRMs that actually sell. teaching AI agents the night shift. 15+ years of code, servers & sales
  • TypeScript
  • Bun
  • Hono
  • React
  • Astro
  • Postgres
  • Cloudflare

~ $ whoami

The short version

Fifteen years across three crafts: servers, code and sales. These days I put all three into one product.

hvidom@dublin: ~ — zsh

hvidom@dublin ~ $ neofetch

hvidom@dublin

Name
Hryhorii Ilin · @hvidom
Role
Full-stack developer · ex-sales director
Location
Dublin, Ireland · originally from Ukraine
Uptime
15+ years in tech: code, servers, sales
Stack
TypeScript · Bun · Hono · React · Astro · Postgres
Infra
Cloudflare · Docker · Coolify · Oracle · Hetzner
AI
Claude · Vercel AI SDK · MCP · agents & skills
Editor
VS Code + Claude Code
Learning
Software Development course: Python, C#
Into
open source · startups · psychology of sales
Motto
“Ship it to production. Then sell it.”

hvidom@dublin ~ $

~ $ cat ~/journey.log

Professional journey

A track record spanning over 15 years, integrating software architecture, strategic infrastructure, and customer-focused sales leadership.

  1. 2026Now

    Builder of Content Factory

    All three crafts in one product

    A TypeScript platform that runs a car-electronics business in Dublin: CRM, an omnichannel inbox, a Git-backed website CMS, the warehouse, payments and an AI agent that answers customers at night.

    • Bun
    • Hono
    • React 19
    • PostgreSQL
    • AI agents
  2. 2020 – presentLead role

    Sales Director & Technology Architect

    Strategic pipelines & enterprise systems

    Leading sales engineering and technology integrations. Designed and deployed automated CRM mapping workflows (HubSpot, Salesforce) integrated directly with backend customer telemetry databases. Coached over 30 sales agents, bridging the gap between deep technical implementation and human sales psychology.

    • Sales strategy
    • CRM automation
    • Sales coaching
    • API integrations
  3. 2015 – 2020Full-stack

    Senior Full-Stack Developer

    High-performance client applications

    Spearheaded UI design and system backend architectures for multiple digital products. Built highly responsive components using React, Vue, and Next.js, and designed efficient Node APIs handling complex relational queries. Maintained 99.9% application uptime by optimizing codebases and setting up strict CI/CD verification workflows.

    • React / Next.js
    • Vue
    • Node.js
    • PostgreSQL
    • CI/CD
  4. 2011 – 2015DevOps

    Infrastructure Engineer & Linux Administrator

    Server security & high-availability hosting

    Configured highly secure server clusters with custom network routing, kernel-level firewall settings, and automated backup operations. Oversaw full DevOps processes, setting up isolated Docker containers, load balancers, and Cloudflare DNS security protections for enterprise clients.

    • Linux / Bash
    • Docker
    • Server security
    • Cloudflare

~ $ ls ~/projects

Featured work

The thing I'm proudest of runs a real business every day. The website around it brings in the leads.

FEATURED PROJECTPRIVATE · LIVE IN PRODUCTION

Content Factory

The operating system of a car-electronics business in Dublin, in one Bun + TypeScript monorepo.

lines of TypeScript
340k+
DB migrations
131
test suites
230
API route modules
80
background jobs
35
  • Omnichannel inboxWhatsApp, Messenger, Instagram, email, web chat
  • CRM & salesLeads → deals → jobs, price calculator, quotes
  • AI agent “Merlin” Night-shift replies, n8n-style skills, MCP
  • Website CMS on GitEdits radioking.ie, deploys to Cloudflare
  • Warehouse & supplyKits, stock moves, purchasing, returns, fleet
  • Payments & documentsStripe, deposits, reminders, quotes, invoices
  • Marketing analyticsGA4, Search Console, Google Ads, DataForSEO
  • Ops & securityOpenTelemetry → Grafana, RBAC, 2FA, audit, backups

Bun · Hono · React 19 · TanStack · Tailwind v4 · shadcn/ui · Drizzle · PostgreSQL 18 · Plate · Vercel AI SDK · Docker on Coolify

radioking.ie

Website and shop for a car-electronics installer in Dublin: a landing page per search intent, about 175 products with Stripe Checkout and server-side order reconciliation. It replaced WordPress without breaking a single URL.

  • Astro
  • React
  • Hono
  • Stripe
  • Cloudflare Workers

~ $ merlin --help

Meet Merlin

The AI layer of Content Factory: a teammate in the chat, automations on a canvas and a night shift for customers. A short deck, then the code.

chat tools
11
skill steps
19
emotions
35
unit tests
88
~/merlin/deck
01 / 06
  1. 01 / 06

    An AI teammate inside the CRM

    Staff ask in plain words. Merlin answers with 11 tools: he searches records, creates tasks, drafts replies to customers and summarises long conversations.

    • “What needs my attention?” is one question, not five screens
    • Every answer gets 👍 or 👎 and “how it should have been”
    • Those corrections go back into his instructions

    merlin $ tools --list

    • search_records()
    • create_task()
    • attention_summary()
    • my_open_tasks()
    • draft_customer_reply()
    • summarize_conversation()
    • write_article()
    • article_status()
    • find_tips()
    • merlin_skills()
    • update_skill_instructions()

    ✓ 11 tools · answers rated 👍/👎

  2. 02 / 06

    Skills: automations on a canvas

    The team draws a flow, like in n8n: one trigger, then steps. Merlin runs it for every lead that matches.

    • Triggers: a lead is created, changes stage, or is stuck for N days
    • AI steps branch the flow by what the customer wants
    • Live counters show how many leads passed each step and wait there now
    1. trigger · lead stuck in a stage for 3 days
    2. Wait for working hours
    3. AI: what the customer wantsbookingquotewarrantyquestionother
    4. Merlin chatsCreate a dealNotify the team
  3. 03 / 06

    19 building blocks

    Waits and checks, AI decisions, WhatsApp messages, CRM changes and a signed webhook for everything else.

    • React Flow editor with a minimap, undo/redo and copy/paste between skills
    • Drop a step onto a connection to insert it
    • One-click auto layout, sticky notes and step search

    Flow

    • Lead trigger
    • Pause
    • Wait for working hours
    • Working hours?
    • Check the lead
    • A/B split
    • Wait for a reply

    Merlin thinks

    • AI: what the customer wants
    • Merlin chats

    Merlin writes

    • WhatsApp template
    • Message to the customer

    For the team

    • Note in the chat
    • Assign
    • Notify the team
    • Create a task

    CRM

    • Change the stage
    • Tags
    • Create a deal

    Other systems

    • Webhook
  4. 04 / 06

    Guard rails before autopilot

    A flow that writes to customers has to be predictable, so a skill is checked before it can be switched on.

    • One run per lead per skill, locked so two workers never share it
    • Meta’s 24-hour messaging window is respected
    • A dry run first, or a real run on a single test lead
    • The “stuck” trigger only looks back 7 days, never at a legacy backlog

    merlin $ skill check

    • ✓ exactly one trigger
    • ✓ no loops in the flow
    • ✓ one connection per output
    • ✓ every step set up

    18 kinds of problems are caught before a skill goes live.

    → ready to switch on

  5. 05 / 06

    The night shift

    From 19:00 to 08:00 Merlin answers customers in the chosen channels while the sales team is off.

    • Waits for 60 seconds of quiet, because customers write in bursts
    • Steps back the moment a person replies
    • Never names prices and hands over when a human is needed
    • Reply caps per conversation and per night, and a digest in the morning
    12:0019:00 → 08:0012:00

    🌙 Merlin is answering this customer tonight while sales are off. Reply here in the morning and he steps back.

  6. 06 / 06

    A face with feelings

    A jelly mascot with 35 emotions. He listens while you type, thinks, looks proud when a task is done and dozes when you are away.

    • Closes his eyes when you type a password, an API key or a card number
    • A corner buddy with page tips, cheers and reminders to take a break
    • “Quiet until morning” and an off switch
    • listening
    • thinking
    • proud
    • dozing
    • eyes shut: secret typed

From the source

Real code from the private repository. Comments are translated from Russian; nothing personal is in it.

hvidom@dublin: ~/content-factory — zsh

hvidom@dublin ~/content-factory $ cat packages/types/src/merlin-skills.ts

# One typed table drives the editor’s handles, the validator and the engine’s routing.

/** Node outputs: at most one edge from each; a node with no edge on an output ends the run. */
export const SKILL_PORTS: Record<SkillNodeType, readonly string[]> = {
  "trigger.lead": ["next"],
  "wait.delay": ["next"],
  "wait.hours": ["next"],
  "if.hours": ["yes", "no"],
  "if.lead": ["yes", "no"],
  "split.ab": ["a", "b"],
  "ai.intent": ["booking", "quote", "warranty", "question", "other"],
  "whatsapp.template": ["sent", "failed"],
  "message.send": ["sent", "failed"],
  "wait.reply": ["replied", "timeout"],
  "merlin.chat": ["handoff", "done"],
  "inbox.note": ["next"],
  assign: ["next"],
  notify: ["next"],
  task: ["next"],
  "lead.stage": ["next"],
  "lead.tag": ["next"],
  "deal.create": ["created", "exists"],
  webhook: ["next", "failed"],
};

✔ 22 lines of TypeScript

hvidom@dublin ~/content-factory $

~ $ man hvidom

Areas of expertise

Where business questions turn into reliable software.

  • MODULE_01 // RESEARCH

    Market strategy

    • Customer-centric modeling
    • Lead-generation architectures
    • Competitive forecasting
  • MODULE_02 // ANALYTICS

    Data integration

    • Relational DB management
    • Analytics pipeline structure
    • Demographic cohort matching
  • MODULE_03 // ARCHITECTURE

    System architecture

    • Strategic business architecture
    • Scalability assessments
    • Modern toolstack integration
  • MODULE_04 // BRAND

    Visual identity

    • Interactive UI conventions
    • Corporate digital redesign
    • Sleek modern layouts

~ $ cat package.json

Tech stack

Used in production, not just in tutorials.

Languages

  • TypeScript
  • JavaScript
  • Python
  • GNU Bash
  • HTML5
  • CSS

Frontend

  • React
  • Vue.js
  • Svelte
  • Astro
  • Next.js
  • Nuxt
  • Tailwind CSS
  • shadcn/ui
  • TanStack
  • Vite

Backend & data

  • Bun
  • Node.js
  • Hono
  • Express
  • PostgreSQL
  • Drizzle
  • Redis
  • MongoDB
  • SQLite

Cloud & DevOps

  • Cloudflare
  • Cloudflare Workers
  • Docker
  • Coolify
  • Linux
  • Ubuntu
  • Oracle Cloud
  • Hetzner
  • Vercel
  • GitHub Actions
  • Grafana
  • OpenTelemetry

AI & APIs

  • Claude
  • Stripe
  • WhatsApp
  • Meta
  • Google Analytics
  • Google Ads

Tooling

  • Git
  • GitHub
  • Biome
  • Vitest
  • Playwright
  • Turborepo

~ $ gh api /users/hvidom

GitHub telemetry

Refreshed every night by a GitHub Action on my profile repository, including the little space shooter that clears my contribution graph.

GitHub statistics for @hvidom: contributions, private work, streaks, weekly activity and top languages
An animated spaceship shoots down the squares of my GitHub contribution graph
  • daily.dev Top reader badge, React, September 2026

    daily.dev Top reader

    React · September 2026

  • daily.dev DevCard for @hvidom

    daily.dev DevCard

    live reading stats

  • Holopin board with the Hacktoberfest 2023 participant badge

    Hacktoberfest 2023

    participant · via Holopin

~ $ ping hvidom

Let’s build something that ships, scales and sells.

Open-source ideas, a tricky integration, or a chat about sales systems: my inbox is open.