{
  "schemaVersion": "1.0.0",
  "reviewedAt": "2026-10-30",
  "profile": {
    "name": "Syrus Samson",
    "role": "Front-End Lead",
    "headline": "Interfaces, AI tools, and the systems behind them.",
    "summary": "I lead front-end work for communications products and build tools that connect AI, software, and hardware.",
    "location": "Ontario, Canada",
    "email": "syrus.samson99@gmail.com",
    "github": "https://github.com/syrussamson",
    "about": [
      "I’m a Front-End Lead at Resource Software International. I work across UI/UX and React and TypeScript, from figuring out how a product should work to getting the interface into production.",
      "Outside of work, I build things I want to use: tools for agent workflows, a desktop companion, and projects that connect software to the hardware around it. I like getting the details right, especially the parts that make something easier to use.",
      "I studied Web Programming at Algonquin College. I also design and build websites for small businesses and independent clients."
    ]
  },
  "projects": [
    {
      "slug": "shadow-agent",
      "title": "Shadow Agent",
      "category": "Enterprise product",
      "summary": "Real-time dashboards for queues, agent presence, and contact-center reporting.",
      "role": "Front-End Lead · Resource Software International",
      "status": "Professional work",
      "technologies": [
        "React",
        "TypeScript",
        "Jotai",
        "AWS",
        "AG Grid",
        "Chart.js",
        "SASS"
      ],
      "featured": true,
      "links": [
        {
          "label": "Webex App Hub",
          "url": "https://apphub.webex.com/applications/shadow-agent-for-webex-calling-resource-software-international-ltd-rsi-80421"
        }
      ],
      "sections": [
        {
          "heading": "",
          "body": "I lead front-end and UI/UX work on Shadow Agent and Shadow Analytics at Resource Software International. The interfaces bring queues, agent presence, reporting, and live metrics into one workspace, so people can find the information they need without digging through separate views."
        },
        {
          "heading": "",
          "body": "My work spans discovery, interface design, and production React and TypeScript, including the grids, charts, and shared state behind those views. The schematic here shows the product’s public capabilities; customer data and internal implementations stay private."
        }
      ],
      "primaryCategory": "product-interfaces",
      "narrative": [
        "I lead front-end and UI/UX work on Shadow Agent and Shadow Analytics at Resource Software International. The interfaces bring queues, agent presence, reporting, and live metrics into one workspace, so people can find the information they need without digging through separate views.",
        "My work spans discovery, interface design, and production React and TypeScript, including the grids, charts, and shared state behind those views. The schematic here shows the product’s public capabilities; customer data and internal implementations stay private."
      ]
    },
    {
      "slug": "meridianx",
      "title": "MeridianX",
      "category": "Agent workflows & systems",
      "summary": "A keyboard-driven workspace for agent tools, remote machines, and hardware.",
      "role": "Personal project · design and implementation",
      "status": "Local application",
      "technologies": [
        "Python",
        "Textual",
        "SSH",
        "Tailscale",
        "Agent CLIs"
      ],
      "featured": true,
      "links": [],
      "sections": [
        {
          "heading": "",
          "body": "I built MeridianX to bring my agent tools, workspaces, remote machines, and hardware into one keyboard-driven interface. It uses a Textual tree and command palette so I can move between tasks without keeping a collection of unrelated commands in my head."
        },
        {
          "heading": "",
          "body": "The harness builds an inspectable command before running it, keeps prompts intact, and saves runs so I can come back to them. It is a personal tool for my own setup, with regression tests around quoting, templates, persistence, and keyboard behavior."
        }
      ],
      "primaryCategory": "tools-systems",
      "narrative": [
        "I built MeridianX to bring my agent tools, workspaces, remote machines, and hardware into one keyboard-driven interface. It uses a Textual tree and command palette so I can move between tasks without keeping a collection of unrelated commands in my head.",
        "The harness builds an inspectable command before running it, keeps prompts intact, and saves runs so I can come back to them. It is a personal tool for my own setup, with regression tests around quoting, templates, persistence, and keyboard behavior."
      ]
    },
    {
      "slug": "ducky-stream",
      "title": "Ducky Stream",
      "category": "Constrained hardware",
      "summary": "An AirPlay receiver adaptation built around the limits of a Fire TV.",
      "role": "Personal project · upstream adaptation and integration",
      "status": "Hardware-tested prototype",
      "technologies": [
        "Kotlin",
        "Android / Fire OS",
        "JNI",
        "C / C++",
        "SQLite",
        "mDNS"
      ],
      "featured": true,
      "links": [
        {
          "label": "Upstream receiver",
          "url": "https://github.com/jqssun/android-airplay-server"
        }
      ],
      "sections": [
        {
          "heading": "",
          "body": "I adapted the open-source android-airplay-server and UxPlay components for a Fire TV. My work adds a TV interface, background listening, startup handling, sender admission, and diagnostics that stay within a fixed storage limit."
        },
        {
          "heading": "",
          "body": "The receiver has been installed and checked on physical hardware, with casting from Mac and iPhone confirmed during development. I also worked on parser patches and recovery behavior. It remains a prototype: I haven’t established latency or long-session benchmarks, and the original receiver work keeps its upstream credit."
        }
      ],
      "primaryCategory": "tools-systems",
      "narrative": [
        "I adapted the open-source android-airplay-server and UxPlay components for a Fire TV. My work adds a TV interface, background listening, startup handling, sender admission, and diagnostics that stay within a fixed storage limit.",
        "The receiver has been installed and checked on physical hardware, with casting from Mac and iPhone confirmed during development. I also worked on parser patches and recovery behavior. It remains a prototype: I haven’t established latency or long-session benchmarks, and the original receiver work keeps its upstream credit."
      ]
    },
    {
      "slug": "ducky-desktop",
      "title": "Ducky desktop companion",
      "category": "Personal application",
      "primaryCategory": "tools-systems",
      "summary": "A desktop companion for tabs, everyday shortcuts, and sports schedules.",
      "role": "Personal project · interface and development",
      "status": "Personal application",
      "technologies": [
        "React",
        "TypeScript",
        "Electron",
        "macOS"
      ],
      "featured": false,
      "year": "2026",
      "links": [],
      "image": "/images/ducky-desktop.webp",
      "imageAlt": "Ducky desktop sports page with browsing tabs, a shortcut rail, and game schedules",
      "imageKind": "screenshot",
      "narrative": [
        "I built Ducky as a small desktop companion for everyday browsing. It keeps familiar tabs, a shortcut rail, and sports schedules in one window, with saved sites and tabs kept on the Mac.",
        "The current version uses React and Electron. I kept the usual browser controls in reach and added tab import and sports helpers, so the app can bring a few everyday tasks together without asking someone to learn a whole new interface."
      ],
      "sections": [
        {
          "heading": "",
          "body": "I built Ducky as a small desktop companion for everyday browsing. It keeps familiar tabs, a shortcut rail, and sports schedules in one window, with saved sites and tabs kept on the Mac."
        },
        {
          "heading": "",
          "body": "The current version uses React and Electron. I kept the usual browser controls in reach and added tab import and sports helpers, so the app can bring a few everyday tasks together without asking someone to learn a whole new interface."
        }
      ]
    },
    {
      "slug": "whats-up-quinte",
      "title": "Whats Up Quinte",
      "category": "Full-stack product",
      "summary": "Local events, with map, list, and calendar views that share filters.",
      "role": "Personal project · product and development",
      "status": "In development",
      "technologies": [
        "React",
        "TypeScript",
        "MUI",
        "Leaflet",
        "AWS SAM",
        "DynamoDB"
      ],
      "featured": true,
      "links": [],
      "sections": [
        {
          "heading": "",
          "body": "I’m building Whats Up Quinte to make local events easier to find. You can switch between a map, list, and calendar without losing your filters, then open an event for the details. The project also includes organizer-facing flows."
        },
        {
          "heading": "",
          "body": "The frontend is built with React and TypeScript, with discovery state in the URL so a view can be shared or revisited. There is a mock API and a serverless backend structure in the repository; this is still a development project, not a launched event service."
        }
      ],
      "primaryCategory": "product-interfaces",
      "narrative": [
        "I’m building Whats Up Quinte to make local events easier to find. You can switch between a map, list, and calendar without losing your filters, then open an event for the details. The project also includes organizer-facing flows.",
        "The frontend is built with React and TypeScript, with discovery state in the URL so a view can be shared or revisited. There is a mock API and a serverless backend structure in the repository; this is still a development project, not a launched event service."
      ]
    },
    {
      "slug": "windows-xp",
      "title": "Windows XP",
      "category": "Interface experiment",
      "summary": "A familiar desktop rebuilt in the browser, with a few useful extras.",
      "role": "Personal project · interface and development",
      "status": "Portfolio experiment",
      "technologies": [
        "React",
        "CSS",
        "Node.js",
        "Google Maps API"
      ],
      "featured": true,
      "links": [
        {
          "label": "Source on GitHub",
          "url": "https://github.com/syrussamson/win-XP"
        }
      ],
      "sections": [
        {
          "heading": "",
          "body": "I rebuilt the feel of Windows XP in the browser: draggable windows, a file interface, and an Internet Explorer-inspired view. I also added a TTC transit tracker so there was something practical to do inside the desktop."
        },
        {
          "heading": "",
          "body": "It was a chance to work through window state, independent tools, and the small interactions that make a familiar interface feel right. The React and Node source is public."
        }
      ],
      "image": "/images/WindowsXP.webp",
      "imageAlt": "Windows XP interface preview",
      "primaryCategory": "websites-experiments",
      "narrative": [
        "I rebuilt the feel of Windows XP in the browser: draggable windows, a file interface, and an Internet Explorer-inspired view. I also added a TTC transit tracker so there was something practical to do inside the desktop.",
        "It was a chance to work through window state, independent tools, and the small interactions that make a familiar interface feel right. The React and Node source is public."
      ],
      "imageKind": "screenshot"
    },
    {
      "slug": "lakehouse-inventory",
      "title": "Lakehouse Candles IMS",
      "category": "Business software",
      "summary": "Inventory, materials, and sales reporting in one working interface.",
      "role": "Design and development",
      "status": "Portfolio work",
      "technologies": [
        "React",
        "CSS",
        "AWS",
        "AG Grid",
        "Chart.js"
      ],
      "featured": true,
      "links": [],
      "sections": [
        {
          "heading": "",
          "body": "I designed and built an inventory interface for Lakehouse Candles, connecting finished products with the materials and sales that change stock levels. It brings inventory tables, sales reporting, and low-stock alerts into the same place."
        },
        {
          "heading": "",
          "body": "I used grids for the details and charts for a quicker look at what has changed. The aim was to make the relationship between materials, stock, and sales easier to follow."
        }
      ],
      "image": "/images/IMS.webp",
      "imageAlt": "Lakehouse Candles IMS interface preview",
      "primaryCategory": "product-interfaces",
      "narrative": [
        "I designed and built an inventory interface for Lakehouse Candles, connecting finished products with the materials and sales that change stock levels. It brings inventory tables, sales reporting, and low-stock alerts into the same place.",
        "I used grids for the details and charts for a quicker look at what has changed. The aim was to make the relationship between materials, stock, and sales easier to follow."
      ],
      "imageKind": "screenshot"
    },
    {
      "slug": "year0001-radio",
      "title": "Radio",
      "category": "Audio experiment",
      "summary": "A web radio experiment built around continuous playback and listener feedback.",
      "role": "Personal project · design and development",
      "status": "Portfolio experiment",
      "technologies": [
        "React",
        "CSS",
        "Node.js",
        "Express"
      ],
      "featured": false,
      "links": [
        {
          "label": "Source on GitHub",
          "url": "https://github.com/syrussamson/year0001-radio"
        }
      ],
      "sections": [
        {
          "heading": "",
          "body": "I built a web radio interface around continuous music playback and listener feedback, using React for the player and a small Node and Express service alongside it."
        },
        {
          "heading": "",
          "body": "It is an independent experiment inspired by YEAR0001, with no affiliation to the label. The public repository holds the project."
        }
      ],
      "image": "/images/RAD.webp",
      "imageAlt": "Radio interface preview",
      "primaryCategory": "websites-experiments",
      "narrative": [
        "I built a web radio interface around continuous music playback and listener feedback, using React for the player and a small Node and Express service alongside it.",
        "It is an independent experiment inspired by YEAR0001, with no affiliation to the label. The public repository holds the project."
      ],
      "imageKind": "screenshot"
    },
    {
      "slug": "white-pine-tattoos",
      "title": "White Pine Tattoos",
      "category": "Client website",
      "summary": "A straightforward home for a tattoo studio and its work.",
      "role": "Website design and development",
      "status": "Client work",
      "technologies": [
        "React",
        "CSS",
        "Jotai"
      ],
      "featured": false,
      "links": [],
      "sections": [
        {
          "heading": "",
          "body": "I designed and developed a React website for White Pine Tattoos. The focus was simple: give the studio a clear web presence and let its work do most of the talking."
        },
        {
          "heading": "",
          "body": "I kept the navigation straightforward and the presentation centered on the studio’s visuals. This is the version I’ve kept in my portfolio."
        }
      ],
      "image": "/images/WhitePineTattoo.webp",
      "imageAlt": "White Pine Tattoos interface preview",
      "primaryCategory": "websites-experiments",
      "narrative": [
        "I designed and developed a React website for White Pine Tattoos. The focus was simple: give the studio a clear web presence and let its work do most of the talking.",
        "I kept the navigation straightforward and the presentation centered on the studio’s visuals. This is the version I’ve kept in my portfolio."
      ],
      "imageKind": "screenshot"
    },
    {
      "slug": "car-connekt",
      "title": "Car Connekt",
      "category": "Client website",
      "summary": "A responsive car rental website with clear, simple navigation.",
      "role": "Website design and development",
      "status": "Client work",
      "technologies": [
        "React",
        "CSS",
        "Bootstrap"
      ],
      "featured": false,
      "links": [
        {
          "label": "Source on GitHub",
          "url": "https://github.com/syrussamson/carconnekt"
        }
      ],
      "sections": [
        {
          "heading": "",
          "body": "I designed and built a website for Car Connekt, using React, CSS, and Bootstrap. I focused on making the company’s offering easy to browse across screen sizes."
        },
        {
          "heading": "",
          "body": "This was client website work, with the interface and responsive layout as my contribution. The source is available on GitHub."
        }
      ],
      "image": "/images/CC.webp",
      "imageAlt": "Car Connekt interface preview",
      "primaryCategory": "websites-experiments",
      "narrative": [
        "I designed and built a website for Car Connekt, using React, CSS, and Bootstrap. I focused on making the company’s offering easy to browse across screen sizes.",
        "This was client website work, with the interface and responsive layout as my contribution. The source is available on GitHub."
      ],
      "imageKind": "screenshot"
    },
    {
      "slug": "local-ai-lab",
      "title": "Local AI lab",
      "category": "Local AI & hardware",
      "summary": "Local model experiments across a small Mac and a GPU workstation.",
      "role": "Personal lab · local model setup",
      "status": "Installed-model setups",
      "technologies": [
        "Ollama",
        "Quantized models",
        "macOS",
        "Ubuntu",
        "NVIDIA GPUs"
      ],
      "featured": false,
      "links": [],
      "sections": [
        {
          "heading": "",
          "body": "I’ve been setting up local model workflows across a small Mac and an Ubuntu workstation. The Mac gives me a tight memory budget to work with; the workstation gives me room to explore larger quantized models and GPU constraints."
        },
        {
          "heading": "",
          "body": "Ollama and installed models are verified on these setups, but that is a starting point, not a benchmark. I haven’t established inference speed or task-quality results, and a cloud-backed model entry is kept separate from the local ones."
        }
      ],
      "primaryCategory": "tools-systems",
      "narrative": [
        "I’ve been setting up local model workflows across a small Mac and an Ubuntu workstation. The Mac gives me a tight memory budget to work with; the workstation gives me room to explore larger quantized models and GPU constraints.",
        "Ollama and installed models are verified on these setups, but that is a starting point, not a benchmark. I haven’t established inference speed or task-quality results, and a cloud-backed model entry is kept separate from the local ones."
      ]
    },
    {
      "slug": "network-observability-lab",
      "title": "Network observability lab",
      "category": "Networking & local AI",
      "summary": "A dashboard for understanding traffic patterns on my own test devices.",
      "role": "Personal lab · dashboard and tooling",
      "status": "Implemented prototype",
      "technologies": [
        "Python",
        "Linux networking",
        "PCAP / PCAPNG",
        "Flow classification",
        "Ollama"
      ],
      "featured": false,
      "links": [],
      "sections": [
        {
          "heading": "",
          "body": "I built a passive traffic dashboard and classifier for my own test devices. It uses visible protocol information, packet timing, sizes, and flow duration to explain a classification, with reasons and confidence labels rather than a bare guess."
        },
        {
          "heading": "",
          "body": "There is also an optional Ollama summary path in the code. Traffic patterns don’t reveal encrypted content or prove what someone is doing, and no captures or device identities are published here. The current runtime topology still needs a fresh check before I document it as an architecture."
        }
      ],
      "primaryCategory": "tools-systems",
      "narrative": [
        "I built a passive traffic dashboard and classifier for my own test devices. It uses visible protocol information, packet timing, sizes, and flow duration to explain a classification, with reasons and confidence labels rather than a bare guess.",
        "There is also an optional Ollama summary path in the code. Traffic patterns don’t reveal encrypted content or prove what someone is doing, and no captures or device identities are published here. The current runtime topology still needs a fresh check before I document it as an architecture."
      ]
    },
    {
      "slug": "home-assistant-hardware",
      "title": "Home Assistant on reused hardware",
      "category": "Smart-home foundation",
      "summary": "Giving an older Mac mini a useful home automation job.",
      "role": "Personal lab · virtualization and service setup",
      "status": "Running foundation",
      "technologies": [
        "Home Assistant",
        "VirtualBox",
        "macOS",
        "Virtualization",
        "Headless services"
      ],
      "featured": false,
      "links": [],
      "sections": [
        {
          "heading": "",
          "body": "I reused an older Intel Mac mini to host a Home Assistant virtual machine, keeping the host and guest separate. The guest runs with two virtual CPUs and 2 GiB of memory, leaving room on the Mac for the host itself."
        },
        {
          "heading": "",
          "body": "The VM was running when checked on 30 October 2026, and the setup includes a startup service. It is still a foundation: I haven’t verified the device integrations, Apple Home bridge, or recovery after a full host restart."
        }
      ],
      "primaryCategory": "tools-systems",
      "narrative": [
        "I reused an older Intel Mac mini to host a Home Assistant virtual machine, keeping the host and guest separate. The guest runs with two virtual CPUs and 2 GiB of memory, leaving room on the Mac for the host itself.",
        "The VM was running when checked on 30 October 2026, and the setup includes a startup service. It is still a foundation: I haven’t verified the device integrations, Apple Home bridge, or recovery after a full host restart."
      ]
    },
    {
      "slug": "calendar-sticker-outlook",
      "title": "Calendar Stickers for Outlook",
      "category": "Product concept",
      "summary": "A calendar sticker idea for choosing dates inside an email conversation.",
      "role": "Product concept · interaction and visual design",
      "status": "Concept",
      "technologies": [
        "Outlook add-in",
        "Calendar UI",
        "Email interaction"
      ],
      "featured": false,
      "year": "2026",
      "links": [],
      "sections": [
        {
          "heading": "",
          "body": "I want to make a small Outlook add-in that lets you mark a few days on a calendar and drop it into an email like a sticker. The point is to keep the visual attached to the conversation, with just enough configuration to make it useful."
        },
        {
          "heading": "",
          "body": "The proposed next step is for recipients, including people copied on the email, to open it and choose a time. This is a concept so far: the add-in, calendar integration, and scheduling flow haven’t been built or verified."
        }
      ],
      "primaryCategory": "concepts",
      "narrative": [
        "I want to make a small Outlook add-in that lets you mark a few days on a calendar and drop it into an email like a sticker. The point is to keep the visual attached to the conversation, with just enough configuration to make it useful.",
        "The proposed next step is for recipients, including people copied on the email, to open it and choose a time. This is a concept so far: the add-in, calendar integration, and scheduling flow haven’t been built or verified."
      ],
      "imageKind": "concept"
    }
  ],
  "skills": [
    {
      "category": "Product & interfaces",
      "items": [
        "React",
        "TypeScript",
        "JavaScript",
        "HTML / CSS",
        "SASS",
        "UI/UX",
        "Data visualization"
      ]
    },
    {
      "category": "Applications & delivery",
      "items": [
        "Node.js",
        "AWS",
        "Git / GitHub",
        "Docker",
        "Vercel",
        "REST APIs"
      ]
    },
    {
      "category": "AI & connected systems",
      "items": [
        "OpenAI API",
        "Claude API",
        "Agent workflows",
        "Python / Textual",
        "Tailscale",
        "Local model deployment"
      ]
    }
  ],
  "experience": [
    {
      "title": "Front-End Lead",
      "organization": "Resource Software International Ltd.",
      "period": "May 2022 – Present",
      "description": "I lead front-end and UI/UX work on communications products, from early product questions to the production interface.",
      "highlights": [
        "Lead React and TypeScript interface work across Shadow Agent and Shadow Analytics.",
        "Build live dashboards, reporting views, data grids, and charts.",
        "Work through product requirements and turn them into reusable interface patterns."
      ]
    },
    {
      "title": "Web Developer",
      "organization": "Freelance",
      "period": "January 2022 – Present",
      "description": "I design and build responsive websites for small businesses and independent clients.",
      "highlights": [
        "Build React interfaces and deploy websites on Vercel.",
        "Set up SEO and Google Analytics to support search visibility and measurement."
      ]
    },
    {
      "title": "Web Developer / Social Media Coordinator",
      "organization": "Collective Ink",
      "period": "August 2020 – December 2021",
      "description": "I built the brand website and helped maintain its digital presence.",
      "highlights": [
        "Designed and built the site with HTML, CSS, and JavaScript.",
        "Maintained website content and coordinated social campaigns."
      ]
    }
  ],
  "education": [
    {
      "institution": "Algonquin College",
      "qualification": "Diploma in Web Programming",
      "period": "September 2022 – April 2024",
      "detail": "GPA 3.7 · Dean’s List. Web technologies, Agile methods, and project delivery."
    }
  ],
  "resume": {
    "url": "/resume/syrus-samson-resume.pdf",
    "sourceUrl": "/resume/syrus-samson-resume.docx",
    "summary": "Front-End Lead working with React, TypeScript, UI/UX, real-time dashboards, and practical AI and systems projects."
  }
}
