SOFTWARE DEVELOPER BUILDING AI-ENABLED PRODUCTS42.2751° N, 72.4009° W

Patrick Hourihan

Software developer building AI-enabled products. Practical tools, real websites, and shipped software.

I build practical software, AI-enabled products, business tools, and production websites using TypeScript, Next.js, Supabase, SQL, APIs, and modern AI development workflows.

More than seven years of client-facing sales and account-management experience brought to software development, alongside hands-on work defining, building, debugging, and deploying real products.

01Selected Software Projects

Products I've defined, built, and debugged

Three projects at different stages of the same craft: define the problem, build it, then review, test, and own the result.

Screenshot of the My Cartoon Pet marketing homepage: a serif hero reading “Your pet, as a cartoon character,” a “Make my pet's cartoon” call to action, and a photo-to-cartoon how-it-works panel.

My Cartoon Pet

In development

AI-enabled pet design SaaS where users upload a pet photo, generate a cartoon mascot-style design, preview it on merchandise, and save results to a private gallery.

Stack
  • Next.js
  • TypeScript
  • Supabase
  • Postgres
  • RLS
  • Private storage
  • Stripe
  • Vercel
What I built
  • Built the upload, auth, generation, gallery, and billing architecture with Next.js, Supabase, Postgres, private storage, RLS, Stripe, and Vercel.
  • Implemented a secure upload flow with signed URLs, ownership checks, quota handling, and private result storage.
  • Used AI coding agents for implementation and debugging, then reviewed diffs, verified tests, and kept production gated until real generation QA passes.
Case study: build notes and ownership
Problem
Generating any cartoon is easy. Generating a consistent, on-brand one a pet owner recognizes as their animal, with private uploads and trustworthy billing, is the hard part.
Under the hood
  • Three-step upload: authorize, a signed PUT to private storage, then a commit that verifies the stored file and enforces per-plan limits atomically in Postgres.
  • Server-only generation: an atomic quota-check-and-create function runs before any paid AI call. Failed generations are recorded without consuming quota.
  • Stripe Checkout and a billing portal, with a signature-verified webhook as the single source of truth for plan status.
  • Gallery results re-list with freshly signed URLs, so they outlive any single link.
How I worked
Mid-build I hit a real bug: the database had migrated to a new generation schema while the code still called functions that no longer existed. I traced it against the live database, realigned the API, and added tests that pin app constants to the migration. I also hardened the generations table to be server-write-only, closing a quota-refund hole.
Current limitations
  • Not publicly launched.
  • Real generation QA still needs Vercel environment variables and a Supabase migration.
  • No live link until the upload-to-result flow is verified.
Detail
Screenshot of the My Cartoon Pet sign-in screen: a branded “Welcome back” card with email and password fields and a Sign in button. No real data is shown.
Screenshot of the live IPlayForKeepers site: a dark fantasy-football landing page reading “Fantasy football hosting for leagues that play for keeps,” with a phone mockup of the app.

IPlayForKeepers

Live interactive prototype

Live mobile-first fantasy football prototype for dynasty, keeper, superflex, and best-ball leagues.

Stack
  • Next.js
  • TypeScript
  • Tailwind CSS
  • OpenNext
  • Cloudflare Workers
What I built
  • Built a sixteen-screen demo league with dashboards, standings, rosters, waivers, trades, draft state, chat, and future-pick tracking.
  • Added deterministic seeded data so the demo renders the same way every time.
  • Implemented a real best-ball lineup optimizer that selects the highest-scoring legal lineup each week.
Case study: build notes and ownership
Problem
Casual fantasy apps don't serve serious dynasty and best-ball leagues that want deep history, real commissioner control, and custom formats on a phone.
Under the hood
  • A seeded engine with fictional players, a full schedule, and derived standings, for reproducible demos.
  • Types mirror a planned backend schema, so the mock layer can later be swapped for live data with minimal churn.
  • Ships to Cloudflare Workers via OpenNext and Wrangler.
How I worked
I scoped the product and league rules, structured the sixteen screens and mobile navigation, checked the optimizer's output by hand, and shipped the live prototype.
Current limitations
  • Fictional seeded data only.
  • No production auth, payments, MFL import, live scoring, or real leagues yet.
  • Prototype, not a finished fantasy hosting service.
Screenshot of the live Keeping Up With The Robots site: a dark hero reading “AI is moving fast. Western Mass is keeping up,” with a newsletter signup and a Western Massachusetts signal-grid map.

Keeping Up With The Robots

Live in production

Live community website for Western Massachusetts people and small businesses learning how to use AI.

Stack
  • Next.js
  • TypeScript
  • Tailwind CSS
  • Resend
  • Vercel
What I built
  • Built and deployed a responsive Next.js site with newsletter signup and contact handling.
  • Integrated Resend through API routes with safe fallback behavior.
  • Wrote and refined the positioning, structure, and launch copy.
