Tom Kaczocha's Work | ContraWork by Tom Kaczocha
Tom Kaczocha

Tom Kaczocha

Full-Stack Developer

New to Contra

Tom is ready for their next project!

Cover image for Live customer-facing landing page for
Live customer-facing landing page for my own field-service business - Vista Lawn Care, operating in Brisbane. Problem: Running a field-service business means every inbound lead needs to convert fast. Booking friction kills jobs. Needed: a landing page that lets a customer go from ad-click to paid-deposit booking without picking up the phone - and that I could ship and iterate on without paying a monthly SaaS fee for a booking widget. What I built: - Responsive single-page landing with service + pricing visible above the fold - Booking form wired to operations backend (YardPilot) - Conversion tracking (GA4 events + one attribution layer) - Deployed on Laravel Forge, running to production Outcome: Live page driving real bookings for y own operating business. Same pattern I ship to client landing-page rush engagements - Stripe-wired, conversion-tracked, mobile-first, deploy fast. Why this is proof: I didn't build it as a portfolio piece. I built it because I needed it. It processes real bookings every week. When I quote your 3-day rush landing page, I'm reusing the pattern I bet my own revenue on. Stack: Laravel 13, Google Analytics 4, Tailwind CSS, Laravel Forge
0
3
Cover image for Scheduling and invoicing software built
Scheduling and invoicing software built specifically for lawn care operators running 1-5 crews. Problem: Lawn care operators spend a disproportionate amount of their week on admin - quoting, scheduling, invoicing, chasing payment. Existing CRMs are either too generic (Salesforce-heavy, priced for enterprise) or too light (calendar apps + spreadsheets held together with tape). Needed: purpose-built operational software that covers quote + schedule + invoice + payment without the operator leaving it for any step. What I built: - Quote builder with custom-facing quote links - Crew scheduling calendar with drag-to-reschedule - Invoicing with saved-card Stripe payments - Branded customer portal for quote acceptance + payment - Automated reminders across the quote-to-payment lifecycle Outcome: Paying operators in production running their quote-to-payment flow end-to-end inside one app. Proof of UI polish + data-model discipline on longer-lived operational SaaS - the engineering that a 14-day client MVP inherits from day one. Stack: Laravel 13, Vue.js 3, Stripe (one-time payment + saved cards), MySQL, Laravel Forge, GitHub Actions CI/CD.
0
7
Cover image for Missed-call capture service for Australian
Missed-call capture service for Australian tradies. When a tradie missed a call, the caller's details and job type get captured and pushed to the operator's phone via SMS and email in under 60 seconds. Problem: Australian tradespeople miss roughly 40% of inbound calls. Hiring a full-time receptionist is uneconomic for sub-$500K businesses. Needed: a near-real-time system that captures the caller, categories the job, and pushes the ticket to the operator - at a price tradies will actually pay (under $2/day). What I built: - Vapi + Twilio voice pipeline handling inbound missed calls - SMS + email notification rail firing inside 60 seconds of call end - Operator dashboard for ticket management - Stripe billing (subscription + one-time), per-operator pricing - Uptime-critical deploy pipeline (every missed capture = a missed job) Outcome: Live product with paying users. Per-operator pricing under $2/day enabled by a focused single-call-handling path rather than a full AI receptionist build - proof that scoped simplicity beats feature bloat in the tradie market. Stack: Laravel 13, Vue.js 3, Inertia.js, Vapi Voice + Twilio SMS, Stripe Billing, MySQL, Laravel Forge, GitHub Actions CI/CD.
0
10
Cover image for Audio course platform that teaches
Audio course platform that teaches professional skills by modelling what top performers actually do - not what they say they do. Problem Build a subscription learning platform where content delivery, subscription billing, and authorisation stay tightly integrated, without fragmeting across three different third-party tools. What I built: - Laravel + Vue + Inertia codebase, single-repo - Stripe Billing (subscriptions) with webhook lifecycle handling - Content delivery + access-gating tied to subscription state - Analytics layer for engagement + churn signals Outcome: Live in production with paying subscribers. Billing + content + analytics all running on a single Laravel + Vue stack - no Zapier-tape, no fragmented tool chain. Stack: Laravel 13, Vue.js 3, Inertia.js, Tailwind CSS, Stripe Billing, MySQL, Laravel Forge, Github Actions CI/CD.
0
17