From 08cb1ef5446ee28a149a846505fe39aac5ffa090 Mon Sep 17 00:00:00 2001 From: Ghaymah Date: Mon, 31 Aug 2026 06:44:45 +0000 Subject: [PATCH] Initial exam template: Ghaymah GenAI Engineer (60 min) --- README.md | 107 +++++++++++++++++++ common-mortakaz/mortakaz-discovery.md | 85 +++++++++++++++ common-qabilah/qabilah-ecosystem.md | 39 +++++++ q1-cumin-memory/cumin-memory-module.md | 87 +++++++++++++++ q2-arabic-tts-stt/arabic-tts-stt-finetune.md | 57 ++++++++++ q3-ghaymah-signup/ghaymah-signup.md | 29 +++++ q4-static-site-deploy/site/index.html | 22 ++++ q4-static-site-deploy/site/style.css | 48 +++++++++ q4-static-site-deploy/static-site-deploy.md | 36 +++++++ 9 files changed, 510 insertions(+) create mode 100644 README.md create mode 100644 common-mortakaz/mortakaz-discovery.md create mode 100644 common-qabilah/qabilah-ecosystem.md create mode 100644 q1-cumin-memory/cumin-memory-module.md create mode 100644 q2-arabic-tts-stt/arabic-tts-stt-finetune.md create mode 100644 q3-ghaymah-signup/ghaymah-signup.md create mode 100644 q4-static-site-deploy/site/index.html create mode 100644 q4-static-site-deploy/site/style.css create mode 100644 q4-static-site-deploy/static-site-deploy.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..cb8dee5 --- /dev/null +++ b/README.md @@ -0,0 +1,107 @@ +# Ghaymah GenAI Engineer β€” Technical Interview + +**Track:** Generative AI / AI Agents +**Duration:** 60 minutes +**Submission:** GitPasha (push to your exam repo) +**Language:** English or Arabic β€” your choice (Arabic is encouraged for the ecosystem questions) + +--- + +## Welcome πŸ‘‹ + +Welcome to the Ghaymah technical interview. This is a **hands-on, 60-minute** exam β€” not a whiteboard Q&A. We want to see how you think, what you build, and how you work inside the **Arabic tech ecosystem**, because that is the ecosystem we build for and with. + +You are interviewing to join the team that builds **agents like Cumin** β€” the AI agent that runs inside a compute sandbox (persistent containers + serverless functions + an object-store workspace) and works across data processing, scraping, conversion, and deployment. In this exam you will: + +1. Introduce yourself to the Arabic tech ecosystem (**Qabilah** + **Mortakaz**). +2. Design a **memory module** for an agent like Cumin, and show how to use it. +3. Plan how to **fine-tune an Arabic TTS or STT** model. +4. Sign up to **Ghaymah** and **deploy a simple static website**. + +## What we are evaluating + +| Skill | Where it shows up | +|---|---| +| Arabic tech ecosystem awareness | Qabilah + Mortakaz tasks | +| Agent engineering intuition (memory, retrieval, storage trade-offs) | Q1 | +| Arabic NLP depth (data, diacritization, evaluation, fine-tuning) | Q2 | +| Shipping β€” can you actually deploy something live | Q3 + Q4 | + +## The stack you will touch + +| Platform | What it is | URL | +|---|---|---| +| **Qabilah (Ω‚Ψ¨ΩŠΩ„Ψ©)** | Arabic tech social / community platform | https://qabilah.com | +| **Mortakaz (مُرΨͺΩƒΨ²)** | Directory of ~686 Arab-built products | https://mortakaz.com | +| **Ghaymah (ΨΊΩŠΩ…Ψ©)** | Arabic cloud platform (PaaS) | https://ghaymah.systems | +| **Ghaymah Dashboard** | Where you sign up and deploy | https://deploy.ghaymah.systems | + +## Time budget (60 min total) + +| Task | Folder | Budget | +|---|---|---| +| Read this README + set up | β€” | 5 min | +| Qabilah profile + ecosystem note | `common-qabilah/` | 8 min | +| Mortakaz discovery + integration proposal | `common-mortakaz/` | 10 min | +| Q1 β€” Cumin memory module design | `q1-cumin-memory/` | 15 min | +| Q2 β€” Arabic TTS or STT fine-tune plan | `q2-arabic-tts-stt/` | 15 min | +| Q3 β€” Ghaymah signup | `q3-ghaymah-signup/` | 5 min | +| Q4 β€” Deploy a static site on Ghaymah | `q4-static-site-deploy/` | 12 min | +| **Total** | | **β‰ˆ 60 min** | + +> ⏱️ Be honest about your time. A focused, complete 60-minute submission beats a half-finished 2-hour one. We look at commit timestamps. + +## Rules + +1. Work **inside this repo**. Each question has its own folder with a task description and an answer template. Fill in your answers **in place**. +2. Do not rename or move the question folders. +3. Never commit real credentials, tokens, or passwords β€” use placeholders like ``. +4. For Q4, commit your actual site source under `q4-static-site-deploy/site/`. +5. You may use any public resources (docs, model cards, papers, blogs) β€” cite them inline. + +## Repository structure + +``` +ghaymah-genai-exam/ +β”œβ”€β”€ README.md ← you are here +β”œβ”€β”€ common-qabilah/ +β”‚ └── qabilah-ecosystem.md ← task + answer template +β”œβ”€β”€ common-mortakaz/ +β”‚ └── mortakaz-discovery.md ← task + answer template +β”œβ”€β”€ q1-cumin-memory/ +β”‚ └── cumin-memory-module.md ← task + answer template +β”œβ”€β”€ q2-arabic-tts-stt/ +β”‚ └── arabic-tts-stt-finetune.md ← task + answer template +β”œβ”€β”€ q3-ghaymah-signup/ +β”‚ └── ghaymah-signup.md ← task + answer template +└── q4-static-site-deploy/ + β”œβ”€β”€ static-site-deploy.md ← task + answer template + └── site/ ← put your site files here + β”œβ”€β”€ index.html + └── style.css +``` + +## How to submit (GitPasha) + +1. Answer every question by editing the template files in place. +2. Commit as you go, not one big dump at the end: + ```bash + git add . && git commit -m "q1: memory module design" + ``` +3. `git push origin main` when done. +4. Verify on GitPasha that every file (including your Q4 site source) is present. + +## Scoring rubric + +| Question | Weight | What β€œexcellent” looks like | +|---|---|---| +| common-qabilah | 10% | Real profile URL + a note showing genuine exploration, not copy-paste | +| common-mortakaz | 15% | Two concrete products, technically-grounded integration with Ghaymah's AI stack, honest challenges | +| Q1 memory module | 30% | Clear memory taxonomy, concrete storage choices, sensible write/read policy, runnable pseudocode, Ghaymah integration | +| Q2 TTS/STT | 25% | Correct Arabic data/preprocessing/eval, realistic training config, deployable plan | +| Q3 signup | 5% | Confirmed signup + thoughtful platform observations | +| Q4 static site | 15% | A live URL that resolves + source committed + a short write-up | + +--- + +Good luck β€” and welcome to the tribe. πŸͺ diff --git a/common-mortakaz/mortakaz-discovery.md b/common-mortakaz/mortakaz-discovery.md new file mode 100644 index 0000000..ac09039 --- /dev/null +++ b/common-mortakaz/mortakaz-discovery.md @@ -0,0 +1,85 @@ +# Mortakaz (مُرΨͺΩƒΨ²) β€” Product Discovery & Ghaymah Integration + +⏱ **Budget: ~10 minutes** Β· Weight: 15% + +## The task + +[Mortakaz](https://mortakaz.com) is an Arabic platform for discovering technical products and creative ideas β€” it lists ~686 Arab-built projects. Your job: find AI/GenAI products on Mortakaz and reason about how they could run on **Ghaymah's** AI stack. + +Ghaymah (https://ghaymah.systems) publishes, among other things: + +- Ready-to-use **LLM models** (inference) +- **Vector store** + **embedding models** +- **GPU compute** and **container deployment** (Git-based auto-deploy) +- **Managed PostgreSQL** and object/block **storage** + +### Methodology + +1. Browse the live Mortakaz listing (most recent projects first). +2. Open individual product pages and read the description + live URL. +3. Pick **two** AI/GenAI products with a *genuine, identifiable* technical fit with Ghaymah's AI stack (not generic applicability). + +### For each product, write + +- **Product description** β€” what it does, who it's for, its maker. +- **Integration proposal** β€” which specific Ghaymah products it would use and how. +- **Added value for the end user** β€” why moving to (or building on) Ghaymah helps. +- **Potential challenges** β€” model quality, feature parity, migration effort, commercial readiness. Be honest. + +### Finally + +- State **which of the two is more viable** in the near term, and why (1–2 paragraphs). + +--- + +## ANSWER β€” Mortakaz + +### Proposal 1: `` + +- **Live product:** `` +- **Maker:** `` + +#### Product description + +> _write here_ + +#### Integration with ghaymah.systems + +> _write here β€” name the specific Ghaymah products used_ + +#### Added value for the end user + +> _write here_ + +#### Potential challenges + +> _write here_ + +--- + +### Proposal 2: `` + +- **Live product:** `` +- **Maker:** `` + +#### Product description + +> _write here_ + +#### Integration with ghaymah.systems + +> _write here_ + +#### Added value for the end user + +> _write here_ + +#### Potential challenges + +> _write here_ + +--- + +### Which integration is more viable (and why) + +> _write here β€” 1–2 paragraphs_ diff --git a/common-qabilah/qabilah-ecosystem.md b/common-qabilah/qabilah-ecosystem.md new file mode 100644 index 0000000..a5221c9 --- /dev/null +++ b/common-qabilah/qabilah-ecosystem.md @@ -0,0 +1,39 @@ +# Qabilah (Ω‚Ψ¨ΩŠΩ„Ψ©) β€” Ecosystem Introduction + +⏱ **Budget: ~8 minutes** Β· Weight: 10% + +## The task + +[Qabilah](https://qabilah.com) is an Arabic tech social & community platform β€” think of it as the Arabic-speaking tech community's home. Before you design agents for this ecosystem, you should know who lives in it. + +1. Go to https://qabilah.com and **create a profile** (if you don't already have one). Use a real name and a one-line bio about what you build. +2. Browse the feed / communities. Find **three Arabic AI or GenAI projects, people, or companies** that interest you. +3. Write a short note (150–250 words) answering: **what is Qabilah, and what role does it play in the Arabic tech ecosystem?** + +## What to submit + +Fill in the template below, in this file. Put your profile URL in section 1 and your note in section 2. + +--- + +## ANSWER β€” Qabilah + +### 1. My profile link + +``` +https://qabilah.com/profile//posts +``` + +### 2. Ecosystem note (150–250 words) + +> _Write here. What is Qabilah? What problem does it solve for Arabic-speaking builders? How does it connect people/projects/funding? You may write in Arabic or English._ + + + +### 3. Three Arabic AI projects / people I found + +| # | Name | What it does | Why it interested me | +|---|---|---|---| +| 1 | | | | +| 2 | | | | +| 3 | | | | diff --git a/q1-cumin-memory/cumin-memory-module.md b/q1-cumin-memory/cumin-memory-module.md new file mode 100644 index 0000000..189daa6 --- /dev/null +++ b/q1-cumin-memory/cumin-memory-module.md @@ -0,0 +1,87 @@ +# Q1 β€” Design a Memory Module for the Cumin Agent + +⏱ **Budget: ~15 minutes** Β· Weight: 30% + +## Context + +We build agents like **Cumin** β€” the AI agent that runs inside a compute sandbox. Today Cumin's runtime looks like this: + +| Primitive | Purpose | +|---|---| +| **Containers** | Persistent Linux shells for private work (data processing, analysis, conversion). They stay alive for a conversation. | +| **Functions** | Serverless HTTP endpoints for public things (APIs, dashboards, websites). | +| **Workspace (object store)** | Flat file storage β€” every file Cumin produces lives here. | +| **Skills** | Markdown files Cumin reads to remember *how* to do tasks (its current, rudimentary long-term memory). | +| **Secrets** | Key/value pairs for credentials/tokens. | + +**The gap:** Cumin has no real memory. Between turns it has to re-read its workspace files and skills from scratch. It forgets past conversations, past decisions, and past failures. There is no way to recall *"what did I learn last time I did this?"* + +## Your task + +Design a **memory module** for Cumin. Be concrete β€” we want to see storage choices, retrieval logic, and pseudocode, not hand-waving. Cover: + +1. **Memory taxonomy** β€” define at least: *working* (short-term), *episodic* (past tasks/conversations), *semantic* (facts & patterns), and *procedural* (how-to, i.e. the evolution of "skills"). For each: what it stores, an example, expected size, and retention/TTL. +2. **Storage backends** β€” map each memory type to a concrete store. Where possible, map to **Ghaymah** products (vector store + embeddings, managed PostgreSQL, object storage). +3. **Write policy** β€” when does the agent write to memory, and what does it write? +4. **Read / retrieval policy** β€” how does the agent decide what to recall, and with what ranking (e.g. recency + semantic similarity + metadata filters)? +5. **Memory API** β€” pseudocode for `save`, `recall`, `search`, and (optionally) `summarize`/`forget`. +6. **Agent-loop integration** β€” pseudocode showing where memory is read/written during a normal turn. +7. **Failure modes & mitigations** β€” memory poisoning, staleness, context overflow, leakage between users, etc. + +## Deliverable + +Fill in the template below. Pseudocode blocks should be runnable-in-spirit (correct Python-ish, not perfect). + +--- + +## ANSWER β€” Cumin Memory Module + +### 1. Memory taxonomy + +| Type | What it stores | Example | Approx. size | Retention / TTL | +|---|---|---|---|---| +| Working | | | | | +| Episodic | | | | | +| Semantic | | | | | +| Procedural | | | | | + +### 2. Storage backends (map to Ghaymah where possible) + +| Memory type | Backend | Ghaymah product | Why this choice | +|---|---|---|---| +| Working | | | | +| Episodic | | | | +| Semantic | | | | +| Procedural | | | | + +### 3. Write policy + +> _When and what does Cumin write? e.g. after every turn? on task completion? on error?_ + +### 4. Read / retrieval policy + +> _How does Cumin decide what to recall? Give a ranking/scoring approach._ + +### 5. Memory API (pseudocode) + +```python +# write your pseudocode here +``` + +### 6. Agent-loop integration (pseudocode) + +```python +# show a single Cumin turn: recall -> act -> write +``` + +### 7. Failure modes & mitigations + +| Failure mode | Mitigation | +|---|---| +| | | +| | | +| | | + +### 8. (Bonus) Compaction + +> _Over time, episodic memory grows unbounded. How do you summarize/compact it?_ diff --git a/q2-arabic-tts-stt/arabic-tts-stt-finetune.md b/q2-arabic-tts-stt/arabic-tts-stt-finetune.md new file mode 100644 index 0000000..3bac998 --- /dev/null +++ b/q2-arabic-tts-stt/arabic-tts-stt-finetune.md @@ -0,0 +1,57 @@ +# Q2 β€” Fine-tuning an Arabic TTS or STT + +⏱ **Budget: ~15 minutes** Β· Weight: 25% + +## Choose ONE option + +- **Option A β€” TTS.** Fine-tune an open Arabic (or multilingual) text-to-speech model β€” e.g. Coqui **XTTS-v2**, **VITS**, or **StyleTTS2** β€” on a single-speaker Arabic dataset. +- **Option B β€” STT.** Fine-tune **Whisper** (e.g. `whisper-small`, `large-v3`) on Arabic speech β€” e.g. Mozilla **Common Voice `ar`**, **MGB-2**, or a custom corpus. + +## Produce a runnable guide covering + +1. **Model & dataset choice** β€” justify it; cite dataset sizes, license, and dialect (MSA vs. Egyptian vs. Gulf vs. Maghrebi). +2. **Data preprocessing** β€” audio resampling/normalization, text normalization, and the Arabic-specific gotchas: **diacritization (ΨͺΨ΄ΩƒΩŠΩ„)**, letter variants (Ψ£/Ψ₯/Ψ’, Ψ©/Ω‡, Ω‰/ي), and (for STT) whether to strip diacritics before computing WER. Train/val split. +3. **Training setup** β€” framework (e.g. Hugging Face Trainer, Coqui TTS, NeMo), **LoRA vs. full fine-tune**, key hyperparameters (batch size, LR, epochs, warmup), hardware, and a rough time/cost estimate. +4. **Evaluation** β€” for STT: **WER/CER** (and how to compute them fairly for Arabic); for TTS: **MOS**, **speaker similarity (SECS)**, and using an ASR to measure intelligibility. Include the actual metric definitions/commands. +5. **Deployment on Ghaymah** β€” GPU sizing, container vs. function, serving stack, latency, and how the model is served behind an API. +6. **Risks & mitigations** β€” dialect coverage, hallucination, diacritic fidelity, MSA vs. dialect mismatch, data licensing. + +Include **real code snippets** (Python / Hugging Face / CLI). Cite sources inline. + +## Deliverable + +Fill in the template below. State clearly which option you chose. + +--- + +## ANSWER β€” Arabic TTS/STT Fine-tune + +**Option chosen:** A / B (delete one) + +### 1. Model & dataset choice + +> _write here_ + +### 2. Data preprocessing + +> _write here + code snippets_ + +### 3. Training setup + +> _write here + code/config snippets_ + +### 4. Evaluation + +> _write here + metric definitions/commands_ + +### 5. Deployment on Ghaymah + +> _write here_ + +### 6. Risks & mitigations + +| Risk | Mitigation | +|---|---| +| | | +| | | +| | | diff --git a/q3-ghaymah-signup/ghaymah-signup.md b/q3-ghaymah-signup/ghaymah-signup.md new file mode 100644 index 0000000..0b81bd7 --- /dev/null +++ b/q3-ghaymah-signup/ghaymah-signup.md @@ -0,0 +1,29 @@ +# Q3 β€” Sign up to Ghaymah + +⏱ **Budget: ~5 minutes** Β· Weight: 5% + +## The task + +1. Go to **https://deploy.ghaymah.systems** and create an account. +2. Spend a few minutes clicking around the dashboard. Note the main products and pricing you see. +3. **Never commit credentials.** If you take a screenshot, reference its filename β€” do not upload anything containing passwords/tokens. + +## ANSWER β€” Ghaymah signup + +### 1. Signed up? + +``` +Yes / No β€” +``` + +### 2. Products I observed + +> _list what the platform offers (compute, storage, databases, AI, etc.)_ + +### 3. Pricing observations + +> _note entry-tier pricing and billing currencies you noticed_ + +### 4. One thing that surprised me (or one thing I'd improve) + +> _write here_ diff --git a/q4-static-site-deploy/site/index.html b/q4-static-site-deploy/site/index.html new file mode 100644 index 0000000..51a856d --- /dev/null +++ b/q4-static-site-deploy/site/index.html @@ -0,0 +1,22 @@ + + + + + + Ω…Ψ±Ψ­Ψ¨Ψ§Ω‹ ΨΊΩŠΩ…Ψ© πŸ‘‹ + + + +
+

