<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Kuljit Aujla</title>
    <description>The latest articles on Forem by Kuljit Aujla (@kuljit_aujla).</description>
    <link>https://forem.com/kuljit_aujla</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3578378%2Fe9a60b7e-b902-4d1e-a668-ec983605c1b1.jpg</url>
      <title>Forem: Kuljit Aujla</title>
      <link>https://forem.com/kuljit_aujla</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/kuljit_aujla"/>
    <language>en</language>
    <item>
      <title>Remember2Pack</title>
      <dc:creator>Kuljit Aujla</dc:creator>
      <pubDate>Thu, 23 Oct 2025 02:51:50 +0000</pubDate>
      <link>https://forem.com/kuljit_aujla/remember2pack-1dk4</link>
      <guid>https://forem.com/kuljit_aujla/remember2pack-1dk4</guid>
      <description>&lt;h2&gt;
  
  
  Remember2Pack — AI-Driven Smart Packing Assistant for the Modern Traveler
&lt;/h2&gt;




&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Everyone knows the feeling — spending precious time packing only to realize you forgot something essential.&lt;br&gt;&lt;br&gt;
Traditional checklists and note apps help, but they’re time-consuming and easy to overlook.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Remember2Pack&lt;/strong&gt; solves this problem by combining &lt;strong&gt;AI&lt;/strong&gt;, &lt;strong&gt;computer vision&lt;/strong&gt;, and &lt;strong&gt;cloud-based storage&lt;/strong&gt; to create an intelligent packing assistant.&lt;br&gt;&lt;br&gt;
Users can &lt;strong&gt;upload a photo&lt;/strong&gt; of their packed items and let &lt;strong&gt;AWS Rekognition&lt;/strong&gt; detect what’s in it — or &lt;strong&gt;manually type items&lt;/strong&gt; that weren’t captured in the image.&lt;br&gt;&lt;br&gt;
The app then generates &lt;strong&gt;AI-powered recommendations&lt;/strong&gt; and allows users to chat with an integrated assistant that refines the list based on trip details and context.&lt;/p&gt;




&lt;h2&gt;
  
  
  What It Does
&lt;/h2&gt;

&lt;p&gt;Remember2Pack transforms the packing process from tedious to intelligent, combining automation and interactivity in one platform.&lt;/p&gt;

&lt;h3&gt;
  
  
  Core Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; &lt;strong&gt;Hybrid Item Input:&lt;/strong&gt; Upload an image of packed items (detected via AWS Rekognition) and manually add any missed items for complete flexibility.
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;AI Recommendations:&lt;/strong&gt; Enter a trip description (destination, duration, purpose, etc.) and get AI-generated suggestions of what else to bring.
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Conversational Refinement:&lt;/strong&gt; A built-in chatbot with short-term memory refines your list through open-ended questions relative to provided information, ensuring context-aware recommendations.
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Saved Recommendations:&lt;/strong&gt; Users can save previous lists — including uploaded images — for future reuse.
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Secure Authentication:&lt;/strong&gt; JWT-based login with OTP verification using &lt;strong&gt;Resend SMTP&lt;/strong&gt; for safe account access.
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Cloud-Backed Storage:&lt;/strong&gt; AWS S3 securely stores images; MongoDB maintains user data and packing history.
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;AI Fallback System:&lt;/strong&gt; If the Huggingface &lt;strong&gt;Llama 3.1 Instruct&lt;/strong&gt; runs out of tokens or fails, &lt;strong&gt;Claude Haiku 3.5&lt;/strong&gt; automatically takes over for seamless continuity.
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Mobile Optimization:&lt;/strong&gt; Designed with responsive layouts for a clean, modern experience on all devices for flexibility. &lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Containerized Backend:&lt;/strong&gt; Dockerized Node.js backend for consistent, scalable deployment.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  AI System &amp;amp; Prompt Engineering
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1 — Contextual Recommendation Generation
&lt;/h3&gt;

