You get clean data, shaped to your schema.
You tell Lirovo the fields you want, and it returns typed JSON that matches them. Every value carries a confidence score, and every value links back to the exact second and modality it came from. Here is what that looks like on a real video.
Define a schema, get a typed record back
This run is a Mistral AI CEO interview on CNBC. On the left, the fields we asked for. On the right, the typed JSON Lirovo returned, conforming to exactly that shape.
{
"speakers": "string[]",
"organizations": "string[]",
"funding_round": {
"investor": "string",
"stake": "string",
"amount": "string"
},
"valuation": "string",
"topics": "string[]"
}{
"speakers": ["Arthur Mensch"],
"organizations": ["Mistral AI", "ASML", "Nvidia"],
"funding_round": {
"investor": "ASML",
"stake": "~11%",
"amount": "$2B"
},
"valuation": "$14B",
"topics": ["semiconductors", "AI compute"]
}The schema is enforced. Lirovo validates the output against the JSON Schema you give it, so what comes back conforms to what you asked for. In this run the filled values land between 0.92 and 0.97 confidence, and each one keeps an evidence pointer to the moment it was drawn from.
Every value is typed, scored, and traceable
A value is only useful if you can trust it. Alongside the typed result, Lirovo attaches a confidence score to each value so you can set your own threshold and gate anything below it.
Every value also links back to the exact second it came from, and whether it was spoken or shown on screen. So when the schema says the valuation is $14B, you can open the moment that says so and check it yourself. See how that works on the evidence page.
Explore the typed output
This is the Data view from the product, on the same run: the extracted fields laid out as queryable tables, each row carrying the source moment it was drawn from.

| # | type | subject | attribute | value | unit | conf | source |
|---|---|---|---|---|---|---|---|
| 1 | metric | Mistral AI | valuation | $13B+13,000,000,000 USD | USD | 0.95 | audio |
| 2 | metric | Mistral AI | valuation | $14B14,000,000,000 USD | USD | 0.97 | visual |
| 3 | metric | Mistral AI | data_center_investment | €4 billion4,000,000,000 EUR | EUR | 0.96 | audio |
| 4 | target | Mistral AI | compute_capacity | 200MW → 1GW200,000,000 → 1,000,000,000 W | W | 0.92 | audio |
| 5 | range | US hyperscalers | ai_capex_per_year | $700–800B700,000,000,000 → 800,000,000,000 USD | USD | 0.89 | audio |
| 6 | metric | Europe | digital_deficit_vs_us_per_year | €250B250,000,000,000 EUR | EUR | 0.88 | audio |
| 7 | metric | AI inference market | token_market_size | ~$5T5,000,000,000,000 USD | USD | 0.84 | audio |
| 8 | metric | Global manufacturing | addressable_market | $30T30,000,000,000,000 USD | USD | 0.83 | audio |
| 9 | metric | ASML | stake_in_mistral | ~11%11 % | % | 0.90 | audio |
| 10 | entity | Mistral AI | organization.name | Mistral | — | 0.99 | audio |
| 11 | entity | Arthur Mensch | speaker.role | CEO of Mistral | — | 0.98 | both |
| 12 | entity | Vibe | product.name | Vibe | — | 0.94 | both |
| 13 | entity | ASML | organization.role | Lead investor (Series C) | — | 0.91 | audio |
| 14 | claim | Mistral AI | invests_in | data centers in France and Sweden | — | 0.95 | audio |
| 15 | claim | Europe | has_window | roughly two years to build sovereign compute | — | 0.86 | audio |
| 16 | claim | AI agents | disrupt | the per-seat SaaS model | — | 0.82 | audio |
| 17 | decision | Mistral AI | ownership | remain a private company | — | 0.90 | audio |
Use it anywhere
The same typed result comes out of the harness wherever you run it: standalone in your terminal, as a plugin inside your agent harness, or over MCP, so it drops into your pipeline, your workflow, or your assistant without a manual step.
run it standalone, typed JSON back
drop it into your agent harness
call it from your assistant
Turn a video into a record like this
Run a live extraction on a video of your own, or join the waitlist and run it on your own machine with your own inference.
