Skip to content

Software studio · Chicago, IL

Software for the parts of a business that make money.

Herlehy Development designs and builds the systems behind revenue: lead and sales tracking, payments and payouts, subscriptions and reporting. From the first database table to production.

Sales analytics screen of the CRM: total revenue, jobs sold, average job size, close rate, revenue by year and appointment outcomes.
CRM & Ad Reporting. Sales analytics: revenue, close rate and appointment outcomes, synced from improveit360.

Names, phone numbers and figures in these screenshots are sample data.

Selected work

Four systems we designed and built: a sales CRM with ad reporting, a real-money tournament platform, a creator marketplace and a paid course. Where noted, the data in the screenshots is sample data.

01

CRM & Ad Reporting

A Chicago-area home improvement company

  • Inbound calls tracked through WhatConverts (earlier CallRail) into a call queue, oldest uncontacted lead first
  • Customer database of lifetime and open sales, synced from improveit360 on Salesforce, with revenue and close-rate reporting
  • Shared schedule, rep leaderboard and an operations hub for ad spend, budget and disbursements
  • Read-only Google Ads and Meta reporting shown next to real leads, as cost per lead

Built with Next.js · Supabase · WhatConverts · CallRail · improveit360 · Salesforce · Google Ads API · Meta Marketing API

Project details
Lead screen of the CRM: today's call counts, a call queue of uncontacted leads with wait times, phone numbers and Mark contacted buttons, and today's new leads.
Call queue: every new lead nobody has called yet, oldest first.
Schedule screen of the CRM: a week calendar booked with sample appointments (in-home visits, measures, installs, a call, a meeting), per-rep filters, day, week, month and team views, and a legend of visit types.
Team schedule: in-home visits and measures can't double-book.
Team screen of the CRM: active leads, overdue follow-ups, a monthly rep leaderboard with conversion and response speed, and per-rep cards showing roles and permissions.
Team view: rep leaderboard, pipeline load and per-rep permissions.

Names, phone numbers and figures in these screenshots are sample data.

02

LastRound

An esports start-up, pre-launch

  • Authorize.net Accept Hosted deposits: full-page redirect, no card data on the app's origin
  • Didit identity verification before any withdrawal, with payouts through an admin-approved queue
  • Idempotent request handling, webhook replay guards and a database audited for privilege escalation and IDOR

Built with Next.js · Supabase · Authorize.net · Didit

Project details
LastRound home screen: a featured tournament with prize pool, a payouts ticker, and a tournament browser listing entry fees and prizes.
Tournament browser with entry fees, prize pools and fill counts.
LastRound Transactions page for a test account: type, currency and date filters above a ledger of tournament entries, prize-pool funding, entry and funding refunds, a community entry and USD withdrawals, each with date, currency, status and amount.
Player ledger: entries, refunds, prize funding and withdrawals.
LastRound Pick Your Game page: a carousel of game cover cards with Rocket League in front and a View tournaments button, a View all games link, and a Join LastRound call to action.
Game browser: active tournaments organized by game.

Players, tournaments and amounts in these screenshots are sample data from pre-launch testing.

03

ClipBoard

In-house product

  • Creators post paid bounties for clips of their streams and videos, with the prize held in escrow until a winner is picked
  • Clippers browse open bounties, cut from the creator's VODs, and submit their clips as a link or an uploaded file
  • Winners are paid through Stripe, with prize splits across multiple winners and a dispute process built in

Built with Next.js · Supabase · Stripe

Project details
ClipBoard landing page: the headline Turn Clips Into Currency surrounded by floating bounty cards with platforms, creators and prizes.
Landing page, with bounty cards around the headline.
ClipBoard bounty board with trending bounties, prize amounts, status chips and an explore grid.
Bounty board: trending prizes and open bounties.
ClipBoard How It Works section showing the post, compete, pick and pay steps.
From post to payout in four steps.

Handles, bounties and amounts in these screenshots are sample data from the beta's test mode.

04

Dirty 630

A trading-education membership business

  • 92 gated video lessons streamed through Mux
  • Stripe subscriptions with verified, idempotent webhooks; refunds revoke access cleanly
  • Access-control audit, then a complete handover of code and infrastructure

Built with Next.js · Supabase · Stripe · Mux

Project details
Member dashboard with the course key art, a continue-watching card, course modules and a progress ring.
Member dashboard: where you left off, modules and progress.
Lesson player with the module list and progress in a sidebar.
Lesson player with the full curriculum alongside.
Public landing page with the course headline and enroll button.
Public landing page.

What we build

Lead and sales systems

CRMs and call queues that pull in calls, leads and sales history, so a sales team works from one list instead of four tabs.

WhatConverts · CallRail · improveit360 · Supabase

Payments and payouts

Deposits, escrow, payouts and identity checks, built to be safe when a request arrives twice and to recover when a provider fails.

Authorize.net · Stripe · PayPal · Didit · Stripe Identity

Subscriptions and gated content

Paid memberships where access follows billing, including refunds and cancellations, with no content leaking to non-members.

Stripe · Mux

Reporting

Dashboards that put advertising spend next to real leads and revenue, so cost per lead is a number rather than a guess.

Google Ads API · Meta Marketing API

Shipping, most days

Most of our work lives in private client repositories, so it doesn’t show on a public GitHub profile. This is the same calendar with those included, counts only.

2,102 contributions in the last year

Darker squares mean more contributions. Levels: no contributions, 1 to 11 contributions, 12 to 22 contributions, 23 to 33 contributions, 34 or more contributions.

Tell us what you’re trying to build.

A few sentences about the business and the problem is enough to start. You’ll hear back from the person who would build it.

conner@herlehy.dev

Chicago, IL