Software studio · Traverse City, Michigan

Software for people who make things.

We spent more than ten years building machines before we turned to software, so we write it for the shop floor first. Web apps, 3D in the browser, and the glue between your people and your machines.

01 Where we come from

We co-founded a robotic inspection company whose systems still run in plants around the world, then built the production equipment behind a thermoplastics venture. Every time, the software was the slowest part of the job. So now that's the part we build.

  • 2024PFM Design founded
  • 10+ yrsbuilding industrial hardware
  • MichiganLLC, based in Traverse City

02 What we build

The software you can't buy off the shelf.

Most of our projects start with a spreadsheet somebody hates or a whiteboard that's always out of date. We sit with the people who use it, get a working version in front of them fast, and keep going until nobody reaches for the old way.

  1. 01

    Operations web apps

    Scheduling, job tracking, dashboards and customer portals that load fast on a shop-floor tablet. PartScheduler is one of ours.

    Next.js · React · Supabase · TypeScript

  2. 02

    3D on the web

    Part viewers, product configurators and pages like this one. We work in three.js and custom shaders, and bring in our own compiled simulation engine when JavaScript runs out of speed.

    three.js · WebGL · Custom shaders · Simulation

  3. 03

    Software that talks to machines

    CAD files, inspection results, machine queues and camera feeds. We've put robots and cameras on production lines, so connecting software to the equipment is familiar ground for us.

    CAD · Vision · Automation

  4. 04

    Built with AI, checked by people

    We use AI coding agents every day. That's how a first version shows up in days instead of months, and an engineer who understands your problem still reviews what ships.

    Claude Code · Code review · Fast iteration

03 Our product

PartScheduler

Job scheduling for small machine shops.

A late job is the fastest way for a shop to lose a customer, and most shops only find out a job is late when the customer calls. PartScheduler swaps the whiteboard and the spreadsheet for one board that answers, in a few seconds:

  • What's due this week?
  • What's late, or about to be?
  • Where is job 2417 right now?
PartScheduler's demo shop, running live.
  • PO to shipmentEvery job tracked from purchase order to the truck.
  • Floor boardA machine-queue view for the people running the machines.
  • Part filesCAD thumbnails, PDF prints and an in-browser 3D part viewer.
  • Not an ERPNo accounting, no quoting. A new job takes under 30 seconds.

04 The lab

None of this is a video.

A physics engine we built moves every particle on this page, every frame, right in your browser, and three.js draws the result on your graphics card. Move your cursor through the field, or switch to the same simulation written in plain JavaScript and watch the step time.

Engine
Particles
Shape
Step time
–
Frame rate
–
Particles
–
Engine
–

Run both engines at the same particle count to see how they compare on this device.

  • SimulationOur own compiled simulation stack, with no outside libraries. It works on four particles per instruction and downloads as a small file.
  • Renderingthree.js, a custom point shader that colors each particle by its speed, and a bloom pass.
  • MotionGSAP and Lenis. Each section hands the particles a new shape and they find their own way there.
  • ProcessDesigned and coded alongside Claude Code, an AI coding agent, then checked by hand.

05 Contact

Bring us the spreadsheet you hate.

Tell us what you're tracking by hand and who needs to see it. You'll hear back from the person who'd build it, usually the same day.