Welcome, and thank you for your interest in work4u and the amazing opportunities in our startup community! This assignment is designed to give us a sense of your software engineering skills in a practical, real-world scenario. It's a small, self-contained project that reflects the kind of work we do, including problem-solving, product thinking, and leveraging modern tools.
Time Limit: 48 hours from the moment you clone this repository.
Your task is to build a full-stack web application that allows a user to submit a raw meeting transcript and, in return, receive a concise, AI-generated summary.
As a busy professional, I want to paste the long, messy transcript of a meeting I missed into a web application. After submitting it, I want to see a well-structured summary that includes:
- A brief, one-paragraph overview of the meeting.
- A bulleted list of the key decisions made.
- A bulleted list of the action items assigned, and to whom.
The application should save my past summaries so I can review them later.
-
Frontend: A clean, simple, and responsive user interface with:
- A large text area to paste the meeting transcript.
- A "Generate Digest" button.
- A section to display the structured AI-generated summary.
- A view to list previously generated digests.
-
Backend: An API service that:
- Accepts the transcript text from the frontend.
- Sends the transcript to a 3rd-party AI service (like Google's Gemini API) with a carefully crafted prompt to request the summary in the desired format.
- Parses the AI's response.
- Saves both the original transcript and the structured summary to a database.
- Provides an endpoint to retrieve a list of all past digests.
-
Database: A simple database schema to store the digests (e.g., an ID, the original transcript, the summary, and a timestamp).
For candidates who wish to demonstrate a deeper level of expertise, we highly encourage you to implement one or both of the following features:
1. Shareable Digest Links:
- Goal: Allow a user to share a generated digest with others via a unique, permanent URL.
- Implementation:
- When a digest is created, generate a unique, hard-to-guess public ID (e.g., using
UUID
). - Create a new page/route on the frontend (e.g.,
/digest/:publicId
) that fetches and renders a single digest. - The main list of digests should provide a "Share" button for each item, which copies this unique URL to the clipboard.
- When a digest is created, generate a unique, hard-to-guess public ID (e.g., using
2. Real-time Streaming Response:
- Goal: Improve user experience by displaying the AI-generated summary word-by-word as it's being generated, rather than waiting for the entire process to complete.
- Implementation:
- Modify the backend endpoint to use the AI provider's streaming API.
- Use a technology like Server-Sent Events (SSE) or WebSockets to stream the response from the backend to the frontend in real-time.
- Update the frontend to progressively render the text as it arrives.
We explicitly encourage you to use AI-powered coding assistants. A modern engineer's skill set includes the ability to use these tools effectively. Part of this evaluation is to understand how you use them.
We believe with in the AI coding era, all software engineers are somewhat fullstack engineers, so please try your best to develop the backend part with help of AI if you are a frontend developer (same if you are a backend developer). When evaluating your code, we would take these into consideration, ie, if you are a frontend developer but you are able to complete the backend part with reasonable quality, that would be a bonus point when we match you with any frontend jobs.
You have the freedom to choose your stack, but we recommend using common, modern technologies.
- Frontend: React, Vue, or Svelte.
- Backend: Node.js (Express/Fastify), Python (FastAPI/Flask), or Go.
- Database: PostgreSQL, SQLite, or MongoDB.
- AI Service: We recommend the Google Gemini API, as it supports streaming responses and has a generous free tier. You can get an API key from Google AI Studio.
/
├── backend/
│ ├── src/
│ └── package.json (or requirements.txt, go.mod, etc.)
├── frontend/
│ ├── src/
│ └── package.json
├── .gitignore
├── CANDIDATE_README.md <-- YOU WILL FILL THIS OUT
└── README.md <-- THIS FILE
- Fork this repository to your own GitHub account.
- Create a new branch for your work (e.g.,
ben/work4u-fullstack
). - Implement your solution.
- Fill out the
CANDIDATE_README.md
file. This is a critical part of your submission. - Create a Pull Request from your feature branch to the
main
branch of your own forked repository. - Send us the link to the Pull Request.
We will be evaluating your submission based on the following criteria:
- Code Quality & Architecture: Is the code clean, well-structured, and maintainable?
- Functionality: Does the application meet all the core feature requirements? Is it robust?
- Seniority & Initiative: Implementation of the Challenge Features will be considered a strong indicator of seniority. How did you approach these more complex problems?
- Product Thinking: How is the user experience? Did you consider edge cases (e.g., long transcripts, failed API calls, invalid share links)?
- Testing: While a full test suite isn't required, the presence of some unit or integration tests will be viewed very favorably.
- Documentation & Communication: The clarity and completeness of your
CANDIDATE_README.md
is as important as the code itself.
(Please copy the following template into the CANDIDATE_README.md
file and fill it out as part of your submission.)
- Frontend:
[Your Choice]
- Backend:
[Your Choice]
- Database:
[Your Choice]
- AI Service:
[Your Choice]
Briefly explain why you chose this stack.
Provide clear, step-by-step instructions for how to get your project running locally.
Explain any significant architectural or design decisions you made. What were the trade-offs? If you implemented the challenge features, describe your approach. What would you do differently if you had more time?
Describe how you used AI programming assistants during this project. Be specific!