handshake-acknowledgement

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

HandShake Acknowledgement Generator

HandShake确认函生成工具

Generates the Somnio HandShake - Step 3 Acknowledgement PDF from raw EM notes. Handles single or batch generation (1 to N devs in one run).
根据EM的原始笔记生成Somnio HandShake - 第三步确认函 PDF。 支持单个或批量生成(一次处理1到N位开发者)。

Context

背景

Somnio Software runs a bi-annual performance review program called HandShake (April and October/November). After conducting interviews with the PM, a dev from the team, and the Tech Lead, the EM synthesizes everything into the Acknowledgement document — a formal PDF delivered to the developer.
Somnio Software每半年开展一次名为HandShake的绩效评审项目(4月和10/11月)。在与PM、团队内的开发者以及Tech Lead完成访谈后,EM会将所有内容整合为确认函——一份正式的PDF文档,交付给对应开发者。

Input

输入

One or more ficha files (PDF, DOCX, or pasted text) per developer, containing:
  • Notes from PM interview
  • Notes from dev team member interview
  • Notes from Tech Lead review
  • EM synthesis / general feedback
  • Optionally: previous Acknowledgement PDF (for comparison section)
Input is always free-form — Claude must interpret it intelligently.
每位开发者对应的一个或多个评估表文件(PDF、DOCX或粘贴的文本),包含:
  • PM访谈笔记
  • 团队成员访谈笔记
  • Tech Lead评审笔记
  • EM整理的综合反馈/通用反馈
  • 可选:之前的确认函PDF(用于对比章节)
输入格式完全自由——Claude必须智能解读。

Output

输出

One PDF per developer, matching the Somnio Acknowledgement template:
  • Somnio logo top-right header, gradient background, transparent footer
  • Header table: Somnier, Líder, Fecha, Rol del Somnier
  • Puntos abordados (standard agenda — always the same)
  • Resumen del encuentro: Seniority · Rendimiento actual · Comparación anterior (if applicable)
  • Objetivos acordados: Oportunidad de mejora + Continuar trabajando en
  • Aclaración o comentarios generales (optional)

每位开发者对应一份PDF,匹配Somnio确认函模板:
  • 右上角页眉为Somnio标志,渐变背景,透明页脚
  • 页眉表格:Somnier(开发者)、Líder(负责人)、Fecha(日期)、Rol del Somnier(开发者职级)
  • Puntos abordados(标准议程——固定不变)
  • Resumen del encuentro(会议总结):职级 · 当前绩效 · 往期对比(如有提供)
  • Objetivos acordados(议定目标):改进机会 + 持续推进事项
  • Aclaración o comentarios generales(说明或通用评论)(可选)

Batch Workflow (ALWAYS follow this order)

批量工作流(严格遵循以下顺序)

Step 1 — Read all attached files

步骤1 — 读取所有附加文件

When the EM attaches one or more ficha files, read all of them before asking anything. For each file, extract as much as possible:
  • Developer name (Somnier)
  • EM / Líder name
  • Role
  • Current seniority level
  • Target level
  • All feedback content
当EM附加一个或多个评估表文件时,先读取所有文件后再提问。 针对每个文件,尽可能提取以下信息:
  • 开发者姓名(Somnier)
  • EM/负责人姓名
  • 职级
  • 当前职级水平
  • 目标职级
  • 所有反馈内容

Step 2 — Show confirmation table

步骤2 — 展示确认表格

Present a single summary table with one row per developer. Pre-fill every field Claude could infer. Mark fields Claude could NOT determine with
[?]
.
Example format:
Encontré X fichas. Antes de generar, confirmá o corregí los datos:

| # | Somnier | Líder | Fecha | Rol |
|---|---------|-------|-------|-----|
| 1 | Gonzalo Sosa | Ariel Martinez | [?] | Sr Flutter Developer |
| 2 | Juan Pérez | [?] | [?] | Sr Backend Engineer |

Completá los [?] y avisame si hay algo para corregir. Una vez confirmado, genero todos los PDFs.
Date format rule: Fecha must be
Dec 19, 2025
style (abbreviated English month, no leading zero, 4-digit year). Accept any format from the EM and normalise automatically.
Do NOT generate any PDF until the EM explicitly confirms the table.
呈现一个汇总表格,每位开发者对应一行。预填充所有可推断的字段,无法确定的字段标记为
[?]
示例格式:
找到X份评估表。生成前请确认或修正以下数据:

| # | Somnier | Líder | Fecha | Rol |
|---|---------|-------|-------|-----|
| 1 | Gonzalo Sosa | Ariel Martinez | [?] | Sr Flutter Developer |
| 2 | Juan Pérez | [?] | [?] | Sr Backend Engineer |

请补充[?]部分的内容,如有需要可修正其他信息。确认后我将生成所有PDF。
日期格式规则:Fecha必须为
Dec 19, 2025
格式(英文月份缩写,无前导零,4位年份)。接收EM提供的任何格式并自动标准化。
在EM明确确认表格前,不得生成任何PDF。

Step 3 — Generate all PDFs

步骤3 — 生成所有PDF