Ghaymah GenAI Interview β€” Q4

+

Ω…Ψ±Ψ­Ψ¨Ψ§Ω‹ΨŒ Ψ£Ω†Ψ§ Ψ§Ψ³Ω…Ωƒ Ω‡Ω†Ψ§

+

This is my static site, deployed on Ghaymah. Replace this text with your CV, your Q1 memory design, or anything you like.

+
+ Ω‚Ψ¨ΩŠΩ„Ψ© Qabilah + مُرΨͺΩƒΨ² Mortakaz + ΨΊΩŠΩ…Ψ© Ghaymah +
+ +
+ + diff --git a/q4-static-site-deploy/site/style.css b/q4-static-site-deploy/site/style.css new file mode 100644 index 0000000..3120953 --- /dev/null +++ b/q4-static-site-deploy/site/style.css @@ -0,0 +1,48 @@ +:root { + --ink: #1a2332; + --muted: #5b6675; + --accent: #0e9f8f; + --card: #ffffff; + --bg: linear-gradient(135deg, #f4f7fb 0%, #e8f1f2 100%); +} +* { box-sizing: border-box; } +body { + margin: 0; + min-height: 100vh; + display: grid; + place-items: center; + font-family: "Segoe UI", Tahoma, system-ui, sans-serif; + background: var(--bg); + color: var(--ink); +} +.card { + background: var(--card); + max-width: 620px; + margin: 2rem; + padding: 2.5rem 2.75rem; + border-radius: 18px; + box-shadow: 0 20px 60px rgba(20, 40, 60, 0.12); + text-align: center; +} +.eyebrow { + margin: 0 0 0.5rem; + font-size: 0.8rem; + letter-spacing: 0.14em; + text-transform: uppercase; + color: var(--accent); + font-weight: 700; +} +h1 { margin: 0.25rem 0 0.75rem; font-size: 2rem; line-height: 1.3; } +.highlight { color: var(--accent); } +.subtitle { color: var(--muted); line-height: 1.7; margin: 0 auto 1.75rem; max-width: 44ch; } +.badges { display: flex; gap: 0.5rem; justify-content: center; flex-wrap: wrap; margin-bottom: 1.75rem; } +.badge { + background: #eef6f5; + color: #0b7267; + border: 1px solid #d3e9e6; + padding: 0.4rem 0.9rem; + border-radius: 999px; + font-size: 0.85rem; + font-weight: 600; +} +.footer { color: var(--muted); font-size: 0.8rem; margin: 0; } diff --git a/q4-static-site-deploy/static-site-deploy.md b/q4-static-site-deploy/static-site-deploy.md new file mode 100644 index 0000000..5a4167c --- /dev/null +++ b/q4-static-site-deploy/static-site-deploy.md @@ -0,0 +1,36 @@ +# Q4 β€” Deploy a static website on Ghaymah + +⏱ **Budget: ~12 minutes** Β· Weight: 15% + +## The task + +1. **Build** a simple static website. It can be anything β€” suggestions: + - a "hello, Ghaymah" landing page, + - your personal CV / portfolio, + - a one-page summary of your **Q1 memory-module design**. +2. Put your source files under `site/` (there's a starter `index.html` + `style.css` you can replace or extend). +3. **Deploy** it to Ghaymah β€” either via static hosting / a storage block, or inside a container/function. Follow Ghaymah's flow for making the site public. +4. **Record the public URL** in the template below. +5. Write 2–4 sentences about how the deploy went. + +## ANSWER β€” Static site deploy + +### 1. What I built + +> _one line_ + +### 2. Live URL + +``` +https://.ghaymah.systems/ (or the URL Ghaymah gave you) +``` + +### 3. How I deployed (steps) + +1. +2. +3. + +### 4. What went well / what was hard + +> _write here_