declared ClaudeBot · Anthropic · not verified
The user agent is ClaudeBot (Anthropic), which identifies itself as an AI agent.
Signals: Known agent user agent
This classification is final for the session. The human pages are not served to agents.
{
"question": {
"slug": "mobile-movies-app-challenge",
"title": "Mobile Movies App Challenge",
"difficulty": "medium",
"tags": [
"mobile",
"swe",
"role-mobile",
"take-home"
],
"is_free": true,
"locked": false,
"frequency": 1,
"last_reported_at": "2025-10-03T21:58:49.816424Z",
"url": "https://www.mokabla.com/en/c/telda/mobile-movies-app-challenge",
"agent": {
"page": "https://www.mokabla.com/agent/en/c/telda/mobile-movies-app-challenge",
"question": "https://www.mokabla.com/agent/_call/get_question?company=telda&question=mobile-movies-app-challenge"
},
"company": {
"slug": "telda",
"name_en": "Telda"
},
"body_md": "## What they ask\nThe mobile take-home has been the same movies app for iOS and Android since at least late 2022, built on the public TMDB API. The brief is two main screens.\n\n**Search and list.** A search bar that looks movies up by title, with the popular movies list shown while the query is empty. Results are grouped by release year.\n\n**Details.** Title, overview, poster, tagline, revenue, release date and status. Underneath it, up to five similar movies, and from the credits of those similar movies, the top five actors and the top five directors, grouped and sorted by popularity. A watchlist toggle on the details screen; whether it persists is up to you, and several candidates kept it in memory and said so. Images should be cached and show a placeholder when a load fails.\n\nSome versions of the brief add a short checklist: portrait only, responsive to screen sizes, dark mode, and a note on how the API key is kept out of the repository.\n\n## What candidates built\niOS submissions are UIKit or SwiftUI with Combine, MVVM or clean layers, and most used plain URLSession with no third-party networking. Android submissions are Kotlin with Compose or XML, Retrofit or Ktor, Room, Hilt or Koin, coroutines and StateFlow, with JUnit, MockK and Turbine on the test side. One late 2024 Android candidate received a different brief (products, categories and a cart over a mock API with Room), so the mobile task is not perfectly fixed.\n\nBy late 2025 at least one Android candidate got a live hands-on test after the intro conversation instead of a take-home, and wrote that they would have preferred the task. Be ready for either.\n\n## What they look for\n- The actors and directors block, which needs several credits calls merged, deduplicated and sorted. It is the part of the task that separates submissions.\n- Search that debounces and cancels stale requests, and a list that pages.\n- Clear layer boundaries you can defend in the follow-up call.\n- API key handling (xcconfig, BuildConfig, local properties), not a string in the source.\n- Tests for the view model and the mapping logic, and a README that explains the decisions.",
"follow_ups_md": "- Two similar movies share an actor. How do you count popularity for the top five?\n- The user types fast. How many requests do you send, and how do you cancel the old ones?\n- Make the watchlist survive a restart. What changes?\n- Why no third-party networking library, and what did it cost you?"
},
"paid": false,
"access": "Question bodies are paid content: a person buys 30 days of access per company (200 EGP or 200 points) in the human app. Agents get titles, tags and difficulty; bodies only for free questions."
}
| action | input | permission | |
|---|---|---|---|
| get_question One question with its body. Bodies are paid content unless the question is free. | company: string, question: string | Allowed | call → |
| list_questions The questions reported at a company: titles, tags, difficulty, whether each is free or paid. | company: string, page: number? | Allowed | call → |
| buy_access Buy 30 days of access to a company. | company: string | Refused R1 This action is for people only | people: https://www.mokabla.com/en/pricing |
| post_comment Comment on a question. | question: string, text: string | Refused R1 This action is for people only | people: https://www.mokabla.com/en/companies |
Allowed actions answer in JSON. Add ?format=json or send Accept: application/json to get this whole page as data.