Municipal Madness: Finding NJ’s Top Town
| Asbury Park | 1 |
| Hoboken | 2 |
| Princeton | 3 |
| Point Pleasant Beach | 4 |
| Seaside Heights | 5 |
| Hackensack | 6 |
| Ocean City | 7 |
| East Rutherford | 8 |
| Cape May | 9 |
| Montclair | 10 |
| Edison | 11 |
| West Orange | 12 |
| Passaic | 13 |
| Middletown | 14 |
| Fort Lee | 15 |
| Union | 16 |
| Jersey City | 17 |
| Wildwood | 18 |
| Morristown | 19 |
| Bayonne | 20 |
| Maplewood | 21 |
| Wayne | 22 |
| Long Branch | 23 |
| Millburn | 24 |
| Cherry Hill Twp | 25 |
| Woodbridge Twp | 26 |
| Mahwah | 27 |
| Summit | 28 |
| Colts Neck | 29 |
| Beach Haven | 30 |
| Bridgewater Twp | 31 |
| Sea Bright | 32 |
| Newark | 33 |
| Atlantic City | 34 |
| Belmar | 35 |
| New Brunswick | 36 |
| Somerville | 37 |
| Bradley Beach | 38 |
| Red Bank | 39 |
| Paramus | 40 |
| Manasquan | 41 |
| Fairfield | 42 |
| Metuchen | 43 |
| Westfield | 44 |
| Teaneck | 45 |
| Allentown | 46 |
| Secaucus | 47 |
| Rahway | 48 |
| Atlantic Highlands | 49 |
| Elizabeth | 50 |
| Neptune City | 51 |
| Caldwell | 52 |
| Old Bridge Twp | 53 |
| Surf City | 54 |
| Sayreville | 55 |
| Clifton | 56 |
| Sparta | 57 |
| Plainfield | 58 |
| Nutley | 59 |
| Madison | 60 |
| Marlboro | 61 |
| Matawan | 62 |
| Tinton Falls | 63 |
| Mount Laurel | 64 |
| Lambertville | 65 |
| Ho-Ho-Kus | 66 |
| Cranford | 67 |
| Verona | 68 |
| Aberdeen | 69 |
| Spring Lake | 70 |
| Sea Girt | 71 |
| Denville | 72 |
| Rockaway Twp | 73 |
| Haddonfield | 74 |
| Manalapan | 75 |
| New Providence | 76 |
| Medford | 77 |
| Florham Park | 78 |
| Morris Plains | 79 |
| Lawrence Twp (Mercer) | 80 |
| Barnegat Light | 81 |
| Belleville | 82 |
| Hillsborough Twp | 83 |
| Hammonton | 84 |
| Linden | 85 |
| Tenafly | 86 |
| East Hanover | 87 |
| Garfield | 88 |
| Avon-by-the-Sea | 89 |
| Harrison | 90 |
| Northvale | 91 |
| Freehold Borough | 92 |
| West Milford | 93 |
| Mantoloking | 94 |
| Califon | 95 |
| Bloomfield | 96 |
| Vernon Twp | 97 |
| Trenton | 98 |
| Lodi | 99 |
| Hawthorne | 100 |
| Berkeley Heights | 101 |
| Perth Amboy | 102 |
| Piscataway | 103 |
| Fair Lawn | 104 |
| Pitman | 105 |
| Avalon | 106 |
| Westwood | 107 |
| Vineland | 108 |
| Ocean Gate | 109 |
| Glen Ridge | 110 |
| Palisades Park | 111 |
| Brielle | 112 |
| West Windsor | 113 |
| Highland Park | 114 |
| Hopewell Twp (Mercer) | 115 |
| Rumson | 116 |
| Closter | 117 |
| Mount Olive | 118 |
| Montvale | 119 |
| Plainsboro Twp | 120 |
| Ringwood | 121 |
| Boonton Twp | 122 |
| Monroe Twp (Middlesex) | 123 |
| Flemington | 124 |
| Clinton | 125 |
| Peapack and Gladstone | 126 |
| Waldwick | 127 |
| Keyport | 128 |
| Lavallette | 129 |
| Cranbury | 130 |
| Far Hills | 131 |
| Roxbury | 132 |
| Scotch Plains | 133 |
| Morris Twp | 134 |
| Brick Twp | 135 |
| Ship Bottom | 136 |
| Deal | 137 |
| Netcong | 138 |
| Highlands | 139 |
| Saddle Brook | 140 |
| Ridgewood | 141 |
| Voorhees | 142 |
| Chatham Twp | 143 |
| Loch Arbour | 144 |
| Stafford Twp | 145 |
| Millstone Twp | 146 |
| Oradell | 147 |
| Montgomery Twp | 148 |
| Kinnelon | 149 |
| Alpine | 150 |
| Hillsdale | 151 |
| Parsippany-Troy Hills | 152 |
| Holmdel | 153 |
| Hamilton Twp (Mercer) | 154 |
| Edgewater | 155 |
| Dover | 156 |
| Essex Fells | 157 |
| Long Beach Twp | 158 |
| Cedar Grove | 159 |
| Little Silver | 160 |
| Fanwood | 161 |
| Audubon | 162 |
| Cresskill | 163 |
| Carteret | 164 |
| Spotswood | 165 |
| Springfield (Union) | 166 |
| West New York | 167 |
| Pompton Lakes | 168 |
| Montville | 169 |
| Norwood | 170 |
| Keansburg | 171 |
| Wyckoff | 172 |
| Randolph | 173 |
| Laurel Springs | 174 |
| Hackettstown | 175 |
| Cinnaminson | 176 |
| Long Hill | 177 |
| Bordentown Twp | 178 |
| Franklin Twp (Somerset) | 179 |
| Ridgefield Park | 180 |
| Lincoln Park | 181 |
| Mendham Twp | 182 |
| Tabernacle | 183 |
| Demarest | 184 |
| Watchung | 185 |
| Hazlet | 186 |
| Alexandria | 187 |
| Fair Haven | 188 |
| Lake Como | 189 |
| Bernardsville | 190 |
| Union City | 191 |
| Livingston | 192 |
| Farmingdale | 193 |
| Garwood | 194 |
| Robbinsville Twp | 195 |
| Haworth | 196 |
| Sea Isle City | 197 |
| Frenchtown | 198 |
| Shrewsbury Twp | 199 |
| Mountainside | 200 |
| Paterson | 201 |
| Bay Head | 202 |
| Mountain Lakes | 203 |
| Weehawken | 204 |
| Haddon Heights | 205 |
| Jamesburg | 206 |
| Deptford | 207 |
| Lindenwold | 208 |
| Riverdale | 209 |
| Glassboro | 210 |
| Wantage Twp | 211 |
| Alpha | 212 |
| Jefferson | 213 |
| Allenhurst | 214 |
| Bogota | 215 |
| River Edge | 216 |
| Kenilworth | 217 |
| Leonia | 218 |
| Allendale | 219 |
| Jackson Twp | 220 |
| Union Beach | 221 |
| Monmouth Beach | 222 |
| Upper Freehold | 223 |
| Mount Holly | 224 |
| Old Tappan | 225 |
| Roosevelt | 226 |
| Chester Twp | 227 |
| Gloucester City | 228 |
| Sussex | 229 |
| High Bridge | 230 |
| Roseland | 231 |
| Hightstown | 232 |
| Maywood | 233 |
| Delanco | 234 |
| Totowa | 235 |
| Dunellen | 236 |
| Rocky Hill | 237 |
| Pequannock | 238 |
| Barrington | 239 |
| Riverton | 240 |
| Butler | 241 |
| Collingswood | 242 |
| Harding | 243 |
| South River | 244 |
| Harrington Park | 245 |
| Roselle Park | 246 |
| Bergenfield | 247 |
| Washington Twp (Bergen) | 248 |
| Eatontown | 249 |
| Little Egg Harbor Twp | 250 |
| Wallington | 251 |
| Lacey Twp | 252 |
| Stone Harbor | 253 |
| Downe Twp | 254 |
| Andover Twp | 255 |
| Woodcliff Lake | 256 |
| Hillside | 257 |
| Allamuchy Twp | 258 |
| Englishtown | 259 |
| Guttenberg | 260 |
| Tewksbury | 261 |
| Middlesex | 262 |
| Saddle River | 263 |
| Union Twp | 264 |
| Wharton | 265 |
| Milford | 266 |
| Hopatcong | 267 |
| North Bergen | 268 |
| Mount Arlington | 269 |
| Wenonah | 270 |
| Glen Rock | 271 |
| Branchburg | 272 |
| Pennsauken | 273 |
| Pine Hill | 274 |
| Warren Twp | 275 |
| Ramsey | 276 |
| Milltown | 277 |
| Hi-Nella | 278 |
| Newton | 279 |
| White | 280 |
| Weymouth Twp | 281 |
| Tuckerton | 282 |
| Absecon | 283 |
| Dumont | 284 |
| New Milford | 285 |
| Southampton | 286 |
| Lyndhurst | 287 |
| Oakland | 288 |
| River Vale | 289 |
| Pennington | 290 |
| Readington Twp | 291 |
| Ogdensburg | 292 |
| Raritan Twp | 293 |
| Stanhope | 294 |
| Stratford | 295 |
| Byram Twp | 296 |
| North Arlington | 297 |
| Wall | 298 |
| Victory Gardens | 299 |
| Harvey Cedars | 300 |
| Berlin Twp | 301 |
| Margate City | 302 |
| Little Ferry | 303 |
| Bedminster | 304 |
| Estell Manor | 305 |
| Bernards Twp | 306 |
| Wanaque | 307 |
| Prospect Park | 308 |
| Merchantville | 309 |
| Emerson | 310 |
| Swedesboro | 311 |
| Bound Brook | 312 |
| Port Republic | 313 |
| Englewood Cliffs | 314 |
| Lebanon Twp | 315 |
| Runnemede | 316 |
| Brigantine | 317 |
| Somerdale | 318 |
| Northfield | 319 |
| Bloomingdale | 320 |
| Mullica Twp | 321 |
| Somers Point | 322 |
| Buena Vista Twp | 323 |
| Teterboro | 324 |
| East Amwell Twp | 325 |
| Raritan | 326 |
| Manville | 327 |
| Corbin City | 328 |
| Phillipsburg | 329 |
| Burlington Twp | 330 |
| Carlstadt | 331 |
| Glen Gardner | 332 |
| Mount Ephraim | 333 |
| Magnolia | 334 |
| Rockleigh | 335 |
| Little Falls | 336 |
| Ocean Twp (Ocean) | 337 |
| Buena | 338 |
| Ewing Twp | 339 |
| Evesham | 340 |
| Winslow Twp | 341 |
| Holland Twp | 342 |
| Helmetta | 343 |
| Fieldsboro | 344 |
| Riverside | 345 |
| Winfield | 346 |
| Montague | 347 |
| Oceanport | 348 |
| Mine Hill | 349 |
| Knowlton Twp | 350 |
| Westville | 351 |
| Bethlehem Twp | 352 |
| Linwood | 353 |
| Delran Twp | 354 |
| Folsom | 355 |
| Maple Shade | 356 |
| Chesilhurst | 357 |
| Kingwood | 358 |
| Bass River Twp | 359 |
| Longport | 360 |
| Florence Twp | 361 |
| National Park | 362 |
| Haledon | 363 |
| Delaware Twp | 364 |
| Howell | 365 |
| Mantua Twp | 366 |
| Oaklyn | 367 |
| Woolwich Twp | 368 |
| Chesterfield | 369 |
| Hasbrouck Heights | 370 |
| Lopatcong | 371 |
| Woodlynne | 372 |
| Clementon | 373 |
| Irvington | 374 |
| Woodstown | 375 |
| Bloomsbury | 376 |
| Fairfield Twp | 377 |
| Waterford Twp | 378 |
| Stockton | 379 |
| Galloway | 380 |
| Pleasantville | 381 |
| Mansfield Twp (Burlington) | 382 |
| Pemberton Twp | 383 |
| Elmwood Park | 384 |
| Lawnside | 385 |
| Gibbsboro | 386 |
| Brooklawn | 387 |
| Woodland Park | 388 |
| Newfield | 389 |
| Cliffside Park | 390 |
| Park Ridge | 391 |
| Hampton Twp | 392 |
| Fairview | 393 |
| Tavistock | 394 |
| Millville | 395 |
| Kearny | 396 |
| Midland Park | 397 |
| Woodbury | 398 |
| Rochelle Park | 399 |
| Ventnor City | 400 |
| Green Twp | 401 |
| Fredon Twp | 402 |
| Stillwater Twp | 403 |
| Lafayette Twp | 404 |
| Interlaken | 405 |
| Belvidere | 406 |
| Pine Beach | 407 |
| Palmyra | 408 |
| Woodbine | 409 |
| Walpack Twp | 410 |
| Wrightstown | 411 |
| Elmer | 412 |
| Berkeley Twp | 413 |
| Clark | 414 |
| Middle Twp | 415 |
| Beverly | 416 |
| Clayton | 417 |
| Edgewater Park | 418 |
| Sandyston | 419 |
| Logan Twp | 420 |
| Pennsville Twp | 421 |
| Greenwich Twp (Warren) | 422 |
| Hampton Borough | 423 |
| Hamburg | 424 |
| Dennis Twp | 425 |
| Deerfield Twp | 426 |
| Green Brook Twp | 427 |
| Shiloh | 428 |
| Bridgeton | 429 |
| Pohatcong | 430 |
| Oxford Twp | 431 |
| Branchville | 432 |
| Frankford | 433 |
| Lakehurst | 434 |
| Shamong | 435 |
| Alloway Twp | 436 |
| Beachwood | 437 |
| Liberty | 438 |
| Lumberton | 439 |
| Hardyston | 440 |
| Pittsgrove | 441 |
| Hardwick Twp | 442 |
| Elk Twp | 443 |
| Penns Grove | 444 |
| Hainesport | 445 |
| Frelinghuysen Twp | 446 |
| Oldmans Twp | 447 |
| Mannington Twp | 448 |
| Paulsboro | 449 |
| Quinton Twp | 450 |
| Hope Twp | 451 |
| Island Heights | 452 |
| Carneys Point | 453 |
| Woodland Twp | 454 |
| Stow Creek Twp | 455 |
| Upper Pittsgrove | 456 |
| Maurice River Twp | 457 |
| Blairstown | 458 |
| Plumsted | 459 |
| Manchester Twp | 460 |
| Harmony Twp | 461 |
| Elsinboro | 462 |
| Pilesgrove | 463 |
| Independence Twp | 464 |
| Upper Deerfield Twp | 465 |
| Commercial Twp | 466 |
| Salem | 467 |
| Eagleswood Twp | 468 |
| Moonachie | 469 |
| Toms River | 470 |
| Lower Alloways Creek | 471 |
| Willingboro | 472 |
| Freehold Twp | 473 |
| Clinton Twp | 473 |
| West Wildwood | 475 |
| West Cape May | 475 |
| North Brunswick | 477 |
| East Newark | 477 |
| South Harrison Twp | 479 |
| Franklin Twp (Warren) | 480 |
| South Hackensack | 481 |
| South Brunswick | 481 |
| Franklin Twp (Hunterdon) | 481 |
| Washington Twp (Warren) | 484 |
| South Toms River | 484 |
| North Hanover Twp | 484 |
| New Hanover Twp | 484 |
| West Long Branch | 488 |
| Washington Borough | 489 |
| North Wildwood | 489 |
| East Greenwich Twp | 489 |
| East Orange | 492 |
| Monroe Twp (Gloucester) | 493 |
| South Bound Brook | 494 |
| Franklin Twp (Gloucester) | 494 |
| Wood-Ridge | 496 |
| Washington Twp (Burlington) | 497 |
| Cape May Point | 497 |
| Bellmawr | 497 |
| Franklin Borough | 500 |
| Moorestown | 501 |
| Greenwich Twp (Cumberland) | 501 |
| Spring Lake Heights | 503 |
| Seaside Park | 503 |
| North Plainfield | 503 |
| Washington Twp (Gloucester) | 506 |
| Lower Twp | 506 |
| East Brunswick | 506 |
| Rutherford | 509 |
| Westampton | 510 |
| South Orange | 510 |
| Lawrence Twp (Cumberland) | 510 |
| Harrison Twp | 510 |
| Washington Twp (Morris) | 514 |
| Springfield (Burlington) | 514 |
| Hopewell Twp (Cumberland) | 514 |
| Egg Harbor City | 514 |
| Upper Twp | 518 |
| South Amboy | 518 |
| Roselle | 518 |
| Woodbury Heights | 521 |
| Franklin Lakes | 521 |
| Berlin Borough | 521 |
| Egg Harbor Twp | 524 |
| Eastampton | 524 |
| Wildwood Crest | 526 |
| North Caldwell | 526 |
| Rockaway Borough | 528 |
| Orange | 528 |
| Hopewell Borough (Mercer) | 528 |
| North Haledon | 531 |
| Audubon Park | 532 |
| West Caldwell | 533 |
| Barnegat Twp | 533 |
| West Deptford | 535 |
| Andover Borough | 535 |
| Pemberton Borough | 537 |
| Hanover | 537 |
| Hamilton Twp (Atlantic) | 539 |
| South Plainfield | 540 |
| Shrewsbury Borough | 540 |
| Lebanon Borough | 540 |
| Greenwich Twp (Gloucester) | 540 |
| Mansfield Twp (Warren) | 544 |
| Neptune Twp | 545 |
| Mendham Borough | 545 |
| Ridgefield | 547 |
| Chester Borough | 548 |
| Chatham Borough | 548 |
| Boonton Town | 548 |
| Englewood | 551 |
| Burlington City | 551 |
| Bordentown City | 551 |
| Upper Saddle River | 554 |
| Millstone Borough | 554 |
| West Amwell Twp | 556 |
| Haddon Twp | 556 |
| Medford Lakes | 558 |
| Point Pleasant | 559 |
| Gloucester Twp | 559 |
| East Windsor | 561 |
| Ocean Twp (Monmouth) | 562 |
| Lakewood Twp | 563 |
| Camden | 564 |
The Idea
It started with a Reddit post and a genuine love for my home state of New Jersey. I envisioned an elimination challenge involving all 564 municipalities in the most densely populated state in the nation. The logistics were the first major hurdle. While a three-week contest to crown a winning county is one thing, it would be incredibly tedious to spend nearly two years voting through every single town. The vision stuck with me until I finally engineered a system to pull it off.
I decided to capitalize on the timing of the NCAA March Madness tournament to launch the project. The first objective was to narrow the field from 564 entries down to a manageable bracket of 128. I started with a small test to gauge interest and eliminate municipalities that share the same name. New Jersey has six Franklins and six Washingtons. Five of those are literally named “Washington Township” with no distinction other than the county they belong to. We also have twin Monroes, Hamiltons, Lawrences, and Springfields, along with various cardinal directions distinguishing the different Brunswicks, Oranges, and Plainfields.
Survey Says
I started the process by assembling a survey in Google Forms designed to pick the favorites within each category of identically named towns. Participants chose between the six Franklins, the six Washingtons, and the various Brunswicks and Windsors. Round 1 resulted in 121 unique answers. While this was a small sample size, it provided enough data to move forward.
The special first round allowed me to trim the list down to 475 municipalities. This reduction cleared up the confusion before the next phase where these winners joined the 411 uniquely named towns to determine the final bracket seeds.
| Franklin Township (Somerset) | Greenwich Township (Warren) | Hamilton Township (Mercer) | Hopewell Township (Mercer) | Lawrence Township (Mercer) | Mansfield Township (Burlington) | Monroe Township (Middlesex) | Ocean Township (Ocean) |
| Springfield (Union) | Washington Township (Bergen) | New Brunswick | Caldwell | Cape May | Middle Township | Southampton | Plainfield |
| West Orange | Wildwood | Perth Amboy | Freehold Township | Little Egg Harbor Township | East Hanover | West Windsor | East Amwell Township |
| Long Branch | Deptford | Chatham Township | East Rutherford | Bound Brook | Hackensack | Harrison | Toms River |
| Haledon | Saddle River | Andover Township | Barnegat Light | Boonton Township | Berlin Township | Newark | Chester Township |
| Clinton Township | Englewood Cliffs | Haddon Heights | Lebanon Township | Medford | Mendham Township | Neptune City | Pemberton Township |
| Point Pleasant Beach | Ridgefield Park | Rockaway Township | Roselle Park | Seaside Heights | Shrewsbury Township | Spring Lake | Audubon |
| Bordentown Township | Burlington Township | Gloucester City | Woodbury | Belmar | Morristown | Woodbridge Township | Millstone Township |
I needed more robust data for the second round to ensure the seeding was as fair as possible. Asking for single write-in favorites risked an insufficient number of unique picks for a 128-player tournament. My solution was to have participants navigate the remaining list of 475 municipalities and select between one and 15 of their favorite locations. Restricting the primary vote to the official list kept everyone on the same page while the multi-pick option ensured a diversity of answers beyond just hometown bias.
To add some flavor, I included optional write-in categories for the best town to live or work, hidden gems, and the most “New Jersey” spots. I even added a prompt for the town you would snap out of existence first. As I expected, many people wrote in unincorporated communities or neighborhood names. This is where I utilized AI as a productivity multiplier to help parse the responses. I used the technology to map unincorporated areas back to their parent municipalities and filter out entries for New York City or various political opinions.
| Best Town to Live in | Best Town to Work in |
| Maplewood Princeton West Orange Colts Neck Closter Princeton West Orange Asbury Park Belmar Berkeley Heights | Jersey City Hoboken Newark Asbury Park Freehold Boro Princeton Morristown Edison Red Bank Berkeley Heights |
| Best Hang Out Town (nightlife/culture) | Worst Town (negative points) |
| Asbury Park Hoboken Morristown Red Bank Jersey City Montclair Princeton Ridgewood Atlantic City Paramus | Camden Newark Lakewood Paterson Toms River Trenton Clark Colts Neck Howell Irvington |
| Gems | Most NJ Town |
| Lambertville Allentown Atlantic Highlands Hammonton Neptune City Somerville Bradley Beach Califon Colts Neck Morris Plains | Newark Seaside Heights Jersey City Asbury Park Atlantic City Belmar Wildwood Bayonne Hoboken New Brunswick |
| Best Nature / Outdoor Spot | Best Food / Dining Hub |
| Middletown Berkeley Township Highlands Asbury Park Knowlton Mahwah Cape May Jersey City Vernon West Orange | Montclair Jersey City Red Bank Asbury Park Edison Hackensack Marlboro Newark Ridgewood Westfield |
The final seeding was determined by a specific scoring engine:
- The Density Factor: I added these totals to a logarithmic number based on population density to create a unique seed for every town.
- Primary Multiplier: Each selection from the main list was multiplied by 2,500.
- Write-in Weighting: Every category was assigned a unique multiplier, with the “snap” question acting as the only negative factor.
- Stanning Filter: I averaged the scores for certain write-ins to prevent excessive campaigning from skewing the results.

