Task Management System
-Lead designer for Task-it, Amazon's internal task management platform. Consolidated 3-4 disparate tracking tools into one unified system, reaching 500 daily active users across AWS within 18 months of launch.
-diff --git a/.github/workflows/eleventy_build.yml b/.github/workflows/eleventy_build.yml index 35fdad0e..15754a97 100644 --- a/.github/workflows/eleventy_build.yml +++ b/.github/workflows/eleventy_build.yml @@ -11,14 +11,17 @@ jobs: - name: Checkout uses: actions/checkout@v6 + - name: Setup pnpm + uses: pnpm/action-setup@v4 + - name: Setup Node uses: actions/setup-node@v6 with: node-version: '25.9.0' + cache: 'pnpm' - - name: Install pnpm + - name: Install dependencies run: | - npm install -g pnpm echo "//npm.fontawesome.com/:_authToken=${FONT_AWESOME_TOKEN}" >> .npmrc pnpm install --ignore-scripts env: diff --git a/.gitignore b/.gitignore index 95220fd3..e03b2786 100644 --- a/.gitignore +++ b/.gitignore @@ -14,4 +14,6 @@ notes.txt .cache hint-history Resume_2025.pdf -docs/workbox-v*/ +# Build output - generated by `pnpm run build` and deployed to the gh-pages +# branch by CI; never committed to main. +docs/ diff --git a/CLAUDE.md b/CLAUDE.md index e6ffdb45..6fc1918c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co ## Project Overview -Portfolio website for Adam Jolicoeur (adamjolicoeur.com) built with Eleventy (11ty) static site generator. The site showcases UX/UI design work, development projects, and professional content. Deployed to GitHub Pages from the `docs/` directory. +Portfolio website for Adam Jolicoeur (adamjolicoeur.com) built with Eleventy (11ty) static site generator. The site showcases UX/UI design work, development projects, and professional content. CI builds the site into `docs/` and pushes that output to the `gh-pages` branch, which is what GitHub Pages serves — `docs/` itself is gitignored and never committed to `main`. **Current Version**: 11.4.1 **Repository**: https://github.com/AdamJ/adamj.github.io @@ -84,8 +84,8 @@ src/ # Source files (EDIT HERE) │ └── *.scss # Component partials └── js/ # JavaScript files (vanilla JS) -docs/ # Generated output (DO NOT EDIT) -└── [build artifacts] # 20-30MB, auto-generated +docs/ # Generated output (DO NOT EDIT, gitignored) +└── [build artifacts] # 20-30MB, auto-generated, not committed to main scripts/ └── image-optimizer.js # Sharp-based image processor @@ -232,12 +232,13 @@ To add new container types: add `md.use(markdownItContainer, 'name', { render... **GitHub Actions** (`.github/workflows/eleventy_build.yml`): 1. **Trigger**: Push to `main` branch 2. **Node.js**: v25.x -3. **Steps**: +3. **pnpm version**: Pinned via the `packageManager` field in `package.json` and installed with `pnpm/action-setup` — keep this in sync with the version used to generate `pnpm-lock.yaml` locally, or CI's frozen-lockfile install will fail with `ERR_PNPM_LOCKFILE_CONFIG_MISMATCH` +4. **Steps**: - Checkout code - `pnpm install` (with Font Awesome token) - `pnpm run build` - Deploy `docs/` to `gh-pages` branch -4. **Live Site**: Auto-deploys to GitHub Pages +5. **Live Site**: Auto-deploys to GitHub Pages **Cloudflare**: Creates pull request previews diff --git a/docs/404.html b/docs/404.html deleted file mode 100644 index ab72cd0e..00000000 --- a/docs/404.html +++ /dev/null @@ -1,72 +0,0 @@ - - -
- - -- UX Designer, Developer, Program Manager. Creating software for the construction world. Previously at Red Hat and AWS. Collector of nerdy things...forever. -
-- Adam Jolicoeur is a designer, developer, and program manager in Massachusetts. Starting as a help desk tech, he discovered a desire to create technology, rather than fixing it, which lead to a leap into the software engineering space. -
-- While working at a small startup, Adam discovered the world of user experience design and realized that his future was before him. With a background in fine arts and knowledge in the software development space (Backbone/Angular, anyone?), Adam took another step forward by becoming the first ux designer at a financial startup. Leading the next-generation of product design for card processors and financial institutions, Adam took that experience and used it to catapult into the world of publicly traded companies. -
-- With a move to Red Hat (later acquired by IBM), Adam accelerated his career path (and filled up many pages in his passport) by working with industry experts and the open source community on enterprise software experiences. After five years at Red Hat, Adam joined a small team at Amazon in AWS's Safety Engineering group to work on a new issue tracking and management product. While his time at Amazon came to abrupt end during the layoffs of 2023, the knowledge gained from such an environment only strengthened his desire to create in a collaborative and forward-looking space. -
-- Adam has continued his career at Component Assembly Systems as their Lead Program Manager and Head of UX. -
-- I attended MCLA (Massachusetts College of Liberal Arts, formerly North Adams State) graduating with degrees in Fine and Performing Arts and Arts Management. While at MCLA, I was the President of the Lacrosse Club (now a recognized D3 sport) while also receiving a variety of accolades such as Alpha Chi, National Scholars Honor Society, and the Who’s Who in American Colleges and Universities. -
- View Resume -Lead Product Designer with 15+ years at AWS, Red Hat, and high-growth B2B companies
I design enterprise applications and code production-quality prototypes. With expertise in design systems and complex data-intensive interfaces, I've shaped products used by millions of developers and contributed to industry-leading open-source design systems.
--
- Lead Product Designer & Product Manager
-
- Component Assembly Systems | 2024 - Present
-
- Senior UX Designer — Amazon Web Services (2021-2023) -
-- Senior Interaction Designer — Red Hat (2016-2021) -
-- UX Designer — Saylent Technologies (2014-2016) -
-A single place for tracking your game and movie collections.
This app uses the API from The Movie DB as an opt-in service. Users must create a developer account and enter their own API key. Any keys entered are kept on-device and not visible to the app creator.
-Apps designed and developed by Adam Jolicoeur
For your Magic: The Gathering collection and deck list tracking.
| Light | -Dark | -
|---|---|
For tracking games of Magic: The Gathering and other TCG scores.
GitHub: AdamJ/game-tracker
-WebApp: gametracker.productdesigns.net
-Privacy policy for apps released on the iOS AppStore by Adam Jolicoeur
Your data is your data - they say sharing is caring, but it is not recommended to share your data.
-Where tracking soccer games is easier than playing a match.
Support resources for apps distributed through the Apple AppStore.
For any questions or feedback, reach out via email or Bluesky.
-Privacy policy for TaskStat - a privacy-first task management app for iOS
Last Updated: January 5, 2026
-Effective Date: January 5, 2026
TaskStat is built with privacy as a core principle. We believe your task data is yours alone, and we’ve designed TaskStat to ensure your information stays completely private and under your control.
-The short version: We don’t collect, transmit, or store any of your data on our servers. Everything stays on your device.
-TaskStat does NOT collect, transmit, or have access to:
-TaskStat stores the following information locally on your device only:
-Important: All of this data is stored exclusively in your device’s local storage using Apple’s SwiftData framework. It is never transmitted to our servers or any third-party services.
-TaskStat uses local-only storage via SwiftData (Apple’s native persistence framework). Your data is stored in a SQLite database within the app’s sandboxed container on your device.
-TaskStat intentionally does not use:
-This design choice ensures your task data never leaves your device unless you explicitly export it.
-TaskStat includes a CSV export feature that allows you to export your task list. This is entirely under your control:
-When you export your tasks to CSV, the file contains:
-Important: Once you share an exported CSV file via email, cloud storage, or messaging apps, that data is subject to the privacy policies of those services. We recommend being mindful of what you share and with whom.
-TaskStat does NOT integrate with any third-party services, including:
-The only external code included in TaskStat consists of:
-TaskStat makes zero network requests. The app:
-You can use TaskStat in airplane mode, offline, or with network access completely disabled.
-Since all data is stored locally on your device:
-iOS Security Model: Your data benefits from iOS’s robust security architecture, including:
-No Transmission Risk: Since data never leaves your device, there’s no risk of interception during transmission
-No Server Breaches: We don’t have servers, so there’s no risk of server-side data breaches
-No Password Storage: TaskStat doesn’t require an account, so there are no passwords to compromise
-To keep your task data secure:
-TaskStat does not collect any personal information from anyone, including children under 13. Since all data stays on the device and we have no servers or data collection mechanisms, TaskStat is safe for users of all ages.
-Parents should be aware that:
-You have complete ownership and control over your data:
-Since we don’t collect or store your data on our servers, you don’t need to submit data access or deletion requests to us. You have direct, immediate control over all your information.
-As of January 2026, TaskStat:
-We are committed to maintaining TaskStat’s privacy-first design. However, if we ever:
-We will:
-Any changes to this privacy policy will be posted to this page and reflected in the app’s version history.
-TaskStat’s privacy-first design ensures compliance with major privacy regulations:
-In accordance with Apple’s App Privacy details requirements, TaskStat’s privacy label states:
-This accurately reflects that TaskStat collects no data.
-While TaskStat is not currently open source, we are committed to transparency about our privacy practices:
-If you’re technically inclined, you can verify our privacy claims by:
-If you have questions about this privacy policy or TaskStat’s data practices:
-Since TaskStat doesn’t collect or store data on our servers, we cannot experience a data breach of user information. Any data security is determined by your device’s security posture.
-TaskStat is available worldwide. Since all data is stored locally on your device and never transmitted to our servers, there are no cross-border data transfer concerns. Your data never leaves your device unless you explicitly export and share it.
-In Plain English:
-TaskStat is designed to be the most private task manager possible. Your data is yours, and only yours.
-By using TaskStat, you acknowledge that you have read and understood this privacy policy. Given that we don’t collect any data, your use of the app does not involve sharing personal information with us.
-TaskStat Privacy Policy Version 1.0
-Simple tasks. Complete privacy.
Privacy-first task management for iOS. Your tasks stay on your device—no accounts, no tracking, no cloud sync.
TaskStat is a native iOS task management app built with privacy as a core principle. Unlike cloud-based task managers, TaskStat stores all your data locally on your device using SwiftData—ensuring complete privacy and offline functionality.
-TaskStat provides comprehensive task tracking with:
-Read the full Privacy Policy
-
-
-
-
- | Light | -Dark | -Tinted | -
|---|---|---|
![]() |
-![]() |
-![]() |
-
Platform: iOS 18.0 or later
-App Store: Coming soon - Link will be added when published
- -Questions or issues?
-TaskStat is built using:
-Perfect for freelancers, consultants, and professionals who need to track time, manage projects, and generate invoices.
GitHub: AdamJ/TimeTrackerPro
-WebApp: timetrackerpro.adamjolicoeur.me
-Old page when I ran for a position on the Brookfield Select Board.
- Six years ago, I moved to Brookfield with my wife where together we live with our son, 3 dogs, and our horse. We chose to move to Brookfield because of the community, local activities (we love to hike and kayak), and the school system. With both of us having grown up in tight-knit communities, we felt Brookfield would be the perfect place to start and raise a family. We love to support the community by attending events and buying local (especially from our local farmers). With everything happening over the past few months, it has become even more apparent that a town like Brookfield can still thrive.
-Why am I running? Because I know that we can continue to improve as a town. By electing me, you will have someone working for you - no personal agendas, not biases, no looking backwards, and no change just for the sake of change.
-I am an Eagle Scout (once an Eagle, always an Eagle) and have been a registered Boy Scout for 20 years. Locally, I am the Treasurer for three non-profit organizations, and am an avid hiker and kayaker. I've traveled around the world (Iceland, England, and the Czech Republic, to name a few) and have lived in a variety of towns across the state. I went to school in North Adams and have Bachelor Degrees in both Music and Arts Management.
-I graduated from Massachusetts College of Liberal Arts (MCLA) in 2008, with two Bachelor Degrees (Fine and Performing Arts with a Concentration in Music and Arts Management with a minor in Business Administration). I was also a student of Williams College's jazz program, performing in the Berkshires and traveling to Mexico City to teach students how to play and write jazz music.
-I currently work at Red Hat, Inc. (an open source software company based out of Westford with corporate headquarters in Raleigh, NC) as a Senior Software Engineer in the User Experience Department. I design and create applications and websites for various products and services, focusing on the user experience. My job has allowed me to travel around the country and world, presenting me with many opportunities to learn about new cultures and people.
-In my life, I have met almost every type of individual with every mix of personalities, which I believe will only help in my interactions with the members of our town. I know that Brookfield has the potential to become one of the premier towns in the area for those looking for a historical adventure spot where they can enjoy the quiet of nature while escaping the bustling city life.
-The Masonic Angel Foundation
-Through working with schools and other outreach programs, The MAF provides clothing and financial assistance to families in need. It is all anonymous (hence why we work with another group) and we never ask for names/addresses/etc - just what they need/how we can help.
-The Rutland Masonic Charitable and Educational Association
-We work with the Rutland community to sponsor various events (4th of July Parade, Christmas celebrations, etc.) and provide community outreach. Our current building is actually one of the original schoolhouses in town, which our founders moved to it's current location around 1910.
-Rufus Putnam Lodge A.F. & A.M.
-A Masonic Lodge based out of Rutland, MA. We contribute to various charities in Central Mass (concentrating in Rutland and the immediately surrounding towns), as well as support the Shriners Hospitals for Children and various youth organization (Boy Scouts, Girl Scouts, DeMolay, and Rainbow).
-I am part of a group of Eagle Scouts that assist potential Eagle Scouts with attaining the rank of Eagle. We travel around the Commonwealth to Court of Honors (when requested) to support those that have earned the rank of Eagle. When called upon, we provide manpower and/or financial assistance to those that request it - this is usually in the form of donations for/of supplies or by using our contacts to assist the Scout in their journey to Eagle.
-At the last town meeting, I voted for the approval of a Town Administrator.
-As part of hiring a Town Administrator, I would propose the formation of committees to work with our elected officials, under the office of the Town Administrator. While the Town Administrator would report to the Selectmen, these committees would be there specifically to support the Town Administrator and to provide assistance with the multitude of jobs required of the position (including, but not limited to, fiscal management, operational oversight, collective bargaining, capital planning, labor relations, public construction, and procurement).
-It takes the appropriate checks and balances, a strong leadership structure, and fiscal responsibility to bring any entity back to a positive position.
-- Disclaimer: As a current Planning Board member, I voted for the Tasse's Fuel plan -
-- Facts and Information: - Based off of the facts presented, I believe that having Tasse's Fuel in town would be a benefit to growing Brookfield's commercial footprint, while still maintaining a safe place to live. Not only is it permitted based off of the Brookfield Zoning By-Laws, but the installation and service has been approved by the Massachusetts State Fire Marshal's Office and no safety concerns have been expressed by either the Brookfield Fire Department or the Brookfield Police Department. Additionally, the current Board of Selectmen approved the storage license. -
-- Financial Considerations: - According to the letter presented to the Town of Brookfield, Tasse's Fuel would bring in up to $25,000 a year in property and excise taxes. This money would be a of great use to the town, allowing us to improve our infrastructure, expand our community offerings (athletic fields updates, senior center enhancements, South Pond improvements, etc), and allow us to move towards a fiscally-positive position. -
-Since I moved to Brookfield, I have watched various Town Meetings on YouTube, with varying degrees of quality and quantity of videos. Cable access, or any form of technology that provides accessibility to town functions, is pivotal for the community to become, and remain, engaged. With my background, I have the knowledge to assist the various committees with setting up video feeds and YouTube channels, which would allow Brookfield citizens to interact with the various committees, without having to be physically present (especially pertinent in this day and age).
-As a designer and developer, I would be able to apply my unique skills towards helping Brookfield grow our social footprint, and improve our continuity between our various platforms (website, Facebook, YouTube, etc), and reach out to those that have come to rely on technology in their daily lives.
-To put it simply, I am pro-business (especially small business) and pro-technology.
-As my Planning Board record shows, if there is nothing legally stopping a business from opening or moving to Brookfield, and that business would be a benefit to the town, I am for it. Brookfield has been passed over, for one reason or another, by many businesses (as one can easily see by those in East Brookfield, West Brookfield, North Brookfield, and Sturbridge) and that should not be the case. The town has a lot to offer, a strong community to support it (just look at the Clam Box!) and ample space for small business owners to grow and be successful.
-To anyone that has attended a board meeting of any kind this past year, it is clear to see that Brookfield is due for technological improvements. In the beginning, all of the boards used a variety of different conference calling systems (now seemingly synced on Zoom), with individual boards paying for subscriptions (rather than the town covering the cost for all, like a business would). Our town website is difficult to update, is often out-of-date (even with the boards and committees attempting to keep them up-to-date), and is not the easiest to find information on. Often times, one has to go to a non-town site in order to find meeting information and/or agendas.
-To improve the town's technology stance, I would switch over to a single Zoom account (rather than individual committees and board paying for their own), combine the various websites and data into one site (making a single source of information), and provide training and access to those in the community who wish to learn about the latest technology and options available to them. Everyone involved in a town position should know how to host a Zoom call (should the occasion arise), access their town email account (everyone should have one), and be able to connect with the community digitally. Without the Brookfield, MA Community Facebook group, I believe that a lot of information would have been missed by the residents, due to the lack of official digital communication. -
--
Accessible color picker combining WCAG compliance with patterns.
--A native iOS app, built by a coach, who needed fast and reliable game tracking without surrendering data to a third-party platform — designed for the sideline, built in Swift.
-
ROLE: Designer
-STACK: Figma, CSS, React library
-STATUS: Launched
-A color picker, but nature, is not accessible - the goal of this component design was to provide a solution that not only allowed users to select colors for labels, but also provide alternatives such as patterns and icons.
-
- To start, a basic set of colors were chosen from the available color palette (as defined in the design system). Each color was verified against a light background (#ffffff) and a dark background (#010101), as well as against multiple layers.
--In total, forty-four (44) combinations met WCAG AA compliance, with eighteen (18) meeting WCAG AAA compliance.
-
- After the colors had been established, I worked with the PM and Dev team to determine the first components to test these with.
---It was determined that Labels would be the best place to start, as they were the most ubiquitous across the system.
-
- Once the basic levels had been configured, I needed to compare the current label coloring scheme to what the new component provided. This required working with the development team to create a prototype environment that allowed the component to be used in real-time without surfacing the in-progress work to the production users.
-
- Once the prototype was up and running, I was able to test out the interactions, visuals, and test the new component with users.
-After reviewing the findings, it was determined that another round of design and testing was needed before we could release the color picker to production.
-An expanded list of case studies and prior work
Lead designer for Task-it, Amazon's internal task management platform. Consolidated 3-4 disparate tracking tools into one unified system, reaching 500 daily active users across AWS within 18 months of launch.
-After archiving my work entries for the week, I found myself running a second, separate tool to generate a weekly summary. Now, I start the day, capture tasks, review, and archive - then summarize using AI.
-Architectural drawing analysis platform for OCR-based architectural drawing management.
-Built comprehensive design system for construction management software spanning web and iOS applications. Created design tokens, component documentation, and prototypes that accelerated development cycles by 25%.
-A native iOS app, built by a coach, who needed fast and reliable game tracking without surrendering data to a third-party platform — designed for the sideline, built in Swift.
-As one of the most up-voted feature requests, the goal was to create an accessible option that combined colors with patterns.
-Native iOS app for coaches to track game data. Solo project, in active use.
--A native iOS app, built by a coach, who needed fast and reliable game tracking without surrendering data to a third-party platform — designed for the sideline, built in Swift.
-
ROLE: Designer & Developer
-STACK: SwiftUI
-STATUS: Work in progress
-Coaching a youth soccer team generates a surprising amount of data. Scores, substitutions, player minutes, goals, assists, saves, cards. The problem isn’t that the data is hard to capture — it’s that every existing option forces a tradeoff I wasn’t willing to make. Pen and paper is fast but produces nothing useful afterward. Third-party apps are convenient but own your data, require accounts, and are built for organizations, not individual coaches. I wanted something purpose-built for how I actually work on a sideline: fast to set up, minimal interaction during play, and with data I control entirely.
-
-
- I built SoccerGameTracker as a native iOS app in Swift — solo, from scratch. The easier path would have been a PWA or React Native wrapper; I’ve shipped both, and they’re faster to build. I chose Swift because a sideline app has a specific performance contract: launch instantly, respond without lag when a goal gets scored, never drop data if the phone gets pocketed. Native with local storage and no network dependency satisfies all three. No sync to worry about, no account to authenticate, no API that might be down at kickoff.
---every decision went through one person - me
-
Constraint clarified scope. Without a backend, multi-device sync and shared rosters aren’t on the table — and that’s fine. Knowing what the app isn’t made it easier to build what it is. I handled both the design and implementation entirely, which meant every decision — from interaction model to data structure — went through one person. That’s mostly an advantage when you need to move fast and stay opinionated.
---The core design problem is attention.
-
During a live game, a coach is watching players, calling substitutions, talking to parents. The app gets a glance and a thumb tap, not focused interaction. Every decision on the Live Game screen follows from that.
-
- Substitutions were a meaningful product decision. Mid-game sub support — with a distinct “substituted out” state separate from bench status — reflects how substitutions actually work: a player who comes off isn’t the same as a player who never started. Getting that distinction right matters for per-player stats to be accurate.
-
-
-
- --As a coach, being able to view historical information is a key part in planning practices, setting lineups, and determining strategy.
-
-
- The app is in active use this season, tested against the real constraint it was built for: a sideline, in real game conditions. Feedback from that use has been indispensable, with the per-player stats used between games to inform lineup and substitution planning. That’s the outcome I was building toward.
-What real use has surfaced is mostly sequencing: the transition from pre-game setup into the live view needs less friction, and the post-game summary screen is still being refined. Those are the next iterations.
---An App Store release is planned once the final rough edges are resolved. The app does one thing, does it reliably, and doesn’t ask for anything it doesn’t need.
-
--Giving credit where credit is due, this page is based off of the Credits page from Lea Verou.
-
--This site was built using Eleventy, hosted on Cloudflare Pages, with previews deployed with Cloudflare. Certificate courtesy of Cloudflare and Let’s Encrypt.
-
:root {
- --font-family-sans: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
- --font-family-serif: 'Playfair Display', serif;
- --font-family-mono: 'Fira Code', 'Courier New', Courier, monospace;
- --font-family-heading: 'Pirata One', cursive;
- }
-Font Awesome is the preferred icon library, loaded via its kit script and used directly as inline icon markup.
- <i class="fa-solid fa-github"></i>
-if content | toc to show this only if the page has linkable headings.blog layout) based on the number of words. A tag with the time to read is added to the top of a page where the FrontMatter has readtime: true.I’ve built this site with open source in mind (which is why this is hosted on GitHub in a public repository) and wanted to call out the open source projects that I use as part of it.
-case-studies pagesEleventy:
-Creating seamless IDE integration and workflow tools for developers managing complex environments.
- Company:Red Hat, Inc. -
-- Role:Senior Interaction Designer -
-- Timeline:2017-2019 -
-- Team: - 2 Product Managers, 3 Engineers, 2 Designers, PatternFly Design System team -
-- THE CHALLENGE: - OpenShift developers were managing work items across 3+ disconnected tools (GitHub issues, Jira, internal tracking systems). This forced constant context-switching between their IDE, browser tabs, and project management tools—slowing development cycles, breaking focus, and creating visibility gaps for project managers. -
- The fragmentation was especially painful because developers had to: -
- MY ROLE: - A lead designer responsible for creating a unified application lifecycle management tool that would integrate directly into the IDE, eliminating context-switching and improving developer productivity. -
-- THE SOLUTION: - I was part of a team that designed Application Lifecycle Management (ALM), a unified work item tracking system that integrated directly into the OpenShift.io IDE. The design focused on eliminating context-switching by bringing work item management into the developer's natural workflow—allowing them to create, update, and track work items without leaving their code editor. -
Key innovations included: -
- THE IMPACT:
-
-
- Before starting on the Application Lifecycle Management project, it was determined that the following areas would be need to be covered: -
- Through discussions with Stakeholders and Project Management, it was decided that the target users would be set in tiers: -
- - For each section of the ALM application, workflows and wireframes were used to identify possible user paths, as well as to strategize initial designs before moving on to high fidelity mockups and prototypes. -
-
-
-
- This wireframe was created with call outs in order to communicate my thoughts around the design to anyone who saw it, but could not talk with me. Specifically, this worked extremely well when working with colleagues in other time zones where our working ours did not match up.
-
- From these workflows and wireframes, it was determined that additional questions needed to be answered: -
After completing the wireframes and flows, a sample visual design was created. This design was created using the in-house design component library.
-
- -
-
-
- This project taught me invaluable lessons about designing for developers: -
- The success of ALM reinforced that internal tools and developer experiences deserve the same level of design craft and user research as consumer products—and that investing in that craft pays dividends in productivity, satisfaction, and adoption. -
-Design System for Construction Management Software
- Built comprehensive design system for Component Assembly Systems' construction management platform, spanning web and iOS applications. -
-Created unified visual language, reusable components, and documentation that accelerated development cycles.
-- Role:Lead Product Designer -
-- Timeline:2024-Present -
-- Platform:Web & iOS -
- - -
-
-
-
- --cas-spacer-xxs: 0.25rem; /* 4px */
- --cas-spacer-xs: 0.5rem; /* 8px */
- --cas-spacer-sm: 0.75rem; /* 12px */
- --cas-spacer: 1rem; /* 16px */
- --cas-spacer-md: 1rem; /* 16px */
- --cas-spacer-lg: 1.25rem; /* 20px */
- --cas-spacer-xl: 1.5rem; /* 24px */
- --cas-spacer-xxl: 2rem; /* 32px */
- --cas-spacer-xxxl: 3rem; /* 48px */
-
-
-
-
-
-
-
- All design and component documentation was created using Storybook. -
-
- -
The central hub where users monitor engagement metrics and campaign performance.
- Company:Saylent Technologies -
-- Role:UX Designer (First in-house designer) -
-- Timeline:2014-2016 -
-- Team: - Solo designer collaborating with 2 Product Managers, 6 Engineers -
-- THE CHALLENGE: - Saylent Technologies' Customer Engagement App (CEA) was a critical platform for credit unions and regional banks to track customer engagement and manage marketing campaigns. However, the existing interface was outdated, cluttered, and difficult to use—resulting in frustrated users and inefficient workflows. -
The company needed a complete UX overhaul that would: -
- THE SOLUTION: - As Saylent's first in-house UX designer, I led a complete redesign of the Customer Engagement App from the ground up. I established user-centered design processes, conducted research with financial services users, and created a comprehensive design system that would serve as the foundation for all future Saylent products. -
- THE IMPACT:
-
-
Before starting on the updated design for the Customer Engagement App (CEA), I first took to creating an updated sitemap. This allowed me to set a basic path for users to navigate through the application, while also separating the pieces of the application into useful areas.
-
-
- I created a set of wireframes that could be quickly iterated on for presenting ideas to project stakeholders and other interested parties.
-
- These screens represent the high-value interfaces that contained the majority of components used throughout the application. By designing these first, I established visual patterns and interaction models that could be applied consistently across the entire product.
-
- The central hub where users monitor engagement metrics and campaign performance. Key design decisions included: -
- Comprehensive analytics interface for tracking campaign effectiveness and customer behavior. Design focused on: -
- Configuration interface for managing campaigns and user preferences. Prioritized: -
The color palette and simplified component examples were some of the first items created, in order to provide the development team with a baseline in which to build the environment from.
-
-
-
- -
-
-
- This project taught me invaluable lessons about establishing design practice at a growing company: -
- The success of this redesign demonstrated the value of user-centered design at Saylent and paved the way for building a mature design practice at the company. -
-I believe that the process used for this project, albeit different, fit within the framework given and met all of the requirements as laid out by the Project Management Team. In the end, a new interface was created that met all of the requirements and was based off of clear steps and proper research. Competitively, this new design met, and often surpassed, expectations when compared to what was in use prior to this project.
-Real-time Data Visualization Platform
OVERVIEW
-Designed real-time analytics platform for Saylent Technologies’
-financial services clients. Created intuitive data visualizations
-that helped users quickly identify trends and make data-driven decisions.
Role: UX Designer
-Company: Saylent Technologies
-Timeline: 2015-2016
THE CHALLENGE
-Financial services users needed to monitor account activity and
-identify trends quickly, but existing dashboards were cluttered
-and difficult to parse.
THE SOLUTION
-I designed a clean, focused dashboard that prioritized the most
-critical metrics and used clear data visualizations to surface
-insights at a glance.
───────────────────────────────────────────
-[Show your 3-4 dashboard images here]
-───────────────────────────────────────────
KEY FEATURES
-IMPACT
-One enterprise task management system to rule them all.
- Company:Amazon Web Services -
-- Role:Senior UX Designer (Lead Designer) -
-- Timeline:2021-2023 -
-- Team: - Collaborated with 3 PMs, 8 engineers, UX researcher -
-- THE CHALLENGE: - AWS teams were using 3-4 different task tracking tools (Jira, internal systems, spreadsheets), leading to fragmented workflows, poor cross-team visibility, and significant time wasted in context-switching. Product managers struggled to get a unified view of work across teams, and individual contributors were frustrated by having to update multiple systems. -
-- MY ROLE: - I designed Task-it, a unified task management platform that consolidated these disparate tools into a single, intuitive system with role-agnostic patterns that could serve diverse AWS teams. -
-- THE SOLUTION: - I designed Task-it, a unified task management platform that consolidated these disparate tools into a single, intuitive system. The design focused on role-agnostic patterns that could serve diverse AWS teams—from product managers tracking roadmaps to engineers managing technical debt to support teams triaging customer issues. -
- THE IMPACT:
-
-
Before any design work (wireframes, mockups, prototypes) could begin, extensive user research and testing was needed.
-Research methods with example questions: -
Once a baseline had been established, the first round of user flow diagrams and analysis took place. Each step in the various user flows had two goals: -
For the initial release (scoped internally as a "beta"), the target audience consisted of Individual Contributors (IC), with a mix of high-interaction and low-interaction users. These were categorized as 1. Contributors, 2. Owners, and 3. Viewers.
-After discussions with Project Management (PM), it was determined that the target audience would be broken down into tiers: Tier 1 and Tier 2. -
-For the initial Task Details view, user flows and wireframes were used to identify possible errors. The findings from this work would go on to determine the direction of the final mockups.
-
-
- Based off of these user flows, I determined that the success and failures paths needed to be looked at further. Depending on the user, these paths had the potential to break experiences and decrease the usability and delight in the product.
-When creating wireframes, I start by taking an existing components (whether already in the application or from the component library in use) and lay out my page. From there, I begin to add some details (using the redacted script font) and basic headings. This is then reviewed with PM, Development, and, if available, fellow UX designers.
After reviews have been completed on the wireframes, mockups are created. In my process, I utilize mockups to get the full look/feel of the page without interactions. Once completed, these are used for user testing as well as final review with the development team.
-
-
- As part of the iterative process, I consistently looked at user feedback and heat-mapping to determine if there were any changes needed. From the beginning, it was known that additional attributes would be made available to users and that the Task Details page would have to be able to adapt accordingly.
-As part of the testing process, I created a card-sorting survey for users, where I included all of the existing attributes, as well as some future-planned attributes, and asked users to order them by priority. Priority was determined by the user, with the only prompt being "what attribute(s) are required for you to get your work done in the most efficient manner?".
-
- - After analyzing the results of the card-sorting user testing, additional mockups were created to task with the updated attribute priorities. -
-
-
-
- -
-
-
- This project reinforced three critical lessons about designing internal tools: -
- The success of Task-it demonstrated that internal tools can be delightful and that investing in UX research pays dividends in adoption, productivity, and user satisfaction. -
-Full-stack TypeScript application for OCR-based architectural drawing analysis and management.
- Project Type:Personal/Open Source -
-- Role:Product Designer & Full-Stack Developer -
-- Timeline:2025 (Ongoing) -
-- Development Partner: - Built with Claude Code (Anthropic's AI development assistant) -
-- THE CHALLENGE: - Construction project managers at Component Assembly Systems needed a way to efficiently extract metadata from hundreds of architectural drawing PDFs. Manual data entry from title blocks (drawing numbers, revision dates, project names) was time-consuming, error-prone, and didn't scale for projects with 500+ page drawing sets. No existing tools could handle the specialized OCR requirements or support custom title block layouts across different architectural firms. -
-- MY ROLE: - I designed and developed ArchParser, a full-stack TypeScript application that automates the extraction of drawing metadata using OCR technology. I created both the technical architecture and user experience, focusing on reliability, performance, and flexibility to handle diverse document formats. -
-- THE SOLUTION: - ArchParser is a monorepo application with a NestJS backend for OCR processing and a React/PatternFly frontend for drawing management. The system features customizable OCR templates with a visual template creator, memory-optimized processing for large PDFs, and an optional AI chatbot for semantic search. The platform successfully processes drawing sets of 500+ pages while maintaining accurate metadata extraction. -
-
- THE IMPACT:
-
-
Unlike traditional design-first projects, ArchParser required simultaneous development of both technical architecture and user experience. The process was highly iterative, driven by real-world testing with large PDF sets and continuous feedback from construction project planners and managers.
-Development approach:
-Working with Claude Code as a development partner: -
ArchParser is built as a TypeScript monorepo with three primary workspaces: backend (NestJS), frontend (React/Vite), and shared type definitions. The architecture emphasizes type safety, memory efficiency, and extensibility.
-Core Modules:
-Database (TypeORM + MySQL):
-Key Features:
-UI/UX Decisions:
-
- Built as a standalone HTML/JavaScript tool using PDF.js, the template creator allows users to:
-This tool democratizes OCR template creation—construction managers can create templates without developer assistance.
-
-
- - The visual design of Archparser progressed rather quickly, but a consistent idea was in place from the beginning: get users into their jobs as quickly and easily as possible. -
-Throughout development, several critical issues emerged that required significant architectural changes. Each iteration improved reliability, performance, or usability based on real-world testing.
-Problem: Processing 500+ page PDFs caused memory exhaustion and server crashes. The initial implementation converted entire PDFs to PNG images in memory before processing.
-Solution: Implemented single-page PDF conversion and dynamic batch processing:
-Result: Successfully processes 500+ page documents without crashes. Memory-optimized startup script (start-optimized.sh) provides production-ready performance.
Problem: Processed drawings became disassociated from database records after server restarts. Three root causes identified:
-process.cwd() and __dirnameSolution: Complete path management overhaul with centralized configuration:
-storage.config.ts with centralized path constantstoRelativePath() and toAbsolutePath() utilities{sanitizedName}_{jobId} formatResult: System is now portable across deployment environments. Paths resolve correctly regardless of server startup directory. Database can be migrated to new servers without breaking file associations.
-Problem: Initial dashboard struggled with high-volume data tables. Users needed better filtering, sorting, and status visualization.
-Solution: Comprehensive dashboard refactoring:
-Result: Users can efficiently navigate large datasets. The Kanban view provides at-a-glance status monitoring, while table filters enable rapid data discovery.
--
-
-
- This project provided valuable insights about full-stack development, AI-assisted coding, and building for real-world constraints: -
- ArchParser demonstrated that full-stack development - especially with AI assistance - enables rapid prototyping and iteration. By combining my design background with technical implementation, I could build and refine features based on direct user feedback without handoff delays. The project serves as both a practical tool for construction project management and a portfolio demonstration of end-to-end product development capabilities. -
-A walkthrough of how I redesigned adamjolicoeur.com.
- Bootstrap, VSCode, GitHub, Netlify, Figma, iOS Simulator -
-When I'm trying out new ideas, I'll often go to codepen to riff on them, but also to see what is already out there.
| Top Codepens | -- | Description | -
|---|---|---|
| SwitchTrack | -- | A calendar in a webapp, part of a time tracking system | -
| CAS Ripper | -- | Link to Codepen example demonstrating basic example of an architectural drawing library | -
| Animated Cards on Glass | -- | Link to Codepen example showing animated cards on simulated glass | -
A selection of code examples from various projects that I've worked on.
- See the Pen - SwitchTrack - Calendar by Adam Jolicoeur (@AdamJolicoeur) - on CodePen. -
- -When I work on a design, I prototype as I go. This allows me to see what I'm doing in a working environment, while keeping expectations realistic.
In support of the 4th release of PatternFly, I worked with a group of designers to create a modern, responsive take on the PatternFly website. Using a responsive layout with SVGs that move with the page, I create clean aesthetic that would flow through the rest of the site.
- - View PatternFly 4 demo - -As part of a usability study, I worked with a UX Researcher to test out different variations of a Feature Flag, or notifier, for aspects and pages of an application that are either in a pre-release state, or have an unreleased element in use.
- - View Feature Flags demo - -Start the day, capture tasks, review, and archive - then summarize using AI
ROLE: Lead Product Designer & Product Manager
-TYPE: Feature extension - personal productivity tool
-STACK: React, TypeScript, Tailwind CSS, Google Gemini API
-STATUS: Shipped - in daily use
-TimeTracker Pro is a Progressive Web App (PWA) I designed, built, and use every day to track how I spend my work hours. It runs in the browser, installs as a native-like application on desktop and mobile, and stores data locally by default - no account required. Through the day I create tasks, assign them to projects and categories, and archive each completed day. Over time, it builds a personal record of where my time actually goes.
-I built it because every time tracking tool that I tried was either too complex for my personal use, or too simple to be useful. TimeTracker Pro is purpose-built for the way I work: start the day, capture tasks as they happen, and review and archive at the end. It has been in daily use since early 2025 and has grown into a small, but complete, product - export formats, project management, offline support, and invoicing. The Weekly Report feature is the most recent addition, and the one that most clearly shows how the product has evolved from a personal utility into a considered system.
-After archiving each week, I found myself running a second, separate tool to generate a weekly summary. That tool only worked with PDFs directly exported from the time tracker, only ran on a local development server, and product output that always needed manual cleanup before it was shareable. It was a workaround, not a product.
-The Weekly Report feature replaces that entire workflow. It lives inside TimeTracker Pro as a dedicated route, directly reading the same data the rest of the app uses, and generates a coherent weekly narrative using an AI model (Gemini). The output can be tuned for different audiences - a team’s standup, a client update, or a personal retrospective - and is editable before copying to a separate document. No export step, no separate server, no manual cleanup.
-
- --The right tool for summarizing my work week is the tool that already knows my work week.
-
The original two-tool setup had three specific friction points:
-The generator only accepted PDFs from the time tracker, creating a dependency without any actual data sharing. The export was the only bridge between them.
-The generator ran on a local Vite server, which meant it was only accessible from my machine and only in a single context. Any time I needed a summary on a different device, I was out of luck.
-Because the generator had no understanding of who I was writing for, every summary came out generic and required manual work to make it usable. The generator sounded too similar from week-to-week, diminishing the quality of the reports.
---The deeper problem was that the tooling made a simple, recurring task feel like a project in itself. I needed a paragraph that I could drop into a standup or send to a client. What I had was a process.
-
The obvious move might have been to build a better standalone summary tool, but I chose not to - and the reasoning matters.
-A standalone tool would still need an export step, a file upload, or an API connection to access my time data. It would have to be general enough to work with any input, which means losing all the context that makes a summary actually useful - what categories mean, which projects are billable, and what a typical week looks like - specifically for me.
-Extending TimeTracker Pro meant the summary feature could read directly from the same local data store the rest of the app uses. No synchronization problem. No format negotiation. The data is already structured exactly the way the feature needs it to be - tasks with descriptions, projects, categories, and duration - grouped by day.
-It also meant the feature could be opinionated in ways that a generic tool cannot. It knows to exclude break-time and lunch categories automatically. It understands the project and client structure. It has enough context to group a week of task descriptions into a meaningful narrative rather than a list.
---The goal was to make the AI feel like a step in a workflow, not a magic trick.
-
At wider view-ports, and the report page uses a two-column layout: controls on the left, output on the right. This came from recognizing that the interaction has two distinct modes - configuring the request and reviewing the result - and that collapsing them into a single scrolling column would blur that separation.
-The left column handles week navigation, the data breakdown, and tone selection. it is the setup side. The right column is purely reactive - it shows whatever state the output is in: idle, generating, error, or a draft summary ready to edit and copy. Nothing in the right column requires user input; it only responds to decisions made on the left.
-This separation also meant each column could be designed for its specific job. The left column is dense and interactive. The right column has more breathing room because reading and editing require it.
-
-
- The most deliberate UX decision was treating the AI generation as a visible, legible transition rather than a black-box button press. When generation is in progress, the right panel names the week being summarized and shows staggered skeleton lines that suggest an output is forthcoming.
-The idle state - before anything has been generated - uses a dashed border container with a short explanation of what will appear there. This keeps the two-column layout from reading as broken or incomplete on first load, and gives the right panel a purpose even before it has content.
-Error states are structured and recoverable: a header that names the failure, a plain-language description, and a “Try again” action inline. The error is informative without being alarming.
-
- The tone selector - Standup, Client, Retrospective - reflects a real choice I make every week about who I’m writing for. These are not cosmetic variations. Each tone maps to a different set of system prompt instructions sent to the model, producing meaningfully different outputs.
-
-
-
- --Having tone as an explicit control also solves a subtle UX problem: when you change the tone, the existing summary resets so you never mistake a standup summary for a client-ready output. The control communicates its own consequences.
-
The generated summary appears in an editable text area, rather than a read-only display. This frames the AI’s role correctly: it drafts, the human approves. The copy button and a brief ‘changes are not saved’ note completes the mental model - this is a staging area, not a final product.
-A “regenerate” button sites alongside the copy button, so it is easy to get a different draft without scrolling back to the controls. The two actions - regenerate and copy - represent the two things a person actually wants to do with a draft: try again or take it.
-The prompt that drives the summary is split into two parts. The system instruction establishes the persona, length constraints (3 to 5 sentences), voice (first-person, no filler phrases), and the specific tone instructions for whichever mode is selected. The user message contains the serialized week data - a lean, human-readable representation of each workday with task titles, descriptions, project names, and durations.
-Before sending, the serialization step strips timestamps, IDs, and non-work categories. What reaches the model is only what a human would include if they were writing the summary prompt by hand. This matters because model output quality is directly proportional to input clarity - sending structured noise produces structured noise back.
-The prompt architecture is designed to evolve. As I use the feature and notice patterns in what I edit or regenerate, the system instructions cane be turned to match how I actually write and what different audiences respond to. The tone categories themselves may expand - a spring summary or executive update tone would be natural additions as the use cases grow.
-Every week I use the standup tone on Monday morning to orient myself before the week’s work begins, with the retrospective tone on Friday to close out the week. Before this feature existed, I skipped that ritual more often than not due to the fact that the tooling made it feel like work. Now it takes less than a minute. The summary is available wherever TimeTracker Pro is available, and the tone control means the output is usually usable with one or two edits rather than a full rewrite.
-From a portfolio standpoint the project demonstrates a specific combination of skills: identifying friction in a real workflow, making a considered architectural decision about where a feature belongs, designing the interactions states that make AI output feel trustworthy, and shipping something that has been in daily use since it launched.
-Lead Product Designer specializing in design systems and enterprise applications. 15+ years at AWS, Red Hat, and high-growth startups.
-— I design products and code prototypes that ship —
-I'm a Product Designer who ships code—and understands the business side.
-With over 15 years designing enterprise applications at AWS, Red Hat, and high-growth B2B companies, I specialize in design systems and complex, data-intensive interfaces. I've shaped products used by millions of developers and contributed to some of the industry's most respected open-source design systems.
-- What makes me different: -
- Currently: Lead Product Designer at Component Assembly Systems
-
- Previously: Amazon Web Services, Red Hat, and high-growth startups
-
- Lead designer for Task-it, Amazon's internal task management platform. Consolidated 3-4 disparate tracking tools into one unified system, reaching 500 daily active users across AWS within 18 months of launch.
-After archiving my work entries for the week, I found myself running a second, separate tool to generate a weekly summary. Now, I start the day, capture tasks, review, and archive - then summarize using AI.
-Architectural drawing analysis platform for OCR-based architectural drawing analysis management.
-Built comprehensive design system for construction management software spanning web and iOS applications. Created design tokens, component documentation, and prototypes that accelerated development cycles by 25%.
-Designed enterprise project management for OpenShift teams at Red Hat. Created seamless IDE integration and workflow tools for developers managing complex Kubernetes deployments.
---[Adam] is self-driven and keeps stakeholders (Project manager, Development manager, Engineers) aligned on UX solutions...design proposals are spot-on and considerate of [our] diverse set of users.
- - Product Owner - -
--Adam is highly engaged across 6+ major features at any given time and is somehow never the blocker. Designers like this don't come around often.
- - Senior Developer Engineer, AWS - -
--...What stood out to me while working with Adam was his positivity and confidence through every obstacle, pivot, and deadline. He is a true team player.
- - Front-End Engineer - -
Beyond my professional work, I actively contribute to the open source community. My contributions span developer tools, design systems, and infrastructure projects that support the broader tech ecosystem.
-- Developed and maintained several open source developer tools that enhance productivity and streamline workflows for both designers and software engineers. -
-- Core contributor to Red Hat's professional design system (2016-2021). Designed accessible, enterprise-grade components for the open-source system now used across OpenShift, Ansible, and 50+ enterprise products (20,000+ GitHub stars). -
-- Created several open source applications and games that showcase innovative use of web technologies, focusing on user engagement and interactive experiences. -
-Regular contributor to open source documentation, helping make complex technical concepts more accessible to developers.
-Selected projects from AWS, Red Hat, and high-growth B2B companies
- Lead designer for Task-it, Amazon's internal task management platform. Consolidated 3-4 disparate tracking tools into one unified system, reaching 500 daily active users across AWS within 18 months of launch.
-After archiving my work entries for the week, I found myself running a second, separate tool to generate a weekly summary. Now, I start the day, capture tasks, review, and archive - then summarize using AI.
-
- Architectural drawing analysis platform for OCR-based architectural drawing management.
-
- Built comprehensive design system for construction management software spanning web and iOS applications. Created design tokens, component documentation, and prototypes that accelerated development cycles by 25%.
-A collection of presentations from over the years.
- - A collection of my work as a UX designer, showcasing various projects and designs I've worked on over the years. -
-
- - A presentation on creating an accessible color picker, discussing design considerations and implementation strategies. -
-Links to various downloads and resources.
| - | - |
|---|---|
| Collect Some More | -An iOS application for tracking movies, comic books, collectables, and games. | -
| Gravatar | -![]() |
-
| The Proxy Guy | -![]() |
-
What I use as a designer.
All of my travel gear fits into a Peak Design 20L 20L bag and a small “tech pouch” for cables, charging bricks, Beats Studio Buds, and my Logitech mouse.
-This site was created using Eleventy (Markdown + Nunjucks), after many years of trying out essentially everything that was “hip” at a given time. In the end, I just needed something simple that I could build upon, but also could be used for other projects (with an easy-to-simplify structure). For the UI, I use the Bootstrap Grid system as I didn’t want to write one from scratch. Various UI elements of the site are made using Shoelace (buttons, carousel, details - I’m really starting to get into Web Components) with custom pieces on top.
-Be sure to check out uses.tech to see other /uses pages!
-You can also find me on the Eleventy Leaderboards!
- -| Stats | -Archetype Sticker | -Generated Image | -Trophy | -
|---|---|---|---|
![]() |
-![]() |
-![]() |
-![]() |
-