# CEDS PREV — Assessoria Previdenciária

> Assessoria especializada em orientar, planejar e descomplicar direitos e benefícios previdenciários junto ao INSS com agilidade, transparência e atendimento 100% humanizado em todo o Brasil.

## Informações Gerais
- **Nome:** CEDS PREV (Assessoria Previdenciária)
- **Website Oficial:** https://www.cedsprev.com.br/
- **WhatsApp Oficial:** +55 (19) 99306-2682 (https://wa.me/5519993062682)
- **Instagram:** https://www.instagram.com/cedsprev/ (@cedsprev)
- **Facebook:** https://www.facebook.com/profile.php?id=61593955793164
- **Atendimento:** 100% Online em todo o território nacional
- **E-mail:** contato@cedsprev.com.br
- **Modelo:** Análise preliminar gratuita e sem compromisso

## Política e Transparência de Honorários
- **Análise Inicial:** 100% gratuita para qualquer caso ou benefício.
- **Concessão de Benefícios:** Honorários cobrados exclusivamente no êxito (o cliente só paga após a concessão e o recebimento do benefício pago pelo INSS; risco financeiro zero em caso de indeferimento).
- **Estudos Técnicos (Planejamento e Revisão):** Valor sob consulta, combinado previamente antes de qualquer execução.
- **Transparência de Valores:** Apresentada de forma transparente na seção de honorários da página inicial (https://www.cedsprev.com.br/#analise).

## Os 7 Benefícios e Soluções Previdenciárias da CEDS PREV
- **Aposentadorias e Regras de Transição:** Orientações completas sobre aposentadoria por idade (62 anos mulher / 65 anos homem), tempo de contribuição, especial (insalubridade/periculosidade) e rural. Simulação das regras de transição da Reforma da Previdência.
  - Página Dedicada: https://www.cedsprev.com.br/aposentadoria.html
- **Planejamento Previdenciário:** Varredura detalhada do extrato CNIS, identificação de inconsistências, simulação de regras de transição da Reforma e projeção do maior valor mensal possível.
  - Página Dedicada: https://www.cedsprev.com.br/planejamento-previdenciario.html
- **Revisão de Benefício:** Análise de cálculos e verificação de regras para quem já recebe benefício e busca reajustes ou valores retroativos devidos (prazo decadencial de 10 anos).
  - Página Dedicada: https://www.cedsprev.com.br/revisao-beneficio.html
- **BPC / LOAS (Benefício de Prestação Continuada):** Benefício assistencial de 1 salário mínimo mensal para idosos com 65 anos ou mais e pessoas com deficiência (PCD) de baixa renda, sem exigência de contribuição prévia ao INSS.
  - Página Dedicada: https://www.cedsprev.com.br/bpc-loas.html
- **Pensão por Morte:** Amparo ágil aos dependentes (cônjuge, união estável, filhos até 21 anos ou PcD, pais dependentes) após a perda de segurado do INSS.
  - Página Dedicada: https://www.cedsprev.com.br/pensao-por-morte.html
- **Benefícios por Incapacidade (Auxílio-Doença & Invalidez):** Auxílio por incapacidade temporária e aposentadoria por incapacidade permanente. Isenção de carência para doenças graves e preparação para perícia médica.
  - Página Dedicada: https://www.cedsprev.com.br/beneficios-incapacidade.html
- **Salário-Maternidade:** 120 dias de amparo financeiro para mães biológicas ou adotantes (CLT, MEI, autônomas e desempregadas no período de graça).
  - Página Dedicada: https://www.cedsprev.com.br/salario-maternidade.html

## Diferenciais Institucionais
- Avaliação preliminar com custo zero.
- Linguagem simples, direta e humana (sem jargões jurídicos complicados).
- Rigor técnico fundamentado na legislação previdenciária vigente.
- Total sigilo e conformidade com a Lei Geral de Proteção de Dados (LGPD).

## Aviso Legal Obrigatório
A CEDS PREV é uma empresa privada de assessoria previdenciária independente, sem qualquer subordinação ou vínculo governamental/institucional com o Instituto Nacional do Seguro Social (INSS).

## Links Relevantes
- [Página Inicial](https://www.cedsprev.com.br/)
- [Aposentadoria no INSS](https://www.cedsprev.com.br/aposentadoria.html)
- [Planejamento Previdenciário](https://www.cedsprev.com.br/planejamento-previdenciario.html)
- [Revisão de Benefício](https://www.cedsprev.com.br/revisao-beneficio.html)
- [BPC / LOAS para Idosos e PcD](https://www.cedsprev.com.br/bpc-loas.html)
- [Pensão por Morte](https://www.cedsprev.com.br/pensao-por-morte.html)
- [Benefícios por Incapacidade](https://www.cedsprev.com.br/beneficios-incapacidade.html)
- [Salário-Maternidade](https://www.cedsprev.com.br/salario-maternidade.html)
- [Política de Privacidade](https://www.cedsprev.com.br/politica-de-privacidade.html)
- [Sitemap](https://www.cedsprev.com.br/sitemap.xml)
