尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證🏆 Winner, Accenture GenAI Mavericks 2026. Synthetic population of Spain (25,000 profiles) that predicts survey answers by region, sex and age, with a validated confidence traffic light. CIS-trained models + local LLM.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗A synthetic population of Spain that predicts how Spanish society would answer a survey question, a campaign or an A/B test, broken down by region, sex and age, with a confidence traffic light that tells you how far to trust each answer.
🏆 Winner of the Accenture GenAI Mavericks Challenge 2026, Challenge 3: "Synthetic Population of Spanish Society".
| ▶️ Live demo (554 precomputed questions) | https://jjaramillo2023.github.io/pulso/?preguntas |
| 🌐 Project site | https://jjaramillo2023.github.io/pulso/proyecto/ |
| 🎤 Final pitch deck (with demo videos) | https://jjaramillo2023.github.io/pulso/presentacion/ |
The interface is in Spanish, since the product is built for the Spanish market.
A national survey in Spain takes weeks and can cost hundreds of thousands of euros. Asking a general-purpose LLM is instant, but its answers reflect stereotypes rather than people. We measured how bad that is. With no data behind it, an LLM says that 12 % of Spaniards over 60 are very worried about climate change. The CIS (Spain's public survey institute) measured 60 %.
You type a question and its answer options. pulso answers in seconds with the predicted distribution for Spain and for every region, sex and age group. Each answer carries a label that says which evidence it rests on:
| Level | When it applies | How it answers | Measured error |
|---|---|---|---|
| 🟢 Model trained on the CIS | The CIS has already asked this question | A weighted multinomial logistic regression per question, trained on CIS microdata (9 studies, ~37,000 interviews), predicts the answer of each synthetic person | ≈0.5 pp on the same survey; 1.8 pp nationally and 4.8 pp by region when predicting the next edition of the survey (24 repeated questions) |
| 🟡 LLM anchored on the CIS | The CIS asked something similar | 100 archetypes answer with a local LLM (llama3.1:8b, reading token log-probabilities), each one conditioned on attitudes measured in the CIS | ±14 pp (n = 14) |
| 🔴 LLM with Spanish profiles | A brand new question | The same simulation without CIS anchoring. Exploratory only | ±20 pp (n = 6) |
All the errors are mean absolute errors in percentage points, measured against real CIS results by the validation scripts in this repo.
We compared pulso with an LLM that has no data on 176 questions where the real CIS answer is known:
flowchart LR
Q[Question + options] --> S[Semantic search over the CIS question bank<br/>bge-m3 embeddings]
S --> J{LLM judge:<br/>same, similar or new?}
J -- same, similarity ≥ 0.83 --> G[🟢 Per-question model<br/>trained on CIS microdata]
J -- similar --> A[🟡 100 archetypes answer with llama3.1:8b<br/>anchored on CIS attitudes]
J -- new --> R[🔴 100 archetypes answer with llama3.1:8b<br/>Spanish profiles only]
G --> P[25,000 synthetic people<br/>INE census, ECV, ICT survey + CIS imputation]
A --> K[Each person inherits from its<br/>8 nearest archetypes]
R --> K
K --> P
P --> O[Weighted results for Spain,<br/>each region, sex and age group]
Every number shown in the product and in the deck comes from these scripts:
| Script | What it measures |
|---|---|
04_calibrar_simulador.py | Error of the LLM simulator against real CIS answers |
10_validar_ambar_rojo.py | Routes 23 calibration questions as if their own survey did not exist and measures the amber and red error |
11_validar_tiempo.py | Trains on one edition of a survey and predicts the next one (24 repeated questions). Repeating the old edition gives 1.5 / 1.8 / 2.9 / 4.9 pp (national / sex / age / region); pulso gives 1.8 / 2.1 / 3.1 / 4.8 pp |
motor.py (comparar), run by 05_precalcular_demo.py and 12_precalcular_catalogo.py | The 176-question comparison against an LLM without data |
Known limitations, stated openly. Region shares in the synthetic population are not exactly those of the INE (Madrid 12 % vs 14.5 %), and reweighting changes national totals by only 0.17 pp on average. Amber and red answers are exploratory and are always labelled as such. 41 implausible LLM answers were removed from the public catalogue rather than tuned.
├── index.html, app.js, … Published web app (static build, served by GitHub Pages)
├── datos/ Precomputed answers, validation results and the 25,000-person population
├── proyecto/ Project site
├── presentacion/ Final pitch deck with demo videos
├── docs/ Screenshots for this README
└── source/
├── trabajo/ Engine: harmonization, CIS models, LLM simulator, routing, validation, API
├── frontend/ Web app source
└── requirements.txt
pip install -r source/requirements.txt
ollama pull llama3.1:8b && ollama pull bge-m3
cd source/trabajo && python -m uvicorn servidor:app --port 8765 # open http://127.0.0.1:8765
The raw inputs are not redistributed here. CIS microdata can be downloaded for free from cis.es into source/datos_cis/microdatos/, and the synthetic population built by the team lives in the team repository. The scripts are numbered in the order they run. The published demo needs none of this, because it is fully precomputed.
I designed and wrote the pulso engine and product end to end: the harmonization of CIS and INE data, the per-question CIS models, the LLM archetype simulator, semantic routing with the LLM judge, all the validation, the API, the web app, the static deployment and the final pitch deck, which I also presented.
Team: Juan José Jaramillo (engine, frontend and pitch), Adrián and Ainhoa (synthetic population database), Guillermo (backend), Anton Pogromskyy (visuals and frontend). The full team repository is anton-p0g/Accenture.
All the profiles are synthetic, so no real individual can be identified. The sources are open (INE, CIS). Every answer is labelled with its level of evidence and its measured error, in line with the transparency obligations of Article 50 of the EU AI Act. The results are model predictions and do not replace a real survey.