As one of the few female cave explorers of the deepest caves in the world, team member Sonia immediately brought in the topic of outdoor safety as a potential project she was passionate about. Several recent cave rescues that made international and domestic news ⁠— the Thai cave rescue last year, the Indiana student trapped in a cave for 3 days, and the couple who burned their clothes to stay warm after losing their way in a cave ⁠— also sparked passion to do something about these situations.

Looking into the issue of fatalities in outdoor recreation, we found that on average, approximately 160 visitors per year die in America’s national parks every year, as reported by the National Park Service. Between 2015-2016, the NPS also reported 5,395 SAR (search and rescue) incidents. Across the globe, areas like the Diamond Bay Reserve in Australia or Mount Blanc in France are reported as some of the deadliest attractions for outdoor patrons, claiming multiple fatalities and injuries throughout the years.

By streamlining search and rescue responses, Limestone would prevent thousands of such tragedies and greatly improve public safety. In addition, issues such as resource management and visitor impacts, especially critical in regions like California where trails are frequently crowded and beautiful land becomes damaged after visitor use, would benefit. Public and private land managers would be able to monitor visitor use through the trip logs and use the data to better manage resources that go into maintaining the land.

What it does

Limestone is an embedded system programmer in Python on a Raspberry Pi for land managers to deploy at trailheads and cave entrances. Visitors can connect via bluetooth and enter a digital entry/exit log. If a visitor does not check out, it will go through a system of automatic responses.

The user connects to Limestone via our Android app. The user is prompted to add a trip with important information like:

  • Name, Phone
  • Group Size
  • Expected Out Time
  • Call Out Time Call out time is the time to initiate a rescue and should be liberal to account for unexpected delays. Ex: expected out is 8 PM, call out is 8 AM the next day.


Visitor exits around expected time and checks out

  • Great! Twilio will send a text confirming check out

Visitor exits around expected time, forgets to check out

  • Twilio will send a text at a time between expected out and call out time determined by an algorithm
  • If the visitor responds to the text, they are checked out
  • Twilio will send a text confirming check out

Visitor exits after expected time, but before call out time

  • Twilio will send a text at a time between expected out and call out time determined by an algorithm
  • Visitor exits around expected time and checks out
  • Twilio will send a text confirming check out

Visitor does not exit before call out time

  • Twilio will notify the land manager to initiate a rescue response with the visitor’s name, location entered, and group size

How we built it

How we built it: Given the brevity of the hackathon, we made this assumptions to narrow the scope of our work--that we have a weatherized Raspberry Pi connected to data where battery and storage was not an issue. We broke the project into three parts and each team member chose a part they were most comfortable with based on their skills:

Front end - Android app (Madison)

  • Madison worked on the front end Android app and interface.

Database and data transfer (Lucy)

  • Lucy interfaced the front end and back end by having the app write to a csv file for the back end to interact with.

Back end - Python and Twilio (Sonia)

  • When a change is observed in the csv, it checks if a new row was added. If so, it will initiate the code, which sets various timers using datetime and threader modules to check the visitor status and if not checked out, to enact the various scenarios described above. I wrote an algorithm to determine what time to initiate contact between the expected out and call out times. The file calls Twilio functions from another file. I created a Flask app to allow the user to text back to our server and that response will update their status in the csv file.

Challenges, accomplishments, and what we learned


  • I have only programmed in Python before so it was a challenge to integrate with so many other softwares as well as other programmer’s preferences. I was so confused by how to work with JSON files!
  • I am really proud of myself for learning and successfully integrating Twilio into our project. This whole project forced me to learn SO much in a very short amount of time, which is stressful, exciting, and rewarding. I am most proud of Limestone itself as this is something that I personally will use in the real world, and think will be of great value to public and private land managers.
  • Mainly, I learned how to use Twilio and by extension I learned about Flask, servers, ngrok, updating my bash profile, and not publicly posting authentication codes to GitHub.


  • I am a beginner programmer and this is my first hackathon. This is also my first time applying my programming knowledge to an actual application, and I gained a lot of exposure to so many aspects of the development process that I never knew about before. Although I have knowledge in Java and C++, this project required work in Python and understanding how data could be read and written to the application. It was a challenge to understand everything that was happening but I tried my best when writing the functions for reading and writing to file. I'm glad I was able to get a taste of what Python is like and an idea of what databases are like for our app in the future.


  • Second hackathon, worked on design and layout of the app, worked on integrating front end, data, and back end together.

What's next for Limestone

Future: This app was initially envisioned for cave trips specifically, but it can be applicable to any wilderness situation. This could enable rangers to crowdsource wilderness photos from hikers to create a more steady stream of photomonitoring data to monitor wilderness areas. Eventually, this can be used for through hiking and devices could communicate with each other. Limestone has great potential to 1) improve public safety by initiating rescue responses immediately and 2) improve sustainability of our amazing natural lands.

Share this project: