The Lookbook - Engineering Management Consultant

The Lookbook is the first insight, research, and feedback platform designed to predict fashion consumer behavior—powered by a community of real consumers sharing purchase, demographic, and preference data in real time.
Led engineering at The Lookbook as interim Fractional CTO during a pivotal pre-launch phase. I directly consulted with the CEO on technical decisions, hiring, and VP of Engineering responsibilities—collaborating with a cross-functional team of 3 engineers and 1 designer to develop and ship innovative engineering solutions. I assessed technology trends for long-term engineering strategies, positioning the company for scalability during the user acceptance testing (UAT) phase.
The Challenge
A previous refactor from a JavaScript REST API to TypeScript GraphQL had been left incomplete—the API was untyped, packages were two or more major versions behind (Apollo Server 2.16.1, GraphQL 14.7.0, MongoDB 3.3.3), and the console was flooded with unnecessary logging that made debugging nearly impossible. There were duplicate functions (including misspelled copies), TypeScript listed in both dependencies and devDependencies causing version conflicts, and no observability, no pre-commit checks, and no automated code quality enforcement.
The Modernization Plan
I authored a full-stack modernization and architecture plan in Confluence, then translated it into a structured Jira epic with scoped stories and tasks. This approach was deliberate: it enabled the team to continue shipping features without interruption while I simultaneously upgraded the infrastructure for performance, security, and long-term maintainability. Once I established the patterns and standards, I delegated the rest of the epic to the team.
Backend Architecture: Cutting the Codebase by 50%+
I single-handedly refactored the entire JavaScript REST API into a TypeScript GraphQL service using ECMAScript Modules (ESM) with a strongly defined GraphQL schema and strict typing—without interrupting feature development. I upgraded Apollo Server from 2.16.1 to 4.7.1, GraphQL from 14.7.0 to 16.6.0, and MongoDB from 3.3.3 to 5.5, untangling complex package dependencies along the way.
I applied DRY and SOLID principles to replace brittle logic with scalable, strictly typed resolvers. I replaced CRUD REST endpoints with proper GraphQL Queries and Mutations, replaced inline strings with enums, moved types into a shared folder instead of repeating them across the codebase, renamed queries to use verbs (e.g., `activeCompensation` became `getActiveCompensation`), and removed all unused dependencies and duplicate functions. The schema was now strictly defined—if there was a type error, the code wouldn't even transpile.
The result: over 50% reduction in codebase size and a 50%+ decrease in feature development level of effort. CodeFactor grade improved from C- to B from the application-level work alone.
Database Architecture
I designed and implemented a singleton MongoDB client service with enum-based collection handling, replacing multiple client instances scattered throughout the code. This enforced type-safe database access and made it easy to get team feedback on which collections to clean up. We deleted unused analytics collections and identified that notifications needed to be completely rethought to use GraphQL subscriptions instead of constant polling.
Hardening Security
Session security was another challenge to solve. I refactored the authentication resolver to validate request origin domains and check admin roles before setting cookies—completely eliminating cross-origin errors and unwanted session behavior. For a platform handling sensitive consumer purchase data, demographic information, and behavioral insights—where trust and safety are the highest priority—security, performance, and site reliability were non-negotiable.
Production-Grade Observability
The application was drowning in console.log noise—a logger was writing literally everything to the console, making it unreadable. I built a production-ready, application-level Sentry service to replace console logging with actionable error tracking across all three environments. With the new enum-based logic, we could monitor and surface only critical errors while still using custom GraphQL error codes to handle expected cases like forbidden access, auth errors, and 404s without cluttering Sentry.
I also integrated Sentry into the frontend, replacing all console.log and console.error usage with structured error tracking to improve observability and traceability of UI-level issues.
Frontend Modernization (Across Multiple Repos)
I worked across the API, Admin app, and Frontend Member app repos. On the Admin app, I untangled dependencies (TypeScript was listed in both dependencies and devDependencies, and TailwindCSS had mismatching versions across both that were causing bugs) and removed unnecessary plugins that were now included in the main Tailwind package after the upgrade.
On the Frontend Member app, I upgraded the entire codebase to ECMAScript Modules (ESM) and brought all dependencies current—including upgrading @types/node from 17.0.35 to 20.2.3 and migrating the Storybook config from main.js to main.ts, moving to Storybook 7.0.17 for improved developer experience and addon support.
Automated Code Quality Enforcement
I established robust code quality gates using strict ESLint and Prettier configs, Husky pre-commit hooks, and CodeFactor CI checks on the develop branch via GitHub Actions—catching problems before they ever reached production. I set noImplicitAny to true in TypeScript, upgraded the target from ES2016 to ES2021, and hardened ESLint rules to eliminate unreachable code, unused variables, and eslint-disable suppressions. Some rules had to start as warnings and be incrementally tightened to errors given the volume of issues—but the end state was zero tolerance.
Testing
I employed Jest with SuperTest to build out the testing infrastructure—generating smoke tests, auth tests, and tests on all front-page queries and mutations. I enacted a test plan and delegated execution to the team.
DevOps & Continuous Improvement
I reviewed and provided recommendations on software architecture, end-user security, DevOps practices, and best practices in front-end and back-end development. I generated Jira tickets from regular Lighthouse runs and CodeFactor suggestions, conducted comprehensive code reviews to hold the team to a high standard, and provided guidance on identifying business needs (e.g., the reset password feature). I authored detailed architecture and CI/CD documentation in Confluence to ensure knowledge transfer.
"Stephanie and I worked together on a project where she provided consulting services as a senior engineer. Her expertise in Typescript and NodeJs was obvious and for us it meant a great deal of successful refactoring and code improvements, which was no easy job.
I would also add that Stephanie is a great team player, always approachable and willing to help. She takes the initiative and constantly overachieves, taking charge when necessary and ensuring tasks are completed efficiently. She’s not afraid to do the heavy lifting. Not to mention, her extensive work experience comes with great attention to detail and thoroughness. This in particular helped us catch a lot of potential issues and bugs, which is always a big plus. All in all, her technical proficiency and dedication to producing great results make her an asset to any team."
Tech Stack
TypeScript, GraphQL (Apollo Server 4), MongoDB, API-First Data Modeling (GraphQL), Heroku, Node.js, JavaScript (ESM), Express.js, Next.js, React, TailwindCSS, Sentry, Jest, SuperTest, CodeFactor, ESLint, Prettier, Husky, GitHub Actions, Jira, Confluence, Vercel, HTML, CSS, SASS, Agile/Scrum


