1
0

Initial exam template: Ghaymah GenAI Engineer (60 min)

هذا الالتزام موجود في:
Ghaymah
2026-08-31 06:44:45 +00:00
التزام 08cb1ef544
9 ملفات معدلة مع 510 إضافات و0 حذوفات

107
README.md Normal file
عرض الملف

@@ -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 `<REDACTED>`.
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. 🐪

عرض الملف

@@ -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 (12 paragraphs).
---
## ANSWER — Mortakaz
### Proposal 1: `<product name>`
- **Live product:** `<url>`
- **Maker:** `<name>`
#### 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: `<product name>`
- **Live product:** `<url>`
- **Maker:** `<name>`
#### 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 — 12 paragraphs_

عرض الملف

@@ -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 (150250 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/<your-handle>/posts
```
### 2. Ecosystem note (150250 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._
<!-- replace with your note -->
### 3. Three Arabic AI projects / people I found
| # | Name | What it does | Why it interested me |
|---|---|---|---|
| 1 | | | |
| 2 | | | |
| 3 | | | |

عرض الملف

@@ -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?_

عرض الملف

@@ -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 |
|---|---|
| | |
| | |
| | |

عرض الملف

@@ -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 — <date>
```
### 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_

عرض الملف

@@ -0,0 +1,22 @@
<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>مرحباً غيمة 👋</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<main class="card">
<p class="eyebrow">Ghaymah GenAI Interview — Q4</p>
<h1>مرحباً، أنا <span class="highlight">اسمك هنا</span></h1>
<p class="subtitle">This is my static site, deployed on <strong>Ghaymah</strong>. Replace this text with your CV, your Q1 memory design, or anything you like.</p>
<div class="badges">
<span class="badge">قبيلة Qabilah</span>
<span class="badge">مُرتكز Mortakaz</span>
<span class="badge">غيمة Ghaymah</span>
</div>
<p class="footer">Built in ~10 minutes · Deployed on deploy.ghaymah.systems</p>
</main>
</body>
</html>

عرض الملف

@@ -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; }

عرض الملف

@@ -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 24 sentences about how the deploy went.
## ANSWER — Static site deploy
### 1. What I built
> _one line_
### 2. Live URL
```
https://<your-site>.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_