[{"data":1,"prerenderedAt":782},["ShallowReactive",2],{"{\"path\":[\"blog\",\"foss-rag-in-production\"],\"query\":null,\"headers\":{\"Accept\":\"application/json\"},\"preloadTemplates\":[\"/templates/footer-layout\",\"/templates/mobile-footer-layout\"]}":3},{"page":4,"templates":312,"_listing_pages":311,"navigation":759,"breadcrumbs":776},{"@id":5,"@type":6,"UID":7,"allow_discussion":8,"blocks":9,"blocks_layout":248,"changeNote":41,"contributors":276,"created":277,"creators":278,"description":280,"effective":281,"exclude_from_nav":8,"expires":282,"id":283,"image":282,"image_caption":282,"is_folderish":284,"items":285,"items_total":286,"language":287,"layout":290,"lock":291,"modified":277,"nav_title":282,"next_item":292,"parent":293,"preview_caption_link":282,"preview_image_link":282,"previous_item":301,"relatedItems":302,"review_state":298,"rights":41,"subjects":303,"title":309,"type_title":6,"version":310,"versioning_enabled":284,"working_copy":282,"working_copy_of":282,"_listing_pages":311},"https://pretagovsite-api.fly.dev/blog/foss-rag-in-production","News Item","a70bad68729146388e9127506935c1c5",false,{"base_h":10,"base_p":18,"conn_h":25,"conn_p":31,"cta_btn":37,"cta_p":44,"desc":60,"gov_h":62,"gov_p":68,"intro":74,"links_p":80,"pdf_h":102,"pdf_p":108,"personal_p":114,"quality_h":120,"quality_p":126,"scale_h":132,"scale_p":138,"solving_h":144,"solving_links":150,"solving_p":210,"table_h":216,"table_p1":222,"table_p2":228,"title":234,"why_h":236,"why_p":242},{"@type":11,"plaintext":12,"value":13},"slate","Why Onyx is a good base",[14],{"children":15,"type":17},[16],{"text":12},"h2",{"@type":11,"plaintext":19,"value":20},"Pulling it together: clean typed Python, connector and extraction interfaces you can plug into, a composable search pipeline, Celery separation you can scale piece by piece, and enough test coverage to refactor without fear. Upstream stays active and its fixes flow back, and pulling those merges in has been painless so far. That's the difference between customising a product and maintaining a fork.",[21],{"children":22,"type":24},[23],{"text":19},"p",{"@type":11,"plaintext":26,"value":27},"Connectors",[28],{"children":29,"type":17},[30],{"text":26},{"@type":11,"plaintext":32,"value":33},"Onyx's connector interface is clean enough to extend without fighting it. We added PowerBI dashboard scraping, since that's where a lot of the numbers actually live, plus CSV, XLSX and PPTX table extraction and sitemap improvements that discover linked files. Keeping each connector separate meant we could test them one at a time instead of debugging the whole ingest at once.",[34],{"children":35,"type":24},[36],{"text":32},{"@type":38,"buttonColor":39,"buttonShape":40,"buttonSize":41,"buttonVariant":41,"title":42,"url":43},"button","primary","rounded","","Talk to us","https://pretagovsite-api.fly.dev/contact-info",{"@type":11,"plaintext":45,"value":46},"We're open to collaborations and contracts with teams building AI systems that need better structured-data retrieval: AI search, RAG deployment, table and document extraction, Onyx customisation. There's more on our Onyx work.",[47],{"children":48,"type":24},[49,51,58],{"text":50},"We're open to collaborations and contracts with teams building AI systems that need better structured-data retrieval: AI search, RAG deployment, table and document extraction, Onyx customisation. There's more on our ",{"children":52,"data":55,"type":57},[53],{"text":54},"Onyx work",{"url":56},"https://pretagovsite-api.fly.dev/services/onyx","link",{"text":59},".",{"@type":61},"description",{"@type":11,"plaintext":63,"value":64},"Getting it right is a governance question",[65],{"children":66,"type":17},[67],{"text":63},{"@type":11,"plaintext":69,"value":70},"For a regulator or a health service, a wrong answer isn't a UX glitch; someone acts on it. A confident but incorrect number is worse than no answer at all. So the bar isn't whether an answer sounds plausible, it's whether it's correct and traceable to a source. Most of what follows (computing over tables instead of guessing, careful task-specific prompting, testing against real questions) serves that one idea.",[71],{"children":72,"type":24},[73],{"text":69},{"@type":11,"plaintext":75,"value":76},"In March our CTO, Dylan Jay, gave a talk at the FOSSASIA Summit in Bangkok about Onyx, an open-source stack for enterprise RAG that's genuinely production-ready, and the customisations we made piloting it for public-sector search. Onyx is a strong base to build on. This is what we had to change to answer the questions that break a naive setup.",[77],{"children":78,"type":24},[79],{"text":75},{"@type":11,"plaintext":81,"value":82},"The slides are online, and the talk was part of the FOSSASIA 2026 schedule.",[83],{"children":84,"type":24},[85,87,93,95,101],{"text":86},"The ",{"children":88,"data":91,"type":57},[89],{"text":90},"slides are online",{"url":92},"https://docs.google.com/presentation/d/1ZNmxreKK9CN3jvfyYiRLgmSwYniKTtsKwSSF21CETjg/edit",{"text":94},", and the talk was part of the ",{"children":96,"data":99,"type":57},[97],{"text":98},"FOSSASIA 2026 schedule",{"url":100},"https://eventyay.com/ev/88882f3e/speakers/lspk8539/",{"text":59},{"@type":11,"plaintext":103,"value":104},"PDFs are harder than they look",[105],{"children":106,"type":17},[107],{"text":103},{"@type":11,"plaintext":109,"value":110},"PDF table extraction is where good demos go to die. Headers and footers, tables that run across pages, bullets that aren't really bullets: layout analysis matters more than OCR, and most PDF-to-markdown tools are tuned for tidy boxed content rather than dense government documents. We made the extraction pipeline pluggable, swapped in a layout-aware analyzer with cross-page table merging, and added a spreadsheet strategy for XLSX that understands named tables. Because Onyx's chunk pipeline doesn't care about the source format, new ones slot in cleanly.",[111],{"children":112,"type":24},[113],{"text":109},{"@type":11,"plaintext":115,"value":116},"Dylan enjoyed giving this one, and it was a real pleasure to meet so many of the international guests and speakers who flew in from around the world for the summit.",[117],{"children":118,"type":24},[119],{"text":115},{"@type":11,"plaintext":121,"value":122},"Knowing whether it's any good",[123],{"children":124,"type":17},[125],{"text":121},{"@type":11,"plaintext":127,"value":128},"The lesson we'd pass on: test with real questions, early. There are a lot of knobs (chunking, model choice, reranking) and no tuning them by feel. We built a regression suite for answer quality, scored it with RAGAS for relevancy, faithfulness and factual correctness, and used langfuse to watch real questions, answers, prompts and the chunks behind them, wired into Onyx's own feedback. We also changed the chunking: instead of relating each chunk to a document summary, we relate it to the few chunks before it and the summary, which holds context better.",[129],{"children":130,"type":24},[131],{"text":127},{"@type":11,"plaintext":133,"value":134},"Scale-to-zero on Fly.io",[135],{"children":136,"type":17},[137],{"text":133},{"@type":11,"plaintext":139,"value":140},"A pilot shouldn't cost like production. Onyx runs its background work through Celery with named queues, so we split the one monolithic worker into eight specialised ones, each suspending when idle. A watchdog watches the queues and wakes a worker when there's something to do. The lesson there: scale-to-zero needs connection resilience, because different services reconnect differently after a suspend.",[141],{"children":142,"type":24},[143],{"text":139},{"@type":11,"plaintext":145,"value":146},"What we were actually solving",[147],{"children":148,"type":17},[149],{"text":145},{"@type":11,"plaintext":151,"value":152},"We piloted both: AI search across regulator complaints and multilingual health translation.",[153],{"children":154,"type":24},[155,157,201,203,209],{"text":156},"We piloted both: ",{"children":158,"data":161,"type":57},[159],{"text":160},"AI search across regulator complaints",{"image_scales":162,"url":200},{"image":163},[164],{"content-type":165,"download":166,"filename":167,"height":168,"scales":169,"size":198,"width":199},"image/png","@@images/image-881-11189becb6066f2ae54080112da447cb.png","Screenshot 2026-06-25 at 11.19.48 am.png",421,{"icon":170,"large":174,"mini":178,"preview":182,"teaser":186,"thumb":190,"tile":194},{"download":171,"height":172,"width":173},"@@images/image-32-034ac2a08ad4727bb6118f6ca4b99e1e.png",15,32,{"download":175,"height":176,"width":177},"@@images/image-800-2c8a77748baea38f1bc7abef43fa3cbd.png",382,800,{"download":179,"height":180,"width":181},"@@images/image-200-ce86d130afc6ee1f1fc42a25f7d668dc.png",95,200,{"download":183,"height":184,"width":185},"@@images/image-400-7eacab2ee0227d492e619b3160a75b5c.png",191,400,{"download":187,"height":188,"width":189},"@@images/image-600-41e390a0a4489dac1e7ec40d874a465e.png",286,600,{"download":191,"height":192,"width":193},"@@images/image-128-cf4e684e3487e34e97308832cc872065.png",61,128,{"download":195,"height":196,"width":197},"@@images/image-64-80136a31fd2063c320e6bffeb3d2c259.png",30,64,81117,881,"https://pretagovsite-api.fly.dev/case-studies/onyx-ai-regulator-complaints",{"text":202}," and ",{"children":204,"data":207,"type":57},[205],{"text":206},"multilingual health translation",{"url":208},"https://pretagovsite-api.fly.dev/case-studies/onyx-multilingual-health-translation",{"text":59},{"@type":11,"plaintext":211,"value":212},"The brief was a reliable assistant on large public-sector sites: agencies with years of publications, reports, and dashboards behind them. The questions that matter are the ones a naive setup gets wrong. A regulator's users ask how many complaints were upheld in 2024. A health service's users ask for the COVID vaccine information in Arabic. Both need more than fetching a paragraph that looks relevant.",[213],{"children":214,"type":24},[215],{"text":211},{"@type":11,"plaintext":217,"value":218},"The table problem",[219],{"children":220,"type":17},[221],{"text":217},{"@type":11,"plaintext":223,"value":224},"Ask a RAG system what the total revenue was for 2024 and it hands you a chunk, not an answer. The table got shredded into fragments on the way in, so vector search finds a relevant-looking row and stops. Worse, it might add up a partial column and sound confident about the wrong number. Ask for the latest report and you get a random report chunk, answered at random.",[225],{"children":226,"type":24},[227],{"text":223},{"@type":11,"plaintext":229,"value":230},"Our fix runs a SQL pathway alongside the normal search. The same question generates a query that computes across the whole table, and the real number goes back to the model next to the semantic results. Total revenue for 2024 was $4.2M, not no documents found. The latest report is today's, not the latest we can see is 2023. Most RAG returns pre-computed answers; tables need computation, so we compute.",[231],{"children":232,"type":24},[233],{"text":229},{"@type":235},"title",{"@type":11,"plaintext":237,"value":238},"Why Onyx",[239],{"children":240,"type":17},[241],{"text":237},{"@type":11,"plaintext":243,"value":244},"Onyx is an open-source enterprise RAG platform, MIT-licensed, with the parts you'd otherwise assemble by hand: forty-odd connectors, document-level permissions, hybrid search with reranking, agents, and an admin UI. Among open-source options it's the only turnkey one; the rest are toolkits you still have to build a product on. For a pilot that had to look production-shaped from the first week, that mattered. It's also clean, typed Python with real test coverage, which is what made customising it realistic rather than a fork-and-hope.",[245],{"children":246,"type":24},[247],{"text":243},{"items":249},[235,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275],"desc","intro","links_p","solving_h","solving_p","solving_links","gov_h","gov_p","why_h","why_p","table_h","table_p1","table_p2","pdf_h","pdf_p","conn_h","conn_p","quality_h","quality_p","scale_h","scale_p","base_h","base_p","personal_p","cta_p","cta_btn",[],"2026-03-23T00:30:00",[279],"32f7023a-2653-47e6-85b4-9d9163577fe3","Onyx is a production-ready open-source stack for enterprise RAG. We piloted it for public-sector search, and here's what we changed to answer real questions from tables, PDFs, and dashboards.","2026-03-23T00:30:00+00:00",null,"foss-rag-in-production",true,[],0,{"title":288,"token":289},"English","en","newsitem_view",{"locked":8,"stealable":284},{},{"@id":294,"@type":295,"description":41,"effective":296,"end":282,"getObjSize":282,"head_title":282,"image_field":282,"image_scales":297,"mime_type":282,"nav_title":282,"review_state":298,"start":282,"title":299,"type_title":300},"https://pretagovsite-api.fly.dev/blog","Document","2023-08-04T22:10:00+00:00",{},"published","Insights","Page",{},[],[304,305,306,307,308],"AI","RAG","Search","Onyx","Python","What we changed in Onyx — our FOSSASIA 2026 talk","current",{},{"/templates/footer-layout":313,"/templates/mobile-footer-layout":491,"resolveuid/footerlayout00000000000000000aaa":580,"resolveuid/mobilefooterlayout000000000000bb":695},{"@components":314,"@id":331,"@type":295,"UID":332,"allow_discussion":8,"blocks":333,"blocks_layout":466,"changeNote":41,"contributors":468,"created":469,"creators":470,"description":472,"effective":282,"exclude_from_nav":284,"expires":282,"id":473,"is_folderish":284,"items":474,"items_total":286,"language":475,"layout":476,"lock":477,"modified":478,"nav_title":282,"next_item":479,"parent":480,"preview_caption_link":282,"preview_image_link":282,"previous_item":487,"relatedItems":488,"review_state":298,"rights":41,"subjects":489,"table_of_contents":282,"title":490,"type_title":300,"version":310,"versioning_enabled":284,"working_copy":282,"working_copy_of":282},{"actions":315,"aliases":317,"breadcrumbs":319,"contextnavigation":321,"navigation":323,"navroot":325,"types":327,"workflow":329},{"@id":316},"https://pretagovsite-api.fly.dev/templates/footer-layout/@actions",{"@id":318},"https://pretagovsite-api.fly.dev/templates/footer-layout/@aliases",{"@id":320},"https://pretagovsite-api.fly.dev/templates/footer-layout/@breadcrumbs",{"@id":322},"https://pretagovsite-api.fly.dev/templates/footer-layout/@contextnavigation",{"@id":324},"https://pretagovsite-api.fly.dev/templates/footer-layout/@navigation",{"@id":326},"https://pretagovsite-api.fly.dev/templates/footer-layout/@navroot",{"@id":328},"https://pretagovsite-api.fly.dev/templates/footer-layout/@types",{"@id":330},"https://pretagovsite-api.fly.dev/templates/footer-layout/@workflow","https://pretagovsite-api.fly.dev/templates/footer-layout","footerlayout00000000000000000aaa",{"footer-cols":334},{"@type":335,"blocks":336,"blocks_layout":463,"fixed":284,"readOnly":284,"slotId":465,"templateId":343},"columns",{"fcol-au":337,"fcol-brand":374,"fcol-legal":383,"fcol-uk":428},{"@type":338,"blocks":339,"blocks_layout":370,"fixed":284,"readOnly":284,"slotId":372,"templateId":343,"title":373},"column",{"fcol-au-addr":340,"fcol-au-mail":348,"fcol-au-tel":359},{"@type":11,"fixed":284,"plaintext":341,"readOnly":284,"slotId":342,"templateId":343,"value":344},"Suite 97, Level 3, 515 Kent Street, Sydney NSW 2000","fcol-au-addr","resolveuid/footerlayout00000000000000000aaa",[345],{"children":346,"type":24},[347],{"text":341},{"@type":11,"fixed":284,"plaintext":349,"readOnly":284,"slotId":350,"templateId":343,"value":351},"contact@pretagov.com.au","fcol-au-mail",[352],{"children":353,"type":24},[354],{"children":355,"data":357,"type":57},[356],{"text":349},{"url":358},"mailto:contact@pretagov.com.au",{"@type":11,"fixed":284,"plaintext":360,"readOnly":284,"slotId":361,"templateId":343,"value":362},"+61 (2) 9955 2830","fcol-au-tel",[363],{"children":364,"type":24},[365],{"children":366,"data":368,"type":57},[367],{"text":360},{"url":369},"tel:+61299552830",{"items":371},[342,361,350],"fcol-au","PretaGov Australia",{"@type":338,"blocks":375,"blocks_layout":380,"fixed":284,"readOnly":284,"slotId":382,"templateId":343},{"fb-brand":376},{"@type":377,"fixed":284,"org":378,"readOnly":284,"slotId":379,"templateId":343},"brand","PretaGov","fb-brand",{"items":381},[379],"fcol-brand",{"@type":338,"blocks":384,"blocks_layout":424,"fixed":284,"readOnly":284,"slotId":426,"templateId":343,"title":427},{"fb-legal":385},{"@type":11,"fixed":284,"plaintext":386,"readOnly":284,"slotId":387,"templateId":343,"value":388},"Blog Privacy Statement Anti-slavery Statement Accessibility Statement","fb-legal",[389],{"children":390,"type":423},[391,399,407,415],{"children":392,"type":398},[393],{"children":394,"data":397,"type":57},[395],{"text":396},"Blog",{"url":294},"li",{"children":400,"type":398},[401],{"children":402,"data":405,"type":57},[403],{"text":404},"Privacy Statement",{"url":406},"https://pretagovsite-api.fly.dev/privacy-statement",{"children":408,"type":398},[409],{"children":410,"data":413,"type":57},[411],{"text":412},"Anti-slavery Statement",{"url":414},"https://pretagovsite-api.fly.dev/anti-slavery-statement",{"children":416,"type":398},[417],{"children":418,"data":421,"type":57},[419],{"text":420},"Accessibility Statement",{"url":422},"https://pretagovsite-api.fly.dev/accessibility-statement","ul",{"items":425},[387],"fcol-legal","Legal",{"@type":338,"blocks":429,"blocks_layout":459,"fixed":284,"readOnly":284,"slotId":461,"templateId":343,"title":462},{"fcol-uk-addr":430,"fcol-uk-mail":437,"fcol-uk-tel":448},{"@type":11,"fixed":284,"plaintext":431,"readOnly":284,"slotId":432,"templateId":343,"value":433},"Suite 2A, Blackthorn House, St Pauls Square, Birmingham, B3 1RL","fcol-uk-addr",[434],{"children":435,"type":24},[436],{"text":431},{"@type":11,"fixed":284,"plaintext":438,"readOnly":284,"slotId":439,"templateId":343,"value":440},"contact@pretagov.co.uk","fcol-uk-mail",[441],{"children":442,"type":24},[443],{"children":444,"data":446,"type":57},[445],{"text":438},{"url":447},"mailto:contact@pretagov.co.uk",{"@type":11,"fixed":284,"plaintext":449,"readOnly":284,"slotId":450,"templateId":343,"value":451},"+44 (0) 208 819 3887","fcol-uk-tel",[452],{"children":453,"type":24},[454],{"children":455,"data":457,"type":57},[456],{"text":449},{"url":458},"tel:+442088193887",{"items":460},[432,450,439],"fcol-uk","PretaGov UK",{"columns":464},[382,461,372,426],"footer-cols",{"items":467},[465],[],"2026-07-02T10:09:49+00:00",[471],"admin","Forced layout — edit here to change it everywhere.","footer-layout",[],{"title":288,"token":289},"document_view",{"locked":8,"stealable":284},"2026-07-03T14:30:53+00:00",{},{"@id":481,"@type":482,"description":483,"effective":484,"end":282,"getObjSize":282,"head_title":282,"image_field":282,"image_scales":485,"mime_type":282,"nav_title":282,"review_state":298,"start":282,"title":486,"type_title":482},"https://pretagovsite-api.fly.dev/templates","Folder","Reusable content templates (edited centrally, applied across pages).","1969-12-31T00:00:00+00:00",{},"Templates",{},[],[],"Footer layout",{"@components":492,"@id":509,"@type":295,"UID":510,"allow_discussion":8,"blocks":511,"blocks_layout":564,"changeNote":41,"contributors":566,"created":469,"creators":567,"description":472,"effective":282,"exclude_from_nav":284,"expires":282,"id":568,"is_folderish":284,"items":569,"items_total":286,"language":570,"layout":476,"lock":571,"modified":572,"nav_title":282,"next_item":573,"parent":574,"preview_caption_link":282,"preview_image_link":282,"previous_item":576,"relatedItems":577,"review_state":298,"rights":41,"subjects":578,"table_of_contents":282,"title":579,"type_title":300,"version":310,"versioning_enabled":284,"working_copy":282,"working_copy_of":282},{"actions":493,"aliases":495,"breadcrumbs":497,"contextnavigation":499,"navigation":501,"navroot":503,"types":505,"workflow":507},{"@id":494},"https://pretagovsite-api.fly.dev/templates/mobile-footer-layout/@actions",{"@id":496},"https://pretagovsite-api.fly.dev/templates/mobile-footer-layout/@aliases",{"@id":498},"https://pretagovsite-api.fly.dev/templates/mobile-footer-layout/@breadcrumbs",{"@id":500},"https://pretagovsite-api.fly.dev/templates/mobile-footer-layout/@contextnavigation",{"@id":502},"https://pretagovsite-api.fly.dev/templates/mobile-footer-layout/@navigation",{"@id":504},"https://pretagovsite-api.fly.dev/templates/mobile-footer-layout/@navroot",{"@id":506},"https://pretagovsite-api.fly.dev/templates/mobile-footer-layout/@types",{"@id":508},"https://pretagovsite-api.fly.dev/templates/mobile-footer-layout/@workflow","https://pretagovsite-api.fly.dev/templates/mobile-footer-layout","mobilefooterlayout000000000000bb",{"mobile-cols":512},{"@type":335,"blocks":513,"blocks_layout":561,"fixed":284,"readOnly":284,"slotId":563,"templateId":521},{"mcol":514},{"@type":338,"blocks":515,"blocks_layout":558,"fixed":284,"readOnly":284,"slotId":560,"templateId":521},{"mobile-contact-cta":516,"mobile-contact-h":523,"mobile-contact-mail":531,"mobile-contact-tel":540,"mobile-contact-tel-au":549},{"@type":38,"buttonColor":39,"buttonSize":41,"buttonVariant":41,"fixed":284,"href":517,"readOnly":284,"slotId":520,"templateId":521,"title":522},[518],{"@id":519},"/contact-info","mobile-contact-cta","resolveuid/mobilefooterlayout000000000000bb","Contact us",{"@type":11,"fixed":284,"plaintext":524,"readOnly":284,"slotId":525,"templateId":521,"value":526},"Get in touch","mobile-contact-h",[527],{"children":528,"type":530},[529],{"text":524},"h3",{"@type":11,"fixed":284,"plaintext":438,"readOnly":284,"slotId":532,"templateId":521,"value":533},"mobile-contact-mail",[534],{"children":535,"type":24},[536],{"children":537,"data":539,"type":57},[538],{"text":438},{"url":447},{"@type":11,"fixed":284,"plaintext":449,"readOnly":284,"slotId":541,"templateId":521,"value":542},"mobile-contact-tel",[543],{"children":544,"type":24},[545],{"children":546,"data":548,"type":57},[547],{"text":449},{"url":458},{"@type":11,"fixed":284,"plaintext":360,"readOnly":284,"slotId":550,"templateId":521,"value":551},"mobile-contact-tel-au",[552],{"children":553,"type":24},[554],{"children":555,"data":557,"type":57},[556],{"text":360},{"url":369},{"items":559},[525,541,550,532,520],"mcol",{"columns":562},[560],"mobile-cols",{"items":565},[563],[],[471],"mobile-footer-layout",[],{"title":288,"token":289},{"locked":8,"stealable":284},"2026-07-05T12:01:44+00:00",{},{"@id":481,"@type":482,"description":483,"effective":484,"end":282,"getObjSize":282,"head_title":282,"image_field":282,"image_scales":575,"mime_type":282,"nav_title":282,"review_state":298,"start":282,"title":486,"type_title":482},{},{},[],[],"Mobile footer layout",{"@components":581,"@id":331,"@type":295,"UID":332,"allow_discussion":8,"blocks":590,"blocks_layout":682,"changeNote":41,"contributors":684,"created":469,"creators":685,"description":472,"effective":282,"exclude_from_nav":284,"expires":282,"id":473,"is_folderish":284,"items":686,"items_total":286,"language":687,"layout":476,"lock":688,"modified":478,"nav_title":282,"next_item":689,"parent":690,"preview_caption_link":282,"preview_image_link":282,"previous_item":692,"relatedItems":693,"review_state":298,"rights":41,"subjects":694,"table_of_contents":282,"title":490,"type_title":300,"version":310,"versioning_enabled":284,"working_copy":282,"working_copy_of":282},{"actions":582,"aliases":583,"breadcrumbs":584,"contextnavigation":585,"navigation":586,"navroot":587,"types":588,"workflow":589},{"@id":316},{"@id":318},{"@id":320},{"@id":322},{"@id":324},{"@id":326},{"@id":328},{"@id":330},{"footer-cols":591},{"@type":335,"blocks":592,"blocks_layout":680,"fixed":284,"readOnly":284,"slotId":465,"templateId":343},{"fcol-au":593,"fcol-brand":618,"fcol-legal":623,"fcol-uk":655},{"@type":338,"blocks":594,"blocks_layout":616,"fixed":284,"readOnly":284,"slotId":372,"templateId":343,"title":373},{"fcol-au-addr":595,"fcol-au-mail":600,"fcol-au-tel":608},{"@type":11,"fixed":284,"plaintext":341,"readOnly":284,"slotId":342,"templateId":343,"value":596},[597],{"children":598,"type":24},[599],{"text":341},{"@type":11,"fixed":284,"plaintext":349,"readOnly":284,"slotId":350,"templateId":343,"value":601},[602],{"children":603,"type":24},[604],{"children":605,"data":607,"type":57},[606],{"text":349},{"url":358},{"@type":11,"fixed":284,"plaintext":360,"readOnly":284,"slotId":361,"templateId":343,"value":609},[610],{"children":611,"type":24},[612],{"children":613,"data":615,"type":57},[614],{"text":360},{"url":369},{"items":617},[342,361,350],{"@type":338,"blocks":619,"blocks_layout":621,"fixed":284,"readOnly":284,"slotId":382,"templateId":343},{"fb-brand":620},{"@type":377,"fixed":284,"org":378,"readOnly":284,"slotId":379,"templateId":343},{"items":622},[379],{"@type":338,"blocks":624,"blocks_layout":653,"fixed":284,"readOnly":284,"slotId":426,"templateId":343,"title":427},{"fb-legal":625},{"@type":11,"fixed":284,"plaintext":386,"readOnly":284,"slotId":387,"templateId":343,"value":626},[627],{"children":628,"type":423},[629,635,641,647],{"children":630,"type":398},[631],{"children":632,"data":634,"type":57},[633],{"text":396},{"url":294},{"children":636,"type":398},[637],{"children":638,"data":640,"type":57},[639],{"text":404},{"url":406},{"children":642,"type":398},[643],{"children":644,"data":646,"type":57},[645],{"text":412},{"url":414},{"children":648,"type":398},[649],{"children":650,"data":652,"type":57},[651],{"text":420},{"url":422},{"items":654},[387],{"@type":338,"blocks":656,"blocks_layout":678,"fixed":284,"readOnly":284,"slotId":461,"templateId":343,"title":462},{"fcol-uk-addr":657,"fcol-uk-mail":662,"fcol-uk-tel":670},{"@type":11,"fixed":284,"plaintext":431,"readOnly":284,"slotId":432,"templateId":343,"value":658},[659],{"children":660,"type":24},[661],{"text":431},{"@type":11,"fixed":284,"plaintext":438,"readOnly":284,"slotId":439,"templateId":343,"value":663},[664],{"children":665,"type":24},[666],{"children":667,"data":669,"type":57},[668],{"text":438},{"url":447},{"@type":11,"fixed":284,"plaintext":449,"readOnly":284,"slotId":450,"templateId":343,"value":671},[672],{"children":673,"type":24},[674],{"children":675,"data":677,"type":57},[676],{"text":449},{"url":458},{"items":679},[432,450,439],{"columns":681},[382,461,372,426],{"items":683},[465],[],[471],[],{"title":288,"token":289},{"locked":8,"stealable":284},{},{"@id":481,"@type":482,"description":483,"effective":484,"end":282,"getObjSize":282,"head_title":282,"image_field":282,"image_scales":691,"mime_type":282,"nav_title":282,"review_state":298,"start":282,"title":486,"type_title":482},{},{},[],[],{"@components":696,"@id":509,"@type":295,"UID":510,"allow_discussion":8,"blocks":705,"blocks_layout":746,"changeNote":41,"contributors":748,"created":469,"creators":749,"description":472,"effective":282,"exclude_from_nav":284,"expires":282,"id":568,"is_folderish":284,"items":750,"items_total":286,"language":751,"layout":476,"lock":752,"modified":572,"nav_title":282,"next_item":753,"parent":754,"preview_caption_link":282,"preview_image_link":282,"previous_item":756,"relatedItems":757,"review_state":298,"rights":41,"subjects":758,"table_of_contents":282,"title":579,"type_title":300,"version":310,"versioning_enabled":284,"working_copy":282,"working_copy_of":282},{"actions":697,"aliases":698,"breadcrumbs":699,"contextnavigation":700,"navigation":701,"navroot":702,"types":703,"workflow":704},{"@id":494},{"@id":496},{"@id":498},{"@id":500},{"@id":502},{"@id":504},{"@id":506},{"@id":508},{"mobile-cols":706},{"@type":335,"blocks":707,"blocks_layout":744,"fixed":284,"readOnly":284,"slotId":563,"templateId":521},{"mcol":708},{"@type":338,"blocks":709,"blocks_layout":742,"fixed":284,"readOnly":284,"slotId":560,"templateId":521},{"mobile-contact-cta":710,"mobile-contact-h":713,"mobile-contact-mail":718,"mobile-contact-tel":726,"mobile-contact-tel-au":734},{"@type":38,"buttonColor":39,"buttonSize":41,"buttonVariant":41,"fixed":284,"href":711,"readOnly":284,"slotId":520,"templateId":521,"title":522},[712],{"@id":519},{"@type":11,"fixed":284,"plaintext":524,"readOnly":284,"slotId":525,"templateId":521,"value":714},[715],{"children":716,"type":530},[717],{"text":524},{"@type":11,"fixed":284,"plaintext":438,"readOnly":284,"slotId":532,"templateId":521,"value":719},[720],{"children":721,"type":24},[722],{"children":723,"data":725,"type":57},[724],{"text":438},{"url":447},{"@type":11,"fixed":284,"plaintext":449,"readOnly":284,"slotId":541,"templateId":521,"value":727},[728],{"children":729,"type":24},[730],{"children":731,"data":733,"type":57},[732],{"text":449},{"url":458},{"@type":11,"fixed":284,"plaintext":360,"readOnly":284,"slotId":550,"templateId":521,"value":735},[736],{"children":737,"type":24},[738],{"children":739,"data":741,"type":57},[740],{"text":360},{"url":369},{"items":743},[525,541,550,532,520],{"columns":745},[560],{"items":747},[563],[],[471],[],{"title":288,"token":289},{"locked":8,"stealable":284},{},{"@id":481,"@type":482,"description":483,"effective":484,"end":282,"getObjSize":282,"head_title":282,"image_field":282,"image_scales":755,"mime_type":282,"nav_title":282,"review_state":298,"start":282,"title":486,"type_title":482},{},{},[],[],[760,765,768,772],{"label":761,"route":762,"items":763,"cols":764,"width":764},"About","/about",[],2,{"label":299,"route":766,"items":767,"cols":764,"width":764},"/blog",[],{"label":769,"route":770,"items":771,"cols":764,"width":764},"Work","/case-studies",[],{"label":773,"route":774,"items":775,"cols":764,"width":764},"Services","/services",[],{"@id":777,"items":778,"root":781},"https://pretagovsite-api.fly.dev/blog/foss-rag-in-production/@breadcrumbs",[779,780],{"@id":294,"title":299},{"@id":5,"title":309},"https://pretagovsite-api.fly.dev",1783402899431]