I organized these seeds into an S-curve bracket and used the historical Keith Line to divide the field into East and West Jersey. While my explanation for the line was initially unclear to some, the resulting debate in the comments gave the project an inadvertent engagement boost. Interest grew rapidly from nearly 250 responses in Round 2 to over 1,300 votes in the later rounds as I scaled up production to meet the demand.

The Videos
As the tournament field narrowed, my workload shifted. While Google Forms automated the data collection, I focused on applying different motion graphics ideas to raise the quality of the production. I take great pride in my work. This project began as a simple proof of concept but it eventually turned into something that felt official.
I was lucky to find an excellent vector map of every New Jersey municipality where every layer was labeled properly. This made it much easier to match the incoming data to the specific layer I wanted to highlight or pop out of existence. The animation engine was primarily powered by the GeoLayers plug-in for After Effects. I rigged the municipal map to it so I could glide across the state while animating the various scenes.

I thought it would be fun to add a countdown of the remaining population and square mileage as towns were eliminated. I found this data on Wikipedia and integrated it into a simple animation that tracked the state shrinking in real time. As the data became more manageable, I decided to recreate Liberty and Ceres from the New Jersey State Seal. Inspired by the trophy girls in the old Cruis’n racing games and The Race of Gentlemen, I rebuilt them in Illustrator and Photoshop to give the project some flashy, stylized flair.

