Batch Analyse requests and survive opaque provider schema budgets
Analyse now classifies up to ten same-kind transactions per provider request: the registry and history travel once per batch, so a thousand-row backfill costs about a hundred paced requests instead of a thousand. The answer schema appears once — an array item carrying an enum-bound ref — because providers meter strict schemas by token cost: duplicating registry enums per row, or bounding arrays with minItems/maxItems that Gemini expands per element, rejects real registries with a bare HTTP 400. Row count, duplicate refs, duplicate tags and taxonomy bounds are all enforced server-side instead, and a request still rejected outright halves until accepted, remembering the working size for the run. Batch requests scale the HTTP budget by row count, chunk failures cannot abort a run whose later rows succeeded, and rows resolved against one snapshot share one minted merchant. Measured on a real 165-row month over a zero-data-retention route: 165 analysed, 152 proposals, 0 errors, 17 requests, under 8 minutes. Fresh installs default to google/gemini-3.8-flash, the model that demonstrably honors strict structured outputs over a ZDR route. Preview changes now carry counterparty, amount and currency, and the review list shows the amount with a counterparty fallback for banks that leave descriptions empty.
This commit is contained in:
@@ -141,6 +141,12 @@ func Open(dir string) (*App, error) {
|
||||
} else if !os.IsNotExist(e) {
|
||||
return fail(e)
|
||||
}
|
||||
// A fresh install classifies with a fast, inexpensive model that
|
||||
// demonstrably honors strict structured outputs over a zero-data-retention
|
||||
// route; an explicit config.toml entry always wins.
|
||||
if strings.TrimSpace(a.settings.Model) == "" {
|
||||
a.settings.Model = "google/gemini-3.8-flash"
|
||||
}
|
||||
if b, e := os.ReadFile(filepath.Join(dir, "state", "sync-state.json")); e == nil {
|
||||
if err = json.Unmarshal(b, &a.ops); err != nil {
|
||||
return fail(fmt.Errorf("sync state: %w", err))
|
||||
|
||||
Reference in New Issue
Block a user