{
  "schemaVersion": 1,
  "id": "entrevistas",
  "title": "Entrevistas",
  "version": "2026-10-12.eb865134",
  "language": "pt-BR",
  "license": "MIT",
  "source": "https://github.com/flaviojmendes/trilhainfo/tree/main/src/roadmaps",
  "audience": "Para quem já construiu um projeto e vai participar de processos seletivos.",
  "outcome": "Uma apresentação de projeto, uma simulação com feedback e um plano para corrigir lacunas.",
  "stages": [
    {
      "id": "entrevistas.prepare-se-para-uma-vaga-concreta",
      "title": "Prepare-se para uma vaga concreta",
      "description": "Esta trilha complementa uma carreira. Comece depois de construir um projeto; adapte a preparação ao nível e ao formato do processo seletivo.",
      "optional": false,
      "kind": "study",
      "groupIds": [
        "entrevistas.curriculo-vaga-e-apresentacao",
        "aiLearning.seu-assistente-de-estudos"
      ]
    },
    {
      "id": "entrevistas.exercicios-proximos-ao-trabalho",
      "title": "Exercícios próximos ao trabalho",
      "description": "",
      "optional": false,
      "kind": "study",
      "groupIds": [
        "entrevistas.codigo-depuracao-e-revisao",
        "entrevistas.http-dados-e-seguranca"
      ]
    },
    {
      "id": "entrevistas.algoritmos-essenciais",
      "title": "Algoritmos essenciais",
      "description": "Estude conforme o processo pedir. Problemas de produto e código legível também fazem parte da preparação.",
      "optional": false,
      "kind": "study",
      "groupIds": [
        "entrevistas.arrays-mapas-e-complexidade",
        "entrevistas.raciocinio-e-comunicacao"
      ]
    },
    {
      "id": "aiLearning.ia-prompting-e-contexto",
      "title": "IA: prompting e contexto",
      "description": "Depois dos primeiros fundamentos, pratique transformar uma dúvida em uma tarefa verificável. Use uma ferramenta por vez.",
      "optional": false,
      "kind": "ai",
      "groupIds": [
        "aiLearning.prompts-para-aprender-e-construir",
        "aiLearning.contexto-util-e-dados-protegidos"
      ]
    },
    {
      "id": "aiLearning.ia-simulacao-e-feedback",
      "title": "IA: simulação e feedback",
      "description": "Use a ferramenta para praticar antes do processo. Durante uma avaliação real, siga as regras comunicadas pela equipe.",
      "optional": false,
      "kind": "ai",
      "groupIds": [
        "aiLearning.treine-explicacao-e-raciocinio"
      ]
    },
    {
      "id": "entrevistas.entrevista-simulada.stage",
      "title": "Projeto: Entrevista simulada",
      "description": "Construa antes de avançar. Registre as decisões e peça uma revisão.",
      "optional": false,
      "kind": "project",
      "groupIds": [
        "entrevistas.entrevista-simulada"
      ]
    },
    {
      "id": "entrevistas.preparacao-por-especialidade",
      "title": "Preparação por especialidade",
      "description": "",
      "optional": false,
      "kind": "study",
      "groupIds": [
        "entrevistas.revise-a-carreira-escolhida",
        "curriculum.ia-no-fluxo-de-trabalho"
      ]
    },
    {
      "id": "entrevistas.processo-seletivo-e-acompanhamento",
      "title": "Processo seletivo e acompanhamento",
      "description": "",
      "optional": false,
      "kind": "study",
      "groupIds": [
        "entrevistas.desafio-tecnico-e-conversa-com-a-equipe"
      ]
    },
    {
      "id": "entrevistas.aprofundamento-conforme-o-processo",
      "title": "Aprofundamento conforme o processo",
      "description": "Árvores, grafos e system design distribuído são úteis em processos específicos. Não trate sharding e todas as ordenações como pré-requisitos universais para vagas júnior.",
      "optional": false,
      "kind": "study",
      "groupIds": [
        "entrevistas.estruturas-e-design-de-sistemas"
      ]
    }
  ],
  "groups": {
    "entrevistas.curriculo-vaga-e-apresentacao": {
      "id": "entrevistas.curriculo-vaga-e-apresentacao",
      "title": "Currículo, vaga e apresentação",
      "description": "Compare requisitos recorrentes de vagas de entrada. Descreva projetos e contribuições com evidências, prepare uma demonstração e exemplos de colaboração, aprendizado e resolução de problemas.",
      "stageId": "entrevistas.prepare-se-para-uma-vaga-concreta",
      "requiredIds": [
        "entrevistas.curriculo-vaga-e-apresentacao.basics",
        "entrevistas.curriculo-vaga-e-apresentacao.practice"
      ],
      "variants": {
        "simple": {
          "summary": "Comece por uma referência de Currículo, vaga e apresentação e faça a prática essencial.",
          "stepIds": [
            "entrevistas.curriculo-vaga-e-apresentacao.basics",
            "entrevistas.curriculo-vaga-e-apresentacao.practice"
          ]
        },
        "standard": {
          "summary": "Compare requisitos recorrentes de vagas de entrada. Descreva projetos e contribuições com evidências, prepare uma demonstração e exemplos de colaboração, aprendizado e resolução de problemas.",
          "stepIds": [
            "entrevistas.curriculo-vaga-e-apresentacao.basics",
            "entrevistas.curriculo-vaga-e-apresentacao.practice"
          ]
        },
        "deep": {
          "summary": "Aprofunde Currículo, vaga e apresentação comparando soluções e demonstrando suas decisões.",
          "stepIds": [
            "entrevistas.curriculo-vaga-e-apresentacao.basics",
            "entrevistas.curriculo-vaga-e-apresentacao.practice",
            "entrevistas.curriculo-vaga-e-apresentacao.deepening"
          ]
        }
      }
    },
    "aiLearning.seu-assistente-de-estudos": {
      "id": "aiLearning.seu-assistente-de-estudos",
      "title": "Seu assistente de estudos",
      "description": "Aprenda programação e uso de IA em paralelo. Escolha uma ferramenta a que já tenha acesso; os exercícios também funcionam em um chat, compartilhando trechos pequenos. Documentação gratuita não significa serviço gratuito: consulte os limites da sua conta. Você não precisa assinar nem dominar três ferramentas.",
      "stageId": "entrevistas.prepare-se-para-uma-vaga-concreta",
      "ai": "focused",
      "requiredIds": [
        "aiLearning.escolha-uma-ferramenta",
        "aiLearning.pratique-tutoria"
      ],
      "variants": {
        "simple": {
          "summary": "Comece por uma referência de Seu assistente de estudos e faça a prática essencial.",
          "stepIds": [
            "aiLearning.escolha-uma-ferramenta",
            "aiLearning.pratique-tutoria"
          ]
        },
        "standard": {
          "summary": "Aprenda programação e uso de IA em paralelo. Escolha uma ferramenta a que já tenha acesso; os exercícios também funcionam em um chat, compartilhando trechos pequenos. Documentação gratuita não significa serviço gratuito: consulte os limites da sua conta. Você não precisa assinar nem dominar três ferramentas.",
          "stepIds": [
            "aiLearning.escolha-uma-ferramenta",
            "aiLearning.pratique-tutoria"
          ]
        },
        "deep": {
          "summary": "Aprofunde Seu assistente de estudos comparando soluções e demonstrando suas decisões.",
          "stepIds": [
            "aiLearning.escolha-uma-ferramenta",
            "aiLearning.pratique-tutoria",
            "aiLearning.seu-assistente-de-estudos.deepening"
          ]
        }
      }
    },
    "entrevistas.codigo-depuracao-e-revisao": {
      "id": "entrevistas.codigo-depuracao-e-revisao",
      "title": "Código, depuração e revisão",
      "description": "Pratique ler código, investigar erros, implementar uma pequena mudança e escrever testes. Explique hipóteses e pergunte sobre requisitos antes de codificar.",
      "stageId": "entrevistas.exercicios-proximos-ao-trabalho",
      "requiredIds": [
        "entrevistas.codigo-depuracao-e-revisao.basics",
        "entrevistas.codigo-depuracao-e-revisao.practice"
      ],
      "variants": {
        "simple": {
          "summary": "Comece por uma referência de Código, depuração e revisão e faça a prática essencial.",
          "stepIds": [
            "entrevistas.codigo-depuracao-e-revisao.basics",
            "entrevistas.codigo-depuracao-e-revisao.practice"
          ]
        },
        "standard": {
          "summary": "Pratique ler código, investigar erros, implementar uma pequena mudança e escrever testes. Explique hipóteses e pergunte sobre requisitos antes de codificar.",
          "stepIds": [
            "entrevistas.codigo-depuracao-e-revisao.basics",
            "entrevistas.codigo-depuracao-e-revisao.practice"
          ]
        },
        "deep": {
          "summary": "Aprofunde Código, depuração e revisão comparando soluções e demonstrando suas decisões.",
          "stepIds": [
            "entrevistas.codigo-depuracao-e-revisao.basics",
            "entrevistas.codigo-depuracao-e-revisao.practice",
            "entrevistas.codigo-depuracao-e-revisao.deepening"
          ]
        }
      }
    },
    "entrevistas.http-dados-e-seguranca": {
      "id": "entrevistas.http-dados-e-seguranca",
      "title": "HTTP, dados e segurança",
      "description": "Revise status HTTP, validação, SQL/JOIN, autenticação e autorização. Discuta situações concretas da carreira escolhida.",
      "stageId": "entrevistas.exercicios-proximos-ao-trabalho",
      "requiredIds": [
        "entrevistas.http-dados-e-seguranca.basics",
        "entrevistas.http-dados-e-seguranca.practice"
      ],
      "variants": {
        "simple": {
          "summary": "Comece por uma referência de HTTP, dados e segurança e faça a prática essencial.",
          "stepIds": [
            "entrevistas.http-dados-e-seguranca.basics",
            "entrevistas.http-dados-e-seguranca.practice"
          ]
        },
        "standard": {
          "summary": "Revise status HTTP, validação, SQL/JOIN, autenticação e autorização. Discuta situações concretas da carreira escolhida.",
          "stepIds": [
            "entrevistas.http-dados-e-seguranca.basics",
            "entrevistas.http-dados-e-seguranca.practice"
          ]
        },
        "deep": {
          "summary": "Aprofunde HTTP, dados e segurança comparando soluções e demonstrando suas decisões.",
          "stepIds": [
            "entrevistas.http-dados-e-seguranca.basics",
            "entrevistas.http-dados-e-seguranca.practice",
            "entrevistas.http-dados-e-seguranca.deepening"
          ]
        }
      }
    },
    "entrevistas.arrays-mapas-e-complexidade": {
      "id": "entrevistas.arrays-mapas-e-complexidade",
      "title": "Arrays, mapas e complexidade",
      "description": "Use arrays, strings, mapas, conjuntos, pilhas e filas. Entenda tempo e espaço com Big O e pratique busca, ordenação e contagem.",
      "stageId": "entrevistas.algoritmos-essenciais",
      "requiredIds": [
        "entrevistas.arrays-mapas-e-complexidade.basics",
        "entrevistas.arrays-mapas-e-complexidade.practice"
      ],
      "variants": {
        "simple": {
          "summary": "Comece por uma referência de Arrays, mapas e complexidade e faça a prática essencial.",
          "stepIds": [
            "entrevistas.arrays-mapas-e-complexidade.basics",
            "entrevistas.arrays-mapas-e-complexidade.practice"
          ]
        },
        "standard": {
          "summary": "Use arrays, strings, mapas, conjuntos, pilhas e filas. Entenda tempo e espaço com Big O e pratique busca, ordenação e contagem.",
          "stepIds": [
            "entrevistas.arrays-mapas-e-complexidade.basics",
            "entrevistas.arrays-mapas-e-complexidade.practice"
          ]
        },
        "deep": {
          "summary": "Aprofunde Arrays, mapas e complexidade comparando soluções e demonstrando suas decisões.",
          "stepIds": [
            "entrevistas.arrays-mapas-e-complexidade.basics",
            "entrevistas.arrays-mapas-e-complexidade.practice",
            "entrevistas.arrays-mapas-e-complexidade.deepening"
          ]
        }
      }
    },
    "entrevistas.raciocinio-e-comunicacao": {
      "id": "entrevistas.raciocinio-e-comunicacao",
      "title": "Raciocínio e comunicação",
      "description": "Trabalhe um exemplo pequeno, defina invariantes e compare soluções. Pratique recursão e busca binária; não decore respostas sem compreender.",
      "stageId": "entrevistas.algoritmos-essenciais",
      "requiredIds": [
        "entrevistas.raciocinio-e-comunicacao.basics",
        "entrevistas.raciocinio-e-comunicacao.practice"
      ],
      "variants": {
        "simple": {
          "summary": "Comece por uma referência de Raciocínio e comunicação e faça a prática essencial.",
          "stepIds": [
            "entrevistas.raciocinio-e-comunicacao.basics",
            "entrevistas.raciocinio-e-comunicacao.practice"
          ]
        },
        "standard": {
          "summary": "Trabalhe um exemplo pequeno, defina invariantes e compare soluções. Pratique recursão e busca binária; não decore respostas sem compreender.",
          "stepIds": [
            "entrevistas.raciocinio-e-comunicacao.basics",
            "entrevistas.raciocinio-e-comunicacao.practice"
          ]
        },
        "deep": {
          "summary": "Aprofunde Raciocínio e comunicação comparando soluções e demonstrando suas decisões.",
          "stepIds": [
            "entrevistas.raciocinio-e-comunicacao.basics",
            "entrevistas.raciocinio-e-comunicacao.practice",
            "entrevistas.raciocinio-e-comunicacao.deepening"
          ]
        }
      }
    },
    "aiLearning.prompts-para-aprender-e-construir": {
      "id": "aiLearning.prompts-para-aprender-e-construir",
      "title": "Prompts para aprender e construir",
      "description": "Expresse objetivo, contexto, limites e como conferir o resultado. Mostre sua tentativa e exemplos de entrada/saída. Peça uma resposta no nível de quem está aprendendo e faça perguntas quando algo não estiver claro. Ajuste o prompt a partir do resultado, sem decorar fórmulas.",
      "stageId": "aiLearning.ia-prompting-e-contexto",
      "ai": "focused",
      "requiredIds": [
        "aiLearning.prompts-para-aprender-e-construir.basics",
        "aiLearning.prompts-para-aprender-e-construir.practice"
      ],
      "variants": {
        "simple": {
          "summary": "Comece por uma referência de Prompts para aprender e construir e faça a prática essencial.",
          "stepIds": [
            "aiLearning.prompts-para-aprender-e-construir.basics",
            "aiLearning.prompts-para-aprender-e-construir.practice"
          ]
        },
        "standard": {
          "summary": "Expresse objetivo, contexto, limites e como conferir o resultado. Mostre sua tentativa e exemplos de entrada/saída. Peça uma resposta no nível de quem está aprendendo e faça perguntas quando algo não estiver claro. Ajuste o prompt a partir do resultado, sem decorar fórmulas.",
          "stepIds": [
            "aiLearning.prompts-para-aprender-e-construir.basics",
            "aiLearning.prompts-para-aprender-e-construir.practice"
          ]
        },
        "deep": {
          "summary": "Aprofunde Prompts para aprender e construir comparando soluções e demonstrando suas decisões.",
          "stepIds": [
            "aiLearning.prompts-para-aprender-e-construir.basics",
            "aiLearning.prompts-para-aprender-e-construir.practice",
            "aiLearning.prompts-para-aprender-e-construir.deepening"
          ]
        }
      }
    },
    "aiLearning.contexto-util-e-dados-protegidos": {
      "id": "aiLearning.contexto-util-e-dados-protegidos",
      "title": "Contexto útil e dados protegidos",
      "description": "Forneça os arquivos relevantes, o erro completo sanitizado, a versão usada e o comportamento esperado. Diferencie conversar sobre código de permitir edição e execução. Use dados de laboratório; não compartilhe senhas, tokens ou dados pessoais.",
      "stageId": "aiLearning.ia-prompting-e-contexto",
      "ai": "focused",
      "requiredIds": [
        "aiLearning.contexto-util-e-dados-protegidos.basics",
        "aiLearning.contexto-util-e-dados-protegidos.practice"
      ],
      "variants": {
        "simple": {
          "summary": "Comece por uma referência de Contexto útil e dados protegidos e faça a prática essencial.",
          "stepIds": [
            "aiLearning.contexto-util-e-dados-protegidos.basics",
            "aiLearning.contexto-util-e-dados-protegidos.practice"
          ]
        },
        "standard": {
          "summary": "Forneça os arquivos relevantes, o erro completo sanitizado, a versão usada e o comportamento esperado. Diferencie conversar sobre código de permitir edição e execução. Use dados de laboratório; não compartilhe senhas, tokens ou dados pessoais.",
          "stepIds": [
            "aiLearning.contexto-util-e-dados-protegidos.basics",
            "aiLearning.contexto-util-e-dados-protegidos.practice"
          ]
        },
        "deep": {
          "summary": "Aprofunde Contexto útil e dados protegidos comparando soluções e demonstrando suas decisões.",
          "stepIds": [
            "aiLearning.contexto-util-e-dados-protegidos.basics",
            "aiLearning.contexto-util-e-dados-protegidos.practice",
            "aiLearning.contexto-util-e-dados-protegidos.deepening"
          ]
        }
      }
    },
    "aiLearning.treine-explicacao-e-raciocinio": {
      "id": "aiLearning.treine-explicacao-e-raciocinio",
      "title": "Treine explicação e raciocínio",
      "description": "Peça uma pergunta por vez sobre seu projeto ou um exercício. Responda antes de receber dicas e peça feedback sobre raciocínio, testes e clareza. Confira as críticas no código ou na documentação; feedback de IA também pode estar errado.",
      "stageId": "aiLearning.ia-simulacao-e-feedback",
      "ai": "focused",
      "requiredIds": [
        "aiLearning.treine-explicacao-e-raciocinio.basics",
        "aiLearning.treine-explicacao-e-raciocinio.practice"
      ],
      "variants": {
        "simple": {
          "summary": "Comece por uma referência de Treine explicação e raciocínio e faça a prática essencial.",
          "stepIds": [
            "aiLearning.treine-explicacao-e-raciocinio.basics",
            "aiLearning.treine-explicacao-e-raciocinio.practice"
          ]
        },
        "standard": {
          "summary": "Peça uma pergunta por vez sobre seu projeto ou um exercício. Responda antes de receber dicas e peça feedback sobre raciocínio, testes e clareza. Confira as críticas no código ou na documentação; feedback de IA também pode estar errado.",
          "stepIds": [
            "aiLearning.treine-explicacao-e-raciocinio.basics",
            "aiLearning.treine-explicacao-e-raciocinio.practice"
          ]
        },
        "deep": {
          "summary": "Aprofunde Treine explicação e raciocínio comparando soluções e demonstrando suas decisões.",
          "stepIds": [
            "aiLearning.treine-explicacao-e-raciocinio.basics",
            "aiLearning.treine-explicacao-e-raciocinio.practice",
            "aiLearning.treine-explicacao-e-raciocinio.deepening"
          ]
        }
      }
    },
    "entrevistas.entrevista-simulada": {
      "id": "entrevistas.entrevista-simulada",
      "title": "Entrevista simulada",
      "description": "Faça uma simulação com apresentação de projeto, exercício prático e revisão de código.",
      "stageId": "entrevistas.entrevista-simulada.stage",
      "ai": "assisted",
      "requiredIds": [
        "entrevistas.entrevista-simulada.criteria",
        "entrevistas.entrevista-simulada.ai-practice",
        "entrevistas.entrevista-simulada.verification"
      ],
      "variants": {
        "simple": {
          "summary": "Comece por uma referência de Entrevista simulada e faça a prática essencial.",
          "stepIds": [
            "entrevistas.entrevista-simulada.criteria",
            "entrevistas.entrevista-simulada.ai-practice",
            "entrevistas.entrevista-simulada.verification"
          ]
        },
        "standard": {
          "summary": "Faça uma simulação com apresentação de projeto, exercício prático e revisão de código.",
          "stepIds": [
            "entrevistas.entrevista-simulada.criteria",
            "entrevistas.entrevista-simulada.ai-practice",
            "entrevistas.entrevista-simulada.verification"
          ]
        },
        "deep": {
          "summary": "Aprofunde Entrevista simulada comparando soluções e demonstrando suas decisões.",
          "stepIds": [
            "entrevistas.entrevista-simulada.criteria",
            "entrevistas.entrevista-simulada.ai-practice",
            "entrevistas.entrevista-simulada.verification",
            "entrevistas.entrevista-simulada.deepening"
          ]
        }
      }
    },
    "entrevistas.revise-a-carreira-escolhida": {
      "id": "entrevistas.revise-a-carreira-escolhida",
      "title": "Revise a carreira escolhida",
      "description": "Frontend/React: estado, acessibilidade e testes. Backend: API, SQL e permissões. QA: riscos e investigação. DevOps: diagnóstico e recuperação. Dados: SQL, modelagem e idempotência.",
      "stageId": "entrevistas.preparacao-por-especialidade",
      "requiredIds": [
        "entrevistas.revise-a-carreira-escolhida.basics",
        "entrevistas.revise-a-carreira-escolhida.practice"
      ],
      "variants": {
        "simple": {
          "summary": "Comece por uma referência de Revise a carreira escolhida e faça a prática essencial.",
          "stepIds": [
            "entrevistas.revise-a-carreira-escolhida.basics",
            "entrevistas.revise-a-carreira-escolhida.practice"
          ]
        },
        "standard": {
          "summary": "Frontend/React: estado, acessibilidade e testes. Backend: API, SQL e permissões. QA: riscos e investigação. DevOps: diagnóstico e recuperação. Dados: SQL, modelagem e idempotência.",
          "stepIds": [
            "entrevistas.revise-a-carreira-escolhida.basics",
            "entrevistas.revise-a-carreira-escolhida.practice"
          ]
        },
        "deep": {
          "summary": "Aprofunde Revise a carreira escolhida comparando soluções e demonstrando suas decisões.",
          "stepIds": [
            "entrevistas.revise-a-carreira-escolhida.basics",
            "entrevistas.revise-a-carreira-escolhida.practice",
            "entrevistas.revise-a-carreira-escolhida.deepening"
          ]
        }
      }
    },
    "curriculum.ia-no-fluxo-de-trabalho": {
      "id": "curriculum.ia-no-fluxo-de-trabalho",
      "title": "IA no fluxo de trabalho",
      "description": "Use IA para explicar erros, propor testes e revisar hipóteses. Confira a documentação, o diff e os resultados. Proteja dados privados e segredos.",
      "stageId": "entrevistas.preparacao-por-especialidade",
      "ai": "focused",
      "requiredIds": [
        "curriculum.ia-no-fluxo-de-trabalho.basics",
        "curriculum.ia-no-fluxo-de-trabalho.practice"
      ],
      "variants": {
        "simple": {
          "summary": "Comece por uma referência de IA no fluxo de trabalho e faça a prática essencial.",
          "stepIds": [
            "curriculum.ia-no-fluxo-de-trabalho.basics",
            "curriculum.ia-no-fluxo-de-trabalho.practice"
          ]
        },
        "standard": {
          "summary": "Use IA para explicar erros, propor testes e revisar hipóteses. Confira a documentação, o diff e os resultados. Proteja dados privados e segredos.",
          "stepIds": [
            "curriculum.ia-no-fluxo-de-trabalho.basics",
            "curriculum.ia-no-fluxo-de-trabalho.practice"
          ]
        },
        "deep": {
          "summary": "Aprofunde IA no fluxo de trabalho comparando soluções e demonstrando suas decisões.",
          "stepIds": [
            "curriculum.ia-no-fluxo-de-trabalho.basics",
            "curriculum.ia-no-fluxo-de-trabalho.practice",
            "curriculum.ia-no-fluxo-de-trabalho.deepening"
          ]
        }
      }
    },
    "entrevistas.desafio-tecnico-e-conversa-com-a-equipe": {
      "id": "entrevistas.desafio-tecnico-e-conversa-com-a-equipe",
      "title": "Desafio técnico e conversa com a equipe",
      "description": "Confirme escopo, tempo disponível e critérios do desafio. Documente o que entregou e o que falta. Pergunte sobre mentoria, rotina e expectativas para o nível de entrada.",
      "stageId": "entrevistas.processo-seletivo-e-acompanhamento",
      "requiredIds": [
        "entrevistas.desafio-tecnico-e-conversa-com-a-equipe.basics",
        "entrevistas.desafio-tecnico-e-conversa-com-a-equipe.practice"
      ],
      "variants": {
        "simple": {
          "summary": "Comece por uma referência de Desafio técnico e conversa com a equipe e faça a prática essencial.",
          "stepIds": [
            "entrevistas.desafio-tecnico-e-conversa-com-a-equipe.basics",
            "entrevistas.desafio-tecnico-e-conversa-com-a-equipe.practice"
          ]
        },
        "standard": {
          "summary": "Confirme escopo, tempo disponível e critérios do desafio. Documente o que entregou e o que falta. Pergunte sobre mentoria, rotina e expectativas para o nível de entrada.",
          "stepIds": [
            "entrevistas.desafio-tecnico-e-conversa-com-a-equipe.basics",
            "entrevistas.desafio-tecnico-e-conversa-com-a-equipe.practice"
          ]
        },
        "deep": {
          "summary": "Aprofunde Desafio técnico e conversa com a equipe comparando soluções e demonstrando suas decisões.",
          "stepIds": [
            "entrevistas.desafio-tecnico-e-conversa-com-a-equipe.basics",
            "entrevistas.desafio-tecnico-e-conversa-com-a-equipe.practice",
            "entrevistas.desafio-tecnico-e-conversa-com-a-equipe.deepening"
          ]
        }
      }
    },
    "entrevistas.estruturas-e-design-de-sistemas": {
      "id": "entrevistas.estruturas-e-design-de-sistemas",
      "title": "Estruturas e design de sistemas",
      "description": "Aprenda árvores/grafos, BFS/DFS e modelagem de sistemas quando solicitados. Compare cache, filas, escala e consistência partindo de requisitos explícitos.",
      "stageId": "entrevistas.aprofundamento-conforme-o-processo",
      "requiredIds": [
        "entrevistas.estruturas-e-design-de-sistemas.basics",
        "entrevistas.estruturas-e-design-de-sistemas.practice"
      ],
      "variants": {
        "simple": {
          "summary": "Comece por uma referência de Estruturas e design de sistemas e faça a prática essencial.",
          "stepIds": [
            "entrevistas.estruturas-e-design-de-sistemas.basics",
            "entrevistas.estruturas-e-design-de-sistemas.practice"
          ]
        },
        "standard": {
          "summary": "Aprenda árvores/grafos, BFS/DFS e modelagem de sistemas quando solicitados. Compare cache, filas, escala e consistência partindo de requisitos explícitos.",
          "stepIds": [
            "entrevistas.estruturas-e-design-de-sistemas.basics",
            "entrevistas.estruturas-e-design-de-sistemas.practice"
          ]
        },
        "deep": {
          "summary": "Aprofunde Estruturas e design de sistemas comparando soluções e demonstrando suas decisões.",
          "stepIds": [
            "entrevistas.estruturas-e-design-de-sistemas.basics",
            "entrevistas.estruturas-e-design-de-sistemas.practice",
            "entrevistas.estruturas-e-design-de-sistemas.deepening"
          ]
        }
      }
    }
  },
  "nodes": {
    "entrevistas.curriculo-vaga-e-apresentacao.basics": {
      "id": "entrevistas.curriculo-vaga-e-apresentacao.basics",
      "groupId": "entrevistas.curriculo-vaga-e-apresentacao",
      "title": "O básico",
      "description": "",
      "requires": [],
      "resourceIds": [
        "resource.git",
        "resource.contribute",
        "resource.youtubeSoutinhoPortfolio",
        "resource.youtubeMontanoResume"
      ],
      "kind": "concept",
      "legacyIds": [
        "Currículo, vaga e apresentação-O básico",
        "O básico-Currículo, vaga e apresentação"
      ]
    },
    "entrevistas.curriculo-vaga-e-apresentacao.practice": {
      "id": "entrevistas.curriculo-vaga-e-apresentacao.practice",
      "groupId": "entrevistas.curriculo-vaga-e-apresentacao",
      "title": "Pratique e confira",
      "description": "Apresente um projeto em cinco minutos: problema, sua contribuição, decisões, falha encontrada e próximos passos.",
      "requires": [
        "entrevistas.curriculo-vaga-e-apresentacao.basics"
      ],
      "resourceIds": [
        "resource.git",
        "resource.contribute",
        "resource.youtubeSoutinhoPortfolio",
        "resource.youtubeMontanoResume"
      ],
      "kind": "practice",
      "legacyIds": [
        "Currículo, vaga e apresentação-Pratique e confira",
        "Pratique e confira-Currículo, vaga e apresentação"
      ]
    },
    "entrevistas.curriculo-vaga-e-apresentacao.deepening": {
      "id": "entrevistas.curriculo-vaga-e-apresentacao.deepening",
      "groupId": "entrevistas.curriculo-vaga-e-apresentacao",
      "title": "Desafio de aprofundamento",
      "kind": "challenge",
      "description": "Escolha uma decisão de Currículo, vaga e apresentação no seu projeto. Construa uma segunda solução, compare os resultados com um caso de teste e explique os limites de cada abordagem. Use as referências para verificar sua conclusão.",
      "requires": [
        "entrevistas.curriculo-vaga-e-apresentacao.basics",
        "entrevistas.curriculo-vaga-e-apresentacao.practice"
      ],
      "resourceIds": [
        "resource.git",
        "resource.contribute",
        "resource.youtubeSoutinhoPortfolio",
        "resource.youtubeMontanoResume"
      ],
      "legacyIds": []
    },
    "aiLearning.escolha-uma-ferramenta": {
      "id": "aiLearning.escolha-uma-ferramenta",
      "groupId": "aiLearning.seu-assistente-de-estudos",
      "title": "Escolha uma ferramenta",
      "description": "Experimente uma opção neste momento. Para concluir esta etapa, basta abrir um exercício em uma ferramenta e localizar como conversar, fornecer contexto e revisar uma mudança.\n\nCursor: abra um projeto no editor, converse sobre um arquivo e forneça trechos ou arquivos como contexto. Peça uma alteração pequena, examine o diff e execute o exemplo.\n\nClaude: use o chat com trechos fornecidos por você, ou Claude Code para trabalhar no projeto por terminal ou integrações de editor, se já tiver acesso. Siga o quickstart e peça uma explicação do repositório antes da primeira mudança.\n\nCodex: consulte o quickstart e escolha a superfície disponível para sua conta, como aplicativo, editor ou terminal. Peça que explique o projeto e como executar o exercício; depois experimente uma mudança pequena.\n\nSe ainda não tiver acesso a uma IA, siga os exercícios de programação e retome estas práticas quando uma opção estiver disponível.",
      "requires": [],
      "resourceIds": [
        "resource.cursor",
        "resource.cursorPrompts",
        "resource.claude",
        "resource.claudePractices",
        "resource.codex",
        "resource.codexPrompts"
      ],
      "kind": "concept",
      "ai": "focused",
      "legacyIds": [
        "Seu assistente de estudos-Escolha uma ferramenta",
        "Escolha uma ferramenta-Seu assistente de estudos"
      ]
    },
    "aiLearning.pratique-tutoria": {
      "id": "aiLearning.pratique-tutoria",
      "groupId": "aiLearning.seu-assistente-de-estudos",
      "title": "Pratique tutoria",
      "description": "Faça uma tentativa, peça uma explicação ou pista e confira o resultado executando o exemplo. Solicite perguntas e exercícios de revisão. Quando a IA gerar código, leia, altere e teste esse código. Conclua esta etapa após responder uma pergunta sobre o exemplo e resolver uma pequena variação.",
      "requires": [
        "aiLearning.escolha-uma-ferramenta"
      ],
      "resourceIds": [
        "resource.codexPrompts",
        "resource.claudePractices",
        "resource.ai"
      ],
      "kind": "practice",
      "ai": "focused",
      "prompt": "Estou aprendendo [conceito] na trilha [nome].\nMeu objetivo é [resultado pequeno e observável].\nJá tentei [tentativa] e observei [resultado ou erro].\nUse este trecho como contexto: [código ou exemplo sem dados privados].\nExplique a ideia com um exemplo curto e faça uma pergunta para conferir minha compreensão.\nDepois proponha uma variação do exercício. Aguarde minha tentativa antes de dar feedback.",
      "legacyIds": [
        "Seu assistente de estudos-Pratique tutoria",
        "Pratique tutoria-Seu assistente de estudos"
      ]
    },
    "aiLearning.seu-assistente-de-estudos.deepening": {
      "id": "aiLearning.seu-assistente-de-estudos.deepening",
      "groupId": "aiLearning.seu-assistente-de-estudos",
      "title": "Desafio de aprofundamento",
      "kind": "challenge",
      "ai": "focused",
      "description": "Escolha uma decisão de Seu assistente de estudos no seu projeto. Construa uma segunda solução, compare os resultados com um caso de teste e explique os limites de cada abordagem. Use as referências para verificar sua conclusão.",
      "requires": [
        "aiLearning.escolha-uma-ferramenta",
        "aiLearning.pratique-tutoria"
      ],
      "resourceIds": [
        "resource.cursor",
        "resource.cursorPrompts",
        "resource.claude",
        "resource.claudePractices",
        "resource.codex",
        "resource.codexPrompts",
        "resource.ai"
      ],
      "legacyIds": []
    },
    "entrevistas.codigo-depuracao-e-revisao.basics": {
      "id": "entrevistas.codigo-depuracao-e-revisao.basics",
      "groupId": "entrevistas.codigo-depuracao-e-revisao",
      "title": "O básico",
      "description": "",
      "requires": [],
      "resourceIds": [
        "resource.js",
        "resource.python",
        "resource.vitest"
      ],
      "kind": "concept",
      "legacyIds": [
        "Código, depuração e revisão-O básico",
        "O básico-Código, depuração e revisão"
      ]
    },
    "entrevistas.codigo-depuracao-e-revisao.practice": {
      "id": "entrevistas.codigo-depuracao-e-revisao.practice",
      "groupId": "entrevistas.codigo-depuracao-e-revisao",
      "title": "Pratique e confira",
      "description": "Corrija um bug em um projeto, teste a regressão e explique o diff e suas limitações.",
      "requires": [
        "entrevistas.codigo-depuracao-e-revisao.basics"
      ],
      "resourceIds": [
        "resource.js",
        "resource.python",
        "resource.vitest"
      ],
      "kind": "practice",
      "legacyIds": [
        "Código, depuração e revisão-Pratique e confira",
        "Pratique e confira-Código, depuração e revisão"
      ]
    },
    "entrevistas.codigo-depuracao-e-revisao.deepening": {
      "id": "entrevistas.codigo-depuracao-e-revisao.deepening",
      "groupId": "entrevistas.codigo-depuracao-e-revisao",
      "title": "Desafio de aprofundamento",
      "kind": "challenge",
      "description": "Escolha uma decisão de Código, depuração e revisão no seu projeto. Construa uma segunda solução, compare os resultados com um caso de teste e explique os limites de cada abordagem. Use as referências para verificar sua conclusão.",
      "requires": [
        "entrevistas.codigo-depuracao-e-revisao.basics",
        "entrevistas.codigo-depuracao-e-revisao.practice"
      ],
      "resourceIds": [
        "resource.js",
        "resource.python",
        "resource.vitest"
      ],
      "legacyIds": []
    },
    "entrevistas.http-dados-e-seguranca.basics": {
      "id": "entrevistas.http-dados-e-seguranca.basics",
      "groupId": "entrevistas.http-dados-e-seguranca",
      "title": "O básico",
      "description": "",
      "requires": [],
      "resourceIds": [
        "resource.http",
        "resource.postgres",
        "resource.security"
      ],
      "kind": "concept",
      "legacyIds": [
        "HTTP, dados e segurança-O básico",
        "O básico-HTTP, dados e segurança"
      ]
    },
    "entrevistas.http-dados-e-seguranca.practice": {
      "id": "entrevistas.http-dados-e-seguranca.practice",
      "groupId": "entrevistas.http-dados-e-seguranca",
      "title": "Pratique e confira",
      "description": "Explique uma falha de API, uma consulta com dupla contagem e um caso de acesso indevido.",
      "requires": [
        "entrevistas.http-dados-e-seguranca.basics"
      ],
      "resourceIds": [
        "resource.http",
        "resource.postgres",
        "resource.security"
      ],
      "kind": "practice",
      "legacyIds": [
        "HTTP, dados e segurança-Pratique e confira",
        "Pratique e confira-HTTP, dados e segurança"
      ]
    },
    "entrevistas.http-dados-e-seguranca.deepening": {
      "id": "entrevistas.http-dados-e-seguranca.deepening",
      "groupId": "entrevistas.http-dados-e-seguranca",
      "title": "Desafio de aprofundamento",
      "kind": "challenge",
      "description": "Escolha uma decisão de HTTP, dados e segurança no seu projeto. Construa uma segunda solução, compare os resultados com um caso de teste e explique os limites de cada abordagem. Use as referências para verificar sua conclusão.",
      "requires": [
        "entrevistas.http-dados-e-seguranca.basics",
        "entrevistas.http-dados-e-seguranca.practice"
      ],
      "resourceIds": [
        "resource.http",
        "resource.postgres",
        "resource.security"
      ],
      "legacyIds": []
    },
    "entrevistas.arrays-mapas-e-complexidade.basics": {
      "id": "entrevistas.arrays-mapas-e-complexidade.basics",
      "groupId": "entrevistas.arrays-mapas-e-complexidade",
      "title": "O básico",
      "description": "",
      "requires": [],
      "resourceIds": [
        "resource.algorithms",
        "resource.algorithmsCourse",
        "resource.js",
        "resource.youtubeAlgorithmsCourse",
        "resource.youtubeAkita"
      ],
      "kind": "concept",
      "legacyIds": [
        "Arrays, mapas e complexidade-O básico",
        "O básico-Arrays, mapas e complexidade"
      ]
    },
    "entrevistas.arrays-mapas-e-complexidade.practice": {
      "id": "entrevistas.arrays-mapas-e-complexidade.practice",
      "groupId": "entrevistas.arrays-mapas-e-complexidade",
      "title": "Pratique e confira",
      "description": "Resolva deduplicação e busca em uma coleção; explique a complexidade e teste vazio, repetição e limites.",
      "requires": [
        "entrevistas.arrays-mapas-e-complexidade.basics"
      ],
      "resourceIds": [
        "resource.algorithms",
        "resource.algorithmsCourse",
        "resource.js",
        "resource.youtubeAlgorithmsCourse",
        "resource.youtubeAkita"
      ],
      "kind": "practice",
      "legacyIds": [
        "Arrays, mapas e complexidade-Pratique e confira",
        "Pratique e confira-Arrays, mapas e complexidade"
      ]
    },
    "entrevistas.arrays-mapas-e-complexidade.deepening": {
      "id": "entrevistas.arrays-mapas-e-complexidade.deepening",
      "groupId": "entrevistas.arrays-mapas-e-complexidade",
      "title": "Desafio de aprofundamento",
      "kind": "challenge",
      "description": "Escolha uma decisão de Arrays, mapas e complexidade no seu projeto. Construa uma segunda solução, compare os resultados com um caso de teste e explique os limites de cada abordagem. Use as referências para verificar sua conclusão.",
      "requires": [
        "entrevistas.arrays-mapas-e-complexidade.basics",
        "entrevistas.arrays-mapas-e-complexidade.practice"
      ],
      "resourceIds": [
        "resource.algorithms",
        "resource.algorithmsCourse",
        "resource.js",
        "resource.youtubeAlgorithmsCourse",
        "resource.youtubeAkita"
      ],
      "legacyIds": []
    },
    "entrevistas.raciocinio-e-comunicacao.basics": {
      "id": "entrevistas.raciocinio-e-comunicacao.basics",
      "groupId": "entrevistas.raciocinio-e-comunicacao",
      "title": "O básico",
      "description": "",
      "requires": [],
      "resourceIds": [
        "resource.algorithms",
        "resource.algorithmsCourse",
        "resource.youtubeSoutinhoLiveCoding",
        "resource.youtubeRocketseatChallenges"
      ],
      "kind": "concept",
      "legacyIds": [
        "Raciocínio e comunicação-O básico",
        "O básico-Raciocínio e comunicação"
      ]
    },
    "entrevistas.raciocinio-e-comunicacao.practice": {
      "id": "entrevistas.raciocinio-e-comunicacao.practice",
      "groupId": "entrevistas.raciocinio-e-comunicacao",
      "title": "Pratique e confira",
      "description": "Resolva um exercício em voz alta, escreva casos de teste antes de finalizar e discuta uma alternativa.",
      "requires": [
        "entrevistas.raciocinio-e-comunicacao.basics"
      ],
      "resourceIds": [
        "resource.algorithms",
        "resource.algorithmsCourse",
        "resource.youtubeSoutinhoLiveCoding",
        "resource.youtubeRocketseatChallenges"
      ],
      "kind": "practice",
      "legacyIds": [
        "Raciocínio e comunicação-Pratique e confira",
        "Pratique e confira-Raciocínio e comunicação"
      ]
    },
    "entrevistas.raciocinio-e-comunicacao.deepening": {
      "id": "entrevistas.raciocinio-e-comunicacao.deepening",
      "groupId": "entrevistas.raciocinio-e-comunicacao",
      "title": "Desafio de aprofundamento",
      "kind": "challenge",
      "description": "Escolha uma decisão de Raciocínio e comunicação no seu projeto. Construa uma segunda solução, compare os resultados com um caso de teste e explique os limites de cada abordagem. Use as referências para verificar sua conclusão.",
      "requires": [
        "entrevistas.raciocinio-e-comunicacao.basics",
        "entrevistas.raciocinio-e-comunicacao.practice"
      ],
      "resourceIds": [
        "resource.algorithms",
        "resource.algorithmsCourse",
        "resource.youtubeSoutinhoLiveCoding",
        "resource.youtubeRocketseatChallenges"
      ],
      "legacyIds": []
    },
    "aiLearning.prompts-para-aprender-e-construir.basics": {
      "id": "aiLearning.prompts-para-aprender-e-construir.basics",
      "groupId": "aiLearning.prompts-para-aprender-e-construir",
      "title": "O básico",
      "description": "",
      "requires": [],
      "resourceIds": [
        "resource.codexPrompts",
        "resource.cursorPrompts",
        "resource.claudePractices"
      ],
      "kind": "concept",
      "ai": "focused",
      "legacyIds": [
        "Prompts para aprender e construir-O básico",
        "O básico-Prompts para aprender e construir"
      ]
    },
    "aiLearning.prompts-para-aprender-e-construir.practice": {
      "id": "aiLearning.prompts-para-aprender-e-construir.practice",
      "groupId": "aiLearning.prompts-para-aprender-e-construir",
      "title": "Pratique e confira",
      "description": "Compare um pedido vago com um pedido que inclui sua tentativa e critérios. Execute os exemplos e registre qual informação melhorou a resposta.",
      "requires": [
        "aiLearning.prompts-para-aprender-e-construir.basics"
      ],
      "resourceIds": [
        "resource.codexPrompts",
        "resource.cursorPrompts",
        "resource.claudePractices"
      ],
      "kind": "practice",
      "ai": "focused",
      "prompt": "Estou aprendendo [conceito] na trilha [nome].\nMeu objetivo é [resultado pequeno e observável].\nJá tentei [tentativa] e observei [resultado ou erro].\nUse este trecho como contexto: [código ou exemplo sem dados privados].\nExplique a ideia com um exemplo curto e faça uma pergunta para conferir minha compreensão.\nDepois proponha uma variação do exercício. Aguarde minha tentativa antes de dar feedback.",
      "legacyIds": [
        "Prompts para aprender e construir-Pratique e confira",
        "Pratique e confira-Prompts para aprender e construir"
      ]
    },
    "aiLearning.prompts-para-aprender-e-construir.deepening": {
      "id": "aiLearning.prompts-para-aprender-e-construir.deepening",
      "groupId": "aiLearning.prompts-para-aprender-e-construir",
      "title": "Desafio de aprofundamento",
      "kind": "challenge",
      "ai": "focused",
      "description": "Escolha uma decisão de Prompts para aprender e construir no seu projeto. Construa uma segunda solução, compare os resultados com um caso de teste e explique os limites de cada abordagem. Use as referências para verificar sua conclusão.",
      "requires": [
        "aiLearning.prompts-para-aprender-e-construir.basics",
        "aiLearning.prompts-para-aprender-e-construir.practice"
      ],
      "resourceIds": [
        "resource.codexPrompts",
        "resource.cursorPrompts",
        "resource.claudePractices"
      ],
      "legacyIds": []
    },
    "aiLearning.contexto-util-e-dados-protegidos.basics": {
      "id": "aiLearning.contexto-util-e-dados-protegidos.basics",
      "groupId": "aiLearning.contexto-util-e-dados-protegidos",
      "title": "O básico",
      "description": "",
      "requires": [],
      "resourceIds": [
        "resource.cursorPrompts",
        "resource.codexPrompts",
        "resource.ai"
      ],
      "kind": "concept",
      "ai": "focused",
      "legacyIds": [
        "Contexto útil e dados protegidos-O básico",
        "O básico-Contexto útil e dados protegidos"
      ]
    },
    "aiLearning.contexto-util-e-dados-protegidos.practice": {
      "id": "aiLearning.contexto-util-e-dados-protegidos.practice",
      "groupId": "aiLearning.contexto-util-e-dados-protegidos",
      "title": "Pratique e confira",
      "description": "Peça ajuda para a mesma dúvida com e sem o trecho relevante. Identifique uma suposição incorreta e corrija o contexto antes de aceitar a solução.",
      "requires": [
        "aiLearning.contexto-util-e-dados-protegidos.basics"
      ],
      "resourceIds": [
        "resource.cursorPrompts",
        "resource.codexPrompts",
        "resource.ai"
      ],
      "kind": "practice",
      "ai": "focused",
      "legacyIds": [
        "Contexto útil e dados protegidos-Pratique e confira",
        "Pratique e confira-Contexto útil e dados protegidos"
      ]
    },
    "aiLearning.contexto-util-e-dados-protegidos.deepening": {
      "id": "aiLearning.contexto-util-e-dados-protegidos.deepening",
      "groupId": "aiLearning.contexto-util-e-dados-protegidos",
      "title": "Desafio de aprofundamento",
      "kind": "challenge",
      "ai": "focused",
      "description": "Escolha uma decisão de Contexto útil e dados protegidos no seu projeto. Construa uma segunda solução, compare os resultados com um caso de teste e explique os limites de cada abordagem. Use as referências para verificar sua conclusão.",
      "requires": [
        "aiLearning.contexto-util-e-dados-protegidos.basics",
        "aiLearning.contexto-util-e-dados-protegidos.practice"
      ],
      "resourceIds": [
        "resource.cursorPrompts",
        "resource.codexPrompts",
        "resource.ai"
      ],
      "legacyIds": []
    },
    "aiLearning.treine-explicacao-e-raciocinio.basics": {
      "id": "aiLearning.treine-explicacao-e-raciocinio.basics",
      "groupId": "aiLearning.treine-explicacao-e-raciocinio",
      "title": "O básico",
      "description": "",
      "requires": [],
      "resourceIds": [
        "resource.codexPrompts",
        "resource.claudePractices"
      ],
      "kind": "concept",
      "ai": "focused",
      "legacyIds": [
        "Treine explicação e raciocínio-O básico",
        "O básico-Treine explicação e raciocínio"
      ]
    },
    "aiLearning.treine-explicacao-e-raciocinio.practice": {
      "id": "aiLearning.treine-explicacao-e-raciocinio.practice",
      "groupId": "aiLearning.treine-explicacao-e-raciocinio",
      "title": "Pratique e confira",
      "description": "Faça uma simulação, confira uma crítica com evidência e repita uma resposta com suas próprias palavras. Pergunte ao recrutador quais usos de IA são permitidos em cada etapa.",
      "requires": [
        "aiLearning.treine-explicacao-e-raciocinio.basics"
      ],
      "resourceIds": [
        "resource.codexPrompts",
        "resource.claudePractices"
      ],
      "kind": "practice",
      "ai": "focused",
      "prompt": "Simule uma entrevista para [vaga e nível] a partir deste projeto: [README e trecho sanitizado].\nFaça uma pergunta por vez e espere minha resposta.\nDepois avalie clareza, raciocínio e evidência, sem inventar experiências que eu não tive.\nSe eu pedir uma dica, dê uma pista curta. No final, proponha uma lacuna concreta para eu estudar.",
      "legacyIds": [
        "Treine explicação e raciocínio-Pratique e confira",
        "Pratique e confira-Treine explicação e raciocínio"
      ]
    },
    "aiLearning.treine-explicacao-e-raciocinio.deepening": {
      "id": "aiLearning.treine-explicacao-e-raciocinio.deepening",
      "groupId": "aiLearning.treine-explicacao-e-raciocinio",
      "title": "Desafio de aprofundamento",
      "kind": "challenge",
      "ai": "focused",
      "description": "Escolha uma decisão de Treine explicação e raciocínio no seu projeto. Construa uma segunda solução, compare os resultados com um caso de teste e explique os limites de cada abordagem. Use as referências para verificar sua conclusão.",
      "requires": [
        "aiLearning.treine-explicacao-e-raciocinio.basics",
        "aiLearning.treine-explicacao-e-raciocinio.practice"
      ],
      "resourceIds": [
        "resource.codexPrompts",
        "resource.claudePractices"
      ],
      "legacyIds": []
    },
    "entrevistas.entrevista-simulada.criteria": {
      "id": "entrevistas.entrevista-simulada.criteria",
      "groupId": "entrevistas.entrevista-simulada",
      "title": "Critérios de conclusão",
      "description": "Registre feedback sobre raciocínio, comunicação, testes e código. Corrija uma lacuna concreta e repita a parte que apresentou dificuldade.",
      "requires": [],
      "resourceIds": [
        "resource.git",
        "resource.vitest",
        "resource.algorithms"
      ],
      "kind": "criteria",
      "legacyIds": [
        "Entrevista simulada-Critérios de conclusão",
        "Critérios de conclusão-Entrevista simulada"
      ]
    },
    "entrevistas.entrevista-simulada.ai-practice": {
      "id": "entrevistas.entrevista-simulada.ai-practice",
      "groupId": "entrevistas.entrevista-simulada",
      "title": "Prática de IA neste projeto",
      "description": "Conduza a simulação com uma pergunta por vez e feedback após minha resposta. Adapte o prompt ao que você já construiu nesta etapa. Repita uma pergunta sem sugestões e explique a decisão com suas próprias palavras.",
      "requires": [
        "entrevistas.entrevista-simulada.criteria"
      ],
      "resourceIds": [
        "resource.codexPrompts",
        "resource.cursorPrompts",
        "resource.claudePractices"
      ],
      "kind": "practice",
      "ai": "assisted",
      "prompt": "Projeto: Entrevista simulada.\nObjetivo: simular uma entrevista sobre meu projeto, com uma pergunta por vez e feedback após minha resposta.\nContexto: [descrição da vaga, README e trechos sanitizados do projeto que quero apresentar].\nNesta etapa: Conduza a simulação com uma pergunta por vez e feedback após minha resposta.\nLimites: apenas este projeto de laboratório; use as ferramentas já escolhidas, dados públicos ou sintéticos e não exponha segredos.\nCritérios: o feedback aponta lacunas verificáveis; as regras de uso de IA do processo seletivo são respeitadas.\nMostre as hipóteses e como verificá-las. Informe o que foi executado e o que ainda falta conferir.",
      "legacyIds": [
        "Entrevista simulada-Prática de IA neste projeto",
        "Prática de IA neste projeto-Entrevista simulada"
      ]
    },
    "entrevistas.entrevista-simulada.verification": {
      "id": "entrevistas.entrevista-simulada.verification",
      "groupId": "entrevistas.entrevista-simulada",
      "title": "Registre sua verificação",
      "description": "Registre um prompt sanitizado, uma sugestão aceita ou corrigida, a verificação executada e seu resultado. Explique a mudança com suas palavras. Conclua o projeto após demonstrar os critérios, mesmo quando parte do código vier de IA.",
      "requires": [
        "entrevistas.entrevista-simulada.criteria"
      ],
      "resourceIds": [
        "resource.git",
        "resource.ai"
      ],
      "kind": "practice",
      "ai": "assisted",
      "legacyIds": [
        "Entrevista simulada-Registre sua verificação",
        "Registre sua verificação-Entrevista simulada"
      ]
    },
    "entrevistas.entrevista-simulada.deepening": {
      "id": "entrevistas.entrevista-simulada.deepening",
      "groupId": "entrevistas.entrevista-simulada",
      "title": "Desafio de aprofundamento",
      "kind": "challenge",
      "description": "Escolha uma decisão de Entrevista simulada no seu projeto. Construa uma segunda solução, compare os resultados com um caso de teste e explique os limites de cada abordagem. Use as referências para verificar sua conclusão.",
      "requires": [
        "entrevistas.entrevista-simulada.criteria",
        "entrevistas.entrevista-simulada.ai-practice",
        "entrevistas.entrevista-simulada.verification"
      ],
      "resourceIds": [
        "resource.git",
        "resource.vitest",
        "resource.algorithms",
        "resource.codexPrompts",
        "resource.cursorPrompts",
        "resource.claudePractices",
        "resource.ai"
      ],
      "legacyIds": []
    },
    "entrevistas.revise-a-carreira-escolhida.basics": {
      "id": "entrevistas.revise-a-carreira-escolhida.basics",
      "groupId": "entrevistas.revise-a-carreira-escolhida",
      "title": "O básico",
      "description": "",
      "requires": [],
      "resourceIds": [
        "resource.react",
        "resource.postgres",
        "resource.playwright",
        "resource.otel",
        "resource.dbt"
      ],
      "kind": "concept",
      "legacyIds": [
        "Revise a carreira escolhida-O básico",
        "O básico-Revise a carreira escolhida"
      ]
    },
    "entrevistas.revise-a-carreira-escolhida.practice": {
      "id": "entrevistas.revise-a-carreira-escolhida.practice",
      "groupId": "entrevistas.revise-a-carreira-escolhida",
      "title": "Pratique e confira",
      "description": "Prepare uma demonstração de falha e recuperação no seu projeto e explique como verificou a solução.",
      "requires": [
        "entrevistas.revise-a-carreira-escolhida.basics"
      ],
      "resourceIds": [
        "resource.react",
        "resource.postgres",
        "resource.playwright",
        "resource.otel",
        "resource.dbt"
      ],
      "kind": "practice",
      "legacyIds": [
        "Revise a carreira escolhida-Pratique e confira",
        "Pratique e confira-Revise a carreira escolhida"
      ]
    },
    "entrevistas.revise-a-carreira-escolhida.deepening": {
      "id": "entrevistas.revise-a-carreira-escolhida.deepening",
      "groupId": "entrevistas.revise-a-carreira-escolhida",
      "title": "Desafio de aprofundamento",
      "kind": "challenge",
      "description": "Escolha uma decisão de Revise a carreira escolhida no seu projeto. Construa uma segunda solução, compare os resultados com um caso de teste e explique os limites de cada abordagem. Use as referências para verificar sua conclusão.",
      "requires": [
        "entrevistas.revise-a-carreira-escolhida.basics",
        "entrevistas.revise-a-carreira-escolhida.practice"
      ],
      "resourceIds": [
        "resource.react",
        "resource.postgres",
        "resource.playwright",
        "resource.otel",
        "resource.dbt"
      ],
      "legacyIds": []
    },
    "curriculum.ia-no-fluxo-de-trabalho.basics": {
      "id": "curriculum.ia-no-fluxo-de-trabalho.basics",
      "groupId": "curriculum.ia-no-fluxo-de-trabalho",
      "title": "O básico",
      "description": "",
      "requires": [],
      "resourceIds": [
        "resource.ai"
      ],
      "kind": "concept",
      "ai": "focused",
      "legacyIds": [
        "IA no fluxo de trabalho-O básico",
        "O básico-IA no fluxo de trabalho"
      ]
    },
    "curriculum.ia-no-fluxo-de-trabalho.practice": {
      "id": "curriculum.ia-no-fluxo-de-trabalho.practice",
      "groupId": "curriculum.ia-no-fluxo-de-trabalho",
      "title": "Pratique e confira",
      "description": "Compare uma sugestão de IA com sua solução, identifique uma limitação e teste a mudança. Explique o código sem depender da ferramenta.",
      "requires": [
        "curriculum.ia-no-fluxo-de-trabalho.basics"
      ],
      "resourceIds": [
        "resource.ai"
      ],
      "kind": "practice",
      "ai": "focused",
      "legacyIds": [
        "IA no fluxo de trabalho-Pratique e confira",
        "Pratique e confira-IA no fluxo de trabalho"
      ]
    },
    "curriculum.ia-no-fluxo-de-trabalho.deepening": {
      "id": "curriculum.ia-no-fluxo-de-trabalho.deepening",
      "groupId": "curriculum.ia-no-fluxo-de-trabalho",
      "title": "Desafio de aprofundamento",
      "kind": "challenge",
      "ai": "focused",
      "description": "Escolha uma decisão de IA no fluxo de trabalho no seu projeto. Construa uma segunda solução, compare os resultados com um caso de teste e explique os limites de cada abordagem. Use as referências para verificar sua conclusão.",
      "requires": [
        "curriculum.ia-no-fluxo-de-trabalho.basics",
        "curriculum.ia-no-fluxo-de-trabalho.practice"
      ],
      "resourceIds": [
        "resource.ai"
      ],
      "legacyIds": []
    },
    "entrevistas.desafio-tecnico-e-conversa-com-a-equipe.basics": {
      "id": "entrevistas.desafio-tecnico-e-conversa-com-a-equipe.basics",
      "groupId": "entrevistas.desafio-tecnico-e-conversa-com-a-equipe",
      "title": "O básico",
      "description": "",
      "requires": [],
      "resourceIds": [
        "resource.git",
        "resource.contribute",
        "resource.youtubeDeschamps",
        "resource.youtubeMontanoInterviews"
      ],
      "kind": "concept",
      "legacyIds": [
        "Desafio técnico e conversa com a equipe-O básico",
        "O básico-Desafio técnico e conversa com a equipe"
      ]
    },
    "entrevistas.desafio-tecnico-e-conversa-com-a-equipe.practice": {
      "id": "entrevistas.desafio-tecnico-e-conversa-com-a-equipe.practice",
      "groupId": "entrevistas.desafio-tecnico-e-conversa-com-a-equipe",
      "title": "Pratique e confira",
      "description": "Entregue um README com execução, testes, decisões e limitações; registre feedback e atualize seu plano de estudo.",
      "requires": [
        "entrevistas.desafio-tecnico-e-conversa-com-a-equipe.basics"
      ],
      "resourceIds": [
        "resource.git",
        "resource.contribute",
        "resource.youtubeDeschamps",
        "resource.youtubeMontanoInterviews"
      ],
      "kind": "practice",
      "legacyIds": [
        "Desafio técnico e conversa com a equipe-Pratique e confira",
        "Pratique e confira-Desafio técnico e conversa com a equipe"
      ]
    },
    "entrevistas.desafio-tecnico-e-conversa-com-a-equipe.deepening": {
      "id": "entrevistas.desafio-tecnico-e-conversa-com-a-equipe.deepening",
      "groupId": "entrevistas.desafio-tecnico-e-conversa-com-a-equipe",
      "title": "Desafio de aprofundamento",
      "kind": "challenge",
      "description": "Escolha uma decisão de Desafio técnico e conversa com a equipe no seu projeto. Construa uma segunda solução, compare os resultados com um caso de teste e explique os limites de cada abordagem. Use as referências para verificar sua conclusão.",
      "requires": [
        "entrevistas.desafio-tecnico-e-conversa-com-a-equipe.basics",
        "entrevistas.desafio-tecnico-e-conversa-com-a-equipe.practice"
      ],
      "resourceIds": [
        "resource.git",
        "resource.contribute",
        "resource.youtubeDeschamps",
        "resource.youtubeMontanoInterviews"
      ],
      "legacyIds": []
    },
    "entrevistas.estruturas-e-design-de-sistemas.basics": {
      "id": "entrevistas.estruturas-e-design-de-sistemas.basics",
      "groupId": "entrevistas.estruturas-e-design-de-sistemas",
      "title": "O básico",
      "description": "",
      "requires": [],
      "resourceIds": [
        "resource.algorithmsCourse",
        "resource.sre",
        "resource.kafka",
        "resource.youtubeTrilhaInfo",
        "resource.youtubeFullCycleArchitecture"
      ],
      "kind": "concept",
      "legacyIds": [
        "Estruturas e design de sistemas-O básico",
        "O básico-Estruturas e design de sistemas"
      ]
    },
    "entrevistas.estruturas-e-design-de-sistemas.practice": {
      "id": "entrevistas.estruturas-e-design-de-sistemas.practice",
      "groupId": "entrevistas.estruturas-e-design-de-sistemas",
      "title": "Pratique e confira",
      "description": "Desenhe um serviço simples, estime seus limites e justifique uma escolha arquitetural sem adicionar componentes desnecessários.",
      "requires": [
        "entrevistas.estruturas-e-design-de-sistemas.basics"
      ],
      "resourceIds": [
        "resource.algorithmsCourse",
        "resource.sre",
        "resource.kafka",
        "resource.youtubeTrilhaInfo",
        "resource.youtubeFullCycleArchitecture"
      ],
      "kind": "practice",
      "legacyIds": [
        "Estruturas e design de sistemas-Pratique e confira",
        "Pratique e confira-Estruturas e design de sistemas"
      ]
    },
    "entrevistas.estruturas-e-design-de-sistemas.deepening": {
      "id": "entrevistas.estruturas-e-design-de-sistemas.deepening",
      "groupId": "entrevistas.estruturas-e-design-de-sistemas",
      "title": "Desafio de aprofundamento",
      "kind": "challenge",
      "description": "Escolha uma decisão de Estruturas e design de sistemas no seu projeto. Construa uma segunda solução, compare os resultados com um caso de teste e explique os limites de cada abordagem. Use as referências para verificar sua conclusão.",
      "requires": [
        "entrevistas.estruturas-e-design-de-sistemas.basics",
        "entrevistas.estruturas-e-design-de-sistemas.practice"
      ],
      "resourceIds": [
        "resource.algorithmsCourse",
        "resource.sre",
        "resource.kafka",
        "resource.youtubeTrilhaInfo",
        "resource.youtubeFullCycleArchitecture"
      ],
      "legacyIds": []
    }
  },
  "resources": {
    "resource.git": {
      "id": "resource.git",
      "title": "Pro Git: livro gratuito (português)",
      "url": "https://git-scm.com/book/pt-br/v2",
      "language": "pt-BR",
      "kind": "Leia",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.contribute": {
      "id": "resource.contribute",
      "title": "GitHub: como contribuir com projetos (português)",
      "url": "https://docs.github.com/pt/get-started/exploring-projects-on-github/contributing-to-a-project",
      "language": "pt-BR",
      "kind": "Leia",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.youtubeSoutinhoPortfolio": {
      "id": "resource.youtubeSoutinhoPortfolio",
      "title": "Mario Souto (DevSoutinho): como montar um portfólio (português; vídeos gratuitos no YouTube)",
      "url": "https://www.youtube.com/c/DevSoutinho",
      "language": "pt-BR",
      "kind": "Assista",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.youtubeMontanoResume": {
      "id": "resource.youtubeMontanoResume",
      "title": "Lucas Montano: revisão de currículos e contratação (português; vídeos gratuitos no YouTube)",
      "url": "https://www.youtube.com/c/LucasMontano",
      "language": "pt-BR",
      "kind": "Assista",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.cursor": {
      "id": "resource.cursor",
      "title": "Cursor: uso do agente (inglês; documentação gratuita)",
      "url": "https://cursor.com/docs/agent/overview",
      "language": "en",
      "kind": "Leia",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.cursorPrompts": {
      "id": "resource.cursorPrompts",
      "title": "Cursor: prompts e contexto (inglês; documentação gratuita)",
      "url": "https://cursor.com/docs/agent/prompting",
      "language": "en",
      "kind": "Leia",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.claude": {
      "id": "resource.claude",
      "title": "Claude Code: primeiros passos (inglês; documentação gratuita)",
      "url": "https://code.claude.com/docs/en/quickstart",
      "language": "en",
      "kind": "Leia",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.claudePractices": {
      "id": "resource.claudePractices",
      "title": "Claude Code: boas práticas (inglês; documentação gratuita)",
      "url": "https://code.claude.com/docs/en/best-practices",
      "language": "en",
      "kind": "Leia",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.codex": {
      "id": "resource.codex",
      "title": "OpenAI: primeiros passos com Codex (inglês; documentação gratuita)",
      "url": "https://developers.openai.com/codex/quickstart/",
      "language": "en",
      "kind": "Leia",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.codexPrompts": {
      "id": "resource.codexPrompts",
      "title": "OpenAI: prompting para tarefas de código (inglês; documentação gratuita)",
      "url": "https://developers.openai.com/codex/prompting/",
      "language": "en",
      "kind": "Leia",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.ai": {
      "id": "resource.ai",
      "title": "GitHub: uso responsável de sugestões de IA (português)",
      "url": "https://docs.github.com/pt/copilot/responsible-use/copilot-code-completion",
      "language": "pt-BR",
      "kind": "Leia",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.js": {
      "id": "resource.js",
      "title": "MDN: guia de JavaScript (português)",
      "url": "https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Guide",
      "language": "pt-BR",
      "kind": "Leia",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.python": {
      "id": "resource.python",
      "title": "Python: tutorial oficial (português)",
      "url": "https://docs.python.org/pt-br/3/tutorial/",
      "language": "pt-BR",
      "kind": "Leia",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.vitest": {
      "id": "resource.vitest",
      "title": "Vitest: primeiros passos (inglês)",
      "url": "https://vitest.dev/guide/",
      "language": "en",
      "kind": "Leia",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.http": {
      "id": "resource.http",
      "title": "MDN: HTTP (português)",
      "url": "https://developer.mozilla.org/pt-BR/docs/Web/HTTP",
      "language": "pt-BR",
      "kind": "Leia",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.postgres": {
      "id": "resource.postgres",
      "title": "PostgreSQL: tutorial de SQL (inglês)",
      "url": "https://www.postgresql.org/docs/current/tutorial.html",
      "language": "en",
      "kind": "Leia",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.security": {
      "id": "resource.security",
      "title": "OWASP: guia de segurança de aplicações (inglês)",
      "url": "https://cheatsheetseries.owasp.org/",
      "language": "en",
      "kind": "Leia",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.algorithms": {
      "id": "resource.algorithms",
      "title": "Python: estruturas de dados (português)",
      "url": "https://docs.python.org/pt-br/3/tutorial/datastructures.html",
      "language": "pt-BR",
      "kind": "Leia",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.algorithmsCourse": {
      "id": "resource.algorithmsCourse",
      "title": "MIT OpenCourseWare: algoritmos, complexidade e grafos (inglês)",
      "url": "https://ocw.mit.edu/courses/6-006-introduction-to-algorithms-fall-2011/pages/lecture-notes/",
      "language": "en",
      "kind": "Leia",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.youtubeAlgorithmsCourse": {
      "id": "resource.youtubeAlgorithmsCourse",
      "title": "Curso em Vídeo: algoritmos e lógica de programação (português; playlist gratuita no YouTube)",
      "url": "https://www.youtube.com/playlist?list=PLHz_AreHm4dmSj0MHol_aoNYCSGFqvfXV",
      "language": "pt-BR",
      "kind": "Assista",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.youtubeAkita": {
      "id": "resource.youtubeAkita",
      "title": "Fabio Akita: base da computação e algoritmos (português; vídeos gratuitos no YouTube)",
      "url": "https://www.youtube.com/c/FabioAkita1990",
      "language": "pt-BR",
      "kind": "Assista",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.youtubeSoutinhoLiveCoding": {
      "id": "resource.youtubeSoutinhoLiveCoding",
      "title": "Mario Souto (DevSoutinho): live coding e desafios (português; vídeos gratuitos no YouTube)",
      "url": "https://www.youtube.com/c/DevSoutinho",
      "language": "pt-BR",
      "kind": "Assista",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.youtubeRocketseatChallenges": {
      "id": "resource.youtubeRocketseatChallenges",
      "title": "Rocketseat: resolução de desafios técnicos (português; vídeos gratuitos no YouTube)",
      "url": "https://www.youtube.com/c/rocketseat",
      "language": "pt-BR",
      "kind": "Assista",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.react": {
      "id": "resource.react",
      "title": "React: aprenda React (português)",
      "url": "https://pt-br.react.dev/learn",
      "language": "pt-BR",
      "kind": "Leia",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.playwright": {
      "id": "resource.playwright",
      "title": "Playwright: testes de ponta a ponta (inglês)",
      "url": "https://playwright.dev/docs/intro",
      "language": "en",
      "kind": "Leia",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.otel": {
      "id": "resource.otel",
      "title": "OpenTelemetry: conceitos de observabilidade (português)",
      "url": "https://opentelemetry.io/pt/docs/concepts/observability-primer/",
      "language": "pt-BR",
      "kind": "Leia",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.dbt": {
      "id": "resource.dbt",
      "title": "dbt: introdução às transformações de dados (inglês)",
      "url": "https://docs.getdbt.com/docs/introduction",
      "language": "en",
      "kind": "Leia",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.youtubeDeschamps": {
      "id": "resource.youtubeDeschamps",
      "title": "Filipe Deschamps: carreira, atitude e soft skills (português; vídeos gratuitos no YouTube)",
      "url": "https://www.youtube.com/c/FilipeDeschamps",
      "language": "pt-BR",
      "kind": "Assista",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.youtubeMontanoInterviews": {
      "id": "resource.youtubeMontanoInterviews",
      "title": "Lucas Montano: entrevistas em big techs e carreira (português; vídeos gratuitos no YouTube)",
      "url": "https://www.youtube.com/c/LucasMontano",
      "language": "pt-BR",
      "kind": "Assista",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.sre": {
      "id": "resource.sre",
      "title": "Google SRE: livro gratuito (inglês)",
      "url": "https://sre.google/sre-book/table-of-contents/",
      "language": "en",
      "kind": "Leia",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.kafka": {
      "id": "resource.kafka",
      "title": "Apache Kafka: introdução e primeiros passos (inglês)",
      "url": "https://kafka.apache.org/quickstart",
      "language": "en",
      "kind": "Leia",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.youtubeTrilhaInfo": {
      "id": "resource.youtubeTrilhaInfo",
      "title": "Flávio Mendes (Trilha Info): arquitetura e carreira (português; vídeos gratuitos no YouTube)",
      "url": "https://www.youtube.com/@atrilhainfo",
      "language": "pt-BR",
      "kind": "Assista",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    },
    "resource.youtubeFullCycleArchitecture": {
      "id": "resource.youtubeFullCycleArchitecture",
      "title": "Full Cycle: arquitetura e microsserviços (português; vídeos gratuitos no YouTube)",
      "url": "https://www.youtube.com/c/FullCycle",
      "language": "pt-BR",
      "kind": "Assista",
      "free": true,
      "estimatedMinutes": null,
      "lastReviewedAt": null
    }
  }
}