Regarding AI, I used it as a tool to scale my output for this one-man operation. In addition to sorting the Round 2 data, I used it to manage match-ups, write Google Sheets formulas, and assist with the narration via ElevenLabs. I am not a voice actor, so those models were essential for maintaining a high production value. I never used an AI output unless I understood the underlying formula or re-prompted the results until they were exactly what I needed. This assistance allowed me to put out a new video every other day and keep the contest from stagnating as the audience grew.
Post-Game Results
Reflecting on the final results, Asbury Park taking the crown was not a major surprise. It entered the bracket as the number 1 seed for a reason. The Round 2 questionnaire likely played a significant role in this outcome. When participants are asked to select up to 15 favorite towns, the places with the most entertainment and amenities naturally rise to the top. This contest proved to be a game of identity. While many people asked why their quiet bedroom communities were not in the bracket, the reality is that towns with higher visibility and more local attractions will almost always outshine smaller areas with more limited identities.
Population is also a constant factor in a project like this. A larger local population increases the likelihood of people finding the contest and voting for their hometown. Although the tournament initially seemed heavily focused on North Jersey, the Final Four eventually represented a very distinct cross section of the state. We ended up with two central entries in Asbury Park and Princeton, one northern powerhouse in Hoboken, and a southern representative in Point Pleasant.
The county performance was equally interesting. Bergen County had a high volume of entries, but no single municipality had enough individual strength to dominate the final rounds. Cape May County showed the most surprising staying power. Even with multiple entries like Wildwood, Ocean City, and the various Cape May labeled towns, the county maintained incredible endurance throughout the entire tournament.
County Breakdown
I analyzed the tournament data to generate statistics for all 21 counties. As I mentioned earlier, a county elimination contest inspired this project, and I wanted to see how the results compared when municipalities were in the driver’s seat. In that original contest, Ocean County was the first to be eliminated. In Municipal Madness, Point Pleasant carried Ocean County all the way to the Final Four. Conversely, Morris and Middlesex Counties reached the final round in the other contest, but neither placed an entry in my Elite Eight. While Monmouth County won through Asbury Park, Hudson and Bergen counties proved to be consistently more powerful across the board.
I visualized these unique strengths through radar graphs for each county. These charts are divided into nine specific data points. Basic metrics like area, population, and the number of municipalities are included, but the core of the data comes from a weighted scoring system based on tournament survival.