Case study: build notes and ownership
Problem
Small businesses and creators in the Pioneer Valley want practical, no-hype guidance on AI, and a local community to learn it with.
Under the hood
  • /api/subscribe adds contacts to a Resend audience, with a welcome-email fallback.
  • /api/contact delivers submissions through Resend, and logs safely in dev when keys are absent.
  • Custom dark theme on Tailwind CSS v4, responsive with mobile navigation.
How I worked
This one is more brand than backend. I owned the positioning and copy, wired up Resend, and deployed it live on Vercel.
02Selected Client Work

Websites built for real businesses

Client engagements where I owned requirements, the responsive build, integrations, and deployment.

Screenshot of the live Cell Beauty Health website: an elegant dark hero with the Cell Beauty Health logo over a cellular background and a “Book Your Free Consultation” call to action.
Live in productionClient website

Cell Beauty Health

A responsive marketing website for a science-backed peptide-therapy wellness brand.

Patrick's role
  • Requirements gathering and information architecture
  • Responsive website implementation (Next.js, Tailwind CSS)
  • Approved-copy integration
  • Consultation form and platform integration
  • QA
  • Deployment coordination

My role was limited to requirements, site structure, responsive implementation, QA, and deployment coordination. Medical and regulatory content came from the client.

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • Embedded form (Tally)
Visit Cell Beauty Health
Screenshot of the live Zubin Home Valuation website: a professional hero reading “Residential Appraisals and Home Valuation Services in Buffalo & Western New York” with call-to-action buttons.
Live in productionClient website

Zubin Home Valuation

A responsive marketing website for a residential appraisal and home-valuation business serving Buffalo and Western New York.

Patrick's role
  • Requirements gathering and information architecture
  • Responsive website development
  • Implementation of approved copy
  • QA
  • Deployment coordination

My role was limited to site structure, responsive implementation, QA, and deployment coordination. Appraisal credentials, service details, and business claims came from the client.

  • Astro
  • Static site
Visit Zubin Home Valuation
03Technical Capabilities

The tools I actually reach for

A working toolkit. Only what I've used to build and ship the projects above.

01Languages & Frontend
TypeScriptJavaScriptHTMLCSSReactNext.jsTailwind CSSResponsive design
02Data & Backend
SupabasePostgresSQLAuthenticationPrivate storageRow Level Security
03Application Integrations
REST APIsNext.js API routesWebhooksStripeResend
04Development & Delivery
GitGitHubVercelCloudflareSiteGroundWordPressWooCommerce
05AI-Assisted Development
Claude CodeOpenAI CodexChatGPTTechnical specification writingRepository auditingDebuggingDocumentationQA planning
04How I Build With AI

AI does the typing. I own the judgment.

A repeatable process I run on every project. It is the same one that found and fixed real bugs in the work above.

  1. 01

    Define the problem

    Start from the actual user or business problem and who it is for, not a feature list.

  2. 02

    Write the spec

    Convert requirements into a written specification with clear, testable acceptance criteria before any code is generated.

  3. 03

    Build with AI agents

    Drive AI coding agents for implementation, analysis, and documentation against that spec.

  4. 04

    Inspect & validate

    Read the repository changes, question what the agent produced, and validate every technical claim.

  5. 05

    Debug for real

    Debug failures using logs, database state, and real application behavior, not by trusting output blindly.

  6. 06

    Test & document risk

    Test the real user flow across screens, then document what was decided, deferred, and still carries risk.

AI accelerates the work. Patrick remains responsible for requirements, technical decisions, review, testing, and delivery.

Prompting is not the skill. Defining the problem, validating what the agent produced, and standing behind the result. That is the work.

05Professional Background

A nontraditional path to software

Before software, I spent years in roles where the job was to understand messy real-world problems, explain complex products clearly, and follow through with clients. That experience carries directly into how I build software: define the problem, write the spec, test the flow, and ship something useful.

Where I've worked
  • Software Projects & AI-Assisted DevelopmentCurrent focus

    The portfolio projects above: defining, building, debugging, and shipping real software.

  • Energy ConsultantTrinity Solar

    Consultative, client-facing role: assessing needs and explaining a technical product to homeowners.

  • Territory ManagerMicroSurgical Technology

    Ophthalmic medical-device sales supporting surgical facilities across Florida, working with surgeons, hospital administrators, and surgical teams on technical product education and account management.

  • Outside Sales RepresentativeW.B. Mason

    B2B outside sales: opened new markets in Buffalo and Miami, managed a large account base, and handled daily prospecting, pricing, contracts, and customer support.

  • Pound Keeper / Animal CareBelchertown Animal Control
  • Community WorkDakin Humane Society / BARC
Education

Bachelor of Science in Business Administration

University at Buffalo, SUNY, School of Management

Concentration: Financial Analysis

What carries over
  • Requirements discovery
  • Explaining complex systems
  • Client and stakeholder communication
  • Independent follow-through
  • Debugging messy real-world problems
  • Turning nontechnical needs into concrete deliverables
06Contact

Let's build something practical

Open to software-development and AI-focused roles. The fastest way to reach me is email.