Other

Miscellaneous client work, personal projects, experiments, and random curiosities

Role:Designer/Photographer
Client:Various
Location:Various

Case Study Q&A

An experimental AI-powered tool meant to convey the deeper value of design work

I built an embedded AI assistant from scratch—no libraries, no frameworks, no AI-powered app-generation vibe coding tools—that lets users explore case studies in a conversational, on-demand way. It's currently available for the Pulse Energy Engagement Dashboard, with plans to expand to others soon.

Try it now

The system handles everything end-to-end—from chunking and embedding with OpenAI to a Flask backend and static-site integration—revealing design decisions that screenshots can't capture.

System architecture

Snapshot of how it's all stitched together
System architecture

All product names, logos, and brands are property of their respective owners. All company, product, and service names used in this diagram are for identification purposes only. Use of these names, logos, and brands does not imply endorsement.

How information is processed and presented

  1. Rough project notes and reflections are captured in freeform documents in ChatGPT and Google Drive.
  2. Notes are converted to .txt files—one per case study—which serve as the input for downstream processing.
  3. A Python script breaks the content into structured JSON chunks and generate vector embeddings via FAISS indexing.
  4. The JSON chunk files and FAISS index are committed to GitHub, keeping the embedded data version-controlled and co-located with the frontend.
  5. Using Cursor as a development environment and OpenAI for inline code assistance, the static site is built using:
    • Pug as the HTML templating engine
    • SASS for modular styles
    • vanilla JavaScript for client-side functionality
  6. All front-end assets are compiled and bundled via Prepros, producing clean, deployable static files.
  7. The site is hosted on Netlify, which serves both the case studies and the embedded assistant UI.
  8. The backend logic runs on a Flask app written in Python, hosted on Render, which exposes an API for handling user queries.
  9. The assistant backend references the JSON and FAISS files directly from the GitHub repo, keeping content and logic decoupled but tightly aligned.
  10. Queries are routed from the static site to the Flask API, which fetches relevant chunks and sends them—along with the user's question—to OpenAI's LLM API.
  11. The LLM's response is returned to the static UI, completing the query cycle and surfacing context-aware answers drawn from your original project thinking.
  12. Submitted queries are logged to Airtable, allowing me to track usage and gather feedback. The assistant is then trained on the logged queries and feedback, allowing it to improve over time.

Why I built it

  • Traditional case studies are not great at showing a designer's real impact, especially in systems thinking and cross-functional alignment
  • Building something from scratch provides valuable product context you can't get from just laying it out in Figma or Sketch.
  • I wanted hands-on experience with custom-trained LLMs, and I learn best by applying knowledge in practice

This is a living project, still evolving as I refine the UI, strengthen the system, and expand functionality across case studies.

What I'm learning

  • AI-driven tools can add immense value, but need to be applied thoughtfully and deliberately
  • Prompt engineering is product design: framing directly impacts outcomes
  • Even small tools benefit from clear architecture and modular design
  • Building for yourself speeds clarity: you can skip discovery, not design thinking

Future improvements

  • Cleaner UI and interaction flow including dismissable disclaimers and surfaced example questions
  • Spam prevention and reliability improvements with basic abuse protection, improved error handling, and fallback states for failed queries
  • Richer user experience with question history, feedback, and context-specific assistant views based on the case study
  • Expanded functionality for multi-case study queries and portfolio-wide Q&A
  • Feedback and improvement loop via Airtable + OpenAI analysis for continuous refinement [Added Jul 31, 2025]
  • Loading state messages to keep users informed during answer generation [Added Aug 3, 2025]

Jed's Autokosmetik

Helping a quality-obsessed entrepreneur realize his vision

Well-known in Calgary's luxury vehicle community, my good friend Jed Bouscal founded his second shop, Autokosmetik Detailing & Protection Inc. in 2020. In 2024, I offered to help him flesh out an identity concept that he felt better represented his company.

Logos, variants, & application samples

Jeds AutokosmetikJeds AutokosmetikJeds AutokosmetikJeds AutokosmetikJeds Autokosmetik

Foothills Orthopaedic Trauma Research & Education Foundation

Rebranding proposal for a medical research foundation

A friend at the Foothills Orthopaedic Trauma Research & Education Foundation (FOSTER) wanted help with their 2024 brand refresh. Although my concept was ultimately not used, as someone who is at best a hobbyist when it comes to identity design, I didn't hate the results.

The graphical element is meant to represent a compound bone fracture.

FOTREF brand concept presentation

FOTREF brandingFOTREF brandingFOTREF brandingFOTREF brandingFOTREF brandingFOTREF brandingFOTREF brandingFOTREF branding

HubSpot.com

Designing HubSpot's first corporate website

I collaborated with HubSpot co-founder Dharmesh Shah on the design of the company's first corporate website, a custom theme I built on the DotNetNuke CMS platform.

HubSpot.com v1

HubSpot website design

Early versions are still accessible via the Wayback Machine. Note that the table-based layouts still render (mostly) correctly in current browsers. My code was better-commented back then although, in retrospect, a style sheet table of contents is probably overkill.

Dribbble 404 page

The face of broken links

Web design guru, typeface designer, best-selling author, and Dribbble co-founder Dan Cederholm used my (heavily filtered) photograph of a schoolyard basketball court as the background for the 404 page his iconic design showcase platform.

Dribbble 404 page

I got to share this bit of trivia with Dan when I met him at a CSS Dev conference many years later.

Work

Tripadvisor

Empowering over 300k business operators on the world's largest travel platform

Pulse Energy Engagement Dashboard

Ground-up redesign of a real-time energy monitoring and engagement dashboard for university campuses

Walter

Establishing scalable design foundations for an ambitious legal tech startup

Pulse Energy

Leading the design team for a suite of industry-leading energy analytics and management tools used by the world's largest utilities

SMART Technologies

Redesign and restructuring a reseller portal to streamline access to critical resources for thousands of global users

Nissan-Infiniti USA

Building a seamless interactive vehicle configuration and dealer connection tool

Other

Miscellaneous client work, personal projects, experiments, and random curiosities