360start is a Craiglist apartment listing and flyer service we took up development/administration of at request of the owner when the original developer/administrator decided to pass the torch. At the same time we were just beginning to familiarize with the extensive, custom-built, undocumented codebase of and overlapping legacy systems present in this project, Craigslist was aggressively imposing restrictions that undercut the HTML flyer templates and tracking at the core of 360start’s operating model. Countering these restrictions, we:

  • Switched from HTML templates to text templates that randomized the order and format of information and linked to the flyer pages served from different IP addresses to throw off Craiglist’s super sensitive spam detection.
  • Developed a number of different encoded tracking systems that Craigslist wouldn’t notice to either flag or remove.
  • Switched from automatically tracking ads through Craigslist’s search on tracking codes (which they both blocked and used to blacklist client accounts) to tracking ads through Google search (which Craigslist is never going to block).
  • Implemented URL forwarding through Google to scrub the tracks of clients clicking to check their ads from their service dashboards so that Craiglist couldn’t track them coming from 360start and punish them for it by flagging their ads or suspending their accounts.
  • Routinely auto-checked the status of ads via an ever-changing network of proxy servers bypassing Craiglist’s blacklists through sheer attrition. Additionally, we developed a Google Chrome browser extension that passively tracks the status of ads as clients browse Craigslist.

In addition, the code base had to be upgraded with several essential features:

  • The various operating systems were (and still are for the most part) all scattered throughout the file structure, sometimes multiple versions of the same things, as they were constructed a different times. We developed a single shared core system and consolidated the others to the extent reasonably possible short of a complete rewrite (which was recommended but not in the budget).
  • We installed a much needed error reporting system that reports via interface and email alerting us to, among other things, preexisting errors in the code so that we could find and fix them.
  • We installed automated maintenance routines to backup the codebase and database to cloud servers and clear out old and temporarily cached data. Before we did this, breach of disk space allowed on the server was imminent and what could be cleared had to be cleared manually. The system now runs more or less by itself.