Mark Cheli

Director, Product Operations & Strategy · Onshape (PTC) · Ashland, MA

Onshape is the world's fastest-growing CAD platform, cloud-native from the first line of code, and I run its Product Operations & Strategy team: the part of the product org that helps work out where to go next, keeps everyone pointed that way, and says how it went. AI runs through most of that now, in the tools R&D builds with and in the Claude rollout across the Onshape organization, which I look after. Thirteen years at PTC, intern to director, a lot of roles, all of them with a software engineer underneath. Code still gets written when something needs building, product features included. The through-line is making things: software, welding, 3D printing, three old trucks. This site runs on a server in my basement, next to the apps I've built for myself.

About Mark Cheli

Mark Cheli — Director, Product Operations & Strategy · Onshape (PTC). Ashland, MA.

Onshape is the world's fastest-growing CAD platform, cloud-native from the first line of code, and I run its Product Operations & Strategy team: the part of the product org that helps work out where to go next, keeps everyone pointed that way, and says how it went. AI runs through most of that now, in the tools R&D builds with and in the Claude rollout across the Onshape organization, which I look after. Thirteen years at PTC, intern to director, a lot of roles, all of them with a software engineer underneath. Code still gets written when something needs building, product features included. The through-line is making things: software, welding, 3D printing, three old trucks. This site runs on a server in my basement, next to the apps I've built for myself.

Experience

  • Director, Product Operations & Strategy, Onshape (PTC) (Jan 2022 – present). Product Operations & Strategy is the connective tissue of the Onshape product org: the strategy and analysis that feed decisions about where the product goes, the planning cycle that turns them into work, the analytics that say how it's going, and the programs that cut across every team. The remit grows every year; AI tooling for R&D and the Onshape-wide Claude rollout are its newest parts.
    • AI: how Onshape builds with it. Tooling and guidelines for R&D, and the Claude rollout, governance and budget across the Onshape organization.
    • Strategy, planning and analytics: the analysis behind product decisions, the planning cycle, and the product analytics and data warehouse underneath both.
    • Cross-cutting programs, localization and legal among them, and product management for the tools the org runs on.
    • Software engineering when something needs building, product features and tooling alike. Thirteen years at PTC, intern to director, across engineering, product and operations roles.
    • 2022: interim head of business operations for the Onshape business unit.
  • Director, Education Product, PTC (Feb 2021 – Jan 2022). Product for PTC's Education group: services, support, partnerships, community and marketing for the academic programs around Onshape, Creo and ThingWorx.
  • Senior Manager, Education Experience, PTC (Jan 2020 – Feb 2021). The education customer experience after PTC acquired Onshape.
  • Senior Manager, Customer Training Technology & Research, PTC (Jan 2019 – Jan 2020). Product for PTC's customer training: eLearning, virtual instructor-led training and in-product help. A 40-person group across the US and Pune.
  • Senior Software Development Manager, PTC University EdTech R&D, PTC (May 2018 – Jan 2019). Engineering management for PTC's learning platforms: 35 engineers in three teams.
  • Technology Lead, Academic & Customer Training Products, PTC (Apr 2017 – May 2018). Lead engineer and product manager for IoTU.com and the academic product line, with teams in the US and India.
  • Senior Full-Stack Software Engineer, PTC (Oct 2016 – Apr 2017). Led the academic software development group. IoT education products on the MEAN stack and ThingWorx.
  • Academic Software Engineer, PTC (May 2013 – Oct 2016). Started as a student intern, then full-time. Curriculum, demos and applications for Creo, Windchill, Mathcad and ThingWorx.
  • Web Developer, Freelance (Dec 2012 – Dec 2014). Small-business websites: HTML/CSS, PHP/MySQL, WordPress.
  • Assistant Program Facilitator, Christa McAuliffe Center / Challenger Learning Center, Framingham State University (Dec 2011 – May 2013). Planetarium shows and simulated space missions for middle-school groups, plus the center's IT.

Education

  • B.S. Business & Information Technology, Framingham State University (2011 – 2015), Summa Cum Laude, GPA 3.94

Skills

  • Product and strategy: Product operations, Strategy and analysis, Planning, Product analytics, Product management, Localization, Legal and terms of use
  • Data: SQL, AWS Redshift, dbt, Prefect, Streamlit, Looker
  • Building: Python (Flask, FastAPI), TypeScript (Vue, Nuxt), PostgreSQL, Docker, GitHub Actions, Linux, Onshape
  • AI: AI adoption and governance, Claude and Claude Code, GitHub Copilot, MCP servers, Agentic coding setups, AI tooling budgets