&lt;p&gt;When a user enters a trip description like &lt;em&gt;“One-week beach vacation with hiking and sightseeing”&lt;/em&gt; (ideally more detailed), the backend sends this along with packed items (detected and typed) to &lt;strong&gt;Llama 3.1 Instruct&lt;/strong&gt; via the Hugging Face API.&lt;br&gt;&lt;br&gt;
The model analyzes what’s packed versus what’s described and returns a list of missing essentials.&lt;/p&gt;

&lt;p&gt;If the Hugging Face model fails or hits token limits, the system automatically falls back to &lt;strong&gt;Claude Haiku 3.5&lt;/strong&gt; for reliability and speed. Prioritizing uptime and UX.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2 — Chatbot Refinement
&lt;/h3&gt;

&lt;p&gt;After recommendations are generated, users can chat with the AI assistant to improve their list.&lt;br&gt;&lt;br&gt;
The chatbot uses &lt;strong&gt;short-term memory&lt;/strong&gt; to stay aware of:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Items already packed
&lt;/li&gt;
&lt;li&gt;AI-generated suggestions
&lt;/li&gt;
&lt;li&gt;The context of the trip
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It asks open-ended questions like:  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“You mentioned hiking — do you want me to include gear like trekking poles or water-resistant clothing?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This dynamic feedback loop ensures smarter, personalized packing.&lt;/p&gt;




&lt;h2&gt;
  
  
  AWS Integration
&lt;/h2&gt;

&lt;h3&gt;
  
  
  AWS S3 — Image Storage
&lt;/h3&gt;

&lt;p&gt;Each user has a private folder for their uploaded images. URLs are stored in MongoDB and displayed within saved recommendations. Additionally, setup a lifecycle policy for cost efficiency to ensure temp files are deleted a day after creation.&lt;/p&gt;

&lt;h3&gt;
  
  
  AWS Rekognition — Item Detection
&lt;/h3&gt;

&lt;p&gt;When a user uploads an image to S3 (gets stored in the temporary folder first), the backend sends it to Rekognition through the &lt;code&gt;DetectLabelsCommand&lt;/code&gt;.&lt;br&gt;&lt;br&gt;
Detected items (e.g., &lt;em&gt;shirt&lt;/em&gt;, &lt;em&gt;toothbrush&lt;/em&gt;, &lt;em&gt;charger&lt;/em&gt;) are filtered for confidence and automatically added to the packing list.&lt;/p&gt;

&lt;h3&gt;
  
  
  AWS CloudWatch — Monitoring
&lt;/h3&gt;

&lt;p&gt;Used for system logging, monitoring Rekognition response times, and tracking potential API errors.&lt;/p&gt;

&lt;h3&gt;
  
  
  AWS Lambda — Experimentation
&lt;/h3&gt;

&lt;p&gt;I implemented a Lambda function that was triggered on S3 specific prefix uploads to detect items.&lt;br&gt;&lt;br&gt;
Although functional, the Lambda workflow introduced noticeable latency compared to the synchronous pipeline.&lt;br&gt;&lt;br&gt;
I ultimately removed it — but it was a &lt;strong&gt;valuable learning experience&lt;/strong&gt; in &lt;strong&gt;serverless computing&lt;/strong&gt; and &lt;strong&gt;event-driven AWS design&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Authentication &amp;amp; Security
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;JWT Authentication:&lt;/strong&gt; Enables secure, stateless user sessions.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resend SMTP:&lt;/strong&gt; Handles OTP-based email verification and password reset workflows.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CORS Handling:&lt;/strong&gt; When deploying, I resolved cross-origin issues by unifying domain structure through custom domain configuration and using environment variables instead of hardcoded URLs.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secure Environment Management:&lt;/strong&gt; All credentials and API keys are stored in environment variable section and excluded from source control.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User Sensitive Data Middleware:&lt;/strong&gt; All endpoints needing explicit user access have checks to ensure JWT in cookie's and verified in endpoint. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Protected Routes:&lt;/strong&gt; Ensured only verified users are able to access dashboard and other user specific pages through protected routes and cookie userID confirmation.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Dockerization &amp;amp; Deployment
&lt;/h2&gt;

