> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nekt.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Sponte BI as a data source

> Bring data from Sponte BI to Nekt.

Sponte BI is the Business Intelligence platform from Sponte, a school management system widely used by educational institutions in Brazil. It provides access to operational data about students, contracts, enrollments, courses, classes, employees, and leads, enabling schools and language centers to analyze their educational and administrative performance.

<img height="50" src="https://mintcdn.com/nekt/PfmSOLF_7pLakIWi/assets/logo/logo-sponte.jpeg?fit=max&auto=format&n=PfmSOLF_7pLakIWi&q=85&s=48bb3d528a17fe1301f35f4573e5331e" data-path="assets/logo/logo-sponte.jpeg" />

## Configuring Sponte BI as a Source

In the [Sources](https://app.nekt.ai/sources) tab, click on the "Add source" button located on the top right of your screen. Then, select the Sponte BI option from the list of connectors.

Click **Next** and you'll be prompted to add your access.

### 1. Add account access

You'll need to provide your Sponte BI API credentials to authenticate. The following configurations are required:

* **API Key**: The API key to authenticate against the Sponte BI API service. Contact Sponte support or your account representative to obtain your API key.

* **Sponte Client Code(s)**: The code(s) of your client(s) in Sponte BI. This is used to filter the data for your specific institution(s). You can provide multiple client codes if you need to sync data from multiple units or branches.

* **Start Date**: The earliest date from which records will be synced. Records created or updated after this date will be extracted.

Once you're done, click **Next**.

### 2. Select streams

Choose which data streams you want to sync. For faster extractions, select only the streams that are relevant to your analysis. You can select entire groups of streams or pick specific ones.

<Info>
  **Multiple Units**: If you manage multiple educational units, you can provide multiple Sponte Client Codes. Each stream will be created with a suffix containing the client code (e.g., `alunos_12345`) to distinguish data from different units.
</Info>

> Tip: The stream can be found more easily by typing its name.

Select the streams and click **Next**.

### 3. Configure data streams

Customize how you want your data to appear in your catalog. Select a name for each table (which will contain the fetched data) and the type of sync.

* **Table name**: we suggest a name, but feel free to customize it. You have the option to add a **prefix** and make this process faster!

* **Sync Type**: you can choose between INCREMENTAL and FULL\_TABLE.
  * Incremental: every time the extraction happens, we'll get only the new data - which is good if, for example, you want to keep every record ever fetched.
  * Full table: every time the extraction happens, we'll get the current state of the data - which is good if, for example, you don't want to have deleted data in your catalog.

Once you are done configuring, click **Next**.

### 4. Configure data source

Describe your data source for easy identification within your organization, not exceeding 140 characters.

To define your [Trigger](https://docs.nekt.com/runs/scheduling-and-triggers), consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times).

Optionally, you can determine when to execute a [full sync](https://docs.nekt.com/get-started/core-concepts/types-of-sync#additional-full-sync). This will complement the incremental data extractions, ensuring that your data is completely synchronized with your source every once in a while.

Once you are ready, click **Next** to finalize the setup.

### 5. Check your new source

You can view your new source on the [Sources](https://app.nekt.ai/sources) page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.

<Warning>For you to be able to see it on your [Catalog](https://app.nekt.ai/catalog), you need at least one successful source run.</Warning>

# Streams and Fields

Below you'll find all available data streams from Sponte BI and their corresponding fields:

<AccordionGroup>
  <Accordion title="Alunos (Students)">
    Stream containing student master data including personal information, contact details, and enrollment status.

    **Key Fields:**

    * `alunoID` - Unique student identifier
    * `nome` - Student's name
    * `numeroMatricula` - Enrollment number
    * `situacaoAluno` - Student status

    **Personal Information:**

    * `sexo` - Student's gender
    * `cpf` - CPF (Brazilian tax ID) of the student
    * `dataNascimento` - Birth date (ISO format)
    * `email` - Student's email address

    **Contact Information:**

    * `foneResidencial` - Residential phone
    * `foneCelular` - Cell phone

    **Address:**

    * `endereco` - Street address
    * `numeroEndereco` - Street number
    * `cep` - Postal code (CEP)
    * `cidade` - City
    * `bairro` - Neighborhood

    **Registration & Marketing:**

    * `dataCadastro` - Registration date (ISO format)
    * `midia` - Media source
    * `tipoContato` - Type of contact
    * `campanha` - Campaign
    * `motivoNaoFechamento` - Reason for not closing

    **Relationships:**

    * `responsavelDidaticoID` - Didactic responsible person's ID
    * `responsavelFinanceiroID` - Financial responsible person's ID
    * `funcionarioID` - Employee ID

    **Metadata:**

    * `dataExtracao` - Extraction datetime (ISO format)
    * `codCliSponte` - Sponte client code
    * `excluido` - Excluded flag (0 = active, 1 = excluded)
  </Accordion>

  <Accordion title="Alunos Fato (Active Students Fact)">
    Fact table containing active student data with contract and enrollment information. This stream provides a denormalized view of students with their current contract status.

    **Key Fields:**

    * `alunoID` - Unique student identifier
    * `situacaoAluno` - Student status
    * `numeroMatricula` - Enrollment number
    * `nome` - Student's name

    **Personal Information:**

    * `cpf` - CPF (Brazilian tax ID) of the student
    * `sexo` - Student's gender
    * `dataNascimento` - Birth date (ISO format)
    * `idade` - Student's age

    **Contact Information:**

    * `foneCelular` - Cell phone
    * `foneResidencial` - Residential phone
    * `email` - Student's email address

    **Address:**

    * `endereco` - Street address
    * `numeroEndereco` - Street number
    * `cep` - Postal code (CEP)
    * `cidade` - City
    * `estado` - State abbreviation
    * `bairro` - Neighborhood

    **Contract Information:**

    * `contratoID` - Contract ID
    * `dataContrato` - Contract datetime (ISO format)
    * `dataInicio` - Contract start date (ISO format)
    * `dataTermino` - Contract end date (ISO format)
    * `situacaoContrato` - Contract status
    * `tipoContrato` - Contract type
    * `contratoAulaLivre` - Free class contract flag

    **Course & Class Information:**

    * `curso` - Course name
    * `estagio` - Internship/level name
    * `idioma` - Language
    * `turma` - Class name
    * `escola` - School name
    * `lt` - LT flag or value

    **Metadata:**

    * `dataExtracao` - Extraction datetime (ISO format)
    * `codCliSponte` - Sponte client code
  </Accordion>

  <Accordion title="Contratos (Contracts)">
    Stream containing contract information linking students to courses and payment terms.

    **Key Fields:**

    * `contratoID` - Unique contract identifier
    * `numeroContrato` - Contract number
    * `situacaoContrato` - Contract status
    * `tipoContrato` - Contract type

    **Relationships:**

    * `alunoID` - Student ID
    * `responsavelID` - Responsible person ID
    * `funcionarioID` - Employee ID who created the contract
    * `turmaID` - Class ID

    **Dates:**

    * `dataContrato` - Contract creation datetime (ISO format)
    * `dataInicio` - Contract start date (ISO format)
    * `dataTermino` - Contract end date (ISO format)

    **Status Information:**

    * `motivoCancelamento` - Cancellation reason
    * `motivoDesistencia` - Withdrawal reason
    * `contratoAulaLivre` - Free class contract flag

    **Metadata:**

    * `dataExtracao` - Extraction datetime (ISO format)
    * `codCliSponte` - Sponte client code
    * `excluido` - Excluded flag (0 = active, 1 = excluded)
  </Accordion>

  <Accordion title="Contratos Turmas Estágios (Contract-Class-Level Relationships)">
    Stream containing the relationship between contracts, classes, and course levels (estágios). This is a junction table linking contracts to specific class enrollments.

    **Key Fields:**

    * `contratoTurmaID` - Unique contract-class relationship identifier
    * `contratoID` - Contract ID
    * `situacaoEstagio` - Internship/level status

    **Relationships:**

    * `cursoID` - Course ID
    * `estagioID` - Internship/level (estágio) ID
    * `turmaID` - Class ID

    **Dates:**

    * `dataMatricula` - Registration date (ISO format)
    * `inicioAtividades` - Activity start date (ISO format)

    **Flags:**

    * `contratoAulaLivre` - Free class contract flag

    **Metadata:**

    * `dataExtracao` - Extraction datetime (ISO format)
    * `codCliSponte` - Sponte client code
    * `excluido` - Excluded flag (0 = active, 1 = excluded)
  </Accordion>

  <Accordion title="Cursos (Courses)">
    Stream containing course master data.

    **Key Fields:**

    * `cursoID` - Unique course identifier
    * `nome` - Course name
    * `sigla` - Course acronym/symbol

    **Status:**

    * `ativo` - Active flag (0 = inactive, 1 = active)

    **Metadata:**

    * `dataExtracao` - Extraction datetime (ISO format)
    * `codCliSponte` - Sponte client code
    * `excluido` - Excluded flag (0 = active, 1 = excluded)
  </Accordion>

  <Accordion title="Estágios (Levels/Stages)">
    Stream containing course levels or stages (estágios) data. In the context of language schools, this typically represents proficiency levels (e.g., Basic, Intermediate, Advanced).

    **Key Fields:**

    * `estagioID` - Unique level/stage identifier
    * `nome` - Level/stage name
    * `idioma` - Language

    **Relationships:**

    * `cursoID` - Course ID
    * `estagioFranqueadorID` - Franchisor level/stage ID

    **Status:**

    * `ativo` - Active flag (0 = inactive, 1 = active)

    **Metadata:**

    * `dataExtracao` - Extraction datetime (ISO format)
    * `codCliSponte` - Sponte client code
    * `excluido` - Excluded flag (0 = active, 1 = excluded)
  </Accordion>

  <Accordion title="Funcionários (Employees)">
    Stream containing employee master data including teachers, staff, and consultants.

    **Key Fields:**

    * `funcionarioID` - Unique employee identifier
    * `nome` - Short name
    * `nomeCompleto` - Full name
    * `cargo` - Position/role

    **Personal Information:**

    * `sexo` - Gender
    * `cpf` - CPF (Brazilian tax ID)
    * `rg` - RG (Brazilian ID number)
    * `carteiraProfissional` - Professional document
    * `dataNascimento` - Birth date (ISO format)
    * `estadoCivil` - Marital status

    **Contact Information:**

    * `email` - Email address
    * `foneCelular` - Mobile phone
    * `foneResidencial` - Home phone

    **Address:**

    * `endereco` - Address
    * `numeroEndereco` - Address number
    * `cep` - Postal code (CEP)
    * `cidade` - City
    * `bairro` - Neighborhood

    **Employment Information:**

    * `dataAdmissao` - Admission date (ISO format)
    * `dataDemissao` - Dismissal date (ISO format)
    * `salario` - Salary
    * `dataCadastro` - Registration date (ISO format)

    **Role Flags:**

    * `professor` - Professor flag (0 = no, 1 = yes)
    * `professorAulasLivres` - Free class professor flag
    * `atendente` - Attendant flag
    * `consultor` - Consultant flag
    * `gestorComercial` - Commercial manager flag

    **Status:**

    * `ativo` - Active flag (0 = inactive, 1 = active)

    **Metadata:**

    * `dataExtracao` - Extraction datetime (ISO format)
    * `codCliSponte` - Sponte client code
    * `excluido` - Excluded flag (0 = active, 1 = excluded)
  </Accordion>

  <Accordion title="Leads">
    Stream containing lead data for prospective students, including marketing attribution information.

    **Key Fields:**

    * `integracaoLeadsCcaaID` - Unique lead integration identifier
    * `alunoID` - Student ID (if converted)
    * `aluno` - Student name
    * `situacaoAtual` - Current situation/status

    **Contact Information:**

    * `nome` - Branch or unit name
    * `email` - Email address

    **Marketing Attribution:**

    * `fonteDoLead` - Lead source
    * `canal` - Acquisition channel
    * `veiculo` - Vehicle/medium
    * `outroVeiculo` - Other vehicle
    * `formato` - Format
    * `googleClickID` - Google Click ID (GCLID)
    * `campanha` - Campaign
    * `criativo` - Creative
    * `segmento` - Segment

    **Course Interest:**

    * `curso` - Course of interest
    * `idioma` - Language of interest
    * `turno` - Preferred shift
    * `nivel` - Level
    * `tipoLead` - Lead type

    **Request Information:**

    * `codSolicitacao` - Request code
    * `dataInclusao` - Inclusion datetime

    **Metadata:**

    * `dataExtracao` - Extraction datetime (ISO format)
    * `cadun` - Unified Cadastro Number (cadun)
    * `codCliSponte` - Sponte client code
    * `excluido` - Excluded flag (0 = active, 1 = excluded)
  </Accordion>

  <Accordion title="Matrículas (Enrollments)">
    Comprehensive enrollment stream that combines student, contract, class, and course information in a single denormalized view. This is useful for enrollment analysis and reporting.

    **Key Fields:**

    * `contratoTurmaID` - Unique class contract identifier
    * `situacaoEstagio` - Internship/level status
    * `dataMatricula` - Enrollment date
    * `inicioAtividades` - Activity start date

    **Student Information:**

    * `alunoID` - Student ID
    * `nome` - Student name
    * `cpf` - Student CPF
    * `dataNascimento` - Birth date (ISO format)
    * `foneCelular` - Mobile phone
    * `foneResidencial` - Home phone
    * `email` - Email address
    * `sexo` - Gender
    * `situacaoAluno` - Student status
    * `funcionarioIDAluno` - Student employee ID

    **Student Address:**

    * `endereco` - Address
    * `numeroEndereco` - Address number
    * `cidade` - City
    * `bairro` - Neighborhood
    * `cep` - Postal code (CEP)

    **Responsible Persons:**

    * `responsavelDidaticoID` - Didactic responsible ID
    * `responsavelFinanceiroID` - Financial responsible ID

    **Lead Information:**

    * `integracaoLeadsCcaaID` - Lead integration ID
    * `codSolicitacao` - Request code

    **Course Information:**

    * `cursoID` - Course ID
    * `curso` - Course name
    * `estagioID` - Internship/level ID
    * `estagio` - Internship/level name
    * `contratoAulaLivre` - Free class contract flag

    **Contract Information:**

    * `contratoID` - Contract ID
    * `dataContrato` - Contract datetime (ISO format)
    * `situacaoContrato` - Contract status
    * `tipoContrato` - Contract type
    * `dataInicio` - Contract start date (ISO format)
    * `dataTermino` - Contract end date (ISO format)
    * `funcionarioIDContrato` - Contract employee ID

    **Class Information:**

    * `turmaID` - Class ID
    * `turma` - Class name
    * `ano` - Year
    * `semestre` - Semester
    * `dataInicioTurma` - Class start date (ISO format)
    * `dataTerminoTurma` - Class end date (ISO format)
    * `situacaoTurma` - Class status

    **Metadata:**

    * `dataExtracao` - Extraction datetime (ISO format)
    * `codCliSponte` - Sponte client code
  </Accordion>

  <Accordion title="Responsáveis (Guardians/Responsible Persons)">
    Stream containing data about responsible persons (parents, guardians) linked to students.

    **Key Fields:**

    * `responsavelID` - Unique responsible person identifier
    * `nome` - Responsible person's name

    **Personal Information:**

    * `sexo` - Responsible person's gender
    * `cpf` - CPF (Brazilian tax ID)
    * `dataNascimento` - Birth date (ISO format)
    * `profissao` - Profession

    **Contact Information:**

    * `email` - Email address
    * `foneResidencial` - Residential phone
    * `foneCelular` - Cell phone
    * `foneComercial` - Commercial/work phone

    **Address:**

    * `endereco` - Street address
    * `numeroEndereco` - Street number
    * `cep` - Postal code (CEP)
    * `cidade` - City
    * `bairro` - Neighborhood

    **Metadata:**

    * `dataExtracao` - Extraction datetime (ISO format)
    * `codCliSponte` - Sponte client code
    * `excluido` - Excluded flag (0 = active, 1 = excluded)
  </Accordion>

  <Accordion title="Turmas (Classes)">
    Stream containing class master data including scheduling and capacity information.

    **Key Fields:**

    * `turmaID` - Unique class identifier
    * `nome` - Class name
    * `situacaoTurma` - Class status

    **Scheduling:**

    * `dataInicio` - Start date (ISO format)
    * `dataTermino` - End date (ISO format)
    * `semestre` - Semester
    * `ano` - Year
    * `modalidade` - Modality (e.g., in-person, online)

    **Relationships:**

    * `cursoID` - Course ID
    * `estagioID` - Internship/level (estágio) ID
    * `funcionarioID` - Employee/teacher ID

    **Capacity:**

    * `numeroAlunos` - Number of students enrolled

    **Flags:**

    * `turmaAulaLivre` - Free class flag

    **Metadata:**

    * `dataExtracao` - Extraction datetime (ISO format)
    * `codCliSponte` - Sponte client code
    * `excluido` - Excluded flag (0 = active, 1 = excluded)
  </Accordion>
</AccordionGroup>

## Implementation Notes

### Multi-Unit Support

Each stream will be created with a suffix containing the client code. For example, if you have client codes `12345` and `67890`, you'll see streams like:

* `alunos_12345`
* `alunos_67890`
* `contratos_12345`
* `contratos_67890`

This allows you to consolidate data from multiple units while keeping them identifiable.

### Data Freshness

All streams support incremental sync using the `dataExtracao` (extraction datetime) field. This means that on subsequent extractions, only records that have been created or modified since the last extraction will be synced.

### Soft Deletes

Most streams include an `excluido` (excluded) field that indicates whether a record has been soft-deleted in the source system:

* `0` = Active record
* `1` = Excluded/deleted record

Consider filtering by this field in your transformations if you only want to analyze active records.

## Skills for agents

<Snippet file="agent-skills-intro.mdx" />

<Card title="Download Sponte BI skills file" icon="wand-magic-sparkles" href="/sources/sponte-bi.md">
  Sponte BI connector documentation as plain markdown, for use in AI agent contexts.
</Card>
