Education · AI agent

AI assistant for coordinators

Coordinators and educators ask in plain language and get auditable numbers, with a stated date range, no personal data exposed and no invented causes.

UsageWidely used
EffortMedium
ForSchools, colleges and digital product creators who want coordinators and educators to query the data without going through the BI team.
Source

Curated tables per domain and context documents

Rule

Response protocol, domain document and playbook

Outcome

Answer with number, date range and last load

Activation

Assistant via MCP, internal app and report on request

What it solves

  • Each coordinator asks their assistant and gets the same number a colleague got for the same question.
  • The assistant says how current the data is and what the dataset cannot answer, instead of filling the gap with a guess.
  • Student, guardian and buyer data stays inside the query: the answer comes out aggregated.

Business questions it answers

Ask your agent these questions once the case is live.

How were this month's sales compared with last month and with the same month last year?
How many new enrollments did we make in this period, and how many are still active?
How many prospects for a given level are in progress in the CRM?
How current are these numbers?
What weighed more in this month's drop: volume or ticket?
What can the current dataset not tell me about this result?

What you need

  • Curated tables in Nekt for each domain (enrollment, sales, media, scheduling), with stable column names
  • An owner who writes and maintains the context documents and the check numbers
  • A decision on who can see what: which tables each agent profile reads

What you get

  • A response protocol that applies to every question
  • Domain documents with definitions, measured check numbers and limits
  • Playbooks that fix the structure of recurring reports
  • An entry index that tells the agent which documents to read

Where to activate

Assistant via MCP

Each coordinator uses their own Claude with the protocol and the documents for their scope.

Internal app with assistant

An app for educators that queries only the curated tables and returns aggregates.

Report on request

How were sales generates the page or document in the playbook format.

Ready to build?

No new modeling is needed if the curated tables already exist. The work is writing, measuring and maintaining the documents. The detailed view has the business rules, the pitfalls and the acceptance test. Or send everything straight to your agent with the Nekt MCP.

The problem

Coordinators and educators ask the assistant about enrollments, sales and the funnel, and the assistant answers with the first number the query returns. It adds up rows from different snapshots, calls a prospect a student, fills in incomplete series and explains a drop with a cause that is not in any table. Two people ask the same question and get different numbers.

How it is usually done, and the rule

Each row is a mistake that already happened in practice.

The common wayThe rule
01
Going straight to SQL with the table name that looks right.
Context before SQL

Fixed working order: fetch the semantic context using the user's original question, read the returned documents, check the table's last load, and only then generate and run the query. At the end, check the order of magnitude against the reference numbers in the domain document before delivering.

02
A single document mixing column definitions, counting rules and report format.
Three document types, each with its own role

The protocol says how to answer (number rules, what not to invent, format). The domain document says how to calculate each metric. The playbook says what to build and in what order. In a conflict, the domain document wins on calculation and the protocol wins on form. Also separate operational rules (which table, which date, how to count) from semantics (what each column means), and never carry the meaning of one table over to another without a written rule.

03
Letting the agent pick documents through semantic search alone.
An entry index with Read when

Keep a root document that lists each document with a Read when line (topic and words in the request). The agent reads every one that matches; chained metrics are read together (a ROAS question also reads media and revenue). If no document covers the request, the agent says so instead of improvising. Every new or renamed document updates the index in the same task.

04
Estimating the current month or comparing today against the dashboard.
Numbers only from the query, always with a date range

Never fill in a number that did not come from the query, and never complete or round a series. Null means absence and is reported as absence. Every time-based answer states the start date, end date and last load date (MAX of the date column). The current day is partial: compare only closed days and say so.

05
Reporting +1,775% on a base of R$ 20 thousand.
A small base invalidates percentages

When the comparison period is zero, negative or less than a quarter of the current value, write low base and show the change in reais. Every relevant change carries the amount in reais alongside the percentage. Changes in rates are given in percentage points. Do not add percentages or averages across rows: recompute the ratio from the totals.

06
The drop came from lower team productivity.
Point to the fact, never the cause

Breaking down is analysis: volume versus ticket, which group or campus explains the change in reais. Explaining why it dropped or recommending action, with no productivity, target or budget data in the dataset, is invention. Close with the list of what the current dataset does not answer. When the month drops against the previous one and rises against last year, show both comparisons and do not pick one.

07
Answering 18 new enrollments because 2 have already canceled.
An event is a cohort that does not shrink

An event question (how many new enrollments between A and B) uses the event date and the whole end date, not midnight. The historical cohort does not change afterward: if 20 joined and 2 canceled, there were 20 new enrollments; the current status (18 active, 2 canceled) comes separately, from the most recent status of the same enrollment. A position question (how many were enrolled on D) uses a single snapshot.

08
Returning the list of buyers with email when the question was how many bought.
People only on request, and capped

By default, answer with counts and sums. List people only when the person asking requests it, with the columns the question needs and up to 50 rows. In coordinator and media agents, email, name, phone and ID number stay inside the query only (to match sources) and never appear in the answer. A CRM contact may be a guardian, a prospect or a family member.