&lt;p&gt;I containerized both the frontend and backend using &lt;strong&gt;Docker&lt;/strong&gt; to ensure consistent deployment environments.  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Runs as a Dockerized Node.js service on Render, configured through environment variables.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Dockerized as well but built statically on Render for cost efficiency while remaining easily scalable through Nginx serving in docker image if needed.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Outcome:&lt;/strong&gt; Streamlined deployment, version control consistency, and scalable architecture ready for future expansion.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Key Technical Implementations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt; &lt;strong&gt;Hybrid Input System:&lt;/strong&gt; Combines image recognition and manual typing for flexibility.
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Dual AI Model Integration:&lt;/strong&gt; Automatic fallback between Llama 3.1 and Claude Haiku 3.5 for reliability.
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;AWS-Powered Cloud Workflow:&lt;/strong&gt; Handles storage, recognition, and logging at scale.
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Resend SMTP Integration:&lt;/strong&gt; Email verification with secure, domain-based authentication.
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Containerized Backend:&lt;/strong&gt; Enables consistent builds and simple deployment pipelines.
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Mobile Optimization:&lt;/strong&gt; Responsive UI ensures a seamless experience across all devices.
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;S3 Bucket optimization:&lt;/strong&gt; Created a lifecycle policy for the S3 bucket to ensure the temporary images are cleared from the temporary image folder the next day.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Challenges I Faced
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Custom Domain &amp;amp; CORS Conflicts&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deploying on render caused CORS issues with frontend and backend communications caused by different subdomain's provided by render which were fixed when migrating to a GoDaddy domain and using api subdomain as a fix.
&lt;/li&gt;
&lt;li&gt;Solved by domain forwarding and dynamic environment-based configuration.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Prompt Engineering Complexity&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Early AI responses lacked consistency. Iterative testing and refining prompt templates significantly improved output quality.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Docker Learning Curve&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Initially confusing, but understanding how containers, ports, and environment variables interact made deployment smooth and predictable.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;AWS Lambda Performance&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Successfully implemented event triggers, but latency made synchronous processing more efficient for real-time use cases.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Authentication Reliability&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configuring Resend’s SMTP domain verification and ensuring email delivery required careful debugging and testing.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Accomplishments I’m Proud Of
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Developed a &lt;strong&gt;production-ready AI-powered packing assistant&lt;/strong&gt; using modern web and cloud technologies.
&lt;/li&gt;
&lt;li&gt;Created a &lt;strong&gt;hybrid input system&lt;/strong&gt; for flexibility between image detection and manual entry.
&lt;/li&gt;
&lt;li&gt;Implemented &lt;strong&gt;JWT + OTP authentication&lt;/strong&gt; for secure user access.
&lt;/li&gt;
&lt;li&gt;Integrated &lt;strong&gt;dual AI models&lt;/strong&gt; with intelligent fallback handling.
&lt;/li&gt;
&lt;li&gt;Achieved &lt;strong&gt;full mobile responsiveness&lt;/strong&gt; for an optimized user experience on all devices.
&lt;/li&gt;
&lt;li&gt;Deployed a &lt;strong&gt;Dockerized backend&lt;/strong&gt; with environment isolation for reliable scalability.
&lt;/li&gt;
&lt;li&gt;Gained practical experience with &lt;strong&gt;AWS Rekognition&lt;/strong&gt;, &lt;strong&gt;S3&lt;/strong&gt;, and &lt;strong&gt;serverless architecture concepts&lt;/strong&gt; through Lambda experimentation.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Technical Growth
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Hands-on integration with AWS (S3, Rekognition, CloudWatch, Lambda).
&lt;/li&gt;
&lt;li&gt;Real-world prompt engineering for LLM consistency.
&lt;/li&gt;
&lt;li&gt;Docker deployment workflows and container orchestration.
&lt;/li&gt;
&lt;li&gt;Environment-based configuration for multi-domain deployment.
&lt;/li&gt;
&lt;li&gt;DevOps such as CI/CD, monitoring, and deployment automation&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Software Engineering Insights
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The trade-off between &lt;strong&gt;serverless scalability&lt;/strong&gt; and &lt;strong&gt;real-time responsiveness&lt;/strong&gt;.
&lt;/li&gt;
&lt;li&gt;How to build flexible systems that adapt to different user behaviors.
&lt;/li&gt;
&lt;li&gt;The importance of designing for &lt;strong&gt;both usability and technical reliability&lt;/strong&gt;.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Built With
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Languages:&lt;/strong&gt; JavaScript (Node.js)&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Frontend Framework:&lt;/strong&gt; React (Vite)&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Backend Framework:&lt;/strong&gt; Express&lt;br&gt;&lt;br&gt;
&lt;strong&gt;AI Models:&lt;/strong&gt; Llama 3.1 Instruct, Claude Haiku 3.5&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Cloud Services:&lt;/strong&gt; AWS S3, Rekognition, CloudWatch, Lambda (experimented)&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Database:&lt;/strong&gt; MongoDB Atlas&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Authentication:&lt;/strong&gt; JWT + Resend SMTP (OTP)&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Containerization:&lt;/strong&gt; Docker&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Deployment:&lt;/strong&gt; Render + GoDaddy Custom Domain&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Version Control:&lt;/strong&gt; Git&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Dev Tools:&lt;/strong&gt; Postman, VS Code  &lt;/p&gt;




&lt;h2&gt;
  
  
  AI Use Declaration
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Remember2Pack&lt;/strong&gt; is more than a packing list generator — it’s a complete, AI-powered solution that blends automation, intelligence, and design to solve a real-world problem.  &lt;/p&gt;

&lt;p&gt;A project like this could not have been complete without the &lt;strong&gt;careful&lt;/strong&gt; usage of AI. I believe that transparency of AI usage is important in development of projects and therefore, I provide a look into how AI was utilized in this project — and a bit of who I am behind it.&lt;/p&gt;

&lt;p&gt;Although AI was used, I would like to note that this project was neither vibe coded nor rushed in any sense. I take great pride in saying everything in this project was carefully crafted by me and each decision that follows within it was for good reason. My personal standards/goals and mindset would not allow me to make a project without understanding even the littlest of concepts used let alone unknown abstract copy pasting. &lt;/p&gt;

&lt;h3&gt;
  
  
  How AI Helped
&lt;/h3&gt;

&lt;p&gt;AI tools were used thoughtfully to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Debug issues and clarify syntax-level problems
&lt;/li&gt;
&lt;li&gt;Explore architectural alternatives and compare implementation choices
&lt;/li&gt;
&lt;li&gt;Improve clarity in documentation and design reasoning
&lt;/li&gt;
&lt;li&gt;Explain complex concepts like &lt;strong&gt;Docker&lt;/strong&gt;, &lt;strong&gt;AWS&lt;/strong&gt;, and &lt;strong&gt;authentication flows&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Provide some much-needed &lt;em&gt;moral support at 3 A.M.&lt;/em&gt; during long problem-solving sessions
&lt;/li&gt;
&lt;li&gt;Helping with organizing README.md &lt;/li&gt;
&lt;li&gt;Guidance in AWS Console&lt;/li&gt;
&lt;li&gt;Recommending Youtube tutorials to teach and reinforce important concepts (like Authentication)&lt;/li&gt;
&lt;li&gt;Sounding more professional in advertising this project through this blog, Readme, LinkedIn post (while every idea, decision, and piece of information was written and authored by me.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;AI didn’t build this project for me — it built me into a better developer.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🌐 &lt;strong&gt;Live Website:&lt;/strong&gt; &lt;a href="https://remember2pack.com" rel="noopener noreferrer"&gt;https://remember2pack.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💻 &lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/kuljitAujla/Remember-2-Pack" rel="noopener noreferrer"&gt;https://github.com/kuljitAujla/Remember-2-Pack&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;👔 &lt;strong&gt;LinkedIn:&lt;/strong&gt; &lt;a href="https://www.linkedin.com/in/kuljit-aujla" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/kuljit-aujla&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd6p6e37ruiekl76blr5m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd6p6e37ruiekl76blr5m.png" alt="Landing Page" width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu6fweadbxlrjtq1s1hx5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu6fweadbxlrjtq1s1hx5.png" alt="Dashboard" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Feedback, suggestions, or improvements? Drop them below — I’m always open to learning&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>aws</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
