We co-created Memwa – an AI-powered app that encapsulates memories
Celebrating precious moments with the ones who matter the most. Encapsulating magical memories — all within a centralized mobile application. That’s the main aim of Memwa, an innovative startup and disruptor that has rolled out an AI-powered memory-storing application.
The challenge: A unique memory-sharing platform for both B2B and B2C users
The client’s primary goal was to develop an app that enables the creation of video materials out of users’ images, videos, or text. Their idea was revolutionary: using artificial intelligence tools, such as Chat GPT, Stability AI, and Vertex AI, to transform the original content from a user’s phone into unique and lasting memories.
They initially had two target personas:
- B2C users (individual users), wanting to hold their cherished memories close and share them with their friends and families
- B2B users (organizations that could benefit from such content type). One such example is travel agents aiming to provide fun and memorable travel experiences for their travel groups.
The team: A 9-person team to fuel Memwa’s success
While they had tech consultants, the client didn’t have an in-house software development team. They needed more than just an ordinary vendor. To create such an out-of-the-box and inventive application, they needed a team with extensive industry experience and the ability to transform their initial ideas into a viable product.
That is why they partnered with us as their trusted software development partner to guide them from the ideation phase to the application launch. To meet their needs, we fused together our delivery managers, business analysts, project managers, back-end developers, front-end developers, and quality assurance engineers.
The solution: Building Memwa from scratch and redefining the project scope over time
As Memwa’s technical partner, we strived to maintain the client’s visions, ideas, and core values while enabling overall project efficiency, transparency, and cost-effectiveness. We challenged their ideas, provided them with extensive feedback, and guided them throughout the entire software development process.
First, we fully redefined the project scope to meet the client’s evolving ideas. What started as one project concept eventually became something completely different. Our primary goal was to keep the entire development process consistent and ensure there was always a clear goal for the client to strive for.
Over time, we significantly contributed to the overall platform performance and worked on optimizing its design. Most importantly, we equipped them with extensive product ownership skills, helping them make informed decisions and stay consistent.
So, what exactly did we do to enable Memwa’s success?
- High-quality photos and videos – content can be added without being compressed.
- The use of collaboration tools enables a group to view and manage content in private spaces.
- Users can add captions, comments, and reactions to photos and videos uploaded.
- AI is used to create photo and video captions automatically.
- Users can utilize AI to create custom artwork for each memory. Artificial intelligence also chooses an appropriate design theme for each showcase.
- High security is Memwa’s top priority – each space is based on the invite-only principle, meaning users are fully in charge of the content they share.
- Memwa can also work as a hassle-free memory-creation tool, where all members can share their photos, videos, and stories before, during, and after an event.
The promising first results: 300 downloads right after the app launch
Right after its soft launch, the application gained more than 300 downloads – without any extensive promotion or marketing efforts. Amazing, right? We’re looking forward to seeing what the future holds and are proud to be Memwa’s success.
The full tech stack
Back-end:
- Python (Fast API) — the framework for creating API services that allow quick development, integration, and communication with other services
- Onion architecture, CQRS, Repository pattern, lambda’s background services — The Onion architecture allowed us to write clear code and is interoperable. Because the application was made from scratch, we decided that our service application needed to be a monolith. In a later phase, we started making external components as background jobs and lambdas. We used the CQRS and Repository pattern as part of the Onion architecture for easier work with data and logic.
- PostgreSQL database, Alembic, SQLAlchemy — Our database base was a relational database using PostgreSQL. As middleware between our service and the database itself, we use Python libraries Alembic and SQLAlchemy
- Integration with external AI services (Open AI, Vertex AI, Stability AI) – the initial idea of the application that our showcase needs to be as dependent as possible on the AI model. We decided to split this “randomization” process into three phases. In the first phase, we made the simplest showcase without any integrations with AI models. In the second phase, we add integration with AI models as a first step of the randomization of our showcase. Depending on the data we had in our memory, AI decided which showcase theme would be. Also, for every image that we had in memory, we generated an AI description (using Vertex AI). In the end, in memory creation, every memory gets a list of potentially generated images to cover (Stability AI).
- AWS cloud infrastructure (EC2, ECR, AWS Cognito, S3, CloudFront distribution, CloudWatch, RDS, SQS, SNS, Lambda - event triggering, Secrets Manager, API gateway, SES) – resources for infrastructure. Firstly we completely used AWS infrastructure; then we made a migration to Heroku (the client requested it)
- Heroku (Addons, Redis) — PaaS
- The Sendgrid integration — First, we used AWS SES to send emails. In the migration process from AWS to Heroku, we changed our email provider to SendGrid
- The Branch.io integration — for creating deep links
- The Firebase integration — for sending push notifications and analytics
- OpenStreetMap API — reverse geocoding (converting a location as described by geographic coordinates of taken photos to a human-readable address)
Front-end:
- React Native — cross-platform framework that allowed us to develop both iOS and Android applications quickly from the same codebase
- Reanimated — powerful animations toolkit that provided us with smooth, native animations for the React Native framework
- TypeScript — adds static types to JavaScript, providing a more robust development experience.
Firebase – app development platform that provided us with push notification services, analytics, and crash tracking - Branch.io — MMP (Mobile Measurement Partner) service that allowed us services like deferred deep linking, linking to the app store
- React — web development library that was used to create an admin panel