Projects

  • Tallied — Household finance in one Postgres database, with a dashboard that shows what it adds up to. Accounts, transactions, income, RSUs, 401(k), property and vehicles for one household in a database the owner can also open with psql, plus a dashboard and a year-by-year retirement projection. Bank sync through SimpleFIN; W-2s, pay stubs, mortgage and brokerage statements are read by Claude and staged for confirmation before anything is written — AI output is never saved unreviewed. Built with FastAPI, SQLAlchemy 2, Alembic, PostgreSQL 16, Vue 3, TypeScript, Tailwind, ECharts, Claude API, Docker. Source: https://github.com/MCheli/tallied. Live: https://money.markcheli.com. Demo: https://money-demo.markcheli.com.
    • Multi-tenant: a Postgres schema per household, search_path set per request
    • Every requirement lives in a ledger (docs/requirements/ledger.yaml) with a test and a screenshot as evidence; CI validates it
    • Public read-only demo seeded with a fictional household
  • RigReady — A Windows app that gets a flight or racing sim rig ready, fixes what isn't, and launches the game. For sim PCs that are also used for other things. RigReady checks that devices are plugged in, helper apps are running, monitors are arranged and game bindings are intact, puts right what it can, then launches. It also manages bindings, backups and hardware troubleshooting for DCS, iRacing, Le Mans Ultimate, BeamNG, MSFS and Assetto Corsa. Version 2.0 was rebuilt from the ground up in a weekend with parallel Claude Code agents working from a requirements ledger. Built with Electron, Vue 3, TypeScript, Playwright, Python, Windows. Source: https://github.com/MCheli/RigReady. Live: https://rigready.io.
    • Electron + Vue 3 + TypeScript, with a ports-and-fakes architecture so every feature is testable without real hardware
    • Playwright e2e against recorded rig scenarios, plus packaged-installer tests
    • Open source (MIT), pre-release
  • 83RR PowerEdge homelab — 40 containers on a Dell R630 in my basement, as infrastructure-as-code. The server this site runs on. Docker Compose for everything, NGINX in front with Cloudflare origin certs and a LAN-only *.ops wildcard, Prometheus + Grafana + cAdvisor for metrics, OpenSearch + Fluent Bit for logs, Uptime Kuma and ntfy for alerting, and Dependency-Track fed by nightly SBOM scans of every running container. Deploys are GitHub Actions → ghcr.io → Watchtower; a weekly fresh-base rebuild and a Saturday security sweep keep images patched. Built with Ubuntu Server, Docker Compose, NGINX, Cloudflare, Prometheus, Grafana, OpenSearch, GitHub Actions. Source: https://github.com/MCheli/83rr-poweredge. Live: https://status.markcheli.com.
    • Pinned image digests, least-privilege compose (no Docker socket for app containers, capabilities dropped where possible)
    • Backups, post-reboot checklist and upgrade runbooks live in the repo
    • Run `homelab` in the terminal for the full catalog
  • Tasks — A to-do app built around planning cycles instead of calendar weeks. Tasks live in user-initiated cycles under two independent buckets, personal and professional. Open items carry forward when a cycle closes and a push count records how many times — the paper-notebook ritual of rewriting the list, as software. Tasks keep a persistent identity across cycles, so longevity and lineage views come from the same source of truth. Built in a day from a written spec. Built with FastAPI, PostgreSQL, Vue 3, Docker. Source: https://github.com/MCheli/tasks. Live: https://tasks.markcheli.com. Demo: https://tasks-demo.markcheli.com.
    • FastAPI + PostgreSQL + Vue 3, Google OAuth, per-user API keys
    • Public read-only demo
  • LiDAR Grade Explorer — Plan the earthwork for a flat pad from an iPhone LiDAR scan. Upload a .ply or .e57 point cloud, draw the rectangle where the carport, patio or foundation goes, and get cut/fill volumes, a fill-level slider, retaining-wall length and height along each edge with block counts and cost, and a before/after 3D view of the finished grade. Built to plan a carport on my own sloped lot. Built with Python, Flask, NumPy, pandas, Three.js, Vanilla JS. Source: https://github.com/MCheli/lidar-grade-explorer.
    • Pure-NumPy voxel downsampling to an elevation heatmap; Three.js before/after terrain
    • Flags wall heights that need geogrid or an engineered design under typical MA code
    • Deliberately no framework: one Flask handler and a single-file frontend
  • energy-monitor / panel-tool — Which CT clamp is the dryer? A web app that maps, calibrates and labels a whole-home energy meter. Built around the CircuitSetup 6-channel ESP32 energy meter and Home Assistant. panel-tool covers what the upstream firmware doesn't: mapping each current transformer to a breaker, driving calibration, and printing a two-page wall reference for the panel. Ships an example ESPHome config for a 12-CT split-phase install. Built with Python, ESPHome, Home Assistant, Docker. Source: https://github.com/MCheli/energy-monitor.
    • Runs as a container on the homelab (energy.ops)
    • CLI calibration scripts for people who'd rather script it
  • daily-report — A morning brief printed on a thermal receipt printer at 5 AM. A Python module of chart and layout primitives for an Epson TM-m30III receipt printer, plus a scheduled report: tasks for the day, calendar, finances from Tallied, weather, stocks, home energy from Home Assistant, server health, GitHub activity and a short AI summary. Built with Python, ESC/POS, Docker. Source: https://github.com/MCheli/daily-report.
    • KPI cards, bar charts and sparklines rendered in ESC/POS
    • Runs as a container on the homelab (report.ops)
  • Cookbook — Recipes as markdown, with a site, a grocery-list builder and printable PDFs. Thirty-odd recipes organized by cooking method. A build script turns the markdown into a static site and a combined PDF; the site builds a grocery list with Whole Foods links from whichever recipes you pick. It's also what my weekly grocery-ordering agent reads. Built with Markdown, JavaScript, Python, Make. Source: https://github.com/MCheli/cookbook. Live: https://cookbook.markcheli.com.
  • This site — A terminal you can type into, that search engines and AI assistants can still read. Nuxt 3 SSR with a Flask API, shipped as two containers from GitHub Actions. The 2016 original was static HTML; it became a Spring Boot app on Heroku in 2017, a Firebase site in 2019, and this in 2025. Everything you see is rendered from three JSON files (resume, projects, service catalog) that the API also serves. Built with Nuxt 3, Vue 3, TypeScript, Flask, Docker, GitHub Actions. Source: https://github.com/MCheli/PersonalWebsite. Live: https://www.markcheli.com.
    • Full content is server-rendered for crawlers; the terminal is progressive enhancement
    • Maintained mostly by AI agents working from docs/PRODUCT.md and a requirements ledger
  • Presentation Mode for Looker — A Chrome extension that makes Looker dashboards presentable on a big screen. One click (or Ctrl+Shift+P) hides Looker's navigation, headers, filter bars and edit controls and expands the dashboard to fill the screen — for meetings, demos and wall displays. Settings sync across Chrome profiles. Built with JavaScript, Chrome extension. Source: https://github.com/MCheli/presentation-mode-looker.
  • dotfiles — One-line shell setup for macOS, Linux and remote servers. bash and zsh with shared config, Powerlevel10k or Starship prompts, sensible fallbacks over SSH. Built with Shell. Source: https://github.com/MCheli/dotfiles.

