Project Info
Inspiration
NinjAttach was inspired by our frustrations during past work experiences, where we wasted time filling repetitive PDF attachments and feared missing urgent emails in a flood of incoming messages. We built NinjAttach to automate these tedious tasks, ensuring users can manage their inboxes efficiently and focus on what matters most.
What it does
Email Reading: Automatically reads the latest emails and extracts attachments. PDF Information Extraction: Extracts missing fields from PDF attachments. User Profile Management: Updates user profiles with extracted information. Form Generation: Generates a dynamic form for users to fill in missing information. Email Draft Creation: Creates an email draft with the updated PDF attached for the user to send. Task Scheduling: Automatically saves the task in the user’s Google Calendar as a reminder to send the email.
How we built it
We structured the project into three core components: Gmail Integration: Communicating with Gmail via the API to automatically read emails and extract attachments. Web App Development: Creating a user-friendly interface where users can review and complete extracted information from PDFs. PDF Processing: Automatically filling PDFs in the correct fields based on extracted data.
Challenges we ran into
One of the main challenges we faced was our limited coding background. None of us had developed an app before, so we had to rapidly upskill to bring NinjaAttach to life. The PDF auto-filling feature proved particularly challenging as we needed to understand the structure of widgets and PDF formatting. Additionally, handling complex PDFs required us to explore computer vision tools we had never used before. Despite these hurdles, our team leveraged our diverse backgrounds and worked cohesively, allowing us to overcome the technical challenges and grow our skill sets quickly.
Accomplishments we're proud of
We’re proud of how quickly our team upskilled, moving from minimal coding experience to developing NinjAttach. We learned how to deploy a web app, work with Google APIs, and tackle the complexities of PDF auto-filling. One key feature we’re especially proud of is the ability to remember and reuse the user’s previously entered key information, streamlining future PDF completions. Despite barely knowing each other before the hackathon, we quickly built a strong team dynamic, leveraging each member’s strengths to collaborate effectively. Our ability to unite and execute efficiently is something we take great pride in.
What we learned
Throughout the project, we gained valuable experience in coding and deploying a web app using Streamlit Cloud. We deepened our understanding of working with APIs, particularly the Gmail API and LLM APIs, and improved our skills in handling PDF structure and automated form filling. Additionally, we developed stronger team management and communication practices, ensuring efficient collaboration. Lastly, we learned the importance of resilience in overcoming challenges and delivering a successful project.
What's next
for AutoMail Next for NinjAttach is expanding its capabilities beyond email attachments and replies. We plan to introduce a more intuitive, user-friendly interface and a dynamic dashboard, allowing users to track tasks, emails, and document workflows in real-time. In addition, we aim to integrate advanced AI features, such as smart email prioritization and seamless connections with task management tools. Our vision is to build an intelligent assistant that evolves with user needs, boosting efficiency and productivity.
Email Agent - Powered by Gemini AI
Overview
The Email Agent is a Streamlit application designed to automate the process of extracting information from emails and PDF attachments, updating user profiles, and generating email drafts with the updated information. This project leverages various functionalities to streamline the workflow and improve efficiency.
Features
- Email Reading: Automatically reads the latest email and extracts attachments.
- PDF Information Extraction: Extracts missing fields from PDF attachments.
- User Profile Management: Updates the user profile with the extracted information.
- Form Generation: Generates a dynamic form for users to fill in missing information.
- Email Draft Creation: Creates an email draft with the updated PDF attached.
- Task Scheduling: Automatically saves the task in the user’s Google Tasks as a reminder to send the email.
Installation
To run this project, you need to have Python and Streamlit installed. Follow these steps to set up the project:
-
Clone the repository:
git clone https://github.com/louis-salletourne/NinjAttach.git cd NinjAttach -
Install the dependencies:
pip install -r requirements.txt -
Set up the environment variables:
- Create a
.envfile in the root directory. - Add the following environment variables to the
.envfile:GEMINI_API_KEY=your-gemini-api-key GOOGLE_APPLICATION_CREDENTIALS=path/to/your/google-credentials.json - Activate the Gmail API and download the
credentials.jsonfile from the Google Cloud Console.
- Create a
-
Run the Streamlit app:
streamlit run webapp.py
Analysis
View
Metric
- 31
- 30
- 13
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
- LangChainIn code
- PythonIn code
- StreamlitIn code
3 of 3 appear in the indexed code.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
31 KB
Source files
14
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
louis-salletourne/NinjAttach
21 files · 113 KB · @ 63dc7d2
Structure
Application logic
14 files · 67%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
- Python94%
- Markdown6%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
requirements.txt
pypi · 12- google-api-python-client
- google-auth
- google-auth-httplib2
- google-auth-oauthlib
- google-generativeai
- langchain
- langchain-google-genai
- pymupdf
- PyPDF2
- python-dotenv
- reportlab
- streamlit
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.