Role: Lead Engineer (Solo Developer)
Type: Consumer Platform / Non-Profit
Tech Stack: Laravel, PostgreSQL (Aurora), AWS (EC2, ELB, S3), DocuSign API
Platform: Rehome by Adopt-a-Pet
The One-Liner: A guided platform that helps pet owners facing life changes safely rehome their pets directly to vetted adopters—keeping animals out of shelters and reducing strain on rescue organizations.
The Problem Space
Shelters across the US operate at or above capacity. When pet owners face circumstances that force them to give up an animal—job loss, housing changes, family emergencies—their options are limited.
The Challenge
Traditional rehoming paths each carried significant problems:
- Shelter surrender: High-stress environments that can cause behavioral regression and reduce adoption odds
- Unmoderated marketplaces: Craigslist and similar platforms are rife with scams and "free to good home" exploitation
- Breed-specific services: Expensive and inaccessible for most pet owners
We set out to build a third path: a free, safe platform where owners could list their pet on the largest adoptable-pet search engine in the country, receive applications from potential adopters, and complete the transfer of ownership with legal protections—all without the pet ever entering the shelter system.
The Constraints
- Non-profit budget with no room for expensive SaaS dependencies
- Legacy integration with the existing Adopt-a-Pet.com search engine and its infrastructure
- Trust requirements from both pet owners (often emotionally vulnerable) and shelter partners (concerned about enabling scammers and evalutating potential adopters)
The problem was not simply to "build a listing platform," but to design a system that could earn trust from multiple stakeholders while helping reduce the rate at which animals are relinquished into an already overburdened system.
The Solution Architecture
High-Level Design
Rehome was designed by the Adopt-a-Pet.com team as a guided workflow system that moves a pet from "listed" to "rehomed" through a series of owner-controlled steps:
-
Listing Workflow Owners answer guided questions about their pet's history, behavior, and ideal home. Structured data improves match quality on the main search engine.
-
Real-Time Sync Pet listings push to Adopt-a-Pet.com via internal APIs the moment they're published, providing immediate visibility across millions of monthly searchers.
-
Application Management Potential adopters submit structured applications. Owners review and approve/reject through a centralized dashboard.
-
In-App Communication Custom messaging system allows owners and applicants to communicate without exchanging personal contact information until both parties are ready.
-
Contract Execution DocuSign integration provides legally binding transfer-of-ownership agreements, protecting both parties.
The system was deployed as a Laravel monolith on AWS (EC2 behind ELB), with PostgreSQL Aurora for data persistence and S3 for image storage.
Key Architectural Trade-Off I chose a monolithic Laravel application rather than a decoupled frontend/backend architecture. This accelerated initial delivery—Laravel's conventions meant one developer could ship a full-stack product quickly. The trade-off was reduced flexibility: tightly coupled components made iteration slower and deployments riskier as the product evolved.
Technical Deep Dive
Fraud Detection Pipeline
The biggest ongoing challenge was preventing abuse. Bad actors ranged from scammers using stolen pet photos to solicit "rehoming fees," to breeders attempting to use a free non-profit platform to offload inventory.
I built a detection pipeline that combined several signals:
- Perceptual image hashing to catch reused photos from previously flagged listings, even when modified (cropped, color-adjusted, mirrored)
- Phone carrier verification and email domain reputation scoring to surface disposable or high-risk contact methods
- NLP-based text analysis for keyword patterns and sentiment markers common in fraudulent listings
These features fed a model trained on curated data from our manual moderation queue. The system surfaced high-risk listings for human review rather than auto-rejecting—balancing fraud prevention with the risk of false positives blocking legitimate owners in distress. Unfortunately, the model development was paused due to budget constraints, and the system relied on manual moderation for fraud detection as of my departure from the project.
Real-World Challenges
Several domain-specific issues influenced architectural choices:
- Emotional context: Users were often in crisis situations, requiring clear, supportive UX that didn't feel algorithmic
- Asymmetric information: Owners know their pet; adopters don't. The structured questionnaire bridged this gap
- Legal liability: Transfer-of-ownership contracts needed to be enforceable while remaining accessible to non-legal users
These realities reinforced the need for a guided, opinionated workflow rather than a generic listing platform.
Impact & Outcome
Quantitative Results
- Continuous operation since September 2017 with sustained year-over-year growth in listings and successful rehomings
- Integration with the largest adoptable-pet search engine in the US, providing immediate visibility to millions of searchers
- Zero-cost platform for pet owners, removing financial barriers to safe rehoming
Qualitative Impact
- Became a resource that shelters themselves could point owners toward—turning a potential intake into a direct-to-adopter placement
- Included retention resources (pet-friendly housing, behavioral support, financial assistance) to help owners explore alternatives before listing
- Established legal framework for peer-to-peer pet transfers that didn't exist in most jurisdictions
Retrospective
Architecture Decisions
The monolithic Laravel approach served the MVP well, but I underestimated how quickly the product would evolve. Separating the API layer earlier would have made the fraud detection pipeline easier to iterate on and allowed frontend changes without full deployments.
If rebuilding this system today, I would separate the API, frontend, and background workers from the outset—not full microservices, but enough separation to allow independent deployment and faster feedback loops.
Build vs. Buy Trade-offs
I built the in-app messaging system from scratch. It worked, but consumed significant development time that could have gone toward higher-value features. For a small non-profit team, I'd now lean toward an off-the-shelf solution (assuming budget and security requirements aligned).
The fraud detection pipeline, however, was correctly built in-house. Off-the-shelf content moderation tools weren't optimized for pet listings, and the cost would have been prohibitive for a non-profit.
Observability
As the fraud detection system grew more complex, debugging false positives became time-consuming. Better logging and tracing infrastructure from the start would have paid dividends. This is a common failure mode for solo developers: underinvesting in observability because it doesn't ship features.
Why This Work Matters
This project was about building a system that respected constraints: non-profit budgets, emotional users, and a mission where incorrect decisions (false positives in fraud detection) could prevent legitimate rehomings.
The result is a platform that has operated continuously for over seven years, helping thousands of pets avoid shelter stress while reducing strain on overwhelmed rescue organizations.
Technical Resources
Fraud Detection & Content Moderation
- Perceptual Image Hashing — Image similarity detection techniques
- Email Reputation Scoring — Twilio Email Address Validation API
- NLTK Sentiment Analysis — Natural Language Toolkit
Laravel
- Laravel Documentation — Official framework documentation
Non-Profit Technology
- Rehome Platform — The production system
- Adopt-a-Pet.com — Parent search platform