Inspiration
Generations of Muslims have experienced a multitude of trials, and with the rise of the digital era, today’s generation faces a new one: the permanence of our online presence.
When two of our teammates began their hijab journey in the summer of 2025, they encountered an obstacle: despite their commitment to modesty, they kept unexpectedly discovering old images of themselves without hijab circulating throughout the web—Instagram, Facebook, Google Images, and random websites they didn’t even know existed.
The existence of these images made some new hijabis reluctant to start covering their hair. Their beautiful choice to embrace the hijab was being undermined by their digital past. Existing privacy tools weren’t designed to address this specific need, and the hours spent manually untagging themselves from Instagram posts, reporting Google Images, and filling out takedown requests proved exhausting and inefficient.
Pardah emerged from this gap—a solution created by Muslim women who understand and have experienced the struggle of maintaining modesty when the internet tries to undermine it.
We believe Muslim women should not have to choose between their faith and their digital footprint. We built Pardah because every Muslim woman deserves the right to control her image, both in person and online, and the freedom to embrace modesty without compromise.
What it does
Pardah was designed for a simple, specific task and with empathy and accessibility in mind. The landing page prompts the user to upload an image of themselves wearing hijab and enter their full name. Upon pressing submit, the program will load and the user will see a stack of a few dozen images of themselves found on the internet. The user will be able to easily move back and forth between these images through the forward and back arrows on the right and left sides of the stack. For each image, the user will see two button options underneath the image:
- “Remove”: Upon clicking “Remove”, the program will load a pop-up card at the bottom of the page containing the photo and a mention of the source where the image was found. Suppose there is an opportunity for the user to remove the image directly. In that case, a “Remove” button will be available, directing the user to a link where they can remove the image. If the image cannot be directly removed, a
- "Send email to ___” button will be available, allowing the user to send an automated takedown request email to the owner of the site where the image was found.
- “This isn’t me”: If an image found was not the user's, the user can click this button, and the image will be removed from the stack and replaced with a placeholder card.
How we built it
Frontend Stack
- React (v19.2): Builds the UI with reusable components and hooks
- Axios: Sends and receives data from the Flask backend
- React Hooks:
useStatefor managing component state - CSS3: Custom responsive styling
Backend Stack
Logistics
- Flask: Python web framework for creating REST API endpoints
- Flask-CORS: Enables cross-origin requests from React frontend
- Python-dotenv: Environment variable management
Libraries
- DeepFace: AI library for facial recognition using FaceNet512 model
- OpenCV: Image processing and computer vision operations
- Pillow (PIL): Image manipulation and format conversion
- NumPy: Mathematical operations on face embeddings (512-dimensional vectors)
- Bing Image Downloader: Web scraping tool to search and download images
- Requests: HTTP library for downloading images from URLs
- Werkzeug: Secure filename handling and file upload management
- Hashlib: SHA256 image hashing for reporting
Class Structure
- search_images.py: Crawls web to find images of subject given keyword
- face_recognition.py: Handles face embedding and comparison tasks
- report_generator.py: Connects users with tools for reporting and takedown requests
Basic Flow
User agrees to image being processed locally → User uploads photo + enters name → React frontend packages inputs & sends to backend → search_images.py runs → crawls Bing for matching images → downloads results → face_recognition.py runs → extracts face embeddings from user photo + search results → compares embeddings → calculates Euclidean distances + similarity scores → React frontend receives results → displays all matched images with similarity scores → User reviews images → confirms true matches → When user wants to remove an image, report_generator.py runs → Bing removal email template → Step-by-step removal plan
Challenges we ran into
- Running backend on the correct server: Lining up the frontend image upload with the backend search; uploads were not working
- Search Result Quality: Scraping Bing, Instagram, and Facebook, trying to gather as many results as possible. Website blockers and image downloading issues
- Face Detection Accuracy: Ensuring the imageset returned the correct face and photos so users did not have to look through photos that were not of them
- Match Confidence: Tested different similarity thresholds
- Buggy Interface: Textbox glitches
Accomplishments that we're proud of
- Getting the Web Crawling to work: Returning actual results and gathering image data from multiple platforms
- Facial Recognition Accuracy: Achieved 97.53% accuracy!
- Developer Tools: Learned how to use existing tools and online resources to optimize coding
- User Experience Design: Created an aesthetically pleasing interface for our audience, with color scheming and fun fonts
What we learned
- Data and User Privacy: The importance of protecting user information and verification processes
- Pre-existing Tools: Took advantage of existing scrapers and APIs for a more effective product
- UI Flow: Followed a “less is more” design philosophy, as we are simplifying a typically complex reporting process
What's next for Pardah
We’re eager for the further development of Pardah and are excited to see where it takes us! Looking forward, we have three main advancements we would like to implement:
- Form Autofill: Automatically filling out reporting forms for users (e.g., via a Chrome extension) on various platforms
- Faster Crawling: Return images faster
- Identity Verification: Through Duo or similar ID-based verification processes
- Examples: Meta has age verification, LinkedIn has ID-photo verification
- This ensures only the hijabi can manage the reporting of her images and prevents harmful misuse of the tool.
- Examples: Meta has age verification, LinkedIn has ID-photo verification
- Search Engine Integration: Implementation into Google and other search engines
- Access to larger datasets and more searched images
- Access to larger datasets and more searched images
Log in or sign up for Devpost to join the conversation.