Project Info
Inspiration
In the Gulf of California, the Totoaba’s swim bladder is known as "aquatic cocaine," fetching between $20,000 to $80,000 per kilogram. This astronomical value has drawn in the many Cartels, transforming local fishing villages like San Felipe into nodes of a global criminal network, and a similar story is being told for many other endangered species today. So we built BlackMarkIt, a predictive modeling program that allows police departments to find traffickers before they reach a consumer.
What it does
BlackMarkIt is a global illicit-trade intelligence engine. It ingests seizure data (Origin, Transit, Destination, Commodity Type, etc) to map the hidden "connective tissue" of this $23B illegal wildlife market. Users click on regions our algorithm have determined to be likely spots for a black market to operate which starts a search algorithm for potential hubs (buildings, warehouses, stores, etc) and uses an agentic AI LLM agent to comb through online resources to check what companies are associated with what properties, whether these companies are shells, and their online presence. Through this, we determine which sites might be very likely within an area to be an operating base for these trafficking rings.
How we built it
We utilized a global dataset of police seizures (intercepted packages containing ivory, rhino horns, etc.). This data provided not just a "point on a map," but the economic lineage: monetary value, origin point, and interception point. We then fed this information into a DBSCAN algorithm that allowed us to create clusters with centroids that could act as potential market areas. Then by drawing a sweep around all the points in a given cluster, we could determine an area we deemed likely to house an operating base for a trafficking ring. Then with this area, we would iterate through all of the buildings by utilizing OpenStreetMap. For each buildings, we would then use a ChatGPT based agent we created to operate on an OSINT based framework to find information about the buildings and their handlers with publicly available resources, This agent also determines the risk of a given building, determining it to be more or less likely of being apart of a ring.
Challenges we ran into
One of the biggest challenges we faced was determining how we would cluster our points together. Initially, we were planning on creating a polygon based model where all the interception points act as a vertex of a given polygon area that we would deem as an area with higher probability of having a black market. This was later adapted to use a multidimensional k-means algorithm that weighs position, weight, and cost against one another to determine clusters from which their centroids would be the hotspots. We later had to pivot this idea once again as kmeans would have issues in how groupings were determined as well as how we created the area containing a possible black market. In the end, we decided to utilize a DBSCAN which would comb through the data and create groupings of closely knit points and have these clusters become the new searchable areas and had a lot higher accuracy.
Accomplishments we're proud of
We were really proud of the fact that we were able to create a fun and unique idea product during the limited time of this hackathon. We wanted to incorporate a lot of technical and aesthetic features that would still streamline user interaction with the platform.
What we learned
We learned about utilizing unique datasets with multiple non quantifiable metrics while still being able to train a prediction model upon it. We also learned how to leverage agentic AI to aid in searching that would have taken a person much longer to complete.
What's next
Real time endangered species commodity package determination Transition into using models to find hubs for human trafficking and drug distribution or other hidden markets.
Development Setup
Backend
- Create and activate a Python virtual environment (recommended):
python -m venv .venv && source .venv/bin/activate - Install dependencies:
pip install -r backend/requirements.txt - Start the FastAPI server (from the
backenddirectory):
The API will be available atcd backend fastapi dev main.py --reload --port 8000http://127.0.0.1:8000.
Frontend
- Install Node dependencies:
cd frontend npm install - Run the development server:
The React app will be served onnpm run dev -- --host 0.0.0.0 --port 5173http://127.0.0.1:5173.
Notes
- If both servers are running, ensure the frontend points to the backend API (check
srcfor proxy or fetch endpoints). - Use
npm run build(frontend) anduvicorn --reload(backend) for production simulation.
Analysis
View
Metric
- 19
- 12
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- FastAPIIn code
- HTMLIn code
- JavaScriptIn code
- OpenAIIn code
- PythonIn code
- ReactIn code
- Tailwind CSSIn code
- TypeScriptIn code
9 of 9 appear in the indexed code.
AI coding agents
- CodexConfig
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
545 KB
Source files
108
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
pvelleleth/treehacks
145 files · 122.4 MB · @ a0d2d61
Structure
Interface
73 files · 50%Screens, components and styles rendered to the user.
Application logic
38 files · 26%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- TypeScript70%
- Markdown14%
- Python14%
- CSS1%
- HTML1%
- Shell0%
- Other (1)0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
frontend/package.json
npm · 41- @base-ui/react
- @hookform/resolvers
- @tailwindcss/vite
- class-variance-authority
- clsx
- cmdk
- date-fns
- embla-carousel-react
- input-otp
- leaflet
- lucide-react
- next-themes
- radix-ui
- react
- react-day-picker
- react-dom
- react-hook-form
- react-leaflet
- +23 more
backend/requirements.txt
pypi · 11- beautifulsoup4
- browserbase
- eval-type-backport
- fastapi
- httpx
- openai
- openai-agents
- playwright
- python-dotenv
- requests
- uvicorn[standard]
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.