09
Trying another raw table when the curated one does not have the answer.
Curated access and refusal with a pointer

Coordinator agents read only a curated set of tables, cited by full name in the document. An access error outside that set is the scope working: the agent replies that it is outside its access and says where it lives (dashboard, spreadsheet, another owner), without requesting new permissions. Each document includes a What this source does not answer and where to look table.

10
Each coordinator gets a different date range for How were sales.
Same criteria for every user

The same question uses the same calculation for any person, conversation or dashboard. Filters follow this priority: those explicit in the current question, those clearly carried over in the conversation, those active on the dashboard, the document's default rules. A recurring report follows the playbook: an executive summary of up to five lines before any table, the month compared with the previous month and the same month last year always together, year to date, breakdowns and a methodology footer. The medium changes (page, document, markdown), not the structure.

Which document handles what

Every question goes through all three, in this order of precedence.

Entry indexWhich documents to readRead when: <subject>
Response protocolHow to answerwins on form
Domain documentHow to calculatewins on calculation
PlaybookWhat to build and in what ordergoverns structure
Table semanticsWhat each column meansnever becomes a counting rule
Allowed tables listWhat the agent can readfull name

Definitions

Last load
the latest date in the date column of the queried table, run before the answer and written into it
Date range
start date and end date, inclusive, plus the last load date; closed days by default
Report windows
Month = last closed month; MoM = previous month; YoY = same month last year; YTD = January 1 through the end of the month against the same span last year
Low base
a comparison period that is zero, negative or less than a quarter of the current value; the change in reais is shown instead of the percentage
Rate change
the difference in percentage points between the two rates, recomputed from the totals
Entry cohort
distinct people with the event (enrollment, sale, sign-up) within the period; does not change with later status
Current cohort status
the most recent available status of each item in the cohort, shown separately from the historical total
Check number
a value measured with date and time for a closed month, written in the document, that the agent must reproduce

Pitfalls that already happened

Invented cause

The assistant explained a drop in sales by lower team productivity and suggested prioritizing conversion, on a dataset that only had sales, cancellations and sign-ups.

Write in the protocol what the dataset does not have and require the list of what the data does not answer.

Percentage on almost nothing

Campus and consultant rankings showed four-digit changes on tiny bases, and those names went to the top of the summary.

Low base rule and sorting by absolute change in reais.

The cohort shrank

The question was how many new enrollments there were, and the agent filtered on today's active status, leaving out those who canceled later.

Cohort by event in the period; current status in a separate block.

Last day cut off

The period up to the 31st became the 31st at 00:00, and every enrollment from that day was left out.

Compare by date, with the end date inclusive.

A lead that is not a lead

In the scheduling tool, a lead was someone who booked a call. The agent presented that number as Leads and MQL, which in that company came from another source outside the database.

Name each concept after its source and write in the document what it is not.

Old address in the document

After restricting coordinators' access to a curated set, documents still cited the old tables and the agent hit an access error on every question.

Update the full names on the same day as the change and treat access errors as out of scope.

Acceptance test

The case is done when every item passes.

Agent package

Paste into Claude, ChatGPT or any client with the Nekt MCP connected.

Full Markdown
Assistant response protocol
- Always: fetch the semantic context using the original question before any SQL; read the returned documents; if there is a playbook for the deliverable, it governs the structure.
- Run MAX(<date column>) and state the last load in every answer with a time range. The current day is partial: compare only closed days.
- Check the order of magnitude against the reference numbers in the domain document before delivering.
- Precedence: the domain document wins on calculation; this protocol wins on form. Explicit user question > operational rules > table semantics.
- Never fill in a number that did not come from the query. Null means absence, not zero.
- Comparison base zero, negative or less than a quarter of the current value: write low base and show the change in reais. Rate changes in percentage points. Do not add percentages or averages across rows.
- Point to the fact, never the cause. Do not recommend action. Close with what the dataset does not answer. If MoM and YoY disagree, show both.
- Events use the event date, with the end date inclusive. The historical cohort does not shrink with later cancellations; current status comes separately.
- Answer with counts and sums. List people only when asked, with the necessary columns and up to 50 rows. In coordinator agents, never list email, name, phone or ID number.
- Read only the tables listed by full name. An access error outside them = out of scope: say where the answer lives, without requesting access.
- Filters: current question > conversation context > dashboard filters > document default.
- Sales report with no specified content: follow the playbook (executive summary, month with MoM and YoY, YTD, year trajectory, breakdowns, rankings by change in reais, interpretation and methodology).
- Values in pt-BR format, no emoji, footer with source and last load.
Client-specific exceptions:
- <client>: the coordinators' agent reads only <curated set>; targets live in the <dashboard> and are not in the database.
- <client>: <tool concept> is not <official metric>; the official metric comes from <source> and is not in the database.
- <client>: check number for the reference month: <metric> = <value> in <closed month>.

Variations

Handoff by source

One document per source (sales, media, scheduling) and one that crosses sources, each with a section for the agent.

Scope by profile

Different agents for coordination, paid traffic and leadership, with different table lists.

Educators and CRM

Questions about prospects and stages answered as CRM analysis, never as enrollment.