I assigned points based on how far a town progressed: one point for the first two rounds, five points for the round of 64, 80 points for the Final Four, and 300 points for the winner. I then tallied these points per county and factored in points per square mile and per municipality to create a balanced view of regional performance. To add more depth to the analysis, I developed three specialized metrics:
- Tournament Power Index (TPI): The TPI is the project’s performance versus seeding metric. It identifies the bracket-busters and underdogs that defied the odds. By comparing a municipality’s final ranking to its initial statistical seeding, the TPI measures exactly how much a town over-performed relative to data-driven expectations. A high TPI indicates a Cinderella story where a town fought through a gauntlet it was not statistically supposed to survive. On the radar charts, this axis highlights the Grit Factor.
- Bench Depth: This metric rewards collective resilience rather than just the star power of a single famous city. By calculating the average tournament round reached across every municipality within a county, I can distinguish the one-hit wonders from the regional heavyweights. A high Bench Depth score indicates a deep roster of boroughs and townships that consistently won early matchups, proving that the competitive strength is a shared regional identity.
- Density Power: This measures engagement efficiency by calculating the ratio of tournament points to population density. While urban centers like Hudson or Essex rely on sheer volume, this metric highlights the loudest regions like Cape May or Ocean. These counties generated massive point totals despite having far fewer neighbors per square mile. This identifies the most motivated voting blocs and proves that geographic size is no match for concentrated regional pride.
Conclusion
What began as a fun side project evolved into a massive data processing undertaking. I likely made a few mistakes along the way and could have certainly benefited from a larger voting pool, but I found the process of scratching this itch incredibly satisfying. My curiosity has been satisfied for now. If I attempt something of this scale again in the future, I hope to partner with a platform that has a larger reach to further amplify the results.
I am exceptionally proud of what I achieved with limited resources and a tight schedule. Building this level of momentum was a challenge, and I genuinely appreciate every person who followed along with the tournament. To those who supported the project from the beginning, thank you from the bottom of my heart.
This project also serves as a showcase for my professional capabilities as I actively seek a stable career in design. As evidenced by this project and the design of this website, I have a strong background in UI design, high-quality motion graphics, and data-driven storytelling. I am comfortable using AI as a productivity multiplier when it is useful, but I never rely on it blindly or trust it to produce immediate final results. My background in photography provides me with a sharp eye for visuals, and I take pride in my ability to write. I rarely speak about myself in such a bold way, but I am proud of the work I produce and the skills I have cultivated.
If you know of an organization that could use my specific blend of design and technical skills, please reach out. I would be happy to have a chat. Thank you again for following along and for enjoying Municipal Madness!