ABOUT
Hello, I'm Thomas Knoepffler, a design technologist in Miami, Florida. I design physical objects and software tools that respond to the people and spaces around them, working with AI, sensors, and digital fabrication. My recent projects include a 3D-printed hydroponic planter, a desk lamp that senses posture, and a browser tool for building procedural 3D worlds.
I hold an MS in Design Technology from Cornell University and a BS in Integrated Design & Media from NYU, and before graduate school I worked in UI/UX design and product management at an early-stage startup. Outside of studio work I have mentored student designers and volunteered with local creative communities.
I'm currently looking for design technologist and prototyping roles in Miami, Florida, and I'm glad to hear from anyone about the work.
SKILLS
— Rhino 3D, Grasshopper, Blender
— Adobe Creative Cloud, Figma
— 3D Printing, Laser Cutting
— Arduino, Raspberry Pi
— HTML, CSS, JavaScript
— Python, C#
LINKS
Resume
LinkedIn
Instagram
GitHub
Email SENTIMENT.JS
SENTIMENT.JS
Cornell University, AAP
AI for Design, Fall 2024
— DESIGN 6197
COLLABORATORS
Carrie Wang
MY ROLE
Developer, Scripter
DESCRIPTION
A tool for UX designers that takes what a client said in a review, typed or spoken, and returns the emotions in it, the keywords, and how closely it relates to qualities like clarity and usability.
LINKS
GitHub
WHAT IT IS
sentiment.js is a listening aid for the conversation between a designer and a client. The most useful feedback in a review tends to arrive as a story or a feeling rather than a note, so the tool takes a statement as typed text or as a voice recording transcribed in the browser, tags it with the client’s name, and sends it to a Flask backend running three Hugging Face models. A RoBERTa model trained on GoEmotions scores the statement across 28 emotions, KeyBERT pulls out its key terms, and a sentence transformer rates how closely it relates to design qualities such as clarity, hierarchy, and usability. The results come back as highlighted keywords, emotion bars, and quality scores, and each analysis is saved in its own tab for comparison.
PROCESS
The project began as a Figma plugin, with screens for recording a client session, sorting what was said into categories like color and information architecture, and building up a profile of each client over time. Along the way the original models, T5 for summaries, named-entity recognition for keywords, and BERT for classification, gave way to ones better suited to each job, and the plugin became a web app with an HTML, CSS, and JavaScript front end talking to a Python backend. Tests on a set of written feedback statements were encouraging but uneven: the keyword extractor sometimes joined words that had appeared separately, the emotion model caught the main tone but leaned positive, and the relevance scores tracked the statements closely.
NEXT STEPS
The next version would move back inside the design software, so that analysis happens in the file under review, and would keep a running profile of each client that carries sentiment and keyword history from one review to the next. Fine-tuning the emotion model on design-review language would correct its positive lean, and from there the tool could offer not only a read on how the client feels but a short summary of what should change.