Once the EM confirms (even partially, e.g. "el resto está bien"), generate all PDFs sequentially. For each dev:
  1. Build the content JSON from the ficha notes
  2. Run the generation script
  3. Report progress: "✅ 1/3 — Gonzalo Sosa.pdf generado"
Deliver all files at the end together.
一旦EM确认(即使是部分确认,例如“其余内容没问题”),按顺序生成所有PDF。 针对每位开发者:
  1. 根据评估表笔记构建内容JSON
  2. 运行生成脚本
  3. 报告进度:"✅ 1/3 — Gonzalo Sosa.pdf已生成"
最后统一交付所有文件。

Step 4 — Deliver

步骤4 — 交付

Present all generated PDFs at once using
present_files
. Name each file:
Handshake_Acknowledgement_Firstname_Lastname.pdf

使用
present_files
一次性呈现所有生成的PDF。 文件命名格式:
Handshake_Acknowledgement_Firstname_Lastname.pdf

Content Synthesis Guide

内容整合指南

From the raw notes, synthesize per developer:
根据原始笔记,为每位开发者整合以下内容:

Rendimiento actual

当前绩效

4–7 bullet points highlighting strengths and achievements. Extract from PM/dev/TL feedback. Reformulate cleanly — do not copy raw notes verbatim.
4–7个要点,突出优势与成就。从PM/开发者/TL反馈中提取。需清晰重构——不得直接复制原始笔记。

Comparación reunión anterior

往期会议对比

Only if a previous Acknowledgement PDF was provided. For each prior objective, assign:
  • Logrado
    — clearly achieved
  • Logrado, pero hay que seguir trabajando
    — partial
  • En progreso
    — started but not there yet
  • Pendiente
    — not yet addressed
If no previous eval: omit this section entirely.
仅当提供了之前的确认函PDF时才包含此部分。针对每个往期目标,标记:
  • Logrado
    (已完成)——明确达成
  • Logrado, pero hay que seguir trabajando
    (已完成,但需持续推进)——部分达成
  • En progreso
    (进行中)——已启动但未完成
  • Pendiente
    (未启动)——尚未开展
如果没有往期评估:完全省略此章节

Oportunidad de mejora

改进机会

3–6 specific, actionable improvement areas. Extract from TL/PM criticism. Frame positively and professionally.
3–6个具体、可执行的改进方向。从TL/PM的评价中提取。需以积极、专业的方式表述。

Continuar trabajando en

持续推进事项

Grouped by category. For Flutter devs, typical categories:
  • Conocimientos Técnicos
  • Conocimientos Avanzados y Especialización
  • Mejora Continua y Arquitectura
  • Liderazgo y Comunicación
  • Innovación y Uso de Inteligencia Artificial
Adapt categories to the actual role and tech stack.

按类别分组。对于Flutter开发者,典型类别包括:
  • 技术知识
  • 高级知识与专业化
  • 持续改进与架构
  • 领导力与沟通
  • 创新与人工智能应用
根据实际职级和技术栈调整类别。

Running the Generation Script

运行生成脚本

bash
python3 /path/to/handshake-acknowledgement/scripts/generate_pdf.py \
  --somnier "FULL NAME" \
  --lider "LEADER NAME" \
  --fecha "Dec 19, 2025" \
  --rol "Role Title" \
  --output /mnt/user-data/outputs/Handshake_Acknowledgement_Firstname_Lastname.pdf \
  --content /tmp/handshake_content_firstname.json
The script auto-normalises the date format. See
scripts/generate_pdf.py
for the full content JSON structure.

bash
python3 /path/to/handshake-acknowledgement/scripts/generate_pdf.py \
  --somnier "FULL NAME" \
  --lider "LEADER NAME" \
  --fecha "Dec 19, 2025" \
  --rol "Role Title" \
  --output /mnt/user-data/outputs/Handshake_Acknowledgement_Firstname_Lastname.pdf \
  --content /tmp/handshake_content_firstname.json
脚本会自动标准化日期格式。完整的内容JSON结构请参见
scripts/generate_pdf.py

Important Notes

重要说明

  • Language: Spanish throughout.
  • Tone: Professional, constructive, empathetic — the document is read by the developer.
  • Seniority levels at Somnio: Junior → Semi-Senior → Senior Medium → Senior Advance → Tech Lead
  • Puntos abordados is always the same standard agenda — never change it.
  • If a section has no content (no previous eval, no dev comments), omit it entirely.
  • Fonts: Nunito 11pt for content, Plus Jakarta Sans 9pt for footer. If TTF files are not present in
    assets/fonts/
    , Liberation Sans is used as fallback. To install proper fonts, place TTF files there (see script docstring).
  • 语言:全程使用西班牙语。
  • 语气:专业、建设性、共情——该文档将由开发者阅读。
  • Somnio的职级体系:Junior → Semi-Senior → Senior Medium → Senior Advance → Tech Lead
  • Puntos abordados始终为固定的标准议程——不得修改。
  • 如果某章节无内容(无往期评估、无开发者评论),完全省略该章节。
  • 字体:内容使用Nunito 11pt,页脚使用Plus Jakarta Sans 9pt。如果
    assets/fonts/
    目录下没有对应的TTF文件,将使用Liberation Sans作为 fallback。如需安装正确字体,请将TTF文件放置于该目录(参见脚本文档字符串)。