Shaurya Singh

← work

The startup I shut down on purpose.

A tourist at 11pm is walking blind through information the city already publishes. TurtleShell put it in their hand: cluster the crime data into risk zones, then route you by what you actually came for — sightseeing, or a train to catch — with a live SOS one tap away. The routing was simulated, and I say that plainly. Then I killed it, and I stand behind the ending as much as anything we built.

10,000+ LAPD datapoints · K=40 · Swift + CoreLocation SOS · routing simulated · Microsoft for Startups Founders Hub · shut down oct 2023

shut down

A traveler in an unfamiliar city is running on almost no information. The locals know which blocks empty out after dark and which ones don’t; the tourist has a map that renders every street the same neutral gray. The risk is real, it is unevenly distributed, and it is invisible to exactly the person walking into it. Cities publish crime data — the knowledge exists — but it sits in datasets, not in the hand of anyone deciding which way to walk at 11pm.

That gap felt buildable. Not solvable — buildable. So we built at it.

Two halves: a risk model, and an app that acted on it.

The model was PySpark and K-means clustering over 10,000+ crime datapoints from the LAPD’s open data — real incidents, not synthetic placeholders. I ran the Elbow Method to pick K and landed on K=40: enough clusters to resolve genuinely distinct high-risk zones, few enough that each one still meant something on a map. On top of that sat the contextual layer — the same corner is not the same risk at 2pm and 2am, or for a burglary hotspot versus a street-crime one, so the map logic weighed the clusters by time, crime type, and what the user was actually there to do.

The app was Swift on iOS, built on CoreLocation. It did two things. First, real-time SOS: an alert that fired with your live location when you triggered it. Second, safety-first navigation — simulated, and I say that plainly — that weighted routes by the user’s intent. Someone sightseeing accepts a longer walk through safer streets; someone trying to make a train does not. The router treated those as different problems, because for the person holding the phone, they are.

shaurya@sps — turtleshell/model
sourceLAPD open crime data · 10,000+ datapoints
methodK-means clustering, PySpark
k40 — chosen via the Elbow Method
weightingtime of day · crime type · travel intent
clientSwift iOS · CoreLocation · real-time SOS
routingsimulated, intent-weighted (sightseeing vs. speed)
statusshut down — deliberately

It worked well enough to get us into Microsoft for Startups’ Founders Hub. That was external validation of the real kind — someone who did not know us looked at the thing and let it in the door.

Here is the part I would want a reviewer to press me on, so I will press on it myself. Clustering police data does not find where crime happens. It finds where crime is reported, and those are not the same map. Reporting rates move with how much a neighbourhood trusts the police, with who has the time and the documents to file, with which incidents get recorded as which category. Every one of those varies by exactly the demographics that make this an ethically loaded product.

No amount of tuning fixes that, because it is not a modelling error. K could be perfect and the elbow textbook-clean and the map would still be the reporting surface rather than the thing underneath it. That is a property of the dataset, and choosing the dataset was a product decision I made — which means the limitation is mine, not the algorithm's.

The second-order version is worse and is the one I did not see early enough. An app that steers tourists away from flagged blocks moves money away from those blocks — and if it ever fed usage back into the risk surface, it would confirm itself. A model that shapes the world it then measures stops being a measurement. It becomes a verdict with a confidence score attached.

I could have shipped it anyway. The clustering was real, the app worked, the accelerator badge was on the website, and nobody was asking me these questions. That is exactly the condition under which a thing gets shipped and quietly does harm — when the only person positioned to ask is the person with the most reason not to.

A prototype that gets into an accelerator is at its most dangerous point, because now there is a story. You can keep a startup like that alive for years on the story alone — the logo in the deck, the “we’re still exploring the space” answer, the version of it that exists mostly so its founders don’t have to say it ended.

I didn’t want to run that version. When TurtleShell stopped being a thing we were honestly building and started being a thing we would have been performing, we shut it down. October 2023, cleanly, on purpose.

The failure mode was never the shutdown — it would have been keeping a dead thing on life support for the story. I learned more from choosing K on real crime data, and from choosing an ending, than the polite zombie version of the company would ever have taught me. It stays on this site with its true stamp because the ending is part of the work.

← back to work

ask me what I’d do differently →