AI legal counsel for Cameroon, Mozambique and the CEMAC region. Developed by Bouquet Innovation S.A.
# Counsel Pinto
**Developed by Bouquet Innovation S.A**
An AI legal counsel web app for **Cameroon**, **Mozambique** and the **CEMAC region**, answering in English, French or Portuguese.
Every substantive answer comes back in a fixed structure: Short Answer → Legal Basis → Procedural Steps → Risks & Considerations → Recommended Action → Templates.
## Stack
- Next.js 16 (App Router) + React 19 + TypeScript
- Tailwind CSS v4
- Pluggable model provider — six supported, five of them free, no vendor SDK
## Setup
Pick a provider from the table below, set its key, and run:
```bash
cp .env.example .env.local # then set one key
npm install
npm run dev
```
Open
localhost. If no key is set the app still runs and tells you what to add — it doesn't error.
## Providers
| Provider | Free? | Web search | Key |
| --- | --- | --- | --- |
| **Groq** | Yes, no card | **Yes, on `compound` models** |
console.groq.com |
| Cerebras | Yes, no card | No | cloud.cerebras.ai |
| Mistral | Free experimental tier | No |
console.mistral.ai |
| OpenRouter | Only on `:free` models | Only on `:online` models (billed) |
openrouter.ai |
| GitHub Models | Yes, rate-limited | No |
github.com |
| Perplexity | Paid | Yes |
perplexity.ai |
**Groq is the one to use**, and if the answers need to be current, set `GROQ_MODEL` to a compound model. Those run web search server-side and report what they used, which is the only way to get free *and* sourced. The default (`llama-3.3-70b-versatile`) is the safer starting point but answers from training data alone.
Search capability is a property of the **model**, not the provider — `src/lib/providers/catalog.ts` matches it per model, so switching `GROQ_MODEL` to a compound system enables the search toggle automatically.
### How the provider is chosen
The app uses the first provider it finds a key for, in the order in the table. Set `AI_PROVIDER` to pin one explicitly when several keys are pr …