Griot
The AI-assisted interviewer
Practice with or without AI.
Warm up
Spot a bug in AI-written code and explain why it is wrong. About two minutes.
Free, with no model setup
- RAG context rankingBuild RAG context from the highest-scoring passages without changing the input. Stop when the next passage exceeds the character budget.PythonJavaScript
- Agent step limitRun the investigation agent for at most max_steps iterations. Return its final answer, or raise an error when the budget runs out.PythonJavaScript
- Precision and recallReport precision and recall for the review batch. Use 0.0 when a denominator is zero.PythonJavaScript
- Drift score with an empty binCompare baseline and live histograms using PSI. Empty bins are valid and must produce a finite result.PythonJavaScript
- Forged source headerBuild a RAG payload with source IDs kept separate from uploaded text. Return JSON; document text must never create extra source records.PythonJavaScript
- Order lookupFetch a customer’s latest 100 orders by email using PostgreSQL. Treat the email as data, including apostrophes.PythonJavaScript
- Token checkVerify an API token against its stored SHA-256 digest with a constant-time comparison. Reject invalid input.Python
- Rendering a commentRender a ticket comment with a bold author and timestamp. Show user text literally; never interpret it as HTML.JavaScript
- PaginationReturn a page of support tickets, numbered from 1, without changing the input. Empty or out-of-range pages return no results.PythonJavaScript
- Average latencyShow the average API latency, rounded to one decimal. Return None when the reporting interval has no samples.PythonJavaScript
- Top scoresShow the highest numeric scores first, up to count results. Keep the original scores unchanged.JavaScript
- Stock lookupReturn a SKU’s stock quantity, including zero. Return "unknown" only when the inventory does not contain that SKU.PythonJavaScript
- Caption wrappingWrap a caption at whitespace without losing words. Keep lines within width, include the final line, and return no lines for empty text.PythonJavaScript
- Deduplicating eventsKeep the first delivery of each event ID, in arrival order. Later retries must not replace its payload.PythonJavaScript
- Merging settingsMerge request-specific retry settings without changing either input. One request’s overrides must not leak into later requests.Python
- Editor reducerUpdate the diagram editor’s items while preserving undo snapshots. Handle add, remove and clear without changing previous states.PythonJavaScript
- Optimistic concurrencyApply an editor change only when its expected version matches the current document. Reject conflicts without modifying the input.PythonJavaScript
- Rate limiterAllow at most limit requests per client in a rolling window. Drop expired entries; rejected requests must not consume another slot.PythonJavaScript
- Retrying a requestRetry connection failures with exponential backoff. Return success immediately, or raise the final error after the last attempt.Python
- Saving everythingSave every record before reporting success. Wait for all saves and reject if any fails; no transaction rollback is promised.JavaScript
- Loading a profileLoad a profile from the application API. Throw on HTTP errors instead of returning an error body as a profile.JavaScript
- Parsing portsParse comma-separated decimal ports such as "8080, 8081, 9000". Accept surrounding spaces and ports from 1 to 65535.JavaScript
- Daily active usersCount distinct users per UTC day from epoch-second events. Results must stay identical across server timezones.PythonJavaScript
- Month labelFormat a 1–12 billing month as an English label such as "March 2026". December must remain in the supplied year.JavaScript
- Splitting a billSplit an expense in cents without losing money. Shares must differ by at most one cent; give any remainder to earlier people.PythonJavaScript
- Percent changeCalculate percentage change from a positive starting value. A drop to zero is -100%; return the unrounded result.PythonJavaScript
How a Griot round works
- Read the task. Review the requirements before starting the timer.
- Code and verify. Use an AI assistant, inspect its changes, and run the checks.
- Explain your decisions. Handle a follow-up, then review feedback with evidence from your session.
Frequently asked questions
Do I need an API key?
No: the free in-browser model needs no key, and your own Claude, OpenAI or Gemini key gives a stronger assistant and full grading.
What does it cost?
The Video Analytics round and every drill are free; the other 36 rounds come with Pro. Model usage is billed by your provider.
Is using AI in practice cheating?
No: more companies now allow AI in interviews, and Griot grades how well you drive and check it.
How is it graded?
Griot reviews six skills using your checks, code changes, and explanations. You can inspect the evidence behind the feedback.
Is my code or key stored?
Both stay in your browser, and your key is sent only to your model provider, never to us.
Can I share my scorecard?
Yes, as a public link you can revoke any time, with the transcript only if you choose.