SOFTWARE DEVELOPER BUILDING AI PRODUCTS AND INTERNAL TOOLS42.2751° N, 72.4009° W

Patrick Hourihan

Software developer building AI products and internal tools. Practical software, real websites, and a live public beta.

Based in Western Massachusetts, I build practical web applications, internal analytics, automation, and AI-enabled products using TypeScript, Next.js, SQL, Supabase/Postgres, APIs, Git, and modern AI coding assistants.

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.

My Cartoon Pet public beta homepage: a serif hero reading “Your pet, as a cartoon character,” a “Make my pet's cartoon” call to action, and a real pet photo shown next to its finished cartoon sticker.

My Cartoon Pet

Public beta

AI-enabled SaaS product where users upload a pet photograph, generate cartoon mascot-style artwork, preview designs on merchandise, and manage results through a private gallery.

Stack
  • Next.js
  • TypeScript
  • Supabase
  • Postgres
  • SQL
  • Row Level Security
  • Stripe
  • Vercel
What I built
  • Built and launched the public beta: guided upload and generation flow, pet profiles, private gallery, Stripe subscription billing, and signed-URL private storage on Next.js, Supabase, and Vercel.
  • Designed the relational data layer: SQL migrations, Row Level Security on every user-owned table, and Postgres functions that enforce ownership and generation quotas atomically.
  • Built internal founder analytics, scorecards, and reliable webhook-driven automation, working with AI coding assistants through written specs, repository audits, tests, and release gates.
Case study: build notes and ownership
Problem
Generating any cartoon is easy. Generating a consistent one a pet owner recognizes as their animal, with private uploads, trustworthy billing, and honest measurement of whether the product is working, 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 SQL 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.
  • An append-only product-events ledger and an email outbox with unique event keys, retries, and a reconciliation pass, so automation never double-sends or silently drops work.
Internal systems behind My Cartoon Pet
  • Founder analytics. Tracks product events and produces reviewable scorecards for activation, generation success, and quality signals. Built as a server-only analytics layer on an append-only Postgres event ledger.
  • Improvement Graph. Connects customer outcomes, activation and quality metrics, countermetrics, data sources, ownership, and review cadence into one measurement and decision framework. Missing data is flagged rather than treated as zero.
  • Reliable automation. Reduces duplicate or missed work in billing and email automation. Uses idempotent webhook processing, an email outbox, and reconciliation checks so confirmations send exactly once.
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. AI accelerated implementation and analysis; I owned product direction, requirements, acceptance criteria, review, testing decisions, and release gates.
Current limitations
  • Public beta with no paying customers yet.
  • Final generation-quality review is still in progress.
  • Merchandise previews are live, but ordering and fulfillment are gated for a limited release.
Detail
My Cartoon Pet public beta sign-in screen: a branded “Welcome back” card with empty 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
02SQL & Relational Data
SQLPostgresSupabaseRelational schema designMigrationsRow Level SecuritySQL functions & RPCsAnalytics queries & scorecards
03APIs & Automation
REST APIsNext.js route handlersWebhooksStripeResendEvent processingIdempotency & reconciliation
04Development & Delivery
GitGitHubVercelCloudflareTestingDebuggingRelease gatesProduction verification
05AI-Assisted Engineering
Claude CodeOpenAI CodexChatGPTSpecification writingRepository auditingPrompt engineeringQA planningDocumentation
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, including a live public beta and the internal analytics and automation behind it.

  • Energy ConsultantTrinity Solar

    Nov 2025 to Present

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

  • Territory ManagerMicroSurgical Technology

    May 2018 to Nov 2020

    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

    Nov 2013 to Apr 2018

    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

    Mar 2025 to Present

  • Community WorkDakin Humane Society / Belchertown Animal Relief Committee
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.