marinarosa commited on
Commit
52a8d7a
·
1 Parent(s): 88d4d8f

Make the demo export image-only for faster transcription

Browse files

Drop the four PDFs from the synthetic example so the one-click demo processes
faster: PDFs take an extra render/extraction path on top of vision OCR. The
export is now 11 images (was 11 images + 4 PDFs, ~686 KB -> ~490 KB), still
covering every dashboard category at least once plus the uncategorized image.
Trim the chat's PDF follow-up lines accordingly and acknowledge the lodging
confirmation in text instead of a PDF attachment.

assets/example/example_data.zip CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:10eae8366349d7d399936356abafafb4ca9278168287a32e7eb9f78ff9d34561
3
- size 701705
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0823eee93b60de36645a178088a26fc8f86f06a66bb2ee6ebe5f6957f1808e21
3
+ size 501385
finetune/vision/synthetic_example_export.py CHANGED
@@ -1,8 +1,9 @@
1
  """Generate a small, fully synthetic WhatsApp export ZIP for demo ingestion.
2
 
3
- The export is deliberately compact: two artifacts for every business
4
- category the dashboard surfaces (quote, reservation, boarding pass, payment,
5
- invoice, lodging, identity) plus a single uncategorized image. The chat is a
 
6
  hand-authored sale arc that uses the agency glossary correctly -- a cotacao
7
  is an orcamento (a not-yet-purchased estimate), a reserva carries a locator
8
  (PNR), a pedido is the closed-sale invoice, and an embarque is the boarding
@@ -45,22 +46,19 @@ OWNER = "Voce"
45
  CLIENT = "Bianca Almeida"
46
  AGENCY = "Viva Mais Viagens"
47
 
48
- # Two artifacts per business category plus one uncategorized image, in the
49
- # order they appear in the sale arc below. Each "send" entry in CONVERSATION
50
- # consumes the next item here, so the two lists must stay aligned.
 
51
  MEDIA_PLAN: tuple[tuple[ArtifactKind, str], ...] = (
52
  (ArtifactKind.AIR_QUOTE, "image"),
53
- (ArtifactKind.AIR_QUOTE, "pdf"),
54
  (ArtifactKind.ACCOMMODATION, "image"),
55
- (ArtifactKind.ACCOMMODATION, "pdf"),
56
  (ArtifactKind.IDENTITY_DOC, "image"),
57
  (ArtifactKind.IDENTITY_DOC, "image"),
58
  (ArtifactKind.SALE_INVOICE, "image"),
59
- (ArtifactKind.SALE_INVOICE, "pdf"),
60
  (ArtifactKind.PAYMENT_PROOF, "image"),
61
  (ArtifactKind.PAYMENT_PROOF, "image"),
62
  (ArtifactKind.AIR_RESERVATION, "image"),
63
- (ArtifactKind.AIR_RESERVATION, "pdf"),
64
  (ArtifactKind.BOARDING_PASS, "image"),
65
  (ArtifactKind.BOARDING_PASS, "image"),
66
  (ArtifactKind.REFERENCE_ONLY, "image"),
@@ -81,21 +79,20 @@ CONVERSATION: tuple[tuple[str, str, str], ...] = (
81
  ),
82
  (SAY, CLIENT, "Isso. De preferência com conexão curta e um hotel perto da praia."),
83
  (SEND, OWNER, "Primeira opção de orçamento, ida e volta com bagagem."),
84
- (SAY, OWNER, "Esse é só o print. Segue o orçamento completo com as duas tarifas."),
85
- (SEND, OWNER, "Orçamento detalhado em PDF."),
86
  (SAY, CLIENT, "Gostei! A cotação já inclui o seguro viagem?"),
87
  (SAY, OWNER, "Inclui sim. Só reforçando: por enquanto é orçamento, nada foi reservado ainda."),
88
  (SAY, OWNER, "Te mando uma opção de hotel na orla."),
89
  (SEND, OWNER, "Opção de hospedagem perto da praia."),
90
  (SAY, CLIENT, "Esse ficou ótimo. Pode confirmar essa hospedagem."),
91
- (SEND, OWNER, "Confirmação da hospedagem."),
92
- (SAY, OWNER, "Para emitir as passagens vou precisar do documento de cada passageiro."),
 
 
 
93
  (SEND, CLIENT, "Documento do primeiro passageiro."),
94
  (SEND, CLIENT, "E o do segundo passageiro."),
95
  (SAY, OWNER, "Perfeito. Vou montar o pedido com passagens, hotel e seguro."),
96
  (SEND, OWNER, "Pedido fechado para conferência."),
97
- (SAY, OWNER, "Segue o pedido em PDF também."),
98
- (SEND, OWNER, "Pedido em PDF."),
99
  (SAY, CLIENT, "Combinado! Posso dar uma entrada no Pix e parcelar o resto?"),
100
  (SAY, OWNER, "Pode sim. Faz o sinal no Pix e o restante a gente parcela no cartão."),
101
  (SEND, CLIENT, "Comprovante do sinal no Pix."),
@@ -103,8 +100,6 @@ CONVERSATION: tuple[tuple[str, str, str], ...] = (
103
  (SEND, CLIENT, "Comprovante da parcela."),
104
  (SAY, OWNER, "Pagamento confirmado. Vou emitir as passagens agora."),
105
  (SEND, OWNER, "Reserva emitida, com o localizador."),
106
- (SAY, OWNER, "Esse é o itinerário completo em PDF."),
107
- (SEND, OWNER, "Itinerário em PDF."),
108
  (SAY, CLIENT, "Que alívio, muito obrigada! E os cartões de embarque?"),
109
  (SAY, OWNER, "Já fiz o check-in de vocês. Segue o embarque da ida."),
110
  (SEND, OWNER, "Cartão de embarque da ida."),
 
1
  """Generate a small, fully synthetic WhatsApp export ZIP for demo ingestion.
2
 
3
+ The export is deliberately compact and image-only (no PDFs, so the demo
4
+ transcribes fast): every business category the dashboard surfaces (quote,
5
+ reservation, boarding pass, payment, invoice, lodging, identity) appears at
6
+ least once, plus a single uncategorized image. The chat is a
7
  hand-authored sale arc that uses the agency glossary correctly -- a cotacao
8
  is an orcamento (a not-yet-purchased estimate), a reserva carries a locator
9
  (PNR), a pedido is the closed-sale invoice, and an embarque is the boarding
 
46
  CLIENT = "Bianca Almeida"
47
  AGENCY = "Viva Mais Viagens"
48
 
49
+ # Image-only media (no PDFs, so the demo transcribes fast): every business
50
+ # category the dashboard surfaces appears at least once, plus one uncategorized
51
+ # image, in the order they show up in the sale arc below. Each "send" entry in
52
+ # CONVERSATION consumes the next item here, so the two lists must stay aligned.
53
  MEDIA_PLAN: tuple[tuple[ArtifactKind, str], ...] = (
54
  (ArtifactKind.AIR_QUOTE, "image"),
 
55
  (ArtifactKind.ACCOMMODATION, "image"),
 
56
  (ArtifactKind.IDENTITY_DOC, "image"),
57
  (ArtifactKind.IDENTITY_DOC, "image"),
58
  (ArtifactKind.SALE_INVOICE, "image"),
 
59
  (ArtifactKind.PAYMENT_PROOF, "image"),
60
  (ArtifactKind.PAYMENT_PROOF, "image"),
61
  (ArtifactKind.AIR_RESERVATION, "image"),
 
62
  (ArtifactKind.BOARDING_PASS, "image"),
63
  (ArtifactKind.BOARDING_PASS, "image"),
64
  (ArtifactKind.REFERENCE_ONLY, "image"),
 
79
  ),
80
  (SAY, CLIENT, "Isso. De preferência com conexão curta e um hotel perto da praia."),
81
  (SEND, OWNER, "Primeira opção de orçamento, ida e volta com bagagem."),
 
 
82
  (SAY, CLIENT, "Gostei! A cotação já inclui o seguro viagem?"),
83
  (SAY, OWNER, "Inclui sim. Só reforçando: por enquanto é orçamento, nada foi reservado ainda."),
84
  (SAY, OWNER, "Te mando uma opção de hotel na orla."),
85
  (SEND, OWNER, "Opção de hospedagem perto da praia."),
86
  (SAY, CLIENT, "Esse ficou ótimo. Pode confirmar essa hospedagem."),
87
+ (
88
+ SAY,
89
+ OWNER,
90
+ "Confirmado! Para emitir as passagens vou precisar do documento de cada passageiro.",
91
+ ),
92
  (SEND, CLIENT, "Documento do primeiro passageiro."),
93
  (SEND, CLIENT, "E o do segundo passageiro."),
94
  (SAY, OWNER, "Perfeito. Vou montar o pedido com passagens, hotel e seguro."),
95
  (SEND, OWNER, "Pedido fechado para conferência."),
 
 
96
  (SAY, CLIENT, "Combinado! Posso dar uma entrada no Pix e parcelar o resto?"),
97
  (SAY, OWNER, "Pode sim. Faz o sinal no Pix e o restante a gente parcela no cartão."),
98
  (SEND, CLIENT, "Comprovante do sinal no Pix."),
 
100
  (SEND, CLIENT, "Comprovante da parcela."),
101
  (SAY, OWNER, "Pagamento confirmado. Vou emitir as passagens agora."),
102
  (SEND, OWNER, "Reserva emitida, com o localizador."),
 
 
103
  (SAY, CLIENT, "Que alívio, muito obrigada! E os cartões de embarque?"),
104
  (SAY, OWNER, "Já fiz o check-in de vocês. Segue o embarque da ida."),
105
  (SEND, OWNER, "Cartão de embarque da ida."),