Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: I built Creodocs, a document creation platform based on LaTeX (creodocs.com)
74 points by VelNZ on April 1, 2021 | hide | past | favorite | 61 comments



Hi all, sole developer here! Creodocs has been over 6 years of work in my spare time and it's great to finally launch it!

The idea for Creodocs came about after I launched https://LaTeXTemplates.com and https://LaTeXTypesetting.com in 2012 and 2013, respectively. I noticed that academic documents and books consist almost entirely of content that changes across multiple instances of the template used to make them, but business documents are much more likely to consist of large proportions of static content. Think of receipts you receive from an online retailer; that company's information, branding and layout of the document doesn't change at all, but your account number, name, address and items purchased change.

I thought, well, what if I use the power of LaTeX to create virtually any design imaginable (combined with the ability to do math, use variables, etc), but abstract away the code (which is hard to master and archaic by modern standards), to allow users to specify just those dynamic parts of a document they need to fill out and keep the rest unchangeable.

Enter Creodocs, a document creation platform with a collection of templates available to all users, and the ability to add your own via a LaTeX template with variables specified. Variables each accept specific content types (int, bool, string, float) with a maximum length. Private templates can be shared with others, and there are billing groups to manage spending centrally. The idea is that a small/medium business would create (or have me create) a set of templates for documents they constantly produce, and then each of their staff (who don't know what LaTeX is) can log in and simply fill out a web form and get a consistent beautiful PDF document immediately. There is also the ability to create hundreds or thousands of documents at once using a spreadsheet, or create documents via an API without touching the website at all.

I'd love some feedback on the idea and implementation! At this stage, if you're interested in using it for your business, send me an email and you're welcome to use it all you want for free if I can get some feedback.

I'm also happy to chat about how the LaTeX world has changed in the last 10 years, or about how I've managed to have a steady stream of commercial clients willing to pay me to create custom LaTeX templates through my typesetting service.


My reaction to the expiring credits-based pricing was to feel anxious.

Also the fact that cost is not easy to calculate creates a barrier to understanding what the cost would be, which less-motivated people may not bother overcoming.

What made you choose this model?


It was certainly hard to choose the pricing model. I tried to explain it in the "Why Credits? Why Not Dollars or Subscriptions?" section here: https://www.creodocs.com/support?section=credits

Ultimately, I don't know who is going to use the platform. It's created in a way that it can be just as useful for a random person who wants to make a few invoices per month, someone who wants to make 10,000 payslips every 2 weeks, and someone who wants to hook it up to their product to pump in data and receive a link to a PDF via the API. The first person would not pay for a subscription, it's just not worth it at their usage level. The second has burst bulk usage which should be discounted. The third has some level of sustained usage over time.

Those 3 use cases are covered by the 7 days, 30 days and 2 years pricing structures. If you're a casual user, pay a bit more and don't worry about expiration. If you're a bulk user, you get a discount. Everyone else can treat it like a subscription and get the best of both worlds.

I looked to websites that do similar things for ideas, and the closest I could come up with was sites like ShutterStock which also have a credit system where the more you buy the cheaper it is. I believe their credits expire after a fixed period too, but you don't get a discount for how long which is a bit more specific to my product.

Thanks for the feedback! How would you prefer to see a service like this priced that wouldn't cause price anxiety? I'd love to hear different ideas since this can be changed.


>Credits may seem like a dark pattern of obfuscating cost and adding unnecessary complication. This is certainly not the intention and this section aims to explain why credits are a good system for you and for Creodocs.

If something seems like a dark pattern, it is. I hate to be the bearer of bad news, but the ultimate judge of what is dark/what's not is the end user, and sending them a leaflet about how good it is doesn't do much to assuage their fears. I understand your motivations here, and sympathize with you as a developer: but as a user, I couldn't justify integrating this into my workflow.


Noted, and I really appreciate the honesty. I'd love to hear your thoughts on alternative pricing models!


The number-one item on my wishlist for a product like this is the option to self-host, but I guess I understand if that isn't very financially viable. For the service you're providing, though, I think you could benefit quite a bit from open-sourcing the core technologies and then offering a package with support/automatic hosting/commercial licenses for business use.


I highly encourage you to check out speedata publisher [1] by the berlin-based developer Patrick Gundlach.

He is a well known figure in the TeX community and has created a (open-source [2]/self-hostable) document creation solution on top of LuaTeX.

You can simply run that from the command-line and integrate it in your workflow but it also comes with a server integration that provides you with a REST API.

Admittedly there is some kind of learning curve (even for LaTeX literate people as he is using an XML/HTML abstraction layer on top of it) - but that also keeps it interesting for users who have never played mich with any TeX-language prior to that date.

[1]: https://www.speedata.de/en/ [2]: https://github.com/speedata/publisher


You're suggesting something similar to what Overleaf did: they're the most popular online LaTeX editor used by many institutions and are now open source. It's certainly worked for them!

I'm not strictly opposed to the idea of self-hosting, although it would be far easier to pull out the API + queue + worker elements of the product rather than allowing self-hosting the whole thing. That way you self-host the production side and the document data doesn't leave your servers (which is likely to be a big deal for many businesses), but your templates and API calls are compatible with the online version of Creodocs. I'll try to get some more feedback on the pricing model and think about it myself, since it sounds like it's a bad one now. Thanks again for your feedback!


If you're looking for feedback, you might want to put up a demo template or whatever other bit of the workflow that's easy to expose (at least, temporarily) so you get comments from HN users without the friction of sign-up.


Yes, I can see now that would be very useful going forward and I'll get on to it soon! Thanks!


You may wish to rethink the name, as you are likely infringing on PTC's trademark. PTC Creo (Formerly known as Pro/Engineer) is high-end CAD software, competing against Catia and NX.


Probably it isn't because there's PTC Creo, CREO Solutions, Creo Technologies, and Creo (from Creolabs), an app development platform.

Edit: Creo alone is indeed a restricted trademark[0].

[0]: https://www.ptc.com/en/documents/policies/copyright-and-trad...


When I searched online for the name there were essentially zero results for it so I'm surprised it would infringe anything. I'm not sure how trademark law works so I'll look into this though, thanks!


Google and Bing searches for "creo" give the PTC product as their first result. IANAL, but PTC could make the case that you are diluting their brand name by using it for your software, or worse, trying the phish their customers.


Is using part of someone else's name a violation of trademark laws? I'm genuinely curious!

I chose Creo because it means "to create" in Latin (I'm a sucker for Latin names), with docs obviously being short for documents.

I'd argue that Creo is just a generic word, it's not like the name is Leicadocs where that word is very firmly tied to a single company.


Potentially. If you stay away from mentioning or advertising anything related to their line of work (CAD software?) they'll have less of a claim of infringement. Also, trademark the name in NZ, if you haven't already. IANAL, YMMV, etc...


Are you a trademark attorney? Do these systems have any similarity beyond "create stuff on computers"?

IANAL.


Just tried your product.

1. You have no way of previewing your entered data - if you mess up, you just wasted 0.05 - 0.12 USD. Does it really cost that much to render a PDF once? With Overleaf, you get essentially unlimited previews. Consider providing a watermarked preview, or a lowly-res png render.

2. Why do the credits expire? As a casual user, I'd need to buy credits either again and again, or pay more than double the price so I can just use my credits. I think that's really unfair, and coupled with your pricing model above is limiting my interaction severely.

3. However, as a technically adept customer I like how it's done now. I can create as many free accounts as I like, each with about 7 USD worth of credits. I just need to set up a spam account every time I run out.

## Alternative model: ##

- Unlock templates by paying for them. All generation is then free (up to a certain high limit for your enterprise customers and limit abuse).

- Provide packages of templates to buy together (the finance department package, the communication package, ...) - For an even higher licensing fee, the templates can be downloaded as well and integrated into products.

I think this would suit your existing business of providing custom LaTeX templates well.

## Alternative model 2: ##

1. Bog standard subscription (pay x per month to do y pdfs)

## Security: ##

The rendered LaTeX may include files such as /etc/passwd. I did not try to get an RCE on your rendering server, but I'd spend some time isolating it as much as possible. Consider getting a pentest done, especially given your high privacy claims.


I really appreciate you trying it out and giving your feedback, thanks!

The lack of a preview and wasted credits on mistakes is something I'd like to improve in the medium term. The way it is now, content is completely separated from presentation, and I consider that a defining feature of the product. Of course, producing each document costs essentially nothing, and the lack of a preview may be very frustrating, so perhaps meeting somewhere in the middle in terms of a preview may be the way to go.

Your alternative models are excellent ideas and I will consider them as part of an overhaul of the pricing model, thanks!

The rendering happens in Docker on worker instances, but a pentest is something I will look to get as well. Disallowing things like including arbitrary files from the operating system in the LaTeX code is important, I agree.


This is awesome! Your monetization scheme is abhorrent!

That's at least my first two reactions upon seeing this. Don't get me wrong, this idea is something I've wanted for a long, long time. Holy cow though, talk about a dark pattern: your credits method (and their 60 day expiry) has completely soured this experience for me out of the gate. I'm not going to sign up for a platform that continues to nudge me down a waterslide towards my wallet. Seriously, I'd probably rather have a subscription model for something of this caliber. If you want to attract a business crowd, you shouldn't implement a pay-as-you-go model. These companies want to integrate you into their SAAS stack and consider you a fixed-rate expenditure, not constantly worry about budgeting you into a part of their payroll.


Thanks for the feedback! I answered a similar question in this thread with my reasoning for the pricing model, but it's really good to hear that I should probably change it from multiple people.

Briefly, I wanted to discount sporadic bulk usage (hence expiry of 7 days) and charge fairly for long term availability (expiry of 2 years), with everyone else being in the 30 days bucket and treating it like a subscription.

I'm aware that a larger company would not want to deal with purchasing regularly and my thinking was that the 2 years option is great for that. Buy a bunch of credits for 2 years and forget about them. If you stop using the product, just don't buy again, I'm not going to nag you for money. I haven't set up alerts that your credits are expiring soon or you're running out yet, but that would be the next logical step if I stay with this model.

I'd love to hear your ideas for how else I could price Creodocs! I'm open to anything, this was just the result of trying to accommodate the most use cases.


Why would credits expire? I like the idea of pay per use, but expiring credits plus the ability to only purchase in preset increments is a really bad idea. Even worse is paying more for credits that lasts longer.

Extremely customer hostile pricing structure.


Expiration because selling something that never expires is a permanent liability.

My friend had the idea that I could make all credits expire in 2 years (for the liability issue) and simply discount the cost/credit for larger numbers purchased at once, perhaps that would make it less confusing with the 7 days and 30 days options available currently? Perhaps combined with an option to repurchase the same amount automatically once your previous purchase expired/was used up would be better?

Thanks for the feedback, I thought the structure was actually customer-friendly (no subscriptions and lots of choice depending on your usage), but obviously I'm wrong from the feedback in this post. I'm definitely hearing that that's something I need to change.


"_*Permanent liability*_" Are you insane? You have the cash in-hand. The customer has made an interest-free loan to you. You're ACTIVELY trying to *DISCOURAGE* positive cashflow!?!?!?!?!?!

You should execute the exact opposite pricing scheme: provide discounts to your most loyal customers who are willing to provide you cashflow long in advance of your incurring an expense to provide services to them in order finance your operation.


I'm just trying to set explicit limits on liabilities. The alternative as I see it is to accept money to provide a service indefinitely, but have terms clauses that any purchased credits may be forfeited for any reason. Perhaps if that clause reads after more than 2 years from purchase then maybe that's fine. I'll think about it, thanks for the feedback.

I'm actually curious though, do many online platforms allow you to buy credits that never expire? The stock photography websites were one of my inspirations for the pricing scheme, and their credits certainly expire in a year or so.


Why not just let them be a permanent liability on the business?

Are you worried about claims in bankruptcy court or something?


It just feels wrong to perpetually owe many people with very little benefit for accepting that burden. I don't think there's much practical difference between forever and 2 years for a purchase like this, but for the business the difference is huge.


Just treat low usage as advertising, give it away.

$12 over 2 years from 1000 people is a lot of headaches/dollar.


Yeah, a free tier is on the table, particularly if there's little paid take-up over the next few months. The only issue is free comes with support and feature requests, and I'm doing this solo for now. As you said though, low-level users pose the same problem but at least they pay the server costs.


The amount of complexity you've put into your pricing structure makes me wonder about the complexity you add to the code you write.


The only place I remember seeing this model before was predatory telecom companies. Not a good association.

Product does look nifty, though.


My thoughts exactly. I'd rather not turn my document software into a Tracfone...


It's partly modeled on the ShutterStock pricing model, well, the on-demand part of it anyway.

Glad it looks nifty though!


There's a lot of good discussion on the pricing model, and I agree that its a bit too complicated even though there are no bad intentions here.

Would you consider a combination of dollar balance, and membership ?

The membership cost itself would be a simple base price like $5. Its like the cost of a Costco membership. That helps keep the lights and manage some fixed costs.

While the dollar balance is used to create documents. To offer bulk-buyer discounts, you could consider discounting cost of dollar balances, for example $100 dollar balance costs $90.


Thanks, my intention was actually to be as customer-friendly as possible. From my perspective, the customer can walk away whenever they want (they don't even need to unsubscribe), and they have choice for expiry based on their expected usage pattern/accounting department. Obviously I'm wrong though!

Hmm, that's an interesting idea regarding the membership. I'll think about that as an option. Regarding the dollar balance, I didn't like the idea of using dollars and then discounting how much a dollar actually cost someone, since at that point you're effectively using a credit system that happens to be called dollar. But a membership where you get a base number of credits per month/year and then the ability to purchase more as needed (with bulk discounts) could work and I like it!

Thanks for the feedback and the idea of how to fix it!


I agree logically that discounting dollars will make it a credit system similar to the credit system you already have.

Practically though I think people derive comfort in familiarity, even though dollar credits / cost are unintuitive in mathematical terms, people use dollars daily, even people who don’t use USD daily know the conversion from local cut to USD. And it makes the cost look really small, for example “0.5 cents” per document seems more familiar than “1 credit” per document even though the cost might be the same.


That's true, credits do obfuscate cost which is something I don't like about them. If a dollar balance is used and the majority of transactions do correspond to $1 spent = $1 balance, then that's intuitive (as you said) since we do that all the time with all our purchases. There was a time in the 2000's in New Zealand where some mobile phone companies would let you buy like $200 credit for $40, and then pricing of call's was some high rate like $2/minute. That's something I really really want to stay away from, since at that point it's very difficult to know what anything even costs. I'll definitely take your feedback into account, thanks!


Hello from a fellow LaTeX enthusiast.

Out of curiosity, how do you handle external assets (e.g., images [1])?

Extending the retailer example - suppose such company would further like to include a thumbnail for each product in a receipt. Or, extending the inspection example included in the support section, suppose the sender wishes to include a blueprint or an external document. How should they proceed?

Some questions in anticipation. What if it is not possible to store the whole catalog locally for a given receipt template? What if catalog items are regarded as sensitive information for the company?

[1] https://tex.stackexchange.com/questions/5433/can-i-use-an-im...


Hey, there's quite a few LaTeX enthusiasts on HN!

Great question and observation! Currently, the platform doesn't handle external non-text assets at all. This is something I will definitely be incorporating in the future. You can submit a private template where you bundle your logo and any other images and those will compile as normal with \includegraphics{}, but users of the template can't submit images or other assets beyond text at this stage.

An image is a string of characters, so I don't imagine it will be too difficult to accept an image as a new document variable type, send it along with the bundle that goes to the workers, recreate it as a .jpg, and make use of it in the template. The difficulty then becomes coding the template in a way that if a user specifies a really tall or really wide image, the document still looks good.


It's a fantastic idea, but the landing page is more complicated than it needs to be.

I suggest embedding a demo video of someone using the product. A 30-45 second video ideally.

Make the page about the product, being as upfront as possible. This is the product, this is what it does, this is how you can access it.

For example, the way Apple does it: https://www.apple.com/iphone-12/ ... First thing you see is the product itself... then what it does, then how you can buy it (Apple used to be better at making these pages btw).


Thanks for the feedback! I tried to make it clear what the product does in the How It Works section at the top of the home page and a few simplified screenshots further down, but perhaps that's not visual enough. I personally like when products have short GIFs on the home page highlighting the main features of the product.

I did want to produce a GIF like that before launch, but I've spent over 6 years of my spare time working on Creodocs and I just really wanted to get it out already. I know I can pay someone to make the video, but since the product is likely to change visually, I'd like to learn to do it myself so I can remake the video after visual changes. Any suggestions for software to use?


You can start by making screencast of you editing a document, then visualizing the rendered document. You can use your browser in full screen mode and OBS for that.

Then, you can edit the video and remove any delays and stuff like that.


Perhaps consider choosing background and font colors with a little more contrast? A white background and light grey text isn't the easiest on the eyes (mine at least).


Thank you, noted.


Hi Vel! LaTeX enthusiast from London here, currently making my way through Lamport's Document Preparation System and The TeXbook. So much I didn't know! I would love to hear how you

> managed to have a steady stream of commercial clients willing to pay me to create custom LaTeX templates through my typesetting service.

If you don't mind!


Hey! I must confess I haven't actually read those myself, although I did recently buy Tufte's "The Visual Display of Quantitive Information", on which the Tufte class is based I believe. If you eventually get into typography in general, I can't recommend "The Elements of Typographic Style" by Robert Bringhurst enough. It's rightly called the typographer's bible.

The typesetting service sprang from the modest success of LaTeX Templates. The large number of visitors meant that I had a constant stream of questions from individuals and businesses asking about modifying templates to include/change this or that. I did the whole free support thing for 1 or 2 years, but eventually realized it's a never-ending thankless task and I may as well try to capitalize on this desire that people have. Like with Creodocs, I had no idea whether anyone would pay me for this. The number of existing services was very small. I made the site and linked to it from LaTeX Templates, which is the perfect place to advertise, and eventually I started to get a trickle of clients. My rate initially was something like $30USD/hour, which was an insanely large amount for a poor PhD student, and I even remember a client saying I was way undercharging for the quality of work! As I've had more and more clients, I've built up the Showcase page to show off what the service is capable of, and I believe this is an important draw to give legitimacy to the service and show what LaTeX itself is capable of. I haven't asked, but I imagine most of my clients come from LaTeX Templates so the key for me has been to provide something for free and then upsell to a paid service. Nothing new there :)


Sorry for the slow reply! That's interesting. Your public template works fed into a stream of clients. I guess what i'm curious about is who out there is willing to pay for a LaTeX template, or typsetting? Is it one-off academics working in STEM fields? Journals? Have you had much luck getting customers from outside of such areas? Businesses looking for slick invoices or brochures? Non STEM-publishers? I've got quite a lot of questions and ideas up this area - how would you feel about a chat?

Also great call about The Elements of Typographic Style. I'll add it to my todo list. Tufte - hmm yes classic text for sure... should probably get a copy too. So much to read!


Now I'm sorry for the slow reply! It started as individuals and academics, I was typesetting CVs and papers, but as time went on I have had more and more businesses as clients. Now it's about 80% businesses/institutions. I think a big part of that is the Showcase which shows some of my past clients who agreed for me to show the work I did for them publicly. It's a relatively large list now and clearly shows big and small companies from all over the world and gives confidence in the service. At least, that's what I assume, I don't bug my clients for how or why they went with the service. Happy to talk more, just send through an email to the address listed on the site at the bottom!


1. Your pricing scheme is scary. Hard pass 2. To create a template, the user needs to know LaTeX. That severely restricts your user base. 3. What advantage do you have over "mail merge" in Google docs or Word?


Pricing scheme will change, that's become obvious today!

Well, I also offer a service to create LaTeX templates, but yes, I know that limits the market and that's ok. I'm not trying to take over the world, I just want a "small Italian restaurant on the web", as DHH has said.

Good question regarding the advantage over mail merge. LaTeX is extremely customizable in the layouts it can create (see some of my past work here: https://www.latextypesetting.com/showcase), and the typesetting quality is top notch. From a technical perspective, LaTeX can do math, create functions, use variables, etc. For many use cases, and particularly if design isn't your priority, Google Docs and Word mail merge will be an easier solution and that's ok.


From one creator to another, intended to be constructive:

* I need to see samples on the homepage (I know what LaTeX is capable of but many don't and it would be nice to see what I'll get)

* I am not signing up just to test it, too much friction.


Thanks, agreed, I'll work on a demo page that lets anyone create documents for a specific template using the same form as someone who is logged in.

A gallery of templates like what you see when you log in is also on my TODO list.


The homepage has quite a few bugs which makes reading on mobile hard. I assume it’s breaking point related for some blocks. I’m on latest iPhone Pro Max with Chrome. Will check it out in desktop later :)


I know one image is a bit cropped on the home page on mobile, but apart from that everything works as intended on my iPhone 11. I'm using Safari though. What bugs did you encounter?


Would be nice to understand what editing/typing is like from the page. Is this some html forms that fills out and renders latex templates? I can see how that could be useful.


I'll be adding a demo, a few others also commented on that. Yes, essentially you can fill out HTML forms for defined variables in LaTeX templates and get back compiled PDFs.


I see, best of luck with your venture!


Why would I ever use this over overleaf?


They're completely different products with completely different goals.


They aren't completely different though they've different goals.

>Creodocs lets you create consistent documents from beautiful templates online

>1. Select a document from the gallery

>2. Enter content for variable parts of the document

>3. Create and download your document as a PDF

They only really differ in two (2). That's basically introducing a form for every template or running a script on some data.


Word/Google Docs/Pages/Writer are what-you-see-is-what-you-get editors (WYSIWYG). Overleaf abstracts away the content from the presentation somewhat due to the nature of LaTeX, but it still effectively provides a real time view of your document as you make changes similar to the WYSIWYGs.

Creodocs explicitly does not allow you to make any changes to the document design or layout as a user. Want to increase the font size? You can't. Want to make something red? Unless it's already red, you can't. Of course that's a major limitation if you want to make changes, but it leads to highly consistent documents. Of course any given option can be exposed in the template if it's important, but the point is that templates are static by default.

Further, the document types that are best for the platforms differ. Creodocs should not be used to write an article, book or any document where there is a lot of text and custom elements (figures/tables). What it's designed for is documents like invoices, recipes, signs; all documents where there are relatively few changes between multiple instances of the document type and text is the main dynamic content.

Hope that makes sense and helps!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: