DEV Community

Cover image for Easy-CRM, a productivity tool created with Kiro
John NG for kirodotdev

Posted on

Easy-CRM, a productivity tool created with Kiro

Inspiration

Our team spent a lot of time in identifying contacts for inviting to our events, as our leads often were scattered across excels/csvs from various past events/sources. As such, we need a tool to consolidate them all and allow easy query/exporting.

What it does

A serverless web application that enables users to upload CSV/Excel files containing lead data in various formats. The system automatically standardizes the data using DeepSeek AI and provides a web interface for viewing, filtering, exporting, and querying lead.

Demo available!!!
https://demo-crm.cmpapp.top/
demo-user
DemoPass123!

Main Menu

Uploading

Key Features

  • File Upload & Processing: Drag-and-drop CSV/Excel upload with automatic format standardization
  • Real-Time Processing Status: Live status indicator showing upload and processing progress with cancellation support
  • Multi-Worksheet Excel Support: Automatically processes ALL worksheets in Excel files (not just the first one)
  • Duplicate Lead Handling: Automatic detection and handling of duplicate leads based on email addresses
  • Lead Management: Sortable, filterable table view with pagination for lead data
  • Phone Field Integration: Complete phone number support with validation, formatting, and clickable tel: links
  • Data Export: CSV export functionality with filter-aware data selection
  • Batch Processing: Scalable file processing architecture using SQS queues for large files
  • Secure Access: AWS Cognito authentication with JWT token validation

How I built it

Technology Stack

  • Backend: Python 3.13, AWS Lambda, DynamoDB, S3, SQS
  • Frontend: Vanilla HTML5, CSS, JavaScript with Tailwind CSS
  • Infrastructure: CloudFormation nested stacks
  • AI Integration: DeepSeek AI API for data standardization
  • Authentication: AWS Cognito (User Pool + Identity Pool)
  • CDN: CloudFront with SSL certificate

Architecture Diagram

Diagram

Lesson learnt from using Kiro

The most challenging part with vibe coding is debugging the issues with Kiro. Later on I adopted the below approaches which dramatically reduce number issues arising:

During Project kickstart:

  1. I provided the architecture in the "spec" session, such as how lambda should process the info, db schema, etc.
  2. I always try to explain the whole logic and required features in detail, so that Kiro wont have to guess or over-engineered my solution.
  3. Kiro generate the details on implementation and test cases, task by task.
  4. Go through the tasks.

During implementation:
I always use steering to ensure that future vibe coding/spec will always follow certain amount of standard/convention. For example, I require Kiro to always use venv to prevent messing up my workspace and global env.

After getting a MVP:

  • For bug fix, i use 'Vibe' session as it's more simple and direct, and less costly.
  • For new feature/enhancement, I used "Spec" session, as new changes may affect whole architecture, and require through planning to reduce future bug fixes.

The above approaches enables Kiro to find the root issues much quicker, thus saving time and credits.

One notable mention on code generation is that Kiro helped me solved a race condition problem, which is due to concurrent lambda operations on a dynamoDB update. Kiro successfully investigated the root issue and able to implement atomic operations to ensure the program be race-free.

What I learned

While Kiro/vibe coding is powerful, it still require a user with substancial knowledge to guide it, or else the product wont be delivered once it got complex enough.

What's next for easy-crm

Will be adding querying on the leads with NLP to gain insights easily soon!

Feel free to leave your comments below!! Would love to discuss how we can gradually adopt vibe coding into production. Also feel free to connect me via:
LinkedIn:https://www.linkedin.com/in/john-nch-hk
GitHub: https://github.com/john-ng-hk

Top comments (2)

Collapse
 
mahil_patel profile image
Mahil Patel

Nice project man!!🎉 btw I have a doubt how do we become part of kirodotdev organization.

Some comments may only be visible to logged-in visitors. Sign in to view all comments.