This exercise is meant to make your engineering judgment visible. We want to see how you interpret an ambiguous product prompt, choose scope under time constraints, structure a mobile application, reason about trade-offs, and explain your decisions.
We're going to be evaluating you on the following:
- clear/sensible code patterns
- functionality + validation
- readability
This assignment is designed to take less than 6 hours with AI-assisted code development. A focused, well-executed slice is better than a large build.
Build a React Native mobile app for peer-to-peer messaging and calling with an AI component. It should include a lightweight backend for peer-to-peer communications.
The product should support a simple communication flow where two users can exchange messages, initiate a call-like interaction, and use an AI capability within the conversation.
Peer-to-peer communication must work. When we run your app locally, we need to be able to open two instances and have them talk to each other. This is non-negotiable.
The exact product shape is intentionally unspecified. Choose a narrow interpretation and implement it well.
You may use AI tools during development.
- Frontend: Use React Native
- Backend: Whatever language/setup you're most comfortable with
- Run locally with clear setup instructions
- Include a README.md (entirely human written)
- Support functional 1:1 messaging
- Include a functional call-like interaction between two users
- Include one meaningful AI feature
- Demonstrate strong architectural patterns: clear separation of concerns, modular structure, and maintainable code organization
Include an AI capability that improves the communication experience. You may stub or simulate model responses if needed.
Examples: auto-reply, missed call -> AI realtime fallback, AI-generated conversation summaries.
Some aspects of the product are intentionally unspecified. You should decide what "calling" means in this product, how realistic messaging should be, how AI fits into the UX, what to fully implement vs mock, and where to spend your 6 hours.
Explain those decisions in the README.
The README must achieve two things: setup and help us understand your reasoning. Your README must be entirely human written. If your README is AI generated, I will be very angry.
Should include:
- Setup instructions
- Tradeoffs
- Stubs / Unhandled Edge Cases (what's known incomplete)
- Key decisions
Should not include:
- File structure or location
- BS/Fluff
This is a template repository. Create a new private repository from this template:
- Click "Use this template" → "Create a new repository"
- Make the repository private
- Clone your new repository locally
- Complete the assignment in your repository
- Once done, share the repository with @jakezegil, @danielgavidia, @SamuelRCrider
Your submission should include:
- the React Native project
- a README.md (entirely human written)
- setup instructions in the README
- a short video (I recommend Loom) of you walking through your repository in your preferred IDE
- The video (<5m) should be you sharing your code and include the following:
- an architectural overview
- a walk through of your data models
- a brief explanation of each part of your codebase/how it works / why it's necessary
- as you walk through, emphasizing what you would change in a production codebase shared with a team