Now

  • Work: FY27 planning at Onshape, and the next round of AI tooling across the company.
  • Building an agent-readable memory of my own systems and preferences (an "AI context dictionary"), so the agents that run my homelab, grocery orders and security sweeps start with real context.
  • RigReady 2.0, rebuilt from a requirements ledger with parallel Claude Code agents. Working toward a first public release.
  • Homelab hardening: Dependency-Track fed by nightly SBOM scans, a weekly security sweep, pinned image digests.
  • Outside: solo backpacking on the Appalachian Trail sections near home, and a 1991 Honda Acty kei truck that always needs something.

Updated 2026-11-05.

Homelab: 83RR PowerEdge

This site is served from a Dell PowerEdge R630 (Intel Xeon (16 cores), 128GB DDR4, Ubuntu 24.04.3 LTS) running 40 services in 39 Docker containers across 5 categories. Docker Compose + NGINX + Cloudflare. Infrastructure as code: https://github.com/MCheli/83rr-poweredge.

Custom applications (built by me)

Self-hosted services (third-party)

Observability (LAN-only · *.ops.markcheli.com)

Infrastructure containers (behind the scenes)

  • nginx — Reverse proxy + TLS (Cloudflare origin certs; Let's Encrypt wildcard for *.ops)
  • fluent-bit — Ships Docker, Plex and Seafile logs → OpenSearch
  • node-exporter — Host metrics for Prometheus (CPU/mem/disk/net)
  • nginx-exporter — NGINX connection and request metrics
  • watchtower — Auto-deploys new ghcr.io/mcheli/* images (5-minute poll)
  • seafile-db — MariaDB 10.11 backend for Seafile
  • seafile-memcached — Cache layer for Seafile
  • seafile-redis — Redis for Seafile 13
  • seafile-notification — Seafile notification server
  • tallied-scheduler — Background scheduler sidecar for Tallied (same image)
  • tallied-db — PostgreSQL 16 backend for Tallied (SSL required)
  • tallied-demo-db — PostgreSQL 16 backend for the Tallied demo
  • tasks-db — PostgreSQL 16 backend for Tasks
  • tasks-demo-db — PostgreSQL 16 backend for the Tasks demo
  • energy-monitor-db — PostgreSQL 16 backend for the energy monitor
  • deptrack-db — PostgreSQL 17 backend for Dependency-Track

Isolated deployment

Director, Product Operations & Strategy · Onshape (PTC)

Host
Dell PowerEdge R630
OS
Ubuntu 24.04.3 LTS
Kernel
6.8.0-generic
CPU
Intel Xeon (16 cores)
Memory
128GB DDR4
Stack
Docker Compose + NGINX + Cloudflare
Services
40 in the catalog · 39 containers

Type 'help' for commands, or tap one below.