const documentProcessor = createFlow()
.step('categorize', categorize({
provider: vlmProvider,
categories: [
'invoice',
'receipt',
'bank_statement',
'tax_form',
'unknown'
]
}))
.conditional('process', (data) => {
switch (data.category) {
case 'invoice':
return extract({ provider: vlmProvider, schema: invoiceSchema });
case 'receipt':
return extract({ provider: vlmProvider, schema: receiptSchema });
case 'bank_statement':
return extract({ provider: vlmProvider, schema: bankStatementSchema });
case 'tax_form':
return extract({ provider: vlmProvider, schema: taxFormSchema });
default:
// Return basic metadata for unknown documents
return extract({
provider: vlmProvider,
schema: {
type: 'object',
properties: {
title: { type: 'string' },
date: { type: 'string' },
summary: { type: 'string' }
}
}
});
